From 40061ee2e9dec07a0789efbab0af5d4bb2d6ad9f Mon Sep 17 00:00:00 2001 From: Michael McGuinness Date: Sat, 3 May 2025 14:59:21 +0000 Subject: [PATCH] Merged in feature/longtest (pull request #131) Long Test * parallel --- internal/test/ecosystem.go | 81 +++++++++++++++++++++++++++----------- 1 file changed, 59 insertions(+), 22 deletions(-) diff --git a/internal/test/ecosystem.go b/internal/test/ecosystem.go index 88cfa57e..e13e76f6 100644 --- a/internal/test/ecosystem.go +++ b/internal/test/ecosystem.go @@ -11,6 +11,7 @@ import ( "log/slog" "net/http" "strings" + "sync" "testing" "time" @@ -35,32 +36,44 @@ type Network struct { func CreateFullNetwork(t testing.TB, ctx context.Context, cfg FullDependenciesConfig) (Network, func()) { deps, clean := CreateFullDependencies(t, ctx, cfg) + var wg sync.WaitGroup + apiContainers := make(map[APIName]*Container, len(apis)) apiClean := make([]func(), len(apis)) for i, s := range apis { - c, ccleanup := CreateAPI(t, ctx, cfg, deps.Network, &APIConfig{ - API: s, - MockHTTP: string(deps.MockServer.Internal), - }) - apiContainers[s.Name] = c - apiClean[i] = ccleanup + wg.Add(1) + go func() { + c, ccleanup := CreateAPI(t, ctx, cfg, deps.Network, &APIConfig{ + API: s, + MockHTTP: string(deps.MockServer.Internal), + }) + apiContainers[s.Name] = c + apiClean[i] = ccleanup + wg.Done() + }() } - qService, err := queryapi.NewClientWithResponses(apiContainers[QueryAPIName].URI) - require.NoError(t, err) - runnerContainers := make(map[RunnerName]*Container, len(runners)) runnerClean := make([]func(), len(runners)) for i, r := range runners { - c, ccleanup := CreateRunner(t, ctx, cfg, deps.Network, &RunnerConfig{ - Runner: r, - MockHTTP: string(deps.MockServer.Internal), - }) + wg.Add(1) + go func() { + c, ccleanup := CreateRunner(t, ctx, cfg, deps.Network, &RunnerConfig{ + Runner: r, + MockHTTP: string(deps.MockServer.Internal), + }) - runnerContainers[r.Name] = c - runnerClean[i] = ccleanup + runnerContainers[r.Name] = c + runnerClean[i] = ccleanup + wg.Done() + }() } + wg.Wait() + + qService, err := queryapi.NewClientWithResponses(apiContainers[QueryAPIName].URI) + require.NoError(t, err) + return Network{ Dependencies: deps, APIs: apiContainers, @@ -70,10 +83,13 @@ func CreateFullNetwork(t testing.TB, ctx context.Context, cfg FullDependenciesCo for _, c := range apiClean { c() } + for _, c := range runnerClean { c() } + clean() + } } @@ -97,25 +113,46 @@ func CreateFullDependencies(t testing.TB, ctx context.Context, cfg FullDependenc Network: network, QueueURLs: map[RunnerName]string{}, } + cs := map[string]func(){} - mockServer, cleanMock := CreateMockServer(t, ctx, network) - deps.MockServer = mockServer + var wg sync.WaitGroup + + wg.Add(1) + go func() { + mockServer, cleanMock := CreateMockServer(t, ctx, network) + deps.MockServer = mockServer + cs["mock"] = cleanMock + wg.Done() + }() + + wg.Add(1) + go func() { + deps.DBConfig = CreateDB(t, ctx, cfg, network, &CreateDatabaseConfig{}) + wg.Done() + }() - deps.DBConfig = CreateDB(t, ctx, cfg, network, &CreateDatabaseConfig{}) deps.AWSConfig = CreateAWSContainer(t, ctx, cfg, network) SetQueueClient(t, ctx, cfg, deps.AWSConfig.ExternalEndpoint) - SetStoreClient(t, ctx, cfg, deps.AWSConfig.ExternalEndpoint) - CreateBucket(t, ctx, cfg) for _, runner := range runners { - deps.QueueURLs[runner.Name] = CreateQueue(t, ctx, cfg, runner.Name) + wg.Add(1) + go func() { + deps.QueueURLs[runner.Name] = CreateQueue(t, ctx, cfg, runner.Name) + wg.Done() + }() } + SetStoreClient(t, ctx, cfg, deps.AWSConfig.ExternalEndpoint) + CreateBucket(t, ctx, cfg) SetBucketNotifs(t, ctx, cfg) + wg.Wait() + return deps, func() { - cleanMock() + for _, c := range cs { + c() + } } }