Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
22 changes: 21 additions & 1 deletion src/Testcontainers.Xunit/ContainerLifetime.cs
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ public abstract class ContainerLifetime<TBuilderEntity, TContainerEntity> : IAsy

protected ContainerLifetime(ILogger logger)
{
_container = new Lazy<TContainerEntity>(() => Configure(new TBuilderEntity().WithLogger(logger)).Build());
_container = new Lazy<TContainerEntity>(() => Configure(Configure()).WithLogger(logger).Build());
}

/// <summary>
Expand Down Expand Up @@ -48,6 +48,25 @@ await DisposeAsyncCore()
}
#endif

/// <summary>
/// Configures the container instance.
/// </summary>
/// <example>
/// <code>
/// public class MariaDbRootUserFixture(IMessageSink messageSink) : DbContainerFixture&lt;MariaDbBuilder, MariaDbContainer&gt;(messageSink)
/// {
/// public override DbProviderFactory DbProviderFactory =&gt; MySqlConnectorFactory.Instance;
/// <br />
/// protected override MariaDbBuilder Configure()
/// {
/// return new MariaDbBuilder("mariadb:12").WithUsername("root");
/// }
/// }
/// </code>
/// </example>
/// <returns>A configured instance of <typeparamref name="TBuilderEntity" />.</returns>
protected virtual TBuilderEntity Configure() => new();
Comment thread
HofmeisterAn marked this conversation as resolved.

/// <summary>
/// Extension method to further configure the container instance.
/// </summary>
Expand All @@ -66,6 +85,7 @@ await DisposeAsyncCore()
/// </example>
/// <param name="builder">The container builder to configure.</param>
/// <returns>A configured instance of <typeparamref name="TBuilderEntity" />.</returns>
[Obsolete("This method is obsolete and will be removed. Use the parameterless Configure() method and create the builder explicitly instead.")]
protected virtual TBuilderEntity Configure(TBuilderEntity builder)
{
return builder;
Expand Down
1 change: 1 addition & 0 deletions src/Testcontainers.Xunit/ContainerTest.cs
Original file line number Diff line number Diff line change
Expand Up @@ -14,5 +14,6 @@ public abstract class ContainerTest<TBuilderEntity, TContainerEntity>(ITestOutpu
where TBuilderEntity : IContainerBuilder<TBuilderEntity, TContainerEntity, IContainerConfiguration>, new()
where TContainerEntity : IContainer
{
[Obsolete("This method is obsolete and will be removed. Use the parameterless Configure() method and create the builder explicitly instead.")]
protected override TBuilderEntity Configure(TBuilderEntity builder) => configure != null ? configure(builder) : builder;
}
Original file line number Diff line number Diff line change
Expand Up @@ -60,8 +60,8 @@ public async Task ExecScriptAsyncReturnsSuccess()
public class CassandraDefaultFixture(IMessageSink messageSink)
: DbContainerFixture<CassandraBuilder, CassandraContainer>(messageSink)
{
protected override CassandraBuilder Configure(CassandraBuilder builder)
=> builder.WithImage(TestSession.GetImageFromDockerfile());
protected override CassandraBuilder Configure()
=> new CassandraBuilder(TestSession.GetImageFromDockerfile());

public override DbProviderFactory DbProviderFactory
=> CqlProviderFactory.Instance;
Expand All @@ -71,8 +71,8 @@ public override DbProviderFactory DbProviderFactory
public class CassandraWaitForDatabaseFixture(IMessageSink messageSink)
: CassandraDefaultFixture(messageSink)
{
protected override CassandraBuilder Configure(CassandraBuilder builder)
=> builder.WithImage(TestSession.GetImageFromDockerfile()).WithWaitStrategy(Wait.ForUnixContainer().UntilDatabaseIsAvailable(DbProviderFactory));
protected override CassandraBuilder Configure()
=> base.Configure().WithWaitStrategy(Wait.ForUnixContainer().UntilDatabaseIsAvailable(DbProviderFactory));
}

[UsedImplicitly]
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -35,8 +35,8 @@ public async Task ExecScriptReturnsSuccessful()
public class ClickHouseDefaultFixture(IMessageSink messageSink)
: DbContainerFixture<ClickHouseBuilder, ClickHouseContainer>(messageSink)
{
protected override ClickHouseBuilder Configure(ClickHouseBuilder builder)
=> builder.WithImage(TestSession.GetImageFromDockerfile());
protected override ClickHouseBuilder Configure()
=> new ClickHouseBuilder(TestSession.GetImageFromDockerfile());

public override DbProviderFactory DbProviderFactory
=> ClickHouseConnectionFactory.Instance;
Expand All @@ -46,8 +46,8 @@ public override DbProviderFactory DbProviderFactory
public class ClickHouseWaitForDatabaseFixture(IMessageSink messageSink)
: ClickHouseDefaultFixture(messageSink)
{
protected override ClickHouseBuilder Configure(ClickHouseBuilder builder)
=> builder.WithImage(TestSession.GetImageFromDockerfile()).WithWaitStrategy(Wait.ForUnixContainer().UntilDatabaseIsAvailable(DbProviderFactory));
protected override ClickHouseBuilder Configure()
=> base.Configure().WithWaitStrategy(Wait.ForUnixContainer().UntilDatabaseIsAvailable(DbProviderFactory));
}

[UsedImplicitly]
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -35,8 +35,8 @@ public async Task ExecScriptReturnsSuccessful()
public class CockroachDbDefaultFixture(IMessageSink messageSink)
: DbContainerFixture<CockroachDbBuilder, CockroachDbContainer>(messageSink)
{
protected override CockroachDbBuilder Configure(CockroachDbBuilder builder)
=> builder.WithImage(TestSession.GetImageFromDockerfile());
protected override CockroachDbBuilder Configure()
=> new CockroachDbBuilder(TestSession.GetImageFromDockerfile());

public override DbProviderFactory DbProviderFactory
=> NpgsqlFactory.Instance;
Expand All @@ -46,8 +46,8 @@ public override DbProviderFactory DbProviderFactory
public class CockroachDbWaitForDatabaseFixture(IMessageSink messageSink)
: CockroachDbDefaultFixture(messageSink)
{
protected override CockroachDbBuilder Configure(CockroachDbBuilder builder)
=> builder.WithImage(TestSession.GetImageFromDockerfile()).WithWaitStrategy(Wait.ForUnixContainer().UntilDatabaseIsAvailable(DbProviderFactory));
protected override CockroachDbBuilder Configure()
=> base.Configure().WithWaitStrategy(Wait.ForUnixContainer().UntilDatabaseIsAvailable(DbProviderFactory));
}

[UsedImplicitly]
Expand Down
8 changes: 4 additions & 4 deletions tests/Testcontainers.Db2.Tests/Db2ContainerTest.cs
Original file line number Diff line number Diff line change
Expand Up @@ -40,16 +40,16 @@ public class Db2DefaultFixture(IMessageSink messageSink)
public override DbProviderFactory DbProviderFactory
=> DB2Factory.Instance;

protected override Db2Builder Configure(Db2Builder builder)
=> builder.WithImage(TestSession.GetImageFromDockerfile()).WithAcceptLicenseAgreement(true);
protected override Db2Builder Configure()
=> new Db2Builder(TestSession.GetImageFromDockerfile()).WithAcceptLicenseAgreement(true);
}

[UsedImplicitly]
public class Db2WaitForDatabaseFixture(IMessageSink messageSink)
: Db2DefaultFixture(messageSink)
{
protected override Db2Builder Configure(Db2Builder builder)
=> base.Configure(builder).WithImage(TestSession.GetImageFromDockerfile()).WithWaitStrategy(Wait.ForUnixContainer().UntilDatabaseIsAvailable(DbProviderFactory));
protected override Db2Builder Configure()
=> base.Configure().WithWaitStrategy(Wait.ForUnixContainer().UntilDatabaseIsAvailable(DbProviderFactory));
}

[UsedImplicitly]
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -35,8 +35,8 @@ public async Task ExecScriptReturnsSuccessful()
public class FirebirdSqlDefaultFixture(IMessageSink messageSink)
: DbContainerFixture<FirebirdSqlBuilder, FirebirdSqlContainer>(messageSink)
{
protected override FirebirdSqlBuilder Configure(FirebirdSqlBuilder builder)
=> builder.WithImage(TestSession.GetImageFromDockerfile());
protected override FirebirdSqlBuilder Configure()
=> new FirebirdSqlBuilder(TestSession.GetImageFromDockerfile());

public override DbProviderFactory DbProviderFactory
=> FirebirdClientFactory.Instance;
Expand All @@ -46,40 +46,40 @@ public override DbProviderFactory DbProviderFactory
public class FirebirdSqlWaitForDatabaseFixture(IMessageSink messageSink)
: FirebirdSqlDefaultFixture(messageSink)
{
protected override FirebirdSqlBuilder Configure(FirebirdSqlBuilder builder)
=> builder.WithImage(TestSession.GetImageFromDockerfile()).WithWaitStrategy(Wait.ForUnixContainer().UntilDatabaseIsAvailable(DbProviderFactory));
protected override FirebirdSqlBuilder Configure()
=> base.Configure().WithWaitStrategy(Wait.ForUnixContainer().UntilDatabaseIsAvailable(DbProviderFactory));
}

[UsedImplicitly]
public class FirebirdSql25ScFixture(IMessageSink messageSink)
: FirebirdSqlDefaultFixture(messageSink)
{
protected override FirebirdSqlBuilder Configure(FirebirdSqlBuilder builder)
=> builder.WithImage(TestSession.GetImageFromDockerfile(stage: "fb2.5-sc"));
protected override FirebirdSqlBuilder Configure()
=> new FirebirdSqlBuilder(TestSession.GetImageFromDockerfile(stage: "fb2.5-sc"));
}

[UsedImplicitly]
public class FirebirdSql25SsFixture(IMessageSink messageSink)
: FirebirdSqlDefaultFixture(messageSink)
{
protected override FirebirdSqlBuilder Configure(FirebirdSqlBuilder builder)
=> builder.WithImage(TestSession.GetImageFromDockerfile(stage: "fb2.5-ss"));
protected override FirebirdSqlBuilder Configure()
=> new FirebirdSqlBuilder(TestSession.GetImageFromDockerfile(stage: "fb2.5-ss"));
}

[UsedImplicitly]
public class FirebirdSql30Fixture(IMessageSink messageSink)
: FirebirdSqlDefaultFixture(messageSink)
{
protected override FirebirdSqlBuilder Configure(FirebirdSqlBuilder builder)
=> builder.WithImage(TestSession.GetImageFromDockerfile(stage: "fb3.0"));
protected override FirebirdSqlBuilder Configure()
=> new FirebirdSqlBuilder(TestSession.GetImageFromDockerfile(stage: "fb3.0"));
}

[UsedImplicitly]
public class FirebirdSqlSysdbaFixture(IMessageSink messageSink)
: FirebirdSqlDefaultFixture(messageSink)
{
protected override FirebirdSqlBuilder Configure(FirebirdSqlBuilder builder)
=> builder.WithImage(TestSession.GetImageFromDockerfile()).WithUsername("sysdba").WithPassword("some-password");
protected override FirebirdSqlBuilder Configure()
=> base.Configure().WithUsername("sysdba").WithPassword("some-password");
}

[UsedImplicitly]
Expand Down
8 changes: 4 additions & 4 deletions tests/Testcontainers.MariaDb.Tests/MariaDbContainerTest.cs
Original file line number Diff line number Diff line change
Expand Up @@ -35,8 +35,8 @@ public async Task ExecScriptReturnsSuccessful()
public class MariaDbDefaultFixture(IMessageSink messageSink)
: DbContainerFixture<MariaDbBuilder, MariaDbContainer>(messageSink)
{
protected override MariaDbBuilder Configure(MariaDbBuilder builder)
=> builder.WithImage(TestSession.GetImageFromDockerfile());
protected override MariaDbBuilder Configure()
=> new MariaDbBuilder(TestSession.GetImageFromDockerfile());

public override DbProviderFactory DbProviderFactory
=> MySqlConnectorFactory.Instance;
Expand All @@ -46,8 +46,8 @@ public override DbProviderFactory DbProviderFactory
public class MariaDbWaitForDatabaseFixture(IMessageSink messageSink)
: MariaDbDefaultFixture(messageSink)
{
protected override MariaDbBuilder Configure(MariaDbBuilder builder)
=> builder.WithImage(TestSession.GetImageFromDockerfile()).WithWaitStrategy(Wait.ForUnixContainer().UntilDatabaseIsAvailable(DbProviderFactory));
protected override MariaDbBuilder Configure()
=> base.Configure().WithWaitStrategy(Wait.ForUnixContainer().UntilDatabaseIsAvailable(DbProviderFactory));
}

[UsedImplicitly]
Expand Down
20 changes: 7 additions & 13 deletions tests/Testcontainers.Mosquitto.Tests/MosquittoContainerTest.cs
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,9 @@ private MosquittoContainerTest(ITestOutputHelper testOutputHelper)
{
}

protected override MosquittoBuilder Configure()
=> new MosquittoBuilder(TestSession.GetImageFromDockerfile());

protected abstract MqttClientOptions GetClientOptions();

[Fact]
Expand Down Expand Up @@ -87,10 +90,8 @@ protected override MqttClientOptions GetClientOptions()
public sealed class TcpEncryptedUnauthenticatedConfiguration(ITestOutputHelper testOutputHelper)
: MosquittoContainerTest(testOutputHelper)
{
protected override MosquittoBuilder Configure(MosquittoBuilder builder)
{
return builder.WithImage(TestSession.GetImageFromDockerfile()).WithCertificate(Certificate, CertificateKey);
}
protected override MosquittoBuilder Configure()
=> base.Configure().WithCertificate(Certificate, CertificateKey);

protected override MqttClientOptions GetClientOptions()
{
Expand All @@ -106,11 +107,6 @@ protected override MqttClientOptions GetClientOptions()
public sealed class WebSocketUnencryptedUnauthenticatedConfiguration(ITestOutputHelper testOutputHelper)
: MosquittoContainerTest(testOutputHelper)
{
protected override MosquittoBuilder Configure(MosquittoBuilder builder)
{
return builder.WithImage(TestSession.GetImageFromDockerfile());
}

protected override MqttClientOptions GetClientOptions()
{
return new MqttClientOptionsBuilder()
Expand All @@ -123,10 +119,8 @@ protected override MqttClientOptions GetClientOptions()
public sealed class WebSocketEncryptedUnauthenticatedConfiguration(ITestOutputHelper testOutputHelper)
: MosquittoContainerTest(testOutputHelper)
{
protected override MosquittoBuilder Configure(MosquittoBuilder builder)
{
return builder.WithImage(TestSession.GetImageFromDockerfile()).WithCertificate(Certificate, CertificateKey);
}
protected override MosquittoBuilder Configure()
=> base.Configure().WithCertificate(Certificate, CertificateKey);

protected override MqttClientOptions GetClientOptions()
{
Expand Down
8 changes: 4 additions & 4 deletions tests/Testcontainers.MsSql.Tests/MsSqlContainerTest.cs
Original file line number Diff line number Diff line change
Expand Up @@ -37,8 +37,8 @@ public async Task ExecScriptReturnsSuccessful()
public class MsSqlDefaultFixture(IMessageSink messageSink)
: DbContainerFixture<MsSqlBuilder, MsSqlContainer>(messageSink)
{
protected override MsSqlBuilder Configure(MsSqlBuilder builder)
=> builder.WithImage(TestSession.GetImageFromDockerfile());
protected override MsSqlBuilder Configure()
=> new MsSqlBuilder(TestSession.GetImageFromDockerfile());

public override DbProviderFactory DbProviderFactory
=> SqlClientFactory.Instance;
Expand All @@ -48,8 +48,8 @@ public override DbProviderFactory DbProviderFactory
public class MsSqlWaitForDatabaseFixture(IMessageSink messageSink)
: MsSqlDefaultFixture(messageSink)
{
protected override MsSqlBuilder Configure(MsSqlBuilder builder)
=> builder.WithImage(TestSession.GetImageFromDockerfile()).WithWaitStrategy(Wait.ForUnixContainer().UntilDatabaseIsAvailable(DbProviderFactory));
protected override MsSqlBuilder Configure()
=> base.Configure().WithWaitStrategy(Wait.ForUnixContainer().UntilDatabaseIsAvailable(DbProviderFactory));
}

[UsedImplicitly]
Expand Down
16 changes: 8 additions & 8 deletions tests/Testcontainers.MySql.Tests/MySqlContainerTest.cs
Original file line number Diff line number Diff line change
Expand Up @@ -35,8 +35,8 @@ public async Task ExecScriptReturnsSuccessful()
public class MySqlDefaultFixture(IMessageSink messageSink)
: DbContainerFixture<MySqlBuilder, MySqlContainer>(messageSink)
{
protected override MySqlBuilder Configure(MySqlBuilder builder)
=> builder.WithImage(TestSession.GetImageFromDockerfile());
protected override MySqlBuilder Configure()
=> new MySqlBuilder(TestSession.GetImageFromDockerfile());

public override DbProviderFactory DbProviderFactory
=> MySqlConnectorFactory.Instance;
Expand All @@ -46,25 +46,25 @@ public override DbProviderFactory DbProviderFactory
public class MySqlWaitForDatabaseFixture(IMessageSink messageSink)
: MySqlDefaultFixture(messageSink)
{
protected override MySqlBuilder Configure(MySqlBuilder builder)
=> builder.WithImage(TestSession.GetImageFromDockerfile()).WithWaitStrategy(Wait.ForUnixContainer().UntilDatabaseIsAvailable(DbProviderFactory));
protected override MySqlBuilder Configure()
=> base.Configure().WithWaitStrategy(Wait.ForUnixContainer().UntilDatabaseIsAvailable(DbProviderFactory));
}

[UsedImplicitly]
public class MySqlRootFixture(IMessageSink messageSink)
: MySqlDefaultFixture(messageSink)
{
protected override MySqlBuilder Configure(MySqlBuilder builder)
=> builder.WithImage(TestSession.GetImageFromDockerfile()).WithUsername("root");
protected override MySqlBuilder Configure()
=> base.Configure().WithUsername("root");
}

[UsedImplicitly]
public class MySqlGitHubIssue1142Fixture(IMessageSink messageSink)
: MySqlDefaultFixture(messageSink)
{
// https://github.com/testcontainers/testcontainers-dotnet/issues/1142.
protected override MySqlBuilder Configure(MySqlBuilder builder)
=> builder.WithImage(TestSession.GetImageFromDockerfile(stage: "mysql8.0.28"));
protected override MySqlBuilder Configure()
=> new MySqlBuilder(TestSession.GetImageFromDockerfile(stage: "mysql8.0.28"));
}

[UsedImplicitly]
Expand Down
Loading