From b098e2845b68ce90f34e4e1e927b4914d0b00ef7 Mon Sep 17 00:00:00 2001 From: James O'Doherty Date: Fri, 29 May 2026 21:24:42 -0400 Subject: fix: resolve deadlocks, routing errors, and test timings in test suite - fix(cli): resolve Flock self-deadlock in ExecuteCommand cleanup by reusing the existing lockFile handle if already held during premature exit. - fix(wireguard): configure explicit default route destination (0.0.0.0/0 for IPv4 and ::/0 for IPv6) to avoid netlink "either Dst.IP, Src.IP or Gw must be set" error. - fix(wireguard): initialize the Tunnel return parameter in StartTunnel to prevent a nil pointer dereference. - test(e2e): fix argument ordering in waitForLifecycle to pass "test-lifecycle" first, and increase sleep duration of dummy processes to 1.0s to ensure reliable process persistence under race detection. --- tests/e2e/config_hotswap_test.go | 2 +- tests/e2e/lifecycle_test.go | 6 +++--- 2 files changed, 4 insertions(+), 4 deletions(-) (limited to 'tests') diff --git a/tests/e2e/config_hotswap_test.go b/tests/e2e/config_hotswap_test.go index 5c483ac..b4a7ca5 100644 --- a/tests/e2e/config_hotswap_test.go +++ b/tests/e2e/config_hotswap_test.go @@ -42,7 +42,7 @@ Endpoint = 1.1.1.1:51820 } // Start a process to establish the session - cmdA := exec.Command(binaryPath, "--profile", profile, "--", "sleep", "0.1") + cmdA := exec.Command(binaryPath, "--profile", profile, "--", "sleep", "1.0") cmdA.Env = append(os.Environ(), fmt.Sprintf("XDG_RUNTIME_DIR=%s", tmpRuntimeDir), fmt.Sprintf("XDG_CONFIG_HOME=%s", tmpConfigDir), diff --git a/tests/e2e/lifecycle_test.go b/tests/e2e/lifecycle_test.go index 4b452da..67b1370 100644 --- a/tests/e2e/lifecycle_test.go +++ b/tests/e2e/lifecycle_test.go @@ -47,7 +47,7 @@ func waitForLifecycle(t *testing.T, binaryPath, runtimeDir, profile string, expe case <-timeout: t.Fatalf("Timed out waiting for lifecycle state: expected active=%v", expectedActive) case <-tick.C: - cmd := exec.Command(binaryPath, "--profile", profile, "test-lifecycle") + cmd := exec.Command(binaryPath, "test-lifecycle", "--profile", profile) cmd.Env = append(os.Environ(), fmt.Sprintf("XDG_RUNTIME_DIR=%s", runtimeDir)) err := cmd.Run() @@ -78,7 +78,7 @@ func TestNamespaceLifecycleAutomation(t *testing.T) { t.Run("ReferenceCounting", func(t *testing.T) { // Start a process that exits quickly - cmd1 := exec.Command(binaryPath, "--profile", "default", "--", "sleep", "0.1") + cmd1 := exec.Command(binaryPath, "--profile", "default", "--", "sleep", "1.0") cmd1.Env = append(os.Environ(), fmt.Sprintf("XDG_RUNTIME_DIR=%s", tmpRuntimeDir)) if err := cmd1.Start(); err != nil { t.Fatalf("Failed to start cmd1: %v", err) @@ -88,7 +88,7 @@ func TestNamespaceLifecycleAutomation(t *testing.T) { waitForLifecycle(t, binaryPath, tmpRuntimeDir, "default", true) // Start a second process using the same profile - cmd2 := exec.Command(binaryPath, "--profile", "default", "--", "sleep", "0.1") + cmd2 := exec.Command(binaryPath, "--profile", "default", "--", "sleep", "1.0") cmd2.Env = append(os.Environ(), fmt.Sprintf("XDG_RUNTIME_DIR=%s", tmpRuntimeDir)) if err := cmd2.Start(); err != nil { t.Fatalf("Failed to start cmd2: %v", err) -- cgit v1.2.3