Skip to content

Commit b0285c8

Browse files
committed
tests: extend k3d startup timeout
Signed-off-by: CrazyMax <1951866+crazy-max@users.noreply.github.com>
1 parent 9d7a663 commit b0285c8

File tree

2 files changed

+18
-7
lines changed

2 files changed

+18
-7
lines changed

tests/helpers/k3d.go

Lines changed: 13 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,10 @@ import (
1414

1515
const (
1616
k3dBin = "k3d"
17+
18+
k3dCreateTimeout = 3 * time.Minute
19+
k3dKubeconfigTimeout = 30 * time.Second
20+
k3dDeleteTimeout = 30 * time.Second
1721
)
1822

1923
func NewK3dServer(ctx context.Context, cfg *integration.BackendConfig, dockerAddress string) (clusterName, kubeConfig string, cl func() error, err error) {
@@ -33,7 +37,7 @@ func NewK3dServer(ctx context.Context, cfg *integration.BackendConfig, dockerAdd
3337

3438
clusterName = "bk-" + identity.NewID()
3539

36-
createCtx, cancelCreate := context.WithTimeoutCause(ctx, 90*time.Second, errors.New("timed out creating k3d cluster"))
40+
createCtx, cancelCreate := context.WithTimeoutCause(ctx, k3dCreateTimeout, errors.New("timed out creating k3d cluster"))
3741
defer cancelCreate()
3842

3943
args := []string{
@@ -48,11 +52,14 @@ func NewK3dServer(ctx context.Context, cfg *integration.BackendConfig, dockerAdd
4852
cmd.Env = k3dEnv(dockerAddress)
4953
out, err := cmd.CombinedOutput()
5054
if err != nil {
55+
if cause := context.Cause(createCtx); cause != nil && cause != context.Canceled {
56+
err = cause
57+
}
5158
diag := KubernetesDiagnostics(ctx, clusterName, dockerAddress)
5259
return "", "", nil, errors.Wrapf(err, "failed to create k3d cluster %s: %s\n%s\nouter dockerd logs: %s", clusterName, strings.TrimSpace(string(out)), diag, integration.FormatLogs(cfg.Logs))
5360
}
5461
deferF.Append(func() error {
55-
deleteCtx, cancelDelete := context.WithTimeoutCause(context.WithoutCancel(ctx), 30*time.Second, errors.New("timed out deleting k3d cluster"))
62+
deleteCtx, cancelDelete := context.WithTimeoutCause(context.WithoutCancel(ctx), k3dDeleteTimeout, errors.New("timed out deleting k3d cluster"))
5663
defer cancelDelete()
5764
cmd := exec.CommandContext(deleteCtx, k3dBin, "cluster", "delete", clusterName)
5865
cmd.Env = k3dEnv(dockerAddress)
@@ -63,13 +70,16 @@ func NewK3dServer(ctx context.Context, cfg *integration.BackendConfig, dockerAdd
6370
return nil
6471
})
6572

66-
kubeconfigCtx, cancelKubeconfig := context.WithTimeoutCause(ctx, 30*time.Second, errors.New("timed out writing k3d kubeconfig"))
73+
kubeconfigCtx, cancelKubeconfig := context.WithTimeoutCause(ctx, k3dKubeconfigTimeout, errors.New("timed out writing k3d kubeconfig"))
6774
defer cancelKubeconfig()
6875

6976
cmd = exec.CommandContext(kubeconfigCtx, k3dBin, "kubeconfig", "write", clusterName)
7077
cmd.Env = k3dEnv(dockerAddress)
7178
out, err = cmd.CombinedOutput()
7279
if err != nil {
80+
if cause := context.Cause(kubeconfigCtx); cause != nil && cause != context.Canceled {
81+
err = cause
82+
}
7383
diag := KubernetesDiagnostics(ctx, clusterName, dockerAddress)
7484
return "", "", nil, errors.Wrapf(err, "failed to write kubeconfig for cluster %s: %s\n%s\nouter dockerd logs: %s", clusterName, strings.TrimSpace(string(out)), diag, integration.FormatLogs(cfg.Logs))
7585
}

tests/helpers/kubernetes_diagnostics.go

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -82,6 +82,7 @@ func appendK3sServerDiagnostics(ctx context.Context, buf *bytes.Buffer, clusterN
8282
if !strings.Contains(nodeName, "-server-") {
8383
continue
8484
}
85+
kubectl := "KUBECONFIG=/var/lib/rancher/k3s/server/cred/admin.kubeconfig kubectl"
8586
appendCommandOutput(ctx, buf, "docker exec "+nodeName+" ps", "docker", []string{"exec", nodeName, "sh", "-c", "ps auxww"}, []string{"DOCKER_CONTEXT=" + dockerContext})
8687
appendCommandOutput(ctx, buf, "docker exec "+nodeName+" sockets", "docker", []string{"exec", nodeName, "sh", "-c", "ss -lntp || netstat -lnt"}, []string{"DOCKER_CONTEXT=" + dockerContext})
8788
appendCommandOutput(ctx, buf, "docker exec "+nodeName+" cgroup", "docker", []string{"exec", nodeName, "sh", "-c", "cat /proc/1/cgroup && echo && mount | grep cgroup"}, []string{"DOCKER_CONTEXT=" + dockerContext})
@@ -90,9 +91,9 @@ func appendK3sServerDiagnostics(ctx context.Context, buf *bytes.Buffer, clusterN
9091
appendCommandOutput(ctx, buf, "docker exec "+nodeName+" entrypoint logs", "docker", []string{"exec", nodeName, "sh", "-c", "for f in /var/log/k3d-entrypoints_*.log; do if [ -f \"$f\" ]; then echo \"== $f ==\"; tail -n 200 \"$f\"; echo; fi; done"}, []string{"DOCKER_CONTEXT=" + dockerContext})
9192
appendCommandOutput(ctx, buf, "docker exec "+nodeName+" k3s files", "docker", []string{"exec", nodeName, "sh", "-c", "find /var/lib/rancher/k3s -maxdepth 3 -type f 2>/dev/null | sort"}, []string{"DOCKER_CONTEXT=" + dockerContext})
9293
appendCommandOutput(ctx, buf, "docker exec "+nodeName+" k3s logs", "docker", []string{"exec", nodeName, "sh", "-c", "for f in /var/log/k3s.log /var/lib/rancher/k3s/agent/containerd/containerd.log /var/lib/rancher/k3s/server/logs/*; do if [ -f \"$f\" ]; then echo \"== $f ==\"; tail -n 200 \"$f\"; echo; fi; done"}, []string{"DOCKER_CONTEXT=" + dockerContext})
93-
appendCommandOutput(ctx, buf, "docker exec "+nodeName+" kubectl get pods", "docker", []string{"exec", nodeName, "kubectl", "get", "pods", "-A", "-o", "wide"}, []string{"DOCKER_CONTEXT=" + dockerContext})
94-
appendCommandOutput(ctx, buf, "docker exec "+nodeName+" kubectl get events", "docker", []string{"exec", nodeName, "kubectl", "get", "events", "-A", "--sort-by=.lastTimestamp"}, []string{"DOCKER_CONTEXT=" + dockerContext})
95-
appendCommandOutput(ctx, buf, "docker exec "+nodeName+" kubectl describe pods", "docker", []string{"exec", nodeName, "kubectl", "describe", "pods", "-A"}, []string{"DOCKER_CONTEXT=" + dockerContext})
94+
appendCommandOutput(ctx, buf, "docker exec "+nodeName+" kubectl get pods", "docker", []string{"exec", nodeName, "sh", "-c", kubectl + " get pods -A -o wide"}, []string{"DOCKER_CONTEXT=" + dockerContext})
95+
appendCommandOutput(ctx, buf, "docker exec "+nodeName+" kubectl get events", "docker", []string{"exec", nodeName, "sh", "-c", kubectl + " get events -A --sort-by=.lastTimestamp"}, []string{"DOCKER_CONTEXT=" + dockerContext})
96+
appendCommandOutput(ctx, buf, "docker exec "+nodeName+" kubectl describe pods", "docker", []string{"exec", nodeName, "sh", "-c", kubectl + " describe pods -A"}, []string{"DOCKER_CONTEXT=" + dockerContext})
9697
break
9798
}
9899
}
@@ -107,7 +108,7 @@ func clusterNodeNames(ctx context.Context, clusterName, dockerContext string) ([
107108
return nil, err
108109
}
109110
var names []string
110-
for _, line := range strings.Split(strings.TrimSpace(out), "\n") {
111+
for line := range strings.SplitSeq(strings.TrimSpace(out), "\n") {
111112
line = strings.TrimSpace(line)
112113
if line == "" {
113114
continue

0 commit comments

Comments
 (0)