-
-
Notifications
You must be signed in to change notification settings - Fork 592
Closed
Labels
podmanIssues regarding podman.Issues regarding podman.
Description
Testcontainers version
0.15.0
Using the latest Testcontainers version?
Yes
Host OS
Linux
Host Arch
x86_64
Go Version
1.19
Docker version
mero@dibbler ~$ podman version
Version: 3.4.7
API Version: 3.4.7
Go Version: go1.16.15
Built: Thu Apr 21 19:38:09 2022
OS/Arch: linux/amd64Docker info
mero@dibbler ~$ podman info
host:
arch: amd64
buildahVersion: 1.23.1
cgroupControllers:
- cpu
- io
- memory
- pids
cgroupManager: systemd
cgroupVersion: v2
conmon:
package: conmon-2.0.32-1.fc34.x86_64
path: /usr/bin/conmon
version: 'conmon version 2.0.32, commit: '
cpus: 12
distribution:
distribution: fedora
variant: workstation
version: "34"
eventLogger: journald
hostname: dibbler
idMappings:
gidmap:
- container_id: 0
host_id: 1000
size: 1
- container_id: 1
host_id: 100000
size: 65536
uidmap:
- container_id: 0
host_id: 1000
size: 1
- container_id: 1
host_id: 100000
size: 65536
kernel: 5.17.12-100.fc34.x86_64
linkmode: dynamic
logDriver: k8s-file
memFree: 1298100224
memTotal: 16543584256
ociRuntime:
name: crun
package: crun-1.4.4-1.fc34.x86_64
path: /usr/bin/crun
version: |-
crun version 1.4.4
commit: 6521fcc5806f20f6187eb933f9f45130c86da230
spec: 1.0.0
+SYSTEMD +SELINUX +APPARMOR +CAP +SECCOMP +EBPF +CRIU +YAJL
os: linux
remoteSocket:
exists: true
path: /run/user/1000/podman/podman.sock
security:
apparmorEnabled: false
capabilities: CAP_CHOWN,CAP_DAC_OVERRIDE,CAP_FOWNER,CAP_FSETID,CAP_KILL,CAP_NET_BIND_SERVICE,CAP_SETFCAP,CAP_SETGID,CAP_SETPCAP,CAP_SETUID,CAP_SYS_CHROOT
rootless: true
seccompEnabled: true
seccompProfilePath: /usr/share/containers/seccomp.json
selinuxEnabled: true
serviceIsRemote: false
slirp4netns:
executable: /usr/bin/slirp4netns
package: slirp4netns-1.1.12-2.fc34.x86_64
version: |-
slirp4netns version 1.1.12
commit: 7a104a101aa3278a2152351a082a6df71f57c9a3
libslirp: 4.4.0
SLIRP_CONFIG_VERSION_MAX: 3
libseccomp: 2.5.3
swapFree: 16906444800
swapTotal: 16936591360
uptime: 221h 45m 47.69s (Approximately 9.21 days)
plugins:
log:
- k8s-file
- none
- journald
network:
- bridge
- macvlan
volume:
- local
registries:
search:
- registry.fedoraproject.org
- registry.access.redhat.com
- docker.io
- quay.io
store:
configFile: /home/mero/.config/containers/storage.conf
containerStore:
number: 42
paused: 0
running: 0
stopped: 42
graphDriverName: overlay
graphOptions: {}
graphRoot: /home/mero/.local/share/containers/storage
graphStatus:
Backing Filesystem: extfs
Native Overlay Diff: "true"
Supports d_type: "true"
Using metacopy: "false"
imageStore:
number: 4
runRoot: /run/user/1000/containers
volumePath: /home/mero/.local/share/containers/storage/volumes
version:
APIVersion: 3.4.7
Built: 1650562689
BuiltTime: Thu Apr 21 19:38:09 2022
GitCommit: ""
GoVersion: go1.16.15
OsArch: linux/amd64
Version: 3.4.7What happened?
We are seeing test flakes with the error message mysql.Endpoint() = port not found. The code we use to create the container is attached below. In particular, we use both wait.ForListeningPort("3306/tcp") and wait.ForLog("port: 3306") to make sure we wait until the container is running and available. However, it seems even with that, GenericContainer will occasionally return without being ready, as evidenced by the fact that Endpoint returns an error about the port not being found.
Relevant log output
No response
Additional Information
mysql, err := testcontainers.GenericContainer(ctx, testcontainers.GenericContainerRequest{
ContainerRequest: testcontainers.ContainerRequest{
Image: "mysql:8",
ExposedPorts: []string{"3306/tcp"},
Env: map[string]string{
"MYSQL_ROOT_PASSWORD": "test",
},
WaitingFor: wait.ForAll(wait.ForListeningPort("3306/tcp"), wait.ForLog("port: 3306")),
SkipReaper: true, // https://github.com/testcontainers/testcontainers-go/issues/604
},
Started: true,
Logger: testcontainers.TestLogger(t),
})
if err != nil {
t.Fatalf("testcontainers.GenericContainer() = %v", err)
}
t.Cleanup(func() {
t.Logf("Stopping container")
d := new(time.Duration)
// TODO: What happens when the context expires? Can we pass a different
// context here, or would that prevent Stop from working?
mysql.Stop(context.Background(), d)
})
ep, err := mysql.Endpoint(ctx, "")
if err != nil {
t.Fatalf("mysql.Endpoint() = %v", err)
}Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
podmanIssues regarding podman.Issues regarding podman.