+59
-22
@@ -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()
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user