Files
query-orchestration/internal/test/runner.go
T
Michael McGuinness 555b6d420b Merged in feature/docresult (pull request #105)
Document Result Endpoint

* testing

* cleantesting

* progress

* query

* lint

* readme

* dockerclient

* api

* passtest

* tests

* test
2025-03-17 18:14:15 +00:00

149 lines
4.4 KiB
Go

package test
import (
"context"
"testing"
clientsyncrunner "queryorchestration/api/clientSyncRunner"
doccleanrunner "queryorchestration/api/docCleanRunner"
docinitrunner "queryorchestration/api/docInitRunner"
docsyncrunner "queryorchestration/api/docSyncRunner"
doctextrunner "queryorchestration/api/docTextRunner"
queryrunner "queryorchestration/api/queryRunner"
querysyncrunner "queryorchestration/api/querySyncRunner"
queryversionsyncrunner "queryorchestration/api/queryVersionSyncRunner"
"queryorchestration/internal/serviceconfig"
"queryorchestration/internal/serviceconfig/queue/clientsync"
"queryorchestration/internal/serviceconfig/queue/documentclean"
"queryorchestration/internal/serviceconfig/queue/documentinit"
"queryorchestration/internal/serviceconfig/queue/documentsync"
"queryorchestration/internal/serviceconfig/queue/documenttext"
"queryorchestration/internal/serviceconfig/queue/query"
"queryorchestration/internal/serviceconfig/queue/querysync"
"queryorchestration/internal/serviceconfig/queue/queryversionsync"
"github.com/testcontainers/testcontainers-go"
)
type RunnerName = string
const (
DocInitRunnerName RunnerName = docinitrunner.Name
DocSyncRunnerName RunnerName = docsyncrunner.Name
DocCleanRunnerName RunnerName = doccleanrunner.Name
DocTextRunnerName RunnerName = doctextrunner.Name
QuerySyncRunnerName RunnerName = querysyncrunner.Name
QueryRunnerName RunnerName = queryrunner.Name
ClientSyncRunnerName RunnerName = clientsyncrunner.Name
QueryVersionSyncRunnerName RunnerName = queryversionsyncrunner.Name
)
type RunnerEnv = string
const (
DocInitRunnerEnv RunnerEnv = documentinit.EnvName
DocSyncRunnerEnv RunnerEnv = documentsync.EnvName
DocCleanRunnerEnv RunnerEnv = documentclean.EnvName
DocTextRunnerEnv RunnerEnv = documenttext.EnvName
QuerySyncRunnerEnv RunnerEnv = querysync.EnvName
QueryRunnerEnv RunnerEnv = query.EnvName
ClientSyncRunnerEnv RunnerEnv = clientsync.EnvName
QueryVersionSyncRunnerEnv RunnerEnv = queryversionsync.EnvName
)
type Runner struct {
Name RunnerName
DownstreamQueues []RunnerName
}
func GetRunnerEnvFromName(name RunnerName) RunnerEnv {
switch name {
case DocSyncRunnerName:
return DocSyncRunnerEnv
case DocCleanRunnerName:
return DocCleanRunnerEnv
case DocTextRunnerName:
return DocTextRunnerEnv
case QuerySyncRunnerName:
return QuerySyncRunnerEnv
case QueryRunnerName:
return QueryRunnerEnv
case ClientSyncRunnerName:
return ClientSyncRunnerEnv
case QueryVersionSyncRunnerName:
return QueryVersionSyncRunnerEnv
}
return DocInitRunnerEnv
}
type RunnerConfig struct {
Runner Runner
Cfg serviceconfig.ConfigProvider
Network *testcontainers.DockerNetwork
}
func CreateRunner(t testing.TB, ctx context.Context, config *RunnerConfig) (*Container, func()) {
env := map[string]string{}
url := GetQueueURL(config.Cfg, config.Runner.Name)
env["QUEUE_URL"] = url
c, cleanup := createContainer(t, ctx, &containerConfig{
Network: config.Network,
Name: config.Runner.Name,
DownstreamQueues: config.Runner.DownstreamQueues,
Cfg: config.Cfg,
Env: env,
WaitForMsg: "Listening to queue",
})
return &Container{
Container: c,
URI: url,
}, cleanup
}
var DocInitRunner = Runner{
Name: DocInitRunnerName,
DownstreamQueues: []RunnerName{DocSyncRunnerName},
}
var DocSyncRunner = Runner{
Name: DocSyncRunnerName,
DownstreamQueues: []RunnerName{DocCleanRunnerName},
}
var DocCleanRunner = Runner{
Name: DocCleanRunnerName,
DownstreamQueues: []RunnerName{DocTextRunnerName},
}
var DocTextRunner = Runner{
Name: DocTextRunnerName,
DownstreamQueues: []RunnerName{QuerySyncRunnerName},
}
var QuerySyncRunner = Runner{
Name: QuerySyncRunnerName,
DownstreamQueues: []RunnerName{QueryRunnerName},
}
var QueryRunner = Runner{
Name: QueryRunnerName,
DownstreamQueues: []RunnerName{QueryRunnerName},
}
var ClientSyncRunner = Runner{
Name: ClientSyncRunnerName,
DownstreamQueues: []RunnerName{DocSyncRunnerName},
}
var QueryVersionSyncRunner = Runner{
Name: QueryVersionSyncRunnerName,
DownstreamQueues: []RunnerName{ClientSyncRunnerName},
}
var runners = []Runner{
DocInitRunner,
DocSyncRunner,
DocCleanRunner,
DocTextRunner,
QuerySyncRunner,
QueryRunner,
ClientSyncRunner,
QueryVersionSyncRunner,
}