From 85afeede840f53b0dfe3036e27b3d8997a7b4848 Mon Sep 17 00:00:00 2001 From: sneak Date: Tue, 27 Oct 2026 18:36:51 +0000 Subject: [PATCH] Health check test uses addresses nothing can connect to (closes #158) TestHealthCheck closed the app's server, and later smallwebwaf, and expected connections to the freed ports to fail. Another test could take such a port in between, so the connection succeeded and the test failed. The failing app check now uses the multicast address 224.0.0.1, to which TCP cannot connect. The failing smallwebwaf check uses port 0, on which nothing listens. Neither result depends on other processes. The test now stops smallwebwaf after its last check, so that it exits before the test's temporary directories are removed. The code under test is unchanged. Model: opus-5-5 --- internal/smallwebwaf/healthcheck_test.go | 19 +++++++++++++------ 1 file changed, 13 insertions(+), 6 deletions(-) diff --git a/internal/smallwebwaf/healthcheck_test.go b/internal/smallwebwaf/healthcheck_test.go index 3089f22..a5ffd60 100644 --- a/internal/smallwebwaf/healthcheck_test.go +++ b/internal/smallwebwaf/healthcheck_test.go @@ -60,8 +60,19 @@ func TestHealthCheck(t *testing.T) { }, 0, "") } - app.Close() - wantHealthCheck(t, env, 1, "unhealthy: connect to the app: ") + // Another test can take a closed server's port at once, so the app's + // address here is a multicast address, to which TCP cannot connect. + wantHealthCheck(t, map[string]string{ + listenAddr: ":" + port, + upstreamURL: "http://224.0.0.1", + }, 1, "unhealthy: connect to the app: ") + + // Listening on port 0 takes any free port, so nothing listens on port 0 + // itself. + wantHealthCheck(t, map[string]string{listenAddr: ":0"}, 1, + "unhealthy: ask smallwebwaf: ") + wantHealthCheck(t, map[string]string{listenAddr: "8080"}, 1, + "unhealthy: invalid setting: SWWAF_LISTEN_ADDR: ") stop() @@ -70,10 +81,6 @@ func TestHealthCheck(t *testing.T) { case <-time.After(waitLimit): t.Fatal("still running after being told to stop") } - - wantHealthCheck(t, env, 1, "unhealthy: ask smallwebwaf: ") - wantHealthCheck(t, map[string]string{listenAddr: "8080"}, 1, - "unhealthy: invalid setting: SWWAF_LISTEN_ADDR: ") } func TestHealthCheckRefusesAnArgument(t *testing.T) {