Merged in feature/longtest (pull request #131)

Long Test

* parallel
This commit is contained in:
Michael McGuinness
2025-05-03 14:59:21 +00:00
parent 721ca8a6e6
commit 40061ee2e9
+43 -6
View File
@@ -11,6 +11,7 @@ import (
"log/slog" "log/slog"
"net/http" "net/http"
"strings" "strings"
"sync"
"testing" "testing"
"time" "time"
@@ -35,23 +36,28 @@ type Network struct {
func CreateFullNetwork(t testing.TB, ctx context.Context, cfg FullDependenciesConfig) (Network, func()) { func CreateFullNetwork(t testing.TB, ctx context.Context, cfg FullDependenciesConfig) (Network, func()) {
deps, clean := CreateFullDependencies(t, ctx, cfg) deps, clean := CreateFullDependencies(t, ctx, cfg)
var wg sync.WaitGroup
apiContainers := make(map[APIName]*Container, len(apis)) apiContainers := make(map[APIName]*Container, len(apis))
apiClean := make([]func(), len(apis)) apiClean := make([]func(), len(apis))
for i, s := range apis { for i, s := range apis {
wg.Add(1)
go func() {
c, ccleanup := CreateAPI(t, ctx, cfg, deps.Network, &APIConfig{ c, ccleanup := CreateAPI(t, ctx, cfg, deps.Network, &APIConfig{
API: s, API: s,
MockHTTP: string(deps.MockServer.Internal), MockHTTP: string(deps.MockServer.Internal),
}) })
apiContainers[s.Name] = c apiContainers[s.Name] = c
apiClean[i] = ccleanup apiClean[i] = ccleanup
wg.Done()
}()
} }
qService, err := queryapi.NewClientWithResponses(apiContainers[QueryAPIName].URI)
require.NoError(t, err)
runnerContainers := make(map[RunnerName]*Container, len(runners)) runnerContainers := make(map[RunnerName]*Container, len(runners))
runnerClean := make([]func(), len(runners)) runnerClean := make([]func(), len(runners))
for i, r := range runners { for i, r := range runners {
wg.Add(1)
go func() {
c, ccleanup := CreateRunner(t, ctx, cfg, deps.Network, &RunnerConfig{ c, ccleanup := CreateRunner(t, ctx, cfg, deps.Network, &RunnerConfig{
Runner: r, Runner: r,
MockHTTP: string(deps.MockServer.Internal), MockHTTP: string(deps.MockServer.Internal),
@@ -59,8 +65,15 @@ func CreateFullNetwork(t testing.TB, ctx context.Context, cfg FullDependenciesCo
runnerContainers[r.Name] = c runnerContainers[r.Name] = c
runnerClean[i] = ccleanup runnerClean[i] = ccleanup
wg.Done()
}()
} }
wg.Wait()
qService, err := queryapi.NewClientWithResponses(apiContainers[QueryAPIName].URI)
require.NoError(t, err)
return Network{ return Network{
Dependencies: deps, Dependencies: deps,
APIs: apiContainers, APIs: apiContainers,
@@ -70,10 +83,13 @@ func CreateFullNetwork(t testing.TB, ctx context.Context, cfg FullDependenciesCo
for _, c := range apiClean { for _, c := range apiClean {
c() c()
} }
for _, c := range runnerClean { for _, c := range runnerClean {
c() c()
} }
clean() clean()
} }
} }
@@ -97,25 +113,46 @@ func CreateFullDependencies(t testing.TB, ctx context.Context, cfg FullDependenc
Network: network, Network: network,
QueueURLs: map[RunnerName]string{}, QueueURLs: map[RunnerName]string{},
} }
cs := map[string]func(){}
var wg sync.WaitGroup
wg.Add(1)
go func() {
mockServer, cleanMock := CreateMockServer(t, ctx, network) mockServer, cleanMock := CreateMockServer(t, ctx, network)
deps.MockServer = mockServer deps.MockServer = mockServer
cs["mock"] = cleanMock
wg.Done()
}()
wg.Add(1)
go func() {
deps.DBConfig = CreateDB(t, ctx, cfg, network, &CreateDatabaseConfig{}) deps.DBConfig = CreateDB(t, ctx, cfg, network, &CreateDatabaseConfig{})
wg.Done()
}()
deps.AWSConfig = CreateAWSContainer(t, ctx, cfg, network) deps.AWSConfig = CreateAWSContainer(t, ctx, cfg, network)
SetQueueClient(t, ctx, cfg, deps.AWSConfig.ExternalEndpoint) SetQueueClient(t, ctx, cfg, deps.AWSConfig.ExternalEndpoint)
SetStoreClient(t, ctx, cfg, deps.AWSConfig.ExternalEndpoint)
CreateBucket(t, ctx, cfg)
for _, runner := range runners { for _, runner := range runners {
wg.Add(1)
go func() {
deps.QueueURLs[runner.Name] = CreateQueue(t, ctx, cfg, runner.Name) 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) SetBucketNotifs(t, ctx, cfg)
wg.Wait()
return deps, func() { return deps, func() {
cleanMock() for _, c := range cs {
c()
}
} }
} }