-
-
Notifications
You must be signed in to change notification settings - Fork 10
Description
Testcontainers version
4.5.0
Using the latest Testcontainers version?
Yes
Host OS
MacOs
Host arch
ARM
.NET version
9.0.203
Docker version
Client: Podman Engine
Version: 5.5.0
API Version: 5.5.0
Go Version: go1.24.3
Built: Tue May 13 20:59:13 2025
Build Origin: brew
OS/Arch: darwin/arm64
Server: Podman Engine
Version: 5.2.4
API Version: 5.2.4
Go Version: go1.22.7
Built: Mon Oct 7 02:00:00 2024
OS/Arch: linux/arm64Docker info
Client:
APIVersion: 5.5.0
BuildOrigin: brew
Built: 1747162753
BuiltTime: Tue May 13 20:59:13 2025
GitCommit: ""
GoVersion: go1.24.3
Os: darwin
OsArch: darwin/arm64
Version: 5.5.0
host:
arch: arm64
buildahVersion: 1.37.4
cgroupControllers:
- cpuset
- cpu
- io
- memory
- pids
- rdma
- misc
cgroupManager: systemd
cgroupVersion: v2
conmon:
package: conmon-2.1.12-2.fc40.aarch64
path: /usr/bin/conmon
version: 'conmon version 2.1.12, commit: '
cpuUtilization:
idlePercent: 98.93
systemPercent: 0.6
userPercent: 0.46
cpus: 5
databaseBackend: sqlite
distribution:
distribution: fedora
variant: coreos
version: "40"
eventLogger: journald
freeLocks: 2041
hostname: localhost.localdomain
idMappings:
gidmap: null
uidmap: null
kernel: 6.10.10-200.fc40.aarch64
linkmode: dynamic
logDriver: journald
memFree: 1079021568
memTotal: 2043764736
networkBackend: netavark
networkBackendInfo:
backend: netavark
dns:
package: aardvark-dns-1.12.1-1.20241007140227477357.main.38.g08fbf82.fc40.aarch64
path: /usr/libexec/podman/aardvark-dns
version: aardvark-dns 1.13.0-dev
package: netavark-1.12.1-1.20241007131025236895.main.62.g47632d8.fc40.aarch64
path: /usr/libexec/podman/netavark
version: netavark 1.13.0-dev
ociRuntime:
name: crun
package: crun-1.17-1.20241007140634150540.main.7.g7c194cb.fc40.aarch64
path: /usr/bin/crun
version: |-
crun version UNKNOWN
commit: 4f2c23486977b381fd9461150d2c0038b7d918b3
rundir: /run/crun
spec: 1.0.0
+SYSTEMD +SELINUX +APPARMOR +CAP +SECCOMP +EBPF +CRIU +LIBKRUN +WASM:wasmedge +YAJL
os: linux
pasta:
executable: /usr/bin/pasta
package: passt-0^20240906.g6b38f07-1.fc40.aarch64
version: |
pasta 0^20240906.g6b38f07-1.fc40.aarch64-pasta
Copyright Red Hat
GNU General Public License, version 2 or later
<https://www.gnu.org/licenses/old-licenses/gpl-2.0.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.
remoteSocket:
exists: true
path: /run/podman/podman.sock
rootlessNetworkCmd: pasta
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: false
seccompEnabled: true
seccompProfilePath: /usr/share/containers/seccomp.json
selinuxEnabled: true
serviceIsRemote: true
slirp4netns:
executable: /usr/bin/slirp4netns
package: slirp4netns-1.2.2-2.fc40.aarch64
version: |-
slirp4netns version 1.2.2
commit: 0ee2d87523e906518d34a6b423271e4826f71faf
libslirp: 4.7.0
SLIRP_CONFIG_VERSION_MAX: 4
libseccomp: 2.5.5
swapFree: 0
swapTotal: 0
uptime: 0h 3m 41.00s
variant: v8
plugins:
authorization: null
log:
- k8s-file
- none
- passthrough
- journald
network:
- bridge
- macvlan
- ipvlan
volume:
- local
registries:
search:
- docker.io
store:
configFile: /usr/share/containers/storage.conf
containerStore:
number: 4
paused: 0
running: 0
stopped: 4
graphDriverName: overlay
graphOptions:
overlay.imagestore: /usr/lib/containers/storage
overlay.mountopt: nodev,metacopy=on
graphRoot: /var/lib/containers/storage
graphRootAllocated: 106769133568
graphRootUsed: 16722006016
graphStatus:
Backing Filesystem: xfs
Native Overlay Diff: "false"
Supports d_type: "true"
Supports shifting: "true"
Supports volatile: "true"
Using metacopy: "true"
imageCopyTmpDir: /var/tmp
imageStore:
number: 12
runRoot: /run/containers/storage
transientStore: false
volumePath: /var/lib/containers/storage/volumes
version:
APIVersion: 5.2.4
Built: 1728259200
BuiltTime: Mon Oct 7 02:00:00 2024
GitCommit: ""
GoVersion: go1.22.7
Os: linux
OsArch: linux/arm64
Version: 5.2.4What happened?
Hi !
Happy Testcontainers user here, thanks for this excellent tool :)
I have a regression that was introduced by an upgrade of Testcontainers from 4.4.0 to 4.5.0:
- <PackageVersion Include="Testcontainers.MsSql" Version="4.4.0" />
- <PackageVersion Include="Testcontainers.RabbitMq" Version="4.4.0" />
- <PackageVersion Include="Testcontainers.PostgreSql" Version="4.4.0" />
+ <PackageVersion Include="Testcontainers.MsSql" Version="4.5.0" />
+ <PackageVersion Include="Testcontainers.RabbitMq" Version="4.5.0" />
+ <PackageVersion Include="Testcontainers.PostgreSql" Version="4.5.0" />
The update works fine for my other colleagues that are using docker, but it fails on my environment and I suspect it's because I'm using podman.
Looking at the error message cannot hijack chunked or content length stream like testcontainers/testcontainers-dotnet#431 or testcontainers/testcontainers-dotnet#1281. Both are related to users with Docker.
On this project we're using both SqlServer and PostGre containers and both are affected by this problem. Here is the code that is use to Build them:
private readonly MsSqlContainer _msSqlContainer = new MsSqlBuilder()
.WithImage(MssqlDockerImage)
.Build(); private readonly PostgreSqlContainer _pgContainer = new PostgreSqlBuilder()
.WithPassword("***")
.WithUsername("***")
.WithDatabase("***")
.WithImage(PgDockerImage)
.WithExposedPort(64268)
.WithAutoRemove(true)
.WithCommand("-c", $"max_connections={PostgresContainerMaxConnections}")
.Build();I don't really known how to investigate the problem further so I would be very happy for any lead on how to proceed from here. The problem is deterministic on my setup and I can compare it with the previous versions to provide additional informations.
Thanks !
Relevant log output
System.InvalidOperationException
cannot hijack chunked or content length stream
at Microsoft.Net.Http.Client.HttpConnectionResponseContent.HijackStream() in /_/src/Docker.DotNet/Microsoft.Net.Http.Client/HttpConnectionResponseContent.cs:line 37
at Docker.DotNet.DockerClient.MakeRequestForHijackedStreamAsync(IEnumerable`1 errorHandlers, HttpMethod method, String path, IQueryString queryString, IRequestContent body, IDictionary`2 headers, TimeSpan timeout, CancellationToken cancellationToken) in /_/src/Docker.DotNet/DockerClient.cs:line 400
at Docker.DotNet.ExecOperations.StartContainerExecAsync(String id, ContainerExecStartParameters parameters, CancellationToken cancellationToken) in /_/src/Docker.DotNet/Endpoints/ExecOperations.cs:line 58
at DotNet.Testcontainers.Clients.DockerContainerOperations.ExecAsync(String id, IList`1 command, CancellationToken ct) in /_/src/Testcontainers/Clients/DockerContainerOperations.cs:line 165
at Testcontainers.PostgreSql.PostgreSqlBuilder.WaitUntil.UntilAsync(IContainer container) in /_/src/Testcontainers.PostgreSql/PostgreSqlBuilder.cs:line 152
at DotNet.Testcontainers.Containers.DockerContainer.CheckReadinessAsync(WaitStrategy waitStrategy, CancellationToken ct) in /_/src/Testcontainers/Containers/DockerContainer.cs:line 646
at DotNet.Testcontainers.Configurations.WaitStrategy.<>c__DisplayClass24_0.<<WaitUntilAsync>g__UntilAsync|0>d.MoveNext() in /_/src/Testcontainers/Configurations/WaitStrategies/WaitStrategy.cs:line 184
--- End of stack trace from previous location ---
at DotNet.Testcontainers.Configurations.WaitStrategy.WaitUntilAsync(Func`1 wait, TimeSpan interval, TimeSpan timeout, Int32 retries, CancellationToken ct) in /_/src/Testcontainers/Configurations/WaitStrategies/WaitStrategy.cs:line 213
at DotNet.Testcontainers.Containers.DockerContainer.CheckReadinessAsync(IEnumerable`1 waitStrategies, CancellationToken ct) in /_/src/Testcontainers/Containers/DockerContainer.cs:line 664
at DotNet.Testcontainers.Containers.DockerContainer.UnsafeStartAsync(CancellationToken ct) in /_/src/Testcontainers/Containers/DockerContainer.cs:line 526
at DotNet.Testcontainers.Containers.DockerContainer.StartAsync(CancellationToken ct) in /_/src/Testcontainers/Containers/DockerContainer.cs:line 309
at Refinement.Tests.Unit.TestHelpers.Database.RefinementDatabaseFixture.InitializeAsync() in /Users/victorlambret/git/cm-refinement-app/test/Refinement.Tests.Unit/TestHelpers/Database/RefinementDatabaseFixture.cs:line 64Additional information
No response