47 lines
1.6 KiB
C#
47 lines
1.6 KiB
C#
using DotNet.Testcontainers.Builders;
|
|
using JSMR.Tests.Fixtures;
|
|
using JSMR.Tests.Ingestion;
|
|
using Testcontainers.MariaDb;
|
|
|
|
[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 string TemplateDbName { get; } = "jsmr_template";
|
|
|
|
public async ValueTask InitializeAsync()
|
|
{
|
|
_container = new MariaDbBuilder()
|
|
.WithImage($"mariadb:{MajorVersion}.{MinorVersion}.{Build}")
|
|
.WithEnvironment("MARIADB_ROOT_PASSWORD", "rootpw")
|
|
.WithUsername("root")
|
|
.WithPassword("rootpw")
|
|
.WithWaitStrategy(Wait.ForUnixContainer().UntilInternalTcpPortIsAvailable(3306))
|
|
.Build();
|
|
|
|
await _container.StartAsync();
|
|
|
|
var hostOverride = Environment.GetEnvironmentVariable("TESTCONTAINERS_HOST_OVERRIDE");
|
|
var host = string.IsNullOrWhiteSpace(hostOverride) ? "127.0.0.1" : hostOverride;
|
|
|
|
RootConnectionString = _container.GetConnectionString()
|
|
.Replace("127.0.0.1", host) // normalize when running inside job container
|
|
.Replace("localhost", host);
|
|
|
|
// Build the template ONCE with EF + your existing seed
|
|
await MariaDbClone.CreateTemplateAsync(
|
|
RootConnectionString,
|
|
TemplateDbName);
|
|
}
|
|
|
|
public async ValueTask DisposeAsync() => await _container.DisposeAsync();
|
|
} |