Hello,
I have read a previous issue raised https://github.com/HofmeisterAn/dotnet-testcontainers/issues/333 regarding integration of TestContainer in CI Pipeline. I have a similar problem.
I use Bitbucket to run tests, here is my pipeline (apologies for indent):
image: mcr.microsoft.com/dotnet/core/sdk:3.1
options:
docker: true
pipelines:
default:
- step:
script:
- docker ps
- dotnet restore
- dotnet test ModelRunnerSvc.Tests
services:
- docker
caches:
- docker
Notice that I run `docker ps` in order two check if docker is available and it seems Ok.
When I run the pipeline, here is the result:
A total of 1 test files matched the specified pattern.
[xUnit.net 00:00:01.42] ModelRunnerSvc.Tests.JobControllerTest.SubmitModel_GetJob_WhenCalled_ReturnsJob [FAIL]
[xUnit.net 00:00:01.46] ModelRunnerSvc.Tests.JobControllerTest.Submit3Models_GetJobs_WhenCalled_Returns3Jobs [FAIL]
[xUnit.net 00:00:01.53] ModelRunnerSvc.Tests.JobControllerTest.GetJob_WhenCalled_ReturnsEmptyResult [FAIL]
X ModelRunnerSvc.Tests.JobControllerTest.SubmitModel_GetJob_WhenCalled_ReturnsJob [479ms]
Error Message:
System.Net.Http.HttpRequestException : Connection failed
---- System.Net.Internals.SocketExceptionFactory+ExtendedSocketException : Cannot assign requested address /var/run/docker.sock
Stack Trace:
at Microsoft.Net.Http.Client.ManagedHandler.ProcessRequestAsync(HttpRequestMessage request, CancellationToken cancellationToken)
at Microsoft.Net.Http.Client.ManagedHandler.SendAsync(HttpRequestMessage request, CancellationToken cancellationToken)
at System.Net.Http.HttpClient.FinishSendAsyncBuffered(Task`1 sendTask, HttpRequestMessage request, CancellationTokenSource cts, Boolean disposeCts)
at Docker.DotNet.DockerClient.PrivateMakeRequestAsync(TimeSpan timeout, HttpCompletionOption completionOption, HttpMethod method, String path, IQueryString queryString, IDictionary`2 headers, IRequestContent data, CancellationToken cancellationToken)
at Docker.DotNet.DockerClient.PrivateMakeRequestAsync(TimeSpan timeout, HttpCompletionOption completionOption, HttpMethod method, String path, IQueryString queryString, IDictionary`2 headers, IRequestContent data, CancellationToken cancellationToken)
at Docker.DotNet.DockerClient.MakeRequestAsync(IEnumerable`1 errorHandlers, HttpMethod method, String path, IQueryString queryString, IRequestContent body, IDictionary`2 headers, TimeSpan timeout, CancellationToken token)
at Docker.DotNet.ImageOperations.ListImagesAsync(ImagesListParameters parameters, CancellationToken cancellationToken)
at DotNet.Testcontainers.Clients.DockerImageOperations.ByPropertyAsync(String property, String value, CancellationToken ct)
at DotNet.Testcontainers.Clients.DockerImageOperations.ExistsWithNameAsync(String name, CancellationToken ct)
at DotNet.Testcontainers.Clients.TestcontainersClient.RunAsync(ITestcontainersConfiguration configuration, CancellationToken ct)
at DotNet.Testcontainers.Containers.Modules.TestcontainersContainer.Create(CancellationToken ct)
at DotNet.Testcontainers.Containers.Modules.TestcontainersContainer.StartAsync(CancellationToken ct)
at ModelRunnerSvc.Tests.JobControllerTest.SubmitModel_GetJob_WhenCalled_ReturnsJob() in /opt/atlassian/pipelines/agent/build/ModelRunnerSvc.Tests/JobControllerTest.cs:line 96
at ModelRunnerSvc.Tests.JobControllerTest.SubmitModel_GetJob_WhenCalled_ReturnsJob() in /opt/atlassian/pipelines/agent/build/ModelRunnerSvc.Tests/JobControllerTest.cs:line 111
The issue seems to be around Cannot assign requested address /var/run/docker.sock.
Any idea on how to solve it ?