Improved performance of integration tests.
Some checks failed
ci / build-test (push) Failing after 8m39s

This commit is contained in:
2025-11-02 13:56:34 -05:00
parent b06eadef1d
commit abd5a81e3e
10 changed files with 262 additions and 130 deletions

View File

@@ -1,66 +1,10 @@
using DotNet.Testcontainers.Builders;
using DotNet.Testcontainers.Containers;
using JSMR.Infrastructure.Data;
using JSMR.Tests.Fixtures;
using JSMR.Infrastructure.Data;
using Microsoft.EntityFrameworkCore;
using MySqlConnector;
using Testcontainers.MariaDb;
using Testcontainers.Xunit;
using Xunit.Sdk;
[assembly: AssemblyFixture(typeof(MariaDbContainerFixture))]
namespace JSMR.Tests.Fixtures;
public sealed class MariaDbContainerFixture : IAsyncLifetime
{
const int MajorVersion = 10;
const int MinorVersion = 11;
const int Build = 6;
private MariaDbContainer _container = default!;
public string RootConnectionString { get; private set; } = default!;
public async ValueTask InitializeAsync()
{
//_container = new ContainerBuilder()
// .WithImage("mariadb:11")
// .WithEnvironment("MARIADB_ROOT_PASSWORD", "rootpw")
// .WithPortBinding(3307, 3306)
// .WithWaitStrategy(Wait.ForUnixContainer().UntilPortIsAvailable(3306))
// .Build();
//_container = new ContainerBuilder()
// .WithImage($"mariadb:{MajorVersion}.{MinorVersion}.{Build}")
// .WithEnvironment("MARIADB_ROOT_PASSWORD", "rootpw")
// //.WithPortBinding(3307, 3306)
// .WithPortBinding(3306, assignRandomHostPort: true)
// .WithWaitStrategy(Wait.ForUnixContainer().UntilInternalTcpPortIsAvailable(3306))
// .Build();
_container = new MariaDbBuilder()
.WithImage($"mariadb:{MajorVersion}.{MinorVersion}.{Build}")
.WithEnvironment("MARIADB_ROOT_PASSWORD", "rootpw")
.WithUsername("root")
.WithPassword("rootpw")
// no explicit port binding
.WithWaitStrategy(Wait.ForUnixContainer().UntilInternalTcpPortIsAvailable(3306))
.Build();
await _container.StartAsync();
// No database specified: well create per-test DBs
//RootConnectionString = "Server=127.0.0.1;Port=3307;User=root;Password=rootpw;SslMode=none;";
RootConnectionString = _container.GetConnectionString();
var port = _container.GetMappedPublicPort(3306);
//RootConnectionString = $"Server=127.0.0.1;Port={port};User=root;Password=rootpw;SslMode=none;";
}
public async ValueTask DisposeAsync() => await _container.DisposeAsync();
}
public class MariaDbFixture : IAsyncLifetime
{
const int MajorVersion = 10;
@@ -125,31 +69,6 @@ public class MariaDbFixture : IAsyncLifetime
}
}
[CollectionDefinition("db")]
public sealed class MariaDbCollection : ICollectionFixture<MariaDbContainerFixture> { }
//public class MariaDbAssemblyFixtureDefinition : IAssemblyFixture<MariaDbContainerFixture> { }
//[UsedImplicitly]
public sealed class MariaDbContainerFixture2(IMessageSink messageSink)
: ContainerFixture<MariaDbBuilder, MariaDbContainer>(messageSink)
{
const int MajorVersion = 10;
const int MinorVersion = 11;
const int Build = 6;
public string RootConnectionString => $"Server={Container.IpAddress};Port=3306;User=root;Password=rootpw;SslMode=none;";
protected override MariaDbBuilder Configure(MariaDbBuilder builder)
{
return builder.WithImage($"mariadb:{MajorVersion}.{MinorVersion}.{Build}")
.WithEnvironment("MARIADB_ROOT_PASSWORD", "rootpw")
.WithPortBinding(3307, 3306)
//.WithPortBinding(3306, assignRandomHostPort: true)
.WithWaitStrategy(Wait.ForUnixContainer().UntilInternalTcpPortIsAvailable(3306));
}
}
public static class MariaTestDb
{