Skip to content

Commit

Permalink
Enable starting test container in Animals tests
Browse files Browse the repository at this point in the history
  • Loading branch information
amidgol committed Feb 25, 2021
1 parent 7fcf52d commit ddcc7e8
Show file tree
Hide file tree
Showing 3 changed files with 53 additions and 7 deletions.
1 change: 1 addition & 0 deletions .gitignore
Expand Up @@ -77,6 +77,7 @@ e2e-tests/*/Properties/
*.launchSettings.json
*.sln.DotSettings.user
*appsettings.Development.json
e2e-tests/dotnet-rest/test/*/appsettings.json

.LocalNuget/*
!.LocalNuget/.gitkeep
Expand Down
@@ -1,9 +1,14 @@
using System;
using System.Collections.Generic;
using System.Threading.Tasks;
using Controller;
using Controller.Api;
using Controller.Controllers.db;
using Controller.Problem;
using DotNet.Testcontainers.Containers.Builders;
using DotNet.Testcontainers.Containers.Configurations.Databases;
using DotNet.Testcontainers.Containers.Modules.Abstractions;
using DotNet.Testcontainers.Containers.Modules.Databases;
using Microsoft.Extensions.Configuration;
using Npgsql;
using RestApis.Animals;
Expand All @@ -14,6 +19,9 @@ public class EmbeddedEvoMasterController : EmbeddedSutController
{
private bool _isSutRunning;
private int _sutPort;
private TestcontainerDatabase _database;
private NpgsqlConnection _connection;
private string _connectionString;

public static void Main(string[] args)
{
Expand Down Expand Up @@ -44,9 +52,7 @@ public static void Main(string[] args)

public override void ResetStateOfSut()
{
var connectionString = GetConfiguration("appsettings.json").GetConnectionString("LocalDb");

DbCleaner.ClearDatabase_Postgres(new NpgsqlConnection(connectionString),
DbCleaner.ClearDatabase_Postgres(new NpgsqlConnection(_connectionString),
new List<string> {"Mammals"});
}

Expand All @@ -55,9 +61,13 @@ public override string StartSut()
//TODO: check this again
var ephemeralPort = GetEphemeralTcpPort();

var task = Task.Run(() => { RestApis.Animals.Program.Main(new string[] {ephemeralPort.ToString()}); });
Task.Run(async () =>
{
var connectionString = await StartContainerAsync();
RestApis.Animals.Program.Main(new[] {ephemeralPort.ToString(), connectionString});
});

WaitUntilSutIsRunning(ephemeralPort);
WaitUntilSutIsRunning(ephemeralPort, 40);

_sutPort = ephemeralPort;

Expand All @@ -69,10 +79,36 @@ public override string StartSut()
public override void StopSut()
{
RestApis.Animals.Program.Shutdown();


//TODO
_connection.Close();
_database.StopAsync().GetAwaiter().GetResult();

_isSutRunning = false;
}

protected int GetSutPort() => _sutPort;

private async Task<string> StartContainerAsync()
{
var postgresBuilder = new TestcontainersBuilder<PostgreSqlTestcontainer>()
.WithDatabase(new PostgreSqlTestcontainerConfiguration
{
Database = "AnimalsDatabase",
Username = "user",
Password = "password123",
})
.WithExposedPort(5432);

_database = postgresBuilder.Build();
await _database.StartAsync();

_connection = new NpgsqlConnection(_database.ConnectionString);
await _connection.OpenAsync();

//No idea why the password is missing in the connection string
_connectionString = $"{_connection.ConnectionString};Password={_database.Password}";
return _connectionString;
}
}
}
Expand Up @@ -8,9 +8,18 @@
<StartupObject>RestApis.Tests.Animals.Controller.EmbeddedEvoMasterController</StartupObject>
</PropertyGroup>

<Target Name="htmlWarning" AfterTargets="AfterBuild">
<Copy SourceFiles="../../../../client-dotnet/src/Controller/Resources/warning.html" DestinationFolder="$(OutDir)" />
</Target>

<Target Name="appsettings" AfterTargets="AfterBuild">
<Copy SourceFiles="../../src/RestApis.Animals/appsettings.json" DestinationFolder="$(MSBuildProjectDirectory)" />
</Target>

<ItemGroup>
<PackageReference Include="DotNet.Testcontainers" Version="1.4.0" />
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="16.2.0" />
<PackageReference Include="Newtonsoft.Json" Version="10.0.1" />
<PackageReference Include="Newtonsoft.Json" Version="12.0.3" />
<PackageReference Include="xunit" Version="2.4.0" />
<PackageReference Include="xunit.runner.visualstudio" Version="2.4.0" />
<PackageReference Include="coverlet.collector" Version="1.0.1" />
Expand Down

0 comments on commit ddcc7e8

Please sign in to comment.