package e2eutil import ( "context" "fmt" "sync" "github.com/testcontainers/testcontainers-go" "github.com/testcontainers/testcontainers-go/network" ) // Shared network used by the test web server and Hako container so that // Hako can fetch URLs from the test web server via Docker DNS. var ( sharedNetwork *testcontainers.DockerNetwork sharedNetworkErr error sharedNetworkOnce sync.Once ) // Network alias used by the test web server inside the shared network. const testServerAlias = "hako-testserver" // getSharedNetwork lazily creates a shared Docker network for the test process. // Both StartTestWebServer and StartHakoContainer attach to it so containers // can communicate by alias. func getSharedNetwork(ctx context.Context) (*testcontainers.DockerNetwork, error) { sharedNetworkOnce.Do(func() { sharedNetwork, sharedNetworkErr = network.New(ctx) }) if sharedNetworkErr != nil { return nil, fmt.Errorf("failed to create shared network: %w", sharedNetworkErr) } return sharedNetwork, nil }