testcontainers-go
testcontainers-go copied to clipboard
[Bug]: CockroachDB module does not support overriding of wait strategy deadline
Testcontainers version
0.29.1
Using the latest Testcontainers version?
Yes
Host OS
MacOS
Host arch
ARM
Go version
1.21
Docker version
Client:
Cloud integration: v1.0.35+desktop.11
Version: 25.0.3
API version: 1.44
Go version: go1.21.6
Git commit: 4debf41
Built: Tue Feb 6 21:13:26 2024
OS/Arch: darwin/arm64
Context: desktop-linux
Server: Docker Desktop 4.28.0 (139021)
Engine:
Version: 25.0.3
API version: 1.44 (minimum version 1.24)
Go version: go1.21.6
Git commit: f417435
Built: Tue Feb 6 21:14:22 2024
OS/Arch: linux/arm64
Experimental: false
containerd:
Version: 1.6.28
GitCommit: ae07eda36dd25f8a1b98dfbf587313b99c0190bb
runc:
Version: 1.1.12
GitCommit: v1.1.12-0-g51d5e94
docker-init:
Version: 0.19.0
GitCommit: de40ad0
Docker info
Client:
Version: 25.0.3
Context: desktop-linux
Debug Mode: false
Plugins:
buildx: Docker Buildx (Docker Inc.)
Version: v0.12.1-desktop.4
Path: /Users/ahsiddiqui/.docker/cli-plugins/docker-buildx
compose: Docker Compose (Docker Inc.)
Version: v2.24.6-desktop.1
Path: /Users/ahsiddiqui/.docker/cli-plugins/docker-compose
debug: Get a shell into any image or container. (Docker Inc.)
Version: 0.0.24
Path: /Users/ahsiddiqui/.docker/cli-plugins/docker-debug
dev: Docker Dev Environments (Docker Inc.)
Version: v0.1.0
Path: /Users/ahsiddiqui/.docker/cli-plugins/docker-dev
extension: Manages Docker extensions (Docker Inc.)
Version: v0.2.22
Path: /Users/ahsiddiqui/.docker/cli-plugins/docker-extension
feedback: Provide feedback, right in your terminal! (Docker Inc.)
Version: v1.0.4
Path: /Users/ahsiddiqui/.docker/cli-plugins/docker-feedback
init: Creates Docker-related starter files for your project (Docker Inc.)
Version: v1.0.1
Path: /Users/ahsiddiqui/.docker/cli-plugins/docker-init
sbom: View the packaged-based Software Bill Of Materials (SBOM) for an image (Anchore Inc.)
Version: 0.6.0
Path: /Users/ahsiddiqui/.docker/cli-plugins/docker-sbom
scout: Docker Scout (Docker Inc.)
Version: v1.5.0
Path: /Users/ahsiddiqui/.docker/cli-plugins/docker-scout
WARNING: Plugin "/Users/ahsiddiqui/.docker/cli-plugins/docker-scan" is not valid: failed to fetch metadata: fork/exec /Users/ahsiddiqui/.docker/cli-plugins/docker-scan: no such file or directory
Server:
Containers: 28
Running: 0
Paused: 0
Stopped: 28
Images: 30
Server Version: 25.0.3
Storage Driver: overlay2
Backing Filesystem: extfs
Supports d_type: true
Using metacopy: false
Native Overlay Diff: true
userxattr: false
Logging Driver: json-file
Cgroup Driver: cgroupfs
Cgroup Version: 2
Plugins:
Volume: local
Network: bridge host ipvlan macvlan null overlay
Log: awslogs fluentd gcplogs gelf journald json-file local splunk syslog
Swarm: inactive
Runtimes: io.containerd.runc.v2 runc
Default Runtime: runc
Init Binary: docker-init
containerd version: ae07eda36dd25f8a1b98dfbf587313b99c0190bb
runc version: v1.1.12-0-g51d5e94
init version: de40ad0
Security Options:
seccomp
Profile: unconfined
cgroupns
Kernel Version: 6.6.16-linuxkit
Operating System: Docker Desktop
OSType: linux
Architecture: aarch64
CPUs: 10
Total Memory: 7.657GiB
Name: docker-desktop
ID: 88a7eee7-be09-47a6-b30e-27e0bd44854d
Docker Root Dir: /var/lib/docker
Debug Mode: false
HTTP Proxy: http.docker.internal:3128
HTTPS Proxy: http.docker.internal:3128
No Proxy: hubproxy.docker.internal
Experimental: false
Insecure Registries:
hubproxy.docker.internal:5555
sv2lxcad03.corp.equinix.com:7100
127.0.0.0/8
Live Restore Enabled: false
WARNING: daemon is not using the default seccomp profile
What happened?
My tests have been failing in my CI pipeline because it takes more than a minute to start the cockroachdb test container. I wanted to increase the wait strategy's deadline time so the tests had a chance to run the container before the test failed. I looked at the documentation and found something that mentioned that you could use the WithWaitStrategyAndDeadline
method to specify a deadline.
I tried doing this, but it didn't really work:
cdbContainer, err := cockroachdb.RunContainer(
ctx,
testcontainers.WithImage("cockroachdb/cockroach:v23.2.1"),
testcontainers.WithWaitStrategyAndDeadline(time.Minute*5, wait.ForHealthCheck()),
)
I tried the same thing with Kafka container and it was successful in overriding the deadline:
kafkaContainer, err := tcKafka.RunContainer(
ctx,
tcKafka.WithClusterID("test-kafka-cluster"),
testcontainers.WithImage("confluentinc/cp-kafka:latest"),
testcontainers.WithWaitStrategyAndDeadline(time.Minute*5, wait.ForHealthCheck()),
)
Relevant log output
log output for cockroachdb container running:
2024/03/28 18:38:11 🐳 Creating container for image cockroachdb/cockroach:v23.2.1
2024/03/28 18:38:11 ✅ Container created: 78dfd556e6fb
2024/03/28 18:38:11 🐳 Starting container: 78dfd556e6fb
2024/03/28 18:38:11 ✅ Container started: 78dfd556e6fb
2024/03/28 18:38:11 🚧 Waiting for container id 78dfd556e6fb image: cockroachdb/cockroach:v23.2.1. Waiting for: &{timeout:<nil> deadline:<nil> Strategies:[0x14000598100 0x140000461e0]}
----------------------------------------
log output for kafka container running:
2024/03/28 18:36:05 🐳 Creating container for image confluentinc/cp-kafka:latest
2024/03/28 18:36:05 ✅ Container created: 0212fc36d765
2024/03/28 18:36:05 🐳 Starting container: 0212fc36d765
2024/03/28 18:36:09 ✅ Container started: 0212fc36d765
2024/03/28 18:36:09 🚧 Waiting for container id 0212fc36d765 image: confluentinc/cp-kafka:latest. Waiting for: &{timeout:<nil> deadline:0x140004fe778 Strategies:[0x140000459b0]}
Additional information
No response
Coachroachdb wait strategy handling was generally broken. PR Opened.