Skip to content

Commit 5a177cd

Browse files
author
Kaan Yalti
committed
enhancement(5235): added coordinator tests for insufficient disk space error
enhancement(5235): updated error in test
1 parent e5cb8df commit 5a177cd

File tree

1 file changed

+102
-0
lines changed

1 file changed

+102
-0
lines changed

internal/pkg/agent/application/coordinator/coordinator_unit_test.go

Lines changed: 102 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,16 +15,19 @@ import (
1515
"context"
1616
"encoding/json"
1717
"errors"
18+
"fmt"
1819
"net"
1920
"net/http"
2021
"net/http/httptest"
2122
"os"
2223
"path/filepath"
2324
"strings"
25+
"sync"
2426
"testing"
2527
"time"
2628

2729
"github.com/elastic/elastic-agent-client/v7/pkg/proto"
30+
"github.com/elastic/elastic-agent/internal/pkg/fleetapi/acker"
2831
"github.com/elastic/elastic-agent/internal/pkg/testutils"
2932

3033
"github.com/open-telemetry/opentelemetry-collector-contrib/pkg/status"
@@ -41,9 +44,11 @@ import (
4144
"github.com/elastic/elastic-agent/internal/pkg/agent/application/info"
4245
"github.com/elastic/elastic-agent/internal/pkg/agent/application/monitoring/reload"
4346
"github.com/elastic/elastic-agent/internal/pkg/agent/application/paths"
47+
"github.com/elastic/elastic-agent/internal/pkg/agent/application/reexec"
4448
"github.com/elastic/elastic-agent/internal/pkg/agent/application/secret"
4549
"github.com/elastic/elastic-agent/internal/pkg/agent/application/upgrade"
4650
"github.com/elastic/elastic-agent/internal/pkg/agent/application/upgrade/artifact"
51+
upgradeErrors "github.com/elastic/elastic-agent/internal/pkg/agent/application/upgrade/artifact/download/errors"
4752
"github.com/elastic/elastic-agent/internal/pkg/agent/application/upgrade/details"
4853
"github.com/elastic/elastic-agent/internal/pkg/agent/configuration"
4954
"github.com/elastic/elastic-agent/internal/pkg/agent/storage"
@@ -1959,3 +1964,100 @@ func TestHasEndpoint(t *testing.T) {
19591964
})
19601965
}
19611966
}
1967+
1968+
type mockUpgradeManager struct {
1969+
upgradeErr error
1970+
}
1971+
1972+
func (m *mockUpgradeManager) Upgradeable() bool {
1973+
return true
1974+
}
1975+
1976+
func (m *mockUpgradeManager) Reload(cfg *config.Config) error {
1977+
return nil
1978+
}
1979+
1980+
func (m *mockUpgradeManager) Upgrade(ctx context.Context, version string, sourceURI string, action *fleetapi.ActionUpgrade, details *details.Details, skipVerifyOverride bool, skipDefaultPgp bool, pgpBytes ...string) (_ reexec.ShutdownCallbackFn, err error) {
1981+
return nil, m.upgradeErr
1982+
}
1983+
1984+
func (m *mockUpgradeManager) Ack(ctx context.Context, acker acker.Acker) error {
1985+
return nil
1986+
}
1987+
1988+
func (m *mockUpgradeManager) AckAction(ctx context.Context, acker acker.Acker, action fleetapi.Action) error {
1989+
return nil
1990+
}
1991+
1992+
func (m *mockUpgradeManager) MarkerWatcher() upgrade.MarkerWatcher {
1993+
return nil
1994+
}
1995+
1996+
func TestCoordinator_Upgrade_InsufficientDiskSpaceError(t *testing.T) {
1997+
log, _ := loggertest.New("coordinator-insufficient-disk-space-test")
1998+
1999+
mockUpgradeManager := &mockUpgradeManager{
2000+
upgradeErr: fmt.Errorf("wrapped: %w", upgradeErrors.ErrInsufficientDiskSpace),
2001+
}
2002+
2003+
initialState := State{
2004+
CoordinatorState: agentclient.Healthy,
2005+
CoordinatorMessage: "Running",
2006+
}
2007+
2008+
coord := &Coordinator{
2009+
state: initialState,
2010+
logger: log,
2011+
upgradeMgr: mockUpgradeManager,
2012+
stateBroadcaster: broadcaster.New(initialState, 64, 32),
2013+
overrideStateChan: make(chan *coordinatorOverrideState),
2014+
upgradeDetailsChan: make(chan *details.Details),
2015+
}
2016+
2017+
wg := sync.WaitGroup{}
2018+
wg.Add(2)
2019+
2020+
overrideStates := []agentclient.State{}
2021+
go func() {
2022+
state1 := <-coord.overrideStateChan
2023+
overrideStates = append(overrideStates, state1.state)
2024+
2025+
state2 := <-coord.overrideStateChan
2026+
if state2 != nil {
2027+
overrideStates = append(overrideStates, state2.state)
2028+
}
2029+
2030+
wg.Done()
2031+
}()
2032+
2033+
upgradeDetails := []*details.Details{}
2034+
go func() {
2035+
upgradeDetails = append(upgradeDetails, <-coord.upgradeDetailsChan)
2036+
upgradeDetails = append(upgradeDetails, <-coord.upgradeDetailsChan)
2037+
wg.Done()
2038+
}()
2039+
2040+
err := coord.Upgrade(t.Context(), "", "", nil, false, false)
2041+
require.Error(t, err)
2042+
require.Equal(t, err, upgradeErrors.ErrInsufficientDiskSpace)
2043+
2044+
wg.Wait()
2045+
2046+
require.Equal(t, []agentclient.State{agentclient.Upgrading}, overrideStates)
2047+
2048+
require.Equal(t, []*details.Details{
2049+
{
2050+
TargetVersion: "",
2051+
State: details.StateRequested,
2052+
ActionID: "",
2053+
},
2054+
{
2055+
TargetVersion: "",
2056+
State: details.StateFailed,
2057+
Metadata: details.Metadata{
2058+
FailedState: details.StateRequested,
2059+
ErrorMsg: upgradeErrors.ErrInsufficientDiskSpace.Error(),
2060+
},
2061+
},
2062+
}, upgradeDetails)
2063+
}

0 commit comments

Comments
 (0)