Files
query-orchestration/internal/test/service.go
T
Michael McGuinness 7001ca854c Merged in feature/docinitialisation (pull request #41)
Queuing Changes and Cfg Testing

* staarting

* staarting

* startedpush

* note

* save

* mocking

* removederrs

* fixtests

* cleanuperrs

* newenvsetup

* preppingtests

* queue

* mmovetocfgpassunittests

* sortoutconfig

* passinginteg

* deps

* fixtests
2025-02-03 17:30:50 +00:00

58 lines
1.3 KiB
Go

package test
import (
"context"
"fmt"
queryservice "queryorchestration/api/queryService"
"queryorchestration/internal/serviceconfig"
"testing"
"github.com/docker/go-connections/nat"
"github.com/testcontainers/testcontainers-go"
)
type Service = string
const (
QueryService = queryservice.Name
)
type ServiceConfig struct {
Name Service
Cfg *serviceconfig.BaseConfig
Network *testcontainers.DockerNetwork
Env map[string]string
}
func CreateService(t *testing.T, ctx context.Context, config *ServiceConfig) (*Container, func()) {
port, err := nat.NewPort("tcp", "8080")
if err != nil {
t.Fatalf("Failed to create port: %v", err)
}
container, cleanup := createContainer(t, ctx, &containerConfig{
Cfg: config.Cfg,
Name: config.Name,
Network: config.Network,
Env: config.Env,
ExposedPorts: []nat.Port{port},
WaitForMsg: "⇨ http server started on [::]:8080",
})
host, err := container.Host(ctx)
if err != nil {
t.Fatalf("Failed to extract host: %v", err)
}
mappedPort, err := container.MappedPort(ctx, port)
if err != nil {
t.Fatalf("Failed to extract port: %v", err)
}
address := fmt.Sprintf("http://%s:%s", host, mappedPort.Port())
return &Container{
URI: address,
Container: container,
}, cleanup
}