Skip to content

Commit c132f45

Browse files
authored
Merge pull request #223 from HofmeisterAn/main
Fix Easy Racer .NET tests (fix async/await)
2 parents ce8ab12 + c44e28a commit c132f45

File tree

6 files changed

+248
-186
lines changed

6 files changed

+248
-186
lines changed

dotnet/EasyRacer.Tests/LibraryTests.cs

+31-31
Original file line numberDiff line numberDiff line change
@@ -12,72 +12,72 @@ public LibraryTests(TestcontainersFixture fixture)
1212
}
1313

1414
[Fact]
15-
public async void TestScenario1()
15+
public async Task TestScenario1()
1616
{
17-
var lib = new Library(fixture.HttpClient);
18-
Assert.Equal("right", await lib.Scenario1(fixture.Port));
17+
var lib = new Library(fixture.HttpClient);
18+
Assert.Equal("right", await lib.Scenario1(fixture.Host, fixture.Port));
1919
}
20-
20+
2121
[Fact]
22-
public async void TestScenario2()
22+
public async Task TestScenario2()
2323
{
24-
var lib = new Library(fixture.HttpClient);
25-
Assert.Equal("right", await lib.Scenario2(fixture.Port));
24+
var lib = new Library(fixture.HttpClient);
25+
Assert.Equal("right", await lib.Scenario2(fixture.Host, fixture.Port));
2626
}
2727

2828
[Fact]
29-
public async void TestScenario3()
29+
public async Task TestScenario3()
3030
{
31-
var lib = new Library(fixture.HttpClient);
32-
Assert.Equal("right", await lib.Scenario3(fixture.Port));
31+
var lib = new Library(fixture.HttpClient);
32+
Assert.Equal("right", await lib.Scenario3(fixture.Host, fixture.Port));
3333
}
3434

3535
[Fact]
36-
public async void TestScenario4()
36+
public async Task TestScenario4()
3737
{
38-
var lib = new Library(fixture.HttpClient);
39-
Assert.Equal("right", await lib.Scenario4(fixture.Port));
38+
var lib = new Library(fixture.HttpClient);
39+
Assert.Equal("right", await lib.Scenario4(fixture.Host, fixture.Port));
4040
}
4141

4242
[Fact]
43-
public async void TestScenario5()
43+
public async Task TestScenario5()
4444
{
45-
var lib = new Library(fixture.HttpClient);
46-
Assert.Equal("right", await lib.Scenario5(fixture.Port));
45+
var lib = new Library(fixture.HttpClient);
46+
Assert.Equal("right", await lib.Scenario5(fixture.Host, fixture.Port));
4747
}
4848

4949
[Fact]
50-
public async void TestScenario6()
50+
public async Task TestScenario6()
5151
{
52-
var lib = new Library(fixture.HttpClient);
53-
Assert.Equal("right", await lib.Scenario6(fixture.Port));
52+
var lib = new Library(fixture.HttpClient);
53+
Assert.Equal("right", await lib.Scenario6(fixture.Host, fixture.Port));
5454
}
5555

5656
[Fact]
57-
public async void TestScenario7()
57+
public async Task TestScenario7()
5858
{
59-
var lib = new Library(fixture.HttpClient);
60-
Assert.Equal("right", await lib.Scenario7(fixture.Port));
59+
var lib = new Library(fixture.HttpClient);
60+
Assert.Equal("right", await lib.Scenario7(fixture.Host, fixture.Port));
6161
}
6262

6363
[Fact]
64-
public async void TestScenario8()
64+
public async Task TestScenario8()
6565
{
66-
var lib = new Library(fixture.HttpClient);
67-
Assert.Equal("right", await lib.Scenario8(fixture.Port));
66+
var lib = new Library(fixture.HttpClient);
67+
Assert.Equal("right", await lib.Scenario8(fixture.Host, fixture.Port));
6868
}
6969

7070
[Fact]
71-
public async void TestScenario9()
71+
public async Task TestScenario9()
7272
{
73-
var lib = new Library(fixture.HttpClient);
74-
Assert.Equal("right", await lib.Scenario9(fixture.Port));
73+
var lib = new Library(fixture.HttpClient);
74+
Assert.Equal("right", await lib.Scenario9(fixture.Host, fixture.Port));
7575
}
7676

7777
[Fact]
78-
public async void TestScenario10()
78+
public async Task TestScenario10()
7979
{
80-
var lib = new Library(fixture.HttpClient);
81-
Assert.Equal("right", await lib.Scenario10(fixture.Port));
80+
var lib = new Library(fixture.HttpClient);
81+
Assert.Equal("right", await lib.Scenario10(fixture.Host, fixture.Port));
8282
}
8383
}
Original file line numberDiff line numberDiff line change
@@ -1,43 +1,37 @@
11
using DotNet.Testcontainers.Builders;
22
using DotNet.Testcontainers.Containers;
3+
using Xunit;
34

45
namespace EasyRacer.Tests;
56

6-
public class TestcontainersFixture : IDisposable
7+
public sealed class TestcontainersFixture : IAsyncLifetime, IDisposable
78
{
8-
private const string ContainerImage = "ghcr.io/jamesward/easyracer";
9-
private const int PortBinding = 8080;
9+
private const ushort HttpPort = 8080;
1010

11-
public HttpClient HttpClient { get; private set; }
11+
private readonly IContainer container = new ContainerBuilder()
12+
.WithImage("ghcr.io/jamesward/easyracer")
13+
.WithPortBinding(HttpPort, true)
14+
.WithWaitStrategy(Wait.ForUnixContainer().UntilHttpRequestIsSucceeded(r => r.ForPort(HttpPort)))
15+
.Build();
1216

13-
public int Port { get; private set; }
14-
15-
private readonly IContainer container;
17+
public HttpClient HttpClient { get; } = new HttpClient();
1618

17-
public TestcontainersFixture()
19+
public string Host => container.Hostname;
20+
21+
public ushort Port => container.GetMappedPublicPort(HttpPort);
22+
23+
public Task InitializeAsync()
24+
{
25+
return container.StartAsync();
26+
}
27+
28+
public Task DisposeAsync()
1829
{
19-
container = new ContainerBuilder()
20-
.WithImage(ContainerImage)
21-
// Bind port 8080 of the container to a random port on the host.
22-
.WithPortBinding(PortBinding, true)
23-
// Wait until the HTTP endpoint of the container is available.
24-
.WithWaitStrategy(Wait.ForUnixContainer()
25-
.UntilHttpRequestIsSucceeded(r => r.ForPort(PortBinding)))
26-
// Build the container configuration.
27-
.Build();
28-
29-
// Start the container.
30-
container.StartAsync().Wait();
31-
32-
// Get the port of the container.
33-
Port = container.GetMappedPublicPort(PortBinding);
34-
35-
// Create a new instance of HttpClient to send HTTP requests.
36-
HttpClient = new HttpClient();
37-
}
30+
return container.DisposeAsync().AsTask();
31+
}
3832

3933
public void Dispose()
4034
{
41-
container.StopAsync().Wait();
42-
}
35+
HttpClient.Dispose();
36+
}
4337
}

dotnet/EasyRacer.sln

+28
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
2+
Microsoft Visual Studio Solution File, Format Version 12.00
3+
# Visual Studio Version 17
4+
VisualStudioVersion = 17.0.31903.59
5+
MinimumVisualStudioVersion = 10.0.40219.1
6+
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "EasyRacer", "EasyRacer\EasyRacer.csproj", "{52873FC2-AF8B-43F9-9F85-B9BDEFC9B126}"
7+
EndProject
8+
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "EasyRacer.Tests", "EasyRacer.Tests\EasyRacer.Tests.csproj", "{65168772-B239-4C18-9E18-67F33A6906F8}"
9+
EndProject
10+
Global
11+
GlobalSection(SolutionConfigurationPlatforms) = preSolution
12+
Debug|Any CPU = Debug|Any CPU
13+
Release|Any CPU = Release|Any CPU
14+
EndGlobalSection
15+
GlobalSection(SolutionProperties) = preSolution
16+
HideSolutionNode = FALSE
17+
EndGlobalSection
18+
GlobalSection(ProjectConfigurationPlatforms) = postSolution
19+
{52873FC2-AF8B-43F9-9F85-B9BDEFC9B126}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
20+
{52873FC2-AF8B-43F9-9F85-B9BDEFC9B126}.Debug|Any CPU.Build.0 = Debug|Any CPU
21+
{52873FC2-AF8B-43F9-9F85-B9BDEFC9B126}.Release|Any CPU.ActiveCfg = Release|Any CPU
22+
{52873FC2-AF8B-43F9-9F85-B9BDEFC9B126}.Release|Any CPU.Build.0 = Release|Any CPU
23+
{65168772-B239-4C18-9E18-67F33A6906F8}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
24+
{65168772-B239-4C18-9E18-67F33A6906F8}.Debug|Any CPU.Build.0 = Debug|Any CPU
25+
{65168772-B239-4C18-9E18-67F33A6906F8}.Release|Any CPU.ActiveCfg = Release|Any CPU
26+
{65168772-B239-4C18-9E18-67F33A6906F8}.Release|Any CPU.Build.0 = Release|Any CPU
27+
EndGlobalSection
28+
EndGlobal

0 commit comments

Comments
 (0)