From 6c8629e3acea73c236c50f18b49c0b03462396d0 Mon Sep 17 00:00:00 2001 From: Henri Vasserman Date: Sat, 15 Nov 2025 21:32:37 +0200 Subject: [PATCH] test: Valkey test improvements for testcontainers (#1280) * test: testcontainers improvements Use the endpoint feature to get the connection URL for the container. There are cases where localhost is not the correct one, for example when DOCKER_HOST is set to another machine. Also, don't specify the external port for the mapping so a random unused port is used, in cases when there is already Valkey/Redis running as a container and port mapped externally on 6379. * also remove this hack, doesn't seem necessary. --- lib/store/valkey/valkey_test.go | 26 ++++++++++---------------- 1 file changed, 10 insertions(+), 16 deletions(-) diff --git a/lib/store/valkey/valkey_test.go b/lib/store/valkey/valkey_test.go index eb1b881..0ed8eb6 100644 --- a/lib/store/valkey/valkey_test.go +++ b/lib/store/valkey/valkey_test.go @@ -2,20 +2,14 @@ package valkey import ( "encoding/json" - "fmt" "os" "testing" - "github.com/TecharoHQ/anubis/internal" "github.com/TecharoHQ/anubis/lib/store/storetest" "github.com/testcontainers/testcontainers-go" "github.com/testcontainers/testcontainers-go/wait" ) -func init() { - internal.UnbreakDocker() -} - func TestImpl(t *testing.T) { if os.Getenv("DONT_USE_NETWORK") != "" { t.Skip("test requires network egress") @@ -24,26 +18,26 @@ func TestImpl(t *testing.T) { testcontainers.SkipIfProviderIsNotHealthy(t) - req := testcontainers.ContainerRequest{ - Image: "valkey/valkey:8", - WaitingFor: wait.ForLog("Ready to accept connections"), - } - valkeyC, err := testcontainers.GenericContainer(t.Context(), testcontainers.GenericContainerRequest{ - ContainerRequest: req, - Started: true, - }) + valkeyC, err := testcontainers.Run( + t.Context(), "valkey/valkey:8", + testcontainers.WithExposedPorts("6379/tcp"), + testcontainers.WithWaitStrategy( + wait.ForListeningPort("6379/tcp"), + wait.ForLog("Ready to accept connections"), + ), + ) testcontainers.CleanupContainer(t, valkeyC) if err != nil { t.Fatal(err) } - containerIP, err := valkeyC.ContainerIP(t.Context()) + endpoint, err := valkeyC.PortEndpoint(t.Context(), "6379/tcp", "redis") if err != nil { t.Fatal(err) } data, err := json.Marshal(Config{ - URL: fmt.Sprintf("redis://%s:6379/0", containerIP), + URL: endpoint, }) if err != nil { t.Fatal(err)