Skip to content

Commit

Permalink
fix(sql/testing): use wait.ForSQL when readying cockroach (#1183)
Browse files Browse the repository at this point in the history
* fix(sql/testing): use wait.ForSQL when readying cockroach

* test: configure logging stdout and stderr of sql test containers
  • Loading branch information
GeorgeMac authored Nov 30, 2022
1 parent 5e3c257 commit 2638b10
Showing 1 changed file with 18 additions and 1 deletion.
19 changes: 18 additions & 1 deletion internal/storage/sql/testing/testing.go
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@ import (
"database/sql"
"errors"
"fmt"
"log"
"os"

"github.com/docker/go-connections/nat"
Expand Down Expand Up @@ -38,6 +39,7 @@ func (d *Database) Shutdown(ctx context.Context) {
}

if d.Container != nil {
_ = d.Container.StopLogProducer()
_ = d.Container.Terminate(ctx)
}
}
Expand Down Expand Up @@ -216,7 +218,9 @@ func NewDBContainer(ctx context.Context, proto config.DatabaseProtocol) (*DBCont
req = testcontainers.ContainerRequest{
Image: "cockroachdb/cockroach:latest-v21.2",
ExposedPorts: []string{"26257/tcp", "8080/tcp"},
WaitingFor: wait.ForHTTP("/health").WithPort("8080"),
WaitingFor: wait.ForSQL(port, "postgres", func(host string, port nat.Port) string {
return fmt.Sprintf("postgres://root@%s:%s/defaultdb?sslmode=disable", host, port.Port())
}),
Env: map[string]string{
"COCKROACH_USER": "root",
"COCKROACH_DATABASE": "defaultdb",
Expand Down Expand Up @@ -248,6 +252,13 @@ func NewDBContainer(ctx context.Context, proto config.DatabaseProtocol) (*DBCont
return nil, err
}

if err := container.StartLogProducer(ctx); err != nil {
return nil, err
}

var logger testContainerLogger
container.FollowOutput(&logger)

mappedPort, err := container.MappedPort(ctx, port)
if err != nil {
return nil, err
Expand All @@ -260,3 +271,9 @@ func NewDBContainer(ctx context.Context, proto config.DatabaseProtocol) (*DBCont

return &DBContainer{Container: container, Host: hostIP, Port: mappedPort.Int()}, nil
}

type testContainerLogger struct{}

func (t testContainerLogger) Accept(entry testcontainers.Log) {
log.Println(entry.LogType, ":", string(entry.Content))
}

0 comments on commit 2638b10

Please sign in to comment.