2026-01-15 20:39:32 +00:00
|
|
|
// Package test provides test utilities and infrastructure.
|
|
|
|
|
// Note: Text extraction has been removed. DocTextRunner is no longer part of the pipeline.
|
|
|
|
|
// The document processing pipeline now ends at DocCleanRunner.
|
|
|
|
|
// See remove_texttract_and_mocks_plan.md for details.
|
2025-02-03 17:30:50 +00:00
|
|
|
package test
|
|
|
|
|
|
|
|
|
|
import (
|
|
|
|
|
"context"
|
2025-03-05 12:05:46 +00:00
|
|
|
"testing"
|
|
|
|
|
|
2025-03-17 18:14:15 +00:00
|
|
|
"queryorchestration/internal/serviceconfig/queue/clientsync"
|
|
|
|
|
"queryorchestration/internal/serviceconfig/queue/documentclean"
|
|
|
|
|
"queryorchestration/internal/serviceconfig/queue/documentinit"
|
|
|
|
|
"queryorchestration/internal/serviceconfig/queue/documentsync"
|
2025-04-02 18:50:03 +00:00
|
|
|
"queryorchestration/internal/serviceconfig/queue/storeevent"
|
2025-02-03 17:30:50 +00:00
|
|
|
)
|
|
|
|
|
|
2026-01-15 20:39:32 +00:00
|
|
|
// RunnerName defines the name of a runner service.
|
2025-04-02 18:50:03 +00:00
|
|
|
type RunnerName string
|
2025-02-03 17:30:50 +00:00
|
|
|
|
|
|
|
|
const (
|
2026-01-14 17:59:04 +00:00
|
|
|
StoreEventRunnerName RunnerName = "storeEventRunner"
|
|
|
|
|
DocInitRunnerName RunnerName = "docInitRunner"
|
|
|
|
|
DocSyncRunnerName RunnerName = "docSyncRunner"
|
|
|
|
|
DocCleanRunnerName RunnerName = "docCleanRunner"
|
|
|
|
|
ClientSyncRunnerName RunnerName = "clientSyncRunner"
|
2025-02-03 17:30:50 +00:00
|
|
|
)
|
|
|
|
|
|
2026-01-15 20:39:32 +00:00
|
|
|
// RunnerEnv defines the environment variable name for a runner queue.
|
2025-04-02 18:50:03 +00:00
|
|
|
type RunnerEnv string
|
2025-03-17 18:14:15 +00:00
|
|
|
|
|
|
|
|
const (
|
2026-01-14 17:59:04 +00:00
|
|
|
StoreEventRunnerEnv RunnerEnv = storeevent.EnvName
|
|
|
|
|
DocInitRunnerEnv RunnerEnv = documentinit.EnvName
|
|
|
|
|
DocSyncRunnerEnv RunnerEnv = documentsync.EnvName
|
|
|
|
|
DocCleanRunnerEnv RunnerEnv = documentclean.EnvName
|
|
|
|
|
ClientSyncRunnerEnv RunnerEnv = clientsync.EnvName
|
2025-03-17 18:14:15 +00:00
|
|
|
)
|
|
|
|
|
|
2026-01-15 20:39:32 +00:00
|
|
|
// Runner represents a runner service configuration.
|
2025-03-17 18:14:15 +00:00
|
|
|
type Runner struct {
|
|
|
|
|
Name RunnerName
|
|
|
|
|
DownstreamQueues []RunnerName
|
|
|
|
|
}
|
|
|
|
|
|
2026-01-15 20:39:32 +00:00
|
|
|
// GetRunnerEnvFromName returns the environment variable name for a given runner.
|
2025-03-17 18:14:15 +00:00
|
|
|
func GetRunnerEnvFromName(name RunnerName) RunnerEnv {
|
|
|
|
|
switch name {
|
2025-04-02 18:50:03 +00:00
|
|
|
case StoreEventRunnerName:
|
|
|
|
|
return StoreEventRunnerEnv
|
2025-06-23 15:58:20 +00:00
|
|
|
case DocInitRunnerName:
|
|
|
|
|
return DocInitRunnerEnv
|
2025-03-17 18:14:15 +00:00
|
|
|
case DocSyncRunnerName:
|
|
|
|
|
return DocSyncRunnerEnv
|
|
|
|
|
case DocCleanRunnerName:
|
|
|
|
|
return DocCleanRunnerEnv
|
|
|
|
|
case ClientSyncRunnerName:
|
|
|
|
|
return ClientSyncRunnerEnv
|
|
|
|
|
}
|
|
|
|
|
return DocInitRunnerEnv
|
|
|
|
|
}
|
|
|
|
|
|
2026-01-15 20:39:32 +00:00
|
|
|
// RunnerConfig provides configuration for creating a runner container.
|
2025-02-03 17:30:50 +00:00
|
|
|
type RunnerConfig struct {
|
2026-01-15 20:39:32 +00:00
|
|
|
Runner Runner
|
2025-02-03 17:30:50 +00:00
|
|
|
}
|
|
|
|
|
|
2026-01-15 20:39:32 +00:00
|
|
|
// CreateRunner creates a runner container for testing.
|
2025-05-27 15:28:46 +00:00
|
|
|
func CreateRunner(t testing.TB, ctx context.Context, cfg ContainerConfigProvider, network string, config *RunnerConfig) (*Container, func()) {
|
2025-03-17 18:14:15 +00:00
|
|
|
env := map[string]string{}
|
2025-04-25 17:02:50 +00:00
|
|
|
url := GetQueueURL(t, cfg, config.Runner.Name)
|
2025-03-17 18:14:15 +00:00
|
|
|
env["QUEUE_URL"] = url
|
2025-02-03 17:30:50 +00:00
|
|
|
|
2025-04-22 14:40:16 +00:00
|
|
|
c, cleanup := createContainer(t, ctx, network, &containerConfig{
|
2025-04-02 18:50:03 +00:00
|
|
|
Name: string(config.Runner.Name),
|
2025-03-17 18:14:15 +00:00
|
|
|
DownstreamQueues: config.Runner.DownstreamQueues,
|
2025-04-02 18:50:03 +00:00
|
|
|
Cfg: cfg,
|
2025-03-17 18:14:15 +00:00
|
|
|
Env: env,
|
|
|
|
|
WaitForMsg: "Listening to queue",
|
2025-02-03 17:30:50 +00:00
|
|
|
})
|
|
|
|
|
|
|
|
|
|
return &Container{
|
|
|
|
|
Container: c,
|
2025-03-17 18:14:15 +00:00
|
|
|
URI: url,
|
2025-02-03 17:30:50 +00:00
|
|
|
}, cleanup
|
|
|
|
|
}
|
2025-03-17 18:14:15 +00:00
|
|
|
|
2026-01-15 20:39:32 +00:00
|
|
|
// StoreEventRunner configuration.
|
2025-04-02 18:50:03 +00:00
|
|
|
var StoreEventRunner = Runner{
|
|
|
|
|
Name: StoreEventRunnerName,
|
2025-04-22 14:40:16 +00:00
|
|
|
DownstreamQueues: []RunnerName{DocInitRunnerName},
|
2025-04-02 18:50:03 +00:00
|
|
|
}
|
2025-05-27 15:28:46 +00:00
|
|
|
|
2026-01-15 20:39:32 +00:00
|
|
|
// DocInitRunner configuration.
|
2025-03-17 18:14:15 +00:00
|
|
|
var DocInitRunner = Runner{
|
|
|
|
|
Name: DocInitRunnerName,
|
|
|
|
|
DownstreamQueues: []RunnerName{DocSyncRunnerName},
|
|
|
|
|
}
|
2025-05-27 15:28:46 +00:00
|
|
|
|
2026-01-15 20:39:32 +00:00
|
|
|
// DocSyncRunner configuration.
|
2025-03-17 18:14:15 +00:00
|
|
|
var DocSyncRunner = Runner{
|
|
|
|
|
Name: DocSyncRunnerName,
|
|
|
|
|
DownstreamQueues: []RunnerName{DocCleanRunnerName},
|
|
|
|
|
}
|
2025-05-27 15:28:46 +00:00
|
|
|
|
2026-01-15 20:39:32 +00:00
|
|
|
// DocCleanRunner is the terminal runner in the main document processing pipeline.
|
|
|
|
|
// Note: Text extraction has been removed. Pipeline ends after cleaning.
|
2025-03-17 18:14:15 +00:00
|
|
|
var DocCleanRunner = Runner{
|
|
|
|
|
Name: DocCleanRunnerName,
|
2026-01-15 20:39:32 +00:00
|
|
|
DownstreamQueues: []RunnerName{}, // No downstream - pipeline ends here
|
2025-03-17 18:14:15 +00:00
|
|
|
}
|
2025-05-27 15:28:46 +00:00
|
|
|
|
2026-01-15 20:39:32 +00:00
|
|
|
// ClientSyncRunner configuration.
|
2025-03-17 18:14:15 +00:00
|
|
|
var ClientSyncRunner = Runner{
|
|
|
|
|
Name: ClientSyncRunnerName,
|
|
|
|
|
DownstreamQueues: []RunnerName{DocSyncRunnerName},
|
|
|
|
|
}
|
2025-05-27 15:28:46 +00:00
|
|
|
|
2025-03-17 18:14:15 +00:00
|
|
|
var runners = []Runner{
|
2025-04-02 18:50:03 +00:00
|
|
|
StoreEventRunner,
|
2025-03-17 18:14:15 +00:00
|
|
|
DocInitRunner,
|
|
|
|
|
DocSyncRunner,
|
|
|
|
|
DocCleanRunner,
|
|
|
|
|
ClientSyncRunner,
|
|
|
|
|
}
|