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:
+33
-43
@@ -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)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user