Files
query-orchestration/internal/test/runner.go
T
Michael McGuinness 81e7223560 Merged in feature/textextraction (pull request #110)
Text Extraction

* bases

* go

* splitting

* structure

* movetoasync

* movetoasync

* settinguptrigger

* reorder

* storevent

* standardisepollingvalidation

* unittests

* fixlint

* fixlint

* awscfg

* generatesample

* followthrough

* tests

* clena

* store

* externalidcleanup

* clientid

* local

* baseunittests

* putobjecttests

* tests
2025-04-02 18:50:03 +00:00

172 lines
5.4 KiB
Go

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