Skip to content

Commit e329813

Browse files
authored
fix(ci): fix manager integration test (#1730)
fix(ci): fix manager integration tests
1 parent c936a95 commit e329813

File tree

4 files changed

+48
-13
lines changed

4 files changed

+48
-13
lines changed

cmd/manager/start.go

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -14,8 +14,6 @@ import (
1414

1515
func StartCmd(ctx context.Context, name string) *cobra.Command {
1616
var (
17-
dataDir string
18-
1917
disableWebsocket bool
2018
)
2119

@@ -24,7 +22,10 @@ func StartCmd(ctx context.Context, name string) *cobra.Command {
2422
Short: fmt.Sprintf("Start the %s cluster manager", name),
2523
PreRun: func(cmd *cobra.Command, args []string) {
2624
// init runtime config and relevant env vars
27-
runtimeconfig.ApplyFlags(cmd.Flags())
25+
if dataDir := os.Getenv("DATA_DIR"); dataDir != "" {
26+
runtimeconfig.SetDataDir(dataDir)
27+
}
28+
2829
os.Setenv("KUBECONFIG", runtimeconfig.PathToKubeConfig())
2930
os.Setenv("TMPDIR", runtimeconfig.EmbeddedClusterTmpSubDir())
3031
},
@@ -52,8 +53,6 @@ func StartCmd(ctx context.Context, name string) *cobra.Command {
5253
},
5354
}
5455

55-
cmd.Flags().StringVar(&dataDir, "data-dir", "", "Path to the data directory")
56-
5756
// flags to enable running in test mode
5857
cmd.Flags().BoolVar(&disableWebsocket, "disable-websocket", false, "When set, don't connect to the KOTS webscoket")
5958
cmd.Flags().MarkHidden("disable-websocket")

pkg/manager/install.go

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,8 @@ var (
1515
_systemdUnitFileContents []byte
1616

1717
managerDropInFileContents = `[Service]
18+
Environment="DATA_DIR=%s"
19+
1820
# Empty ExecStart= will clear out the previous ExecStart value
1921
ExecStart=
2022
ExecStart=%s start
@@ -138,6 +140,7 @@ func writeSystemdUnitFile() error {
138140
func writeDropInFile() error {
139141
contents := fmt.Sprintf(
140142
managerDropInFileContents,
143+
runtimeconfig.EmbeddedClusterHomeDirectory(),
141144
runtimeconfig.PathToEmbeddedClusterBinary("manager"),
142145
)
143146
err := systemd.WriteDropInFile(UnitName(), "embedded-cluster.conf", []byte(contents))

tests/integration/manager/Makefile

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@ test:
2828

2929
.PHONY: clean
3030
clean:
31-
rm -f manager.test
31+
rm -f manager.test ../../../pkg/goods/bins/manager
3232
-docker rm -f $(CONTAINER_NAME) 2>/dev/null ; true
3333

3434
.PHONY: build

tests/integration/manager/install_test.go

Lines changed: 40 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,8 @@ import (
44
"context"
55
"os"
66
"os/exec"
7+
"path/filepath"
8+
"strings"
79
"testing"
810
"time"
911

@@ -13,13 +15,42 @@ import (
1315
"github.com/stretchr/testify/require"
1416
)
1517

18+
const (
19+
kubeconfigContents = `apiVersion: v1
20+
kind: Config
21+
clusters:
22+
- name: dummy
23+
cluster:
24+
api-version: v1
25+
server: http://example.com
26+
contexts:
27+
- name: dummy
28+
context:
29+
cluster: dummy
30+
namespace: dummy
31+
user: dummy
32+
users:
33+
- name: dummy
34+
user:
35+
token: dummy
36+
current-context: dummy
37+
`
38+
)
39+
1640
func TestManagerInstall(t *testing.T) {
1741
ctx := context.Background()
1842

19-
runtimeconfig.SetDataDir(getDataDir(t))
43+
dataDir := getDataDir(t)
44+
runtimeconfig.SetDataDir(dataDir)
45+
46+
// Write a dummy kubeconfig to the data dir
47+
err := os.MkdirAll(filepath.Dir(runtimeconfig.PathToKubeConfig()), 0755)
48+
require.NoError(t, err, "failed to create kubeconfig directory")
49+
err = os.WriteFile(runtimeconfig.PathToKubeConfig(), []byte(kubeconfigContents), 0644)
50+
require.NoError(t, err, "failed to write kubeconfig")
2051

2152
manager.SetServiceName("ec")
22-
err := manager.Install(ctx, t.Logf)
53+
err = manager.Install(ctx, t.Logf)
2354
require.NoError(t, err, "failed to install manager")
2455

2556
// Verify service files exists
@@ -28,14 +59,16 @@ func TestManagerInstall(t *testing.T) {
2859
dropInDirExists := checkFileExists(t, "/etc/systemd/system/ec-manager.service.d")
2960
assert.True(t, dropInDirExists, "ec-manager.service.d drop-in directory should exist")
3061

31-
// Wait for service to start and become ready
32-
// TODO: this should be added to the manager package
33-
time.Sleep(5 * time.Second)
34-
3562
// Verify service is enabled and running
3663
status := getServiceStatus(t, "ec-manager.service")
3764
assert.Contains(t, status, "enabled", "service should be enabled")
38-
assert.Contains(t, status, "active (running)", "service should be running")
65+
66+
// Wait for service to start and become ready
67+
// TODO: this should be added to the manager package
68+
assert.Eventually(t, func() bool {
69+
status := getServiceStatus(t, "ec-manager.service")
70+
return strings.Contains(status, "active (running)")
71+
}, 10*time.Second, 1*time.Second, "service should be running")
3972

4073
err = manager.Uninstall(ctx, t.Logf)
4174
require.NoError(t, err, "failed to uninstall manager")

0 commit comments

Comments
 (0)