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