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
This commit is contained in:
Michael McGuinness
2025-02-03 17:30:50 +00:00
parent 15adaebfcd
commit 7001ca854c
135 changed files with 3916 additions and 1523 deletions
+33 -43
View File
@@ -5,6 +5,7 @@ import (
"fmt"
"queryorchestration/internal/database/migrations"
"queryorchestration/internal/serviceconfig"
"queryorchestration/internal/serviceconfig/database"
"testing"
"github.com/docker/go-connections/nat"
@@ -12,26 +13,13 @@ import (
"github.com/testcontainers/testcontainers-go/wait"
)
type ExternalDatabase struct {
Name string
Host string
Port int
User string
Password string
}
type Database struct {
Container testcontainers.Container
External *ExternalDatabase
}
type CreateDatabaseConfig struct {
Network *testcontainers.DockerNetwork
Cfg serviceconfig.ConfigProvider
RunMigrations bool
}
func CreateDB(t *testing.T, ctx context.Context, cfg *CreateDatabaseConfig) (*Database, func()) {
func CreateDB(t *testing.T, ctx context.Context, cfg *CreateDatabaseConfig) (testcontainers.Container, func()) {
alias := "postgres"
port, err := nat.NewPort("tcp", "5432")
@@ -82,47 +70,49 @@ func CreateDB(t *testing.T, ctx context.Context, cfg *CreateDatabaseConfig) (*Da
t.Fatalf("Failed to extract port: %v", err)
}
t.Setenv("DB_USER", user)
t.Setenv("DB_PASS", pass)
t.Setenv("DB_HOST", host)
t.Setenv("DB_PORT", fmt.Sprint(mappedPort.Int()))
t.Setenv("DB_NAME", name)
t.Setenv("DB_NOSSL", "true")
dbcfg := &database.DBConfig{
DBName: name,
DBSecret: pass,
DBUser: user,
DBPort: mappedPort.Int(),
DBHost: host,
DBNoSSL: true,
}
t.Setenv("DB_USER", dbcfg.DBUser)
t.Setenv("DB_PASS", dbcfg.DBSecret)
t.Setenv("DB_NAME", dbcfg.DBName)
t.Setenv("DB_NOSSL", fmt.Sprintf("%v", dbcfg.DBNoSSL))
t.Setenv("DB_HOST", dbcfg.DBHost)
t.Setenv("DB_PORT", fmt.Sprint(dbcfg.DBPort))
if cfg.Cfg != nil {
err = serviceconfig.InitializeConfig(cfg.Cfg)
if err != nil {
t.Fatal(err)
}
if cfg.RunMigrations {
cfg.Cfg.SetDBConfig(dbcfg)
err := migrations.Run(ctx, cfg.Cfg)
if err != nil {
t.Fatal(err)
}
err = cfg.Cfg.SetDBPool(ctx)
err = dbcfg.SetDBPool(ctx)
if err != nil {
t.Fatal(err)
}
}
}
external := &ExternalDatabase{
Name: name,
Password: pass,
User: user,
Port: port.Int(),
Host: alias,
}
return &Database{
Container: container,
External: external,
}, func() {
err := container.Terminate(ctx)
if err != nil {
t.Error(err)
}
if cfg.Network != nil {
dbcfg.DBHost = alias
dbcfg.DBPort = port.Int()
}
cfg.Cfg.SetDBConfig(dbcfg)
}
return container, func() {
err := container.Terminate(ctx)
if err != nil {
t.Error(err)
}
}
}