@@ -88,7 +88,7 @@ func (b *DBConfig) DBPing(ctx context.Context) error {
|
||||
slog.Info("Successful database ping")
|
||||
return nil
|
||||
}
|
||||
slog.Info("Attempted database ping", "host", b.DBHost, "port", b.DBPort)
|
||||
slog.Debug("Attempted database ping", "host", b.DBHost, "port", b.DBPort)
|
||||
case <-ctx.Done():
|
||||
return ctx.Err()
|
||||
}
|
||||
|
||||
@@ -73,7 +73,7 @@ func (c *ObjectStoreConfig) PingStoreByName(ctx context.Context, name string) er
|
||||
slog.Info("Successful bucket ping", "name", name)
|
||||
return nil
|
||||
}
|
||||
slog.Info("Attempted bucket ping", "name", name, "address", c.GetS3Endpoint())
|
||||
slog.Debug("Attempted bucket ping", "name", name, "address", c.GetS3Endpoint())
|
||||
case <-ctx.Done():
|
||||
return ctx.Err()
|
||||
}
|
||||
|
||||
@@ -58,7 +58,7 @@ func (c *QueueConfig) PingQueueByURL(ctx context.Context, url string) error {
|
||||
slog.Info("Successful queue ping", "url", url, "approx_msgs", r.Attributes[string(types.QueueAttributeNameApproximateNumberOfMessages)])
|
||||
return nil
|
||||
}
|
||||
slog.Info("Attempted queue ping", "url", url, "address", c.GetSQSEndpoint())
|
||||
slog.Debug("Attempted queue ping", "url", url, "address", c.GetSQSEndpoint())
|
||||
case <-ctx.Done():
|
||||
return ctx.Err()
|
||||
}
|
||||
|
||||
+13
-1
@@ -3,8 +3,11 @@ package test
|
||||
import (
|
||||
"context"
|
||||
"fmt"
|
||||
"io"
|
||||
"net/http"
|
||||
"queryorchestration/internal/serviceconfig"
|
||||
"testing"
|
||||
"time"
|
||||
|
||||
"github.com/docker/go-connections/nat"
|
||||
"github.com/testcontainers/testcontainers-go"
|
||||
@@ -45,9 +48,18 @@ func CreateAWSContainer(t *testing.T, ctx context.Context, cfg *CreateAWSConfig)
|
||||
},
|
||||
ExposedPorts: []string{port.Port()},
|
||||
WaitingFor: wait.ForAll(
|
||||
// wait.ForExposedPort(),
|
||||
wait.ForListeningPort(port),
|
||||
wait.ForLog("Ready."),
|
||||
wait.ForHTTP("/_localstack/health").
|
||||
WithPort(port).
|
||||
WithStartupTimeout(50*time.Second).
|
||||
WithPollInterval(5*time.Second).
|
||||
WithResponseMatcher(func(body io.Reader) bool {
|
||||
return true
|
||||
}).
|
||||
WithStatusCodeMatcher(func(statusCode int) bool {
|
||||
return statusCode == http.StatusOK
|
||||
}),
|
||||
),
|
||||
}
|
||||
|
||||
|
||||
@@ -39,6 +39,7 @@ func createContainer(t *testing.T, ctx context.Context, cfg *containerConfig) (t
|
||||
"AWS_ACCESS_KEY_ID": cfg.Cfg.GetAWSKeyID(),
|
||||
"AWS_SECRET_ACCESS_KEY": cfg.Cfg.GetAWSSecretKey(),
|
||||
"AWS_REGION": cfg.Cfg.GetAWSRegion(),
|
||||
"AWS_DEFAULT_REGION": cfg.Cfg.GetAWSRegion(),
|
||||
"AWS_ENDPOINT_URL": cfg.Cfg.GetAWSEndpoint(),
|
||||
"AWS_ENDPOINT_URL_SQS": cfg.Cfg.GetAWSEndpoint(),
|
||||
"AWS_ENDPOINT_URL_S3": cfg.Cfg.GetAWSEndpoint(),
|
||||
|
||||
@@ -7,6 +7,7 @@ import (
|
||||
"queryorchestration/internal/serviceconfig"
|
||||
"queryorchestration/internal/serviceconfig/database"
|
||||
"testing"
|
||||
"time"
|
||||
|
||||
"github.com/docker/go-connections/nat"
|
||||
"github.com/testcontainers/testcontainers-go"
|
||||
@@ -43,6 +44,12 @@ func CreateDB(t *testing.T, ctx context.Context, cfg *CreateDatabaseConfig) (tes
|
||||
wait.ForExposedPort(),
|
||||
wait.ForListeningPort(port),
|
||||
wait.ForLog("database system is ready to accept connections"),
|
||||
wait.ForSQL(port, "postgres", func(host string, port nat.Port) string {
|
||||
return fmt.Sprintf("postgres://%s:%s@localhost:%s/%s?sslmode=disable",
|
||||
user, pass, port.Port(), name)
|
||||
}).
|
||||
WithStartupTimeout(25*time.Second).
|
||||
WithPollInterval(10*time.Second),
|
||||
),
|
||||
}
|
||||
|
||||
|
||||
@@ -68,12 +68,16 @@ func CreateRunnersAndServicesNetwork(t *testing.T, ctx context.Context, ncfg *Ec
|
||||
qs := make(map[string]*Container, len(ncfg.Runners))
|
||||
qclean := make([]func(), len(ncfg.Runners))
|
||||
for i, r := range ncfg.Runners {
|
||||
url := CreateQueue(t, ctx, ncfg.Cfg, r.Name)
|
||||
url := r.QueueURL
|
||||
if url == nil {
|
||||
u := CreateQueue(t, ctx, ncfg.Cfg, r.Name)
|
||||
url = &u
|
||||
}
|
||||
|
||||
c, ccleanup := CreateRunner(t, ctx, &RunnerConfig{
|
||||
Name: r.Name,
|
||||
Env: r.Env,
|
||||
QueueURL: url,
|
||||
QueueURL: *url,
|
||||
Cfg: ncfg.Cfg,
|
||||
Network: network,
|
||||
})
|
||||
@@ -167,6 +171,7 @@ func CreateServiceNetwork(t *testing.T, ctx context.Context, scfg *ServiceNetwor
|
||||
type RunnerNetworkConfig struct {
|
||||
Network *testcontainers.DockerNetwork
|
||||
AWSContainer *AWSContainerConfig
|
||||
QueueURL *string
|
||||
Cfg serviceconfig.ConfigProvider
|
||||
Name Runner
|
||||
Env map[string]string
|
||||
@@ -194,7 +199,11 @@ func CreateRunnerNetwork(t *testing.T, ctx context.Context, rcfg *RunnerNetworkC
|
||||
}
|
||||
}
|
||||
|
||||
url := CreateQueue(t, ctx, rcfg.Cfg, rcfg.Name)
|
||||
url := rcfg.QueueURL
|
||||
if url == nil {
|
||||
u := CreateQueue(t, ctx, rcfg.Cfg, rcfg.Name)
|
||||
url = &u
|
||||
}
|
||||
|
||||
_, dbcleanup := CreateDB(t, ctx, &CreateDatabaseConfig{
|
||||
Network: network,
|
||||
@@ -204,7 +213,7 @@ func CreateRunnerNetwork(t *testing.T, ctx context.Context, rcfg *RunnerNetworkC
|
||||
c, ccleanup := CreateRunner(t, ctx, &RunnerConfig{
|
||||
Name: rcfg.Name,
|
||||
Env: rcfg.Env,
|
||||
QueueURL: url,
|
||||
QueueURL: *url,
|
||||
Cfg: rcfg.Cfg,
|
||||
Network: network,
|
||||
})
|
||||
|
||||
@@ -8,6 +8,7 @@ import (
|
||||
doctextrunner "queryorchestration/api/docTextRunner"
|
||||
jobsyncrunner "queryorchestration/api/jobSyncRunner"
|
||||
queryrunner "queryorchestration/api/queryRunner"
|
||||
querysyncrunner "queryorchestration/api/querySyncRunner"
|
||||
"testing"
|
||||
|
||||
"queryorchestration/internal/serviceconfig"
|
||||
@@ -22,7 +23,7 @@ const (
|
||||
DocSyncRunner = docsyncrunner.Name
|
||||
DocCleanRunner = doccleanrunner.Name
|
||||
DocTextRunner = doctextrunner.Name
|
||||
QuerySyncRunner = queryrunner.Name
|
||||
QuerySyncRunner = querysyncrunner.Name
|
||||
QueryRunner = queryrunner.Name
|
||||
JobSyncRunner = jobsyncrunner.Name
|
||||
)
|
||||
|
||||
Reference in New Issue
Block a user