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+
1640func 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