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
+59 -22
View File
@@ -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()
}
}
}