diff --git a/Directory.Packages.props b/Directory.Packages.props
index 3b7235616..039256594 100644
--- a/Directory.Packages.props
+++ b/Directory.Packages.props
@@ -8,13 +8,15 @@
+
-
+
+
diff --git a/src/Templates/CSharp/Testcontainers.ModuleName/ModuleNameContainer.cs b/src/Templates/CSharp/Testcontainers.ModuleName/ModuleNameContainer.cs
index d6977575a..4b2137d2a 100644
--- a/src/Templates/CSharp/Testcontainers.ModuleName/ModuleNameContainer.cs
+++ b/src/Templates/CSharp/Testcontainers.ModuleName/ModuleNameContainer.cs
@@ -8,9 +8,8 @@ public sealed class ModuleNameContainer : DockerContainer
/// Initializes a new instance of the class.
///
/// The container configuration.
- /// The logger.
- public ModuleNameContainer(ModuleNameConfiguration configuration, ILogger logger)
- : base(configuration, logger)
+ public ModuleNameContainer(ModuleNameConfiguration configuration)
+ : base(configuration)
{
}
}
\ No newline at end of file
diff --git a/src/Testcontainers.ActiveMq/ArtemisBuilder.cs b/src/Testcontainers.ActiveMq/ArtemisBuilder.cs
index 3d41e0be8..afaa7e82f 100644
--- a/src/Testcontainers.ActiveMq/ArtemisBuilder.cs
+++ b/src/Testcontainers.ActiveMq/ArtemisBuilder.cs
@@ -62,7 +62,7 @@ public ArtemisBuilder WithPassword(string password)
public override ArtemisContainer Build()
{
Validate();
- return new ArtemisContainer(DockerResourceConfiguration, TestcontainersSettings.Logger);
+ return new ArtemisContainer(DockerResourceConfiguration);
}
///
diff --git a/src/Testcontainers.ActiveMq/ArtemisContainer.cs b/src/Testcontainers.ActiveMq/ArtemisContainer.cs
index 2e48cab34..61416d900 100644
--- a/src/Testcontainers.ActiveMq/ArtemisContainer.cs
+++ b/src/Testcontainers.ActiveMq/ArtemisContainer.cs
@@ -10,9 +10,8 @@ public sealed class ArtemisContainer : DockerContainer
/// Initializes a new instance of the class.
///
/// The container configuration.
- /// The logger.
- public ArtemisContainer(ActiveMqConfiguration configuration, ILogger logger)
- : base(configuration, logger)
+ public ArtemisContainer(ActiveMqConfiguration configuration)
+ : base(configuration)
{
_configuration = configuration;
}
diff --git a/src/Testcontainers.ActiveMq/Usings.cs b/src/Testcontainers.ActiveMq/Usings.cs
index c6ee33b57..8e5c20fd5 100644
--- a/src/Testcontainers.ActiveMq/Usings.cs
+++ b/src/Testcontainers.ActiveMq/Usings.cs
@@ -4,5 +4,4 @@
global using DotNet.Testcontainers.Builders;
global using DotNet.Testcontainers.Configurations;
global using DotNet.Testcontainers.Containers;
-global using JetBrains.Annotations;
-global using Microsoft.Extensions.Logging;
\ No newline at end of file
+global using JetBrains.Annotations;
\ No newline at end of file
diff --git a/src/Testcontainers.ArangoDb/ArangoDbBuilder.cs b/src/Testcontainers.ArangoDb/ArangoDbBuilder.cs
index d9d192566..4ca7b499a 100644
--- a/src/Testcontainers.ArangoDb/ArangoDbBuilder.cs
+++ b/src/Testcontainers.ArangoDb/ArangoDbBuilder.cs
@@ -49,7 +49,7 @@ public ArangoDbBuilder WithPassword(string password)
public override ArangoDbContainer Build()
{
Validate();
- return new ArangoDbContainer(DockerResourceConfiguration, TestcontainersSettings.Logger);
+ return new ArangoDbContainer(DockerResourceConfiguration);
}
///
diff --git a/src/Testcontainers.ArangoDb/ArangoDbContainer.cs b/src/Testcontainers.ArangoDb/ArangoDbContainer.cs
index 5568ccaa3..ae7986855 100644
--- a/src/Testcontainers.ArangoDb/ArangoDbContainer.cs
+++ b/src/Testcontainers.ArangoDb/ArangoDbContainer.cs
@@ -8,9 +8,8 @@ public sealed class ArangoDbContainer : DockerContainer
/// Initializes a new instance of the class.
///
/// The container configuration.
- /// The logger.
- public ArangoDbContainer(ArangoDbConfiguration configuration, ILogger logger)
- : base(configuration, logger)
+ public ArangoDbContainer(ArangoDbConfiguration configuration)
+ : base(configuration)
{
}
diff --git a/src/Testcontainers.ArangoDb/Usings.cs b/src/Testcontainers.ArangoDb/Usings.cs
index c6ee33b57..8e5c20fd5 100644
--- a/src/Testcontainers.ArangoDb/Usings.cs
+++ b/src/Testcontainers.ArangoDb/Usings.cs
@@ -4,5 +4,4 @@
global using DotNet.Testcontainers.Builders;
global using DotNet.Testcontainers.Configurations;
global using DotNet.Testcontainers.Containers;
-global using JetBrains.Annotations;
-global using Microsoft.Extensions.Logging;
\ No newline at end of file
+global using JetBrains.Annotations;
\ No newline at end of file
diff --git a/src/Testcontainers.Azurite/AzuriteBuilder.cs b/src/Testcontainers.Azurite/AzuriteBuilder.cs
index 222d0d346..fe733e48b 100644
--- a/src/Testcontainers.Azurite/AzuriteBuilder.cs
+++ b/src/Testcontainers.Azurite/AzuriteBuilder.cs
@@ -86,7 +86,7 @@ public override AzuriteContainer Build()
}
var azuriteBuilder = DockerResourceConfiguration.WaitStrategies.Count() > 1 ? this : WithWaitStrategy(waitStrategy);
- return new AzuriteContainer(azuriteBuilder.DockerResourceConfiguration, TestcontainersSettings.Logger);
+ return new AzuriteContainer(azuriteBuilder.DockerResourceConfiguration);
}
///
diff --git a/src/Testcontainers.Azurite/AzuriteContainer.cs b/src/Testcontainers.Azurite/AzuriteContainer.cs
index a0fed14eb..ff1dee087 100644
--- a/src/Testcontainers.Azurite/AzuriteContainer.cs
+++ b/src/Testcontainers.Azurite/AzuriteContainer.cs
@@ -12,9 +12,8 @@ public sealed class AzuriteContainer : DockerContainer
/// Initializes a new instance of the class.
///
/// The container configuration.
- /// The logger.
- public AzuriteContainer(AzuriteConfiguration configuration, ILogger logger)
- : base(configuration, logger)
+ public AzuriteContainer(AzuriteConfiguration configuration)
+ : base(configuration)
{
}
diff --git a/src/Testcontainers.Azurite/Usings.cs b/src/Testcontainers.Azurite/Usings.cs
index 428b90761..2607026ed 100644
--- a/src/Testcontainers.Azurite/Usings.cs
+++ b/src/Testcontainers.Azurite/Usings.cs
@@ -5,5 +5,4 @@
global using DotNet.Testcontainers.Builders;
global using DotNet.Testcontainers.Configurations;
global using DotNet.Testcontainers.Containers;
-global using JetBrains.Annotations;
-global using Microsoft.Extensions.Logging;
\ No newline at end of file
+global using JetBrains.Annotations;
\ No newline at end of file
diff --git a/src/Testcontainers.BigQuery/BigQueryBuilder.cs b/src/Testcontainers.BigQuery/BigQueryBuilder.cs
index 3d2d66288..985dcf639 100644
--- a/src/Testcontainers.BigQuery/BigQueryBuilder.cs
+++ b/src/Testcontainers.BigQuery/BigQueryBuilder.cs
@@ -46,7 +46,7 @@ public BigQueryBuilder WithProject(string projectId)
public override BigQueryContainer Build()
{
Validate();
- return new BigQueryContainer(DockerResourceConfiguration, TestcontainersSettings.Logger);
+ return new BigQueryContainer(DockerResourceConfiguration);
}
///
diff --git a/src/Testcontainers.BigQuery/BigQueryContainer.cs b/src/Testcontainers.BigQuery/BigQueryContainer.cs
index 41936520e..9c2a70e51 100644
--- a/src/Testcontainers.BigQuery/BigQueryContainer.cs
+++ b/src/Testcontainers.BigQuery/BigQueryContainer.cs
@@ -8,9 +8,8 @@ public sealed class BigQueryContainer : DockerContainer
/// Initializes a new instance of the class.
///
/// The container configuration.
- /// The logger.
- public BigQueryContainer(BigQueryConfiguration configuration, ILogger logger)
- : base(configuration, logger)
+ public BigQueryContainer(BigQueryConfiguration configuration)
+ : base(configuration)
{
}
diff --git a/src/Testcontainers.BigQuery/Usings.cs b/src/Testcontainers.BigQuery/Usings.cs
index bf2829a65..79fd3af9b 100644
--- a/src/Testcontainers.BigQuery/Usings.cs
+++ b/src/Testcontainers.BigQuery/Usings.cs
@@ -3,5 +3,4 @@
global using DotNet.Testcontainers.Builders;
global using DotNet.Testcontainers.Configurations;
global using DotNet.Testcontainers.Containers;
-global using JetBrains.Annotations;
-global using Microsoft.Extensions.Logging;
\ No newline at end of file
+global using JetBrains.Annotations;
\ No newline at end of file
diff --git a/src/Testcontainers.Bigtable/BigtableBuilder.cs b/src/Testcontainers.Bigtable/BigtableBuilder.cs
index 0a51140af..867487f68 100644
--- a/src/Testcontainers.Bigtable/BigtableBuilder.cs
+++ b/src/Testcontainers.Bigtable/BigtableBuilder.cs
@@ -34,7 +34,7 @@ private BigtableBuilder(BigtableConfiguration resourceConfiguration)
public override BigtableContainer Build()
{
Validate();
- return new BigtableContainer(DockerResourceConfiguration, TestcontainersSettings.Logger);
+ return new BigtableContainer(DockerResourceConfiguration);
}
///
diff --git a/src/Testcontainers.Bigtable/BigtableContainer.cs b/src/Testcontainers.Bigtable/BigtableContainer.cs
index d0bde283d..f9f402aa4 100644
--- a/src/Testcontainers.Bigtable/BigtableContainer.cs
+++ b/src/Testcontainers.Bigtable/BigtableContainer.cs
@@ -8,9 +8,8 @@ public sealed class BigtableContainer : DockerContainer
/// Initializes a new instance of the class.
///
/// The container configuration.
- /// The logger.
- public BigtableContainer(IContainerConfiguration configuration, ILogger logger)
- : base(configuration, logger)
+ public BigtableContainer(IContainerConfiguration configuration)
+ : base(configuration)
{
}
diff --git a/src/Testcontainers.Bigtable/Usings.cs b/src/Testcontainers.Bigtable/Usings.cs
index bf2829a65..79fd3af9b 100644
--- a/src/Testcontainers.Bigtable/Usings.cs
+++ b/src/Testcontainers.Bigtable/Usings.cs
@@ -3,5 +3,4 @@
global using DotNet.Testcontainers.Builders;
global using DotNet.Testcontainers.Configurations;
global using DotNet.Testcontainers.Containers;
-global using JetBrains.Annotations;
-global using Microsoft.Extensions.Logging;
\ No newline at end of file
+global using JetBrains.Annotations;
\ No newline at end of file
diff --git a/src/Testcontainers.ClickHouse/ClickHouseBuilder.cs b/src/Testcontainers.ClickHouse/ClickHouseBuilder.cs
index aafb71d5c..2a4c69387 100644
--- a/src/Testcontainers.ClickHouse/ClickHouseBuilder.cs
+++ b/src/Testcontainers.ClickHouse/ClickHouseBuilder.cs
@@ -75,7 +75,7 @@ public ClickHouseBuilder WithPassword(string password)
public override ClickHouseContainer Build()
{
Validate();
- return new ClickHouseContainer(DockerResourceConfiguration, TestcontainersSettings.Logger);
+ return new ClickHouseContainer(DockerResourceConfiguration);
}
///
diff --git a/src/Testcontainers.ClickHouse/ClickHouseContainer.cs b/src/Testcontainers.ClickHouse/ClickHouseContainer.cs
index d1bc808ff..a52a749f2 100644
--- a/src/Testcontainers.ClickHouse/ClickHouseContainer.cs
+++ b/src/Testcontainers.ClickHouse/ClickHouseContainer.cs
@@ -10,9 +10,8 @@ public sealed class ClickHouseContainer : DockerContainer, IDatabaseContainer
/// Initializes a new instance of the class.
///
/// The container configuration.
- /// The logger.
- public ClickHouseContainer(ClickHouseConfiguration configuration, ILogger logger)
- : base(configuration, logger)
+ public ClickHouseContainer(ClickHouseConfiguration configuration)
+ : base(configuration)
{
_configuration = configuration;
}
diff --git a/src/Testcontainers.ClickHouse/Usings.cs b/src/Testcontainers.ClickHouse/Usings.cs
index fa70e2120..ee2e98dbe 100644
--- a/src/Testcontainers.ClickHouse/Usings.cs
+++ b/src/Testcontainers.ClickHouse/Usings.cs
@@ -11,5 +11,4 @@
global using DotNet.Testcontainers.Builders;
global using DotNet.Testcontainers.Configurations;
global using DotNet.Testcontainers.Containers;
-global using JetBrains.Annotations;
-global using Microsoft.Extensions.Logging;
\ No newline at end of file
+global using JetBrains.Annotations;
\ No newline at end of file
diff --git a/src/Testcontainers.CockroachDb/CockroachDbBuilder.cs b/src/Testcontainers.CockroachDb/CockroachDbBuilder.cs
index 414828161..eea0cda4d 100644
--- a/src/Testcontainers.CockroachDb/CockroachDbBuilder.cs
+++ b/src/Testcontainers.CockroachDb/CockroachDbBuilder.cs
@@ -75,7 +75,7 @@ public CockroachDbBuilder WithPassword(string password)
public override CockroachDbContainer Build()
{
Validate();
- return new CockroachDbContainer(DockerResourceConfiguration, TestcontainersSettings.Logger);
+ return new CockroachDbContainer(DockerResourceConfiguration);
}
///
diff --git a/src/Testcontainers.CockroachDb/CockroachDbContainer.cs b/src/Testcontainers.CockroachDb/CockroachDbContainer.cs
index 84deffa1e..f13c98ea7 100644
--- a/src/Testcontainers.CockroachDb/CockroachDbContainer.cs
+++ b/src/Testcontainers.CockroachDb/CockroachDbContainer.cs
@@ -10,9 +10,8 @@ public sealed class CockroachDbContainer : DockerContainer, IDatabaseContainer
/// Initializes a new instance of the class.
///
/// The container configuration.
- /// The logger.
- public CockroachDbContainer(CockroachDbConfiguration configuration, ILogger logger)
- : base(configuration, logger)
+ public CockroachDbContainer(CockroachDbConfiguration configuration)
+ : base(configuration)
{
_configuration = configuration;
}
diff --git a/src/Testcontainers.CockroachDb/Usings.cs b/src/Testcontainers.CockroachDb/Usings.cs
index a01abde62..e2b02a51e 100644
--- a/src/Testcontainers.CockroachDb/Usings.cs
+++ b/src/Testcontainers.CockroachDb/Usings.cs
@@ -10,5 +10,4 @@
global using DotNet.Testcontainers.Builders;
global using DotNet.Testcontainers.Configurations;
global using DotNet.Testcontainers.Containers;
-global using JetBrains.Annotations;
-global using Microsoft.Extensions.Logging;
\ No newline at end of file
+global using JetBrains.Annotations;
\ No newline at end of file
diff --git a/src/Testcontainers.Consul/ConsulBuilder.cs b/src/Testcontainers.Consul/ConsulBuilder.cs
index 6c0ecdaa5..902f10e8e 100644
--- a/src/Testcontainers.Consul/ConsulBuilder.cs
+++ b/src/Testcontainers.Consul/ConsulBuilder.cs
@@ -36,7 +36,7 @@ private ConsulBuilder(ConsulConfiguration resourceConfiguration)
public override ConsulContainer Build()
{
Validate();
- return new ConsulContainer(DockerResourceConfiguration, TestcontainersSettings.Logger);
+ return new ConsulContainer(DockerResourceConfiguration);
}
///
diff --git a/src/Testcontainers.Consul/ConsulContainer.cs b/src/Testcontainers.Consul/ConsulContainer.cs
index 7cb73c250..9d431865b 100644
--- a/src/Testcontainers.Consul/ConsulContainer.cs
+++ b/src/Testcontainers.Consul/ConsulContainer.cs
@@ -8,9 +8,8 @@ public sealed class ConsulContainer : DockerContainer
/// Initializes a new instance of the class.
///
/// The container configuration.
- /// The logger.
- public ConsulContainer(ConsulConfiguration configuration, ILogger logger)
- : base(configuration, logger)
+ public ConsulContainer(ConsulConfiguration configuration)
+ : base(configuration)
{
}
diff --git a/src/Testcontainers.Consul/Usings.cs b/src/Testcontainers.Consul/Usings.cs
index bf2829a65..79fd3af9b 100644
--- a/src/Testcontainers.Consul/Usings.cs
+++ b/src/Testcontainers.Consul/Usings.cs
@@ -3,5 +3,4 @@
global using DotNet.Testcontainers.Builders;
global using DotNet.Testcontainers.Configurations;
global using DotNet.Testcontainers.Containers;
-global using JetBrains.Annotations;
-global using Microsoft.Extensions.Logging;
\ No newline at end of file
+global using JetBrains.Annotations;
\ No newline at end of file
diff --git a/src/Testcontainers.CosmosDb/CosmosDbBuilder.cs b/src/Testcontainers.CosmosDb/CosmosDbBuilder.cs
index d40116625..bde981f22 100644
--- a/src/Testcontainers.CosmosDb/CosmosDbBuilder.cs
+++ b/src/Testcontainers.CosmosDb/CosmosDbBuilder.cs
@@ -36,7 +36,7 @@ private CosmosDbBuilder(CosmosDbConfiguration resourceConfiguration)
public override CosmosDbContainer Build()
{
Validate();
- return new CosmosDbContainer(DockerResourceConfiguration, TestcontainersSettings.Logger);
+ return new CosmosDbContainer(DockerResourceConfiguration);
}
///
diff --git a/src/Testcontainers.CosmosDb/CosmosDbContainer.cs b/src/Testcontainers.CosmosDb/CosmosDbContainer.cs
index 3f04d5742..b7b0a57d7 100644
--- a/src/Testcontainers.CosmosDb/CosmosDbContainer.cs
+++ b/src/Testcontainers.CosmosDb/CosmosDbContainer.cs
@@ -8,9 +8,8 @@ public sealed class CosmosDbContainer : DockerContainer
/// Initializes a new instance of the class.
///
/// The container configuration.
- /// The logger.
- public CosmosDbContainer(CosmosDbConfiguration configuration, ILogger logger)
- : base(configuration, logger)
+ public CosmosDbContainer(CosmosDbConfiguration configuration)
+ : base(configuration)
{
}
diff --git a/src/Testcontainers.CosmosDb/Usings.cs b/src/Testcontainers.CosmosDb/Usings.cs
index fad310b40..8642a70f5 100644
--- a/src/Testcontainers.CosmosDb/Usings.cs
+++ b/src/Testcontainers.CosmosDb/Usings.cs
@@ -8,5 +8,4 @@
global using DotNet.Testcontainers.Builders;
global using DotNet.Testcontainers.Configurations;
global using DotNet.Testcontainers.Containers;
-global using JetBrains.Annotations;
-global using Microsoft.Extensions.Logging;
\ No newline at end of file
+global using JetBrains.Annotations;
\ No newline at end of file
diff --git a/src/Testcontainers.CouchDb/CouchDbBuilder.cs b/src/Testcontainers.CouchDb/CouchDbBuilder.cs
index 5f1ea5ecd..bae17e902 100644
--- a/src/Testcontainers.CouchDb/CouchDbBuilder.cs
+++ b/src/Testcontainers.CouchDb/CouchDbBuilder.cs
@@ -60,7 +60,7 @@ public CouchDbBuilder WithPassword(string password)
public override CouchDbContainer Build()
{
Validate();
- return new CouchDbContainer(DockerResourceConfiguration, TestcontainersSettings.Logger);
+ return new CouchDbContainer(DockerResourceConfiguration);
}
///
diff --git a/src/Testcontainers.CouchDb/CouchDbContainer.cs b/src/Testcontainers.CouchDb/CouchDbContainer.cs
index 1edfaac56..e75b000e8 100644
--- a/src/Testcontainers.CouchDb/CouchDbContainer.cs
+++ b/src/Testcontainers.CouchDb/CouchDbContainer.cs
@@ -10,9 +10,8 @@ public sealed class CouchDbContainer : DockerContainer
/// Initializes a new instance of the class.
///
/// The container configuration.
- /// The logger.
- public CouchDbContainer(CouchDbConfiguration configuration, ILogger logger)
- : base(configuration, logger)
+ public CouchDbContainer(CouchDbConfiguration configuration)
+ : base(configuration)
{
_configuration = configuration;
}
diff --git a/src/Testcontainers.CouchDb/Usings.cs b/src/Testcontainers.CouchDb/Usings.cs
index c6ee33b57..8e5c20fd5 100644
--- a/src/Testcontainers.CouchDb/Usings.cs
+++ b/src/Testcontainers.CouchDb/Usings.cs
@@ -4,5 +4,4 @@
global using DotNet.Testcontainers.Builders;
global using DotNet.Testcontainers.Configurations;
global using DotNet.Testcontainers.Containers;
-global using JetBrains.Annotations;
-global using Microsoft.Extensions.Logging;
\ No newline at end of file
+global using JetBrains.Annotations;
\ No newline at end of file
diff --git a/src/Testcontainers.Couchbase/CouchbaseBuilder.cs b/src/Testcontainers.Couchbase/CouchbaseBuilder.cs
index f8ae8eacc..b41a63b99 100644
--- a/src/Testcontainers.Couchbase/CouchbaseBuilder.cs
+++ b/src/Testcontainers.Couchbase/CouchbaseBuilder.cs
@@ -122,7 +122,7 @@ public override CouchbaseContainer Build()
}
var couchbaseBuilder = DockerResourceConfiguration.WaitStrategies.Count() > 1 ? this : WithWaitStrategy(waitStrategy);
- return new CouchbaseContainer(couchbaseBuilder.DockerResourceConfiguration, TestcontainersSettings.Logger);
+ return new CouchbaseContainer(couchbaseBuilder.DockerResourceConfiguration);
}
///
diff --git a/src/Testcontainers.Couchbase/CouchbaseContainer.cs b/src/Testcontainers.Couchbase/CouchbaseContainer.cs
index 9da54d89c..9c196359c 100644
--- a/src/Testcontainers.Couchbase/CouchbaseContainer.cs
+++ b/src/Testcontainers.Couchbase/CouchbaseContainer.cs
@@ -10,9 +10,8 @@ public sealed class CouchbaseContainer : DockerContainer
/// Initializes a new instance of the class.
///
/// The container configuration.
- /// The logger.
- public CouchbaseContainer(CouchbaseConfiguration configuration, ILogger logger)
- : base(configuration, logger)
+ public CouchbaseContainer(CouchbaseConfiguration configuration)
+ : base(configuration)
{
_configuration = configuration;
Starting += (_, _) => Logger.LogInformation("Couchbase container is starting, performing configuration.");
diff --git a/src/Testcontainers.DynamoDb/DynamoDbBuilder.cs b/src/Testcontainers.DynamoDb/DynamoDbBuilder.cs
index c5e2e5267..531ef2473 100644
--- a/src/Testcontainers.DynamoDb/DynamoDbBuilder.cs
+++ b/src/Testcontainers.DynamoDb/DynamoDbBuilder.cs
@@ -34,7 +34,7 @@ private DynamoDbBuilder(DynamoDbConfiguration dockerResourceConfiguration)
public override DynamoDbContainer Build()
{
Validate();
- return new DynamoDbContainer(DockerResourceConfiguration, TestcontainersSettings.Logger);
+ return new DynamoDbContainer(DockerResourceConfiguration);
}
///
diff --git a/src/Testcontainers.DynamoDb/DynamoDbContainer.cs b/src/Testcontainers.DynamoDb/DynamoDbContainer.cs
index 88064d3ea..dfd8c4b83 100644
--- a/src/Testcontainers.DynamoDb/DynamoDbContainer.cs
+++ b/src/Testcontainers.DynamoDb/DynamoDbContainer.cs
@@ -8,9 +8,8 @@ public sealed class DynamoDbContainer : DockerContainer
/// Initializes a new instance of the class.
///
/// The container configuration.
- /// The logger.
- public DynamoDbContainer(DynamoDbConfiguration configuration, ILogger logger)
- : base(configuration, logger)
+ public DynamoDbContainer(DynamoDbConfiguration configuration)
+ : base(configuration)
{
}
diff --git a/src/Testcontainers.DynamoDb/Usings.cs b/src/Testcontainers.DynamoDb/Usings.cs
index 49507dd3e..418bc08bd 100644
--- a/src/Testcontainers.DynamoDb/Usings.cs
+++ b/src/Testcontainers.DynamoDb/Usings.cs
@@ -4,5 +4,4 @@
global using DotNet.Testcontainers.Builders;
global using DotNet.Testcontainers.Configurations;
global using DotNet.Testcontainers.Containers;
-global using JetBrains.Annotations;
-global using Microsoft.Extensions.Logging;
\ No newline at end of file
+global using JetBrains.Annotations;
\ No newline at end of file
diff --git a/src/Testcontainers.Elasticsearch/ElasticsearchBuilder.cs b/src/Testcontainers.Elasticsearch/ElasticsearchBuilder.cs
index 6dc19adff..39c78bf50 100644
--- a/src/Testcontainers.Elasticsearch/ElasticsearchBuilder.cs
+++ b/src/Testcontainers.Elasticsearch/ElasticsearchBuilder.cs
@@ -59,7 +59,7 @@ public ElasticsearchBuilder WithPassword(string password)
public override ElasticsearchContainer Build()
{
Validate();
- return new ElasticsearchContainer(DockerResourceConfiguration, TestcontainersSettings.Logger);
+ return new ElasticsearchContainer(DockerResourceConfiguration);
}
///
diff --git a/src/Testcontainers.Elasticsearch/ElasticsearchContainer.cs b/src/Testcontainers.Elasticsearch/ElasticsearchContainer.cs
index 8cc24f9cb..87233e3c1 100644
--- a/src/Testcontainers.Elasticsearch/ElasticsearchContainer.cs
+++ b/src/Testcontainers.Elasticsearch/ElasticsearchContainer.cs
@@ -10,9 +10,8 @@ public sealed class ElasticsearchContainer : DockerContainer
/// Initializes a new instance of the class.
///
/// The container configuration.
- /// The logger.
- public ElasticsearchContainer(ElasticsearchConfiguration configuration, ILogger logger)
- : base(configuration, logger)
+ public ElasticsearchContainer(ElasticsearchConfiguration configuration)
+ : base(configuration)
{
_configuration = configuration;
}
diff --git a/src/Testcontainers.Elasticsearch/Usings.cs b/src/Testcontainers.Elasticsearch/Usings.cs
index 5696bb0bf..292302742 100644
--- a/src/Testcontainers.Elasticsearch/Usings.cs
+++ b/src/Testcontainers.Elasticsearch/Usings.cs
@@ -8,5 +8,4 @@
global using DotNet.Testcontainers.Builders;
global using DotNet.Testcontainers.Configurations;
global using DotNet.Testcontainers.Containers;
-global using JetBrains.Annotations;
-global using Microsoft.Extensions.Logging;
\ No newline at end of file
+global using JetBrains.Annotations;
\ No newline at end of file
diff --git a/src/Testcontainers.EventStoreDb/EventStoreDbBuilder.cs b/src/Testcontainers.EventStoreDb/EventStoreDbBuilder.cs
index c48c8d2f3..32377502b 100644
--- a/src/Testcontainers.EventStoreDb/EventStoreDbBuilder.cs
+++ b/src/Testcontainers.EventStoreDb/EventStoreDbBuilder.cs
@@ -33,7 +33,7 @@ private EventStoreDbBuilder(EventStoreDbConfiguration dockerResourceConfiguratio
///
public override EventStoreDbContainer Build()
{
- return new EventStoreDbContainer(DockerResourceConfiguration, TestcontainersSettings.Logger);
+ return new EventStoreDbContainer(DockerResourceConfiguration);
}
///
diff --git a/src/Testcontainers.EventStoreDb/EventStoreDbContainer.cs b/src/Testcontainers.EventStoreDb/EventStoreDbContainer.cs
index 5f6579155..6d0ddc347 100644
--- a/src/Testcontainers.EventStoreDb/EventStoreDbContainer.cs
+++ b/src/Testcontainers.EventStoreDb/EventStoreDbContainer.cs
@@ -8,9 +8,8 @@ public sealed class EventStoreDbContainer : DockerContainer
/// Initializes a new instance of the class.
///
/// The container configuration.
- /// The logger.
- public EventStoreDbContainer(EventStoreDbConfiguration configuration, ILogger logger)
- : base(configuration, logger)
+ public EventStoreDbContainer(EventStoreDbConfiguration configuration)
+ : base(configuration)
{
}
diff --git a/src/Testcontainers.EventStoreDb/Usings.cs b/src/Testcontainers.EventStoreDb/Usings.cs
index bf2829a65..79fd3af9b 100644
--- a/src/Testcontainers.EventStoreDb/Usings.cs
+++ b/src/Testcontainers.EventStoreDb/Usings.cs
@@ -3,5 +3,4 @@
global using DotNet.Testcontainers.Builders;
global using DotNet.Testcontainers.Configurations;
global using DotNet.Testcontainers.Containers;
-global using JetBrains.Annotations;
-global using Microsoft.Extensions.Logging;
\ No newline at end of file
+global using JetBrains.Annotations;
\ No newline at end of file
diff --git a/src/Testcontainers.FakeGcsServer/FakeGcsServerBuilder.cs b/src/Testcontainers.FakeGcsServer/FakeGcsServerBuilder.cs
index 1dab125cf..31664d075 100644
--- a/src/Testcontainers.FakeGcsServer/FakeGcsServerBuilder.cs
+++ b/src/Testcontainers.FakeGcsServer/FakeGcsServerBuilder.cs
@@ -36,7 +36,7 @@ private FakeGcsServerBuilder(FakeGcsServerConfiguration dockerResourceConfigurat
public override FakeGcsServerContainer Build()
{
Validate();
- return new FakeGcsServerContainer(DockerResourceConfiguration, TestcontainersSettings.Logger);
+ return new FakeGcsServerContainer(DockerResourceConfiguration);
}
///
diff --git a/src/Testcontainers.FakeGcsServer/FakeGcsServerContainer.cs b/src/Testcontainers.FakeGcsServer/FakeGcsServerContainer.cs
index 40fbc80ae..8eb31f3ca 100644
--- a/src/Testcontainers.FakeGcsServer/FakeGcsServerContainer.cs
+++ b/src/Testcontainers.FakeGcsServer/FakeGcsServerContainer.cs
@@ -8,9 +8,8 @@ public sealed class FakeGcsServerContainer : DockerContainer
/// Initializes a new instance of the class.
///
/// The container configuration.
- /// The logger.
- public FakeGcsServerContainer(FakeGcsServerConfiguration configuration, ILogger logger)
- : base(configuration, logger)
+ public FakeGcsServerContainer(FakeGcsServerConfiguration configuration)
+ : base(configuration)
{
}
diff --git a/src/Testcontainers.FakeGcsServer/Usings.cs b/src/Testcontainers.FakeGcsServer/Usings.cs
index fd93092b4..4ee39f0be 100644
--- a/src/Testcontainers.FakeGcsServer/Usings.cs
+++ b/src/Testcontainers.FakeGcsServer/Usings.cs
@@ -4,5 +4,4 @@
global using DotNet.Testcontainers.Builders;
global using DotNet.Testcontainers.Configurations;
global using DotNet.Testcontainers.Containers;
-global using JetBrains.Annotations;
-global using Microsoft.Extensions.Logging;
\ No newline at end of file
+global using JetBrains.Annotations;
\ No newline at end of file
diff --git a/src/Testcontainers.FirebirdSql/FirebirdSqlBuilder.cs b/src/Testcontainers.FirebirdSql/FirebirdSqlBuilder.cs
index 19b957eba..fb1f42795 100644
--- a/src/Testcontainers.FirebirdSql/FirebirdSqlBuilder.cs
+++ b/src/Testcontainers.FirebirdSql/FirebirdSqlBuilder.cs
@@ -78,7 +78,7 @@ public FirebirdSqlBuilder WithPassword(string password)
public override FirebirdSqlContainer Build()
{
Validate();
- return new FirebirdSqlContainer(DockerResourceConfiguration, TestcontainersSettings.Logger);
+ return new FirebirdSqlContainer(DockerResourceConfiguration);
}
///
diff --git a/src/Testcontainers.FirebirdSql/FirebirdSqlContainer.cs b/src/Testcontainers.FirebirdSql/FirebirdSqlContainer.cs
index f12568949..0c5538fe0 100644
--- a/src/Testcontainers.FirebirdSql/FirebirdSqlContainer.cs
+++ b/src/Testcontainers.FirebirdSql/FirebirdSqlContainer.cs
@@ -10,9 +10,8 @@ public sealed class FirebirdSqlContainer : DockerContainer, IDatabaseContainer
/// Initializes a new instance of the class.
///
/// The container configuration.
- /// The logger.
- public FirebirdSqlContainer(FirebirdSqlConfiguration configuration, ILogger logger)
- : base(configuration, logger)
+ public FirebirdSqlContainer(FirebirdSqlConfiguration configuration)
+ : base(configuration)
{
_configuration = configuration;
}
diff --git a/src/Testcontainers.FirebirdSql/Usings.cs b/src/Testcontainers.FirebirdSql/Usings.cs
index a01abde62..e2b02a51e 100644
--- a/src/Testcontainers.FirebirdSql/Usings.cs
+++ b/src/Testcontainers.FirebirdSql/Usings.cs
@@ -10,5 +10,4 @@
global using DotNet.Testcontainers.Builders;
global using DotNet.Testcontainers.Configurations;
global using DotNet.Testcontainers.Containers;
-global using JetBrains.Annotations;
-global using Microsoft.Extensions.Logging;
\ No newline at end of file
+global using JetBrains.Annotations;
\ No newline at end of file
diff --git a/src/Testcontainers.Firestore/FirestoreBuilder.cs b/src/Testcontainers.Firestore/FirestoreBuilder.cs
index c2a06c3cd..74ff2e38d 100644
--- a/src/Testcontainers.Firestore/FirestoreBuilder.cs
+++ b/src/Testcontainers.Firestore/FirestoreBuilder.cs
@@ -34,7 +34,7 @@ private FirestoreBuilder(FirestoreConfiguration resourceConfiguration)
public override FirestoreContainer Build()
{
Validate();
- return new FirestoreContainer(DockerResourceConfiguration, TestcontainersSettings.Logger);
+ return new FirestoreContainer(DockerResourceConfiguration);
}
///
diff --git a/src/Testcontainers.Firestore/FirestoreContainer.cs b/src/Testcontainers.Firestore/FirestoreContainer.cs
index c662f9c18..2c90e42e5 100644
--- a/src/Testcontainers.Firestore/FirestoreContainer.cs
+++ b/src/Testcontainers.Firestore/FirestoreContainer.cs
@@ -8,9 +8,8 @@ public sealed class FirestoreContainer : DockerContainer
/// Initializes a new instance of the class.
///
/// The container configuration.
- /// The logger.
- public FirestoreContainer(FirestoreConfiguration configuration, ILogger logger)
- : base(configuration, logger)
+ public FirestoreContainer(FirestoreConfiguration configuration)
+ : base(configuration)
{
}
diff --git a/src/Testcontainers.Firestore/Usings.cs b/src/Testcontainers.Firestore/Usings.cs
index bf2829a65..79fd3af9b 100644
--- a/src/Testcontainers.Firestore/Usings.cs
+++ b/src/Testcontainers.Firestore/Usings.cs
@@ -3,5 +3,4 @@
global using DotNet.Testcontainers.Builders;
global using DotNet.Testcontainers.Configurations;
global using DotNet.Testcontainers.Containers;
-global using JetBrains.Annotations;
-global using Microsoft.Extensions.Logging;
\ No newline at end of file
+global using JetBrains.Annotations;
\ No newline at end of file
diff --git a/src/Testcontainers.InfluxDb/InfluxDbBuilder.cs b/src/Testcontainers.InfluxDb/InfluxDbBuilder.cs
index 527ae75dd..de01dbabd 100644
--- a/src/Testcontainers.InfluxDb/InfluxDbBuilder.cs
+++ b/src/Testcontainers.InfluxDb/InfluxDbBuilder.cs
@@ -108,7 +108,7 @@ public InfluxDbBuilder WithRetention(string retention)
public override InfluxDbContainer Build()
{
Validate();
- return new InfluxDbContainer(DockerResourceConfiguration, TestcontainersSettings.Logger);
+ return new InfluxDbContainer(DockerResourceConfiguration);
}
///
diff --git a/src/Testcontainers.InfluxDb/InfluxDbContainer.cs b/src/Testcontainers.InfluxDb/InfluxDbContainer.cs
index 7f459e253..29f9efe44 100644
--- a/src/Testcontainers.InfluxDb/InfluxDbContainer.cs
+++ b/src/Testcontainers.InfluxDb/InfluxDbContainer.cs
@@ -8,9 +8,8 @@ public sealed class InfluxDbContainer : DockerContainer
/// Initializes a new instance of the class.
///
/// The container configuration.
- /// The logger.
- public InfluxDbContainer(InfluxDbConfiguration configuration, ILogger logger)
- : base(configuration, logger)
+ public InfluxDbContainer(InfluxDbConfiguration configuration)
+ : base(configuration)
{
}
diff --git a/src/Testcontainers.InfluxDb/Usings.cs b/src/Testcontainers.InfluxDb/Usings.cs
index 3e8ed8e4c..40b1c789a 100644
--- a/src/Testcontainers.InfluxDb/Usings.cs
+++ b/src/Testcontainers.InfluxDb/Usings.cs
@@ -5,5 +5,4 @@
global using DotNet.Testcontainers.Builders;
global using DotNet.Testcontainers.Configurations;
global using DotNet.Testcontainers.Containers;
-global using JetBrains.Annotations;
-global using Microsoft.Extensions.Logging;
\ No newline at end of file
+global using JetBrains.Annotations;
\ No newline at end of file
diff --git a/src/Testcontainers.JanusGraph/JanusGraphBuilder.cs b/src/Testcontainers.JanusGraph/JanusGraphBuilder.cs
index 12e3055a8..2b30f7f45 100644
--- a/src/Testcontainers.JanusGraph/JanusGraphBuilder.cs
+++ b/src/Testcontainers.JanusGraph/JanusGraphBuilder.cs
@@ -34,7 +34,7 @@ private JanusGraphBuilder(JanusGraphConfiguration resourceConfiguration)
public override JanusGraphContainer Build()
{
Validate();
- return new JanusGraphContainer(DockerResourceConfiguration, TestcontainersSettings.Logger);
+ return new JanusGraphContainer(DockerResourceConfiguration);
}
///
diff --git a/src/Testcontainers.JanusGraph/JanusGraphContainer.cs b/src/Testcontainers.JanusGraph/JanusGraphContainer.cs
index 550a86f6b..0896ba0fc 100644
--- a/src/Testcontainers.JanusGraph/JanusGraphContainer.cs
+++ b/src/Testcontainers.JanusGraph/JanusGraphContainer.cs
@@ -8,9 +8,8 @@ public sealed class JanusGraphContainer : DockerContainer
/// Initializes a new instance of the class.
///
/// The container configuration.
- /// The logger.
- public JanusGraphContainer(JanusGraphConfiguration configuration, ILogger logger)
- : base(configuration, logger)
+ public JanusGraphContainer(JanusGraphConfiguration configuration)
+ : base(configuration)
{
}
}
\ No newline at end of file
diff --git a/src/Testcontainers.JanusGraph/Usings.cs b/src/Testcontainers.JanusGraph/Usings.cs
index 238dcb1c1..a2faed446 100644
--- a/src/Testcontainers.JanusGraph/Usings.cs
+++ b/src/Testcontainers.JanusGraph/Usings.cs
@@ -2,5 +2,4 @@
global using DotNet.Testcontainers.Builders;
global using DotNet.Testcontainers.Configurations;
global using DotNet.Testcontainers.Containers;
-global using JetBrains.Annotations;
-global using Microsoft.Extensions.Logging;
\ No newline at end of file
+global using JetBrains.Annotations;
\ No newline at end of file
diff --git a/src/Testcontainers.K3s/K3sBuilder.cs b/src/Testcontainers.K3s/K3sBuilder.cs
index abe3ea8b0..6734ebb2c 100644
--- a/src/Testcontainers.K3s/K3sBuilder.cs
+++ b/src/Testcontainers.K3s/K3sBuilder.cs
@@ -36,7 +36,7 @@ private K3sBuilder(K3sConfiguration resourceConfiguration)
public override K3sContainer Build()
{
Validate();
- return new K3sContainer(DockerResourceConfiguration, TestcontainersSettings.Logger);
+ return new K3sContainer(DockerResourceConfiguration);
}
///
diff --git a/src/Testcontainers.K3s/K3sContainer.cs b/src/Testcontainers.K3s/K3sContainer.cs
index 10ee15e70..aac1ea798 100644
--- a/src/Testcontainers.K3s/K3sContainer.cs
+++ b/src/Testcontainers.K3s/K3sContainer.cs
@@ -8,9 +8,8 @@ public sealed class K3sContainer : DockerContainer
/// Initializes a new instance of the class.
///
/// The container configuration.
- /// The logger.
- public K3sContainer(K3sConfiguration configuration, ILogger logger)
- : base(configuration, logger)
+ public K3sContainer(K3sConfiguration configuration)
+ : base(configuration)
{
}
diff --git a/src/Testcontainers.K3s/Usings.cs b/src/Testcontainers.K3s/Usings.cs
index 3c3852113..633a735fb 100644
--- a/src/Testcontainers.K3s/Usings.cs
+++ b/src/Testcontainers.K3s/Usings.cs
@@ -6,5 +6,4 @@
global using DotNet.Testcontainers.Builders;
global using DotNet.Testcontainers.Configurations;
global using DotNet.Testcontainers.Containers;
-global using JetBrains.Annotations;
-global using Microsoft.Extensions.Logging;
\ No newline at end of file
+global using JetBrains.Annotations;
\ No newline at end of file
diff --git a/src/Testcontainers.Kafka/KafkaBuilder.cs b/src/Testcontainers.Kafka/KafkaBuilder.cs
index 39824e925..acb302c89 100644
--- a/src/Testcontainers.Kafka/KafkaBuilder.cs
+++ b/src/Testcontainers.Kafka/KafkaBuilder.cs
@@ -40,7 +40,7 @@ private KafkaBuilder(KafkaConfiguration resourceConfiguration)
public override KafkaContainer Build()
{
Validate();
- return new KafkaContainer(DockerResourceConfiguration, TestcontainersSettings.Logger);
+ return new KafkaContainer(DockerResourceConfiguration);
}
///
diff --git a/src/Testcontainers.Kafka/KafkaContainer.cs b/src/Testcontainers.Kafka/KafkaContainer.cs
index 5a51e4381..41407fa7d 100644
--- a/src/Testcontainers.Kafka/KafkaContainer.cs
+++ b/src/Testcontainers.Kafka/KafkaContainer.cs
@@ -8,9 +8,8 @@ public sealed class KafkaContainer : DockerContainer
/// Initializes a new instance of the class.
///
/// The container configuration.
- /// The logger.
- public KafkaContainer(KafkaConfiguration configuration, ILogger logger)
- : base(configuration, logger)
+ public KafkaContainer(KafkaConfiguration configuration)
+ : base(configuration)
{
}
diff --git a/src/Testcontainers.Kafka/Usings.cs b/src/Testcontainers.Kafka/Usings.cs
index fd93092b4..4ee39f0be 100644
--- a/src/Testcontainers.Kafka/Usings.cs
+++ b/src/Testcontainers.Kafka/Usings.cs
@@ -4,5 +4,4 @@
global using DotNet.Testcontainers.Builders;
global using DotNet.Testcontainers.Configurations;
global using DotNet.Testcontainers.Containers;
-global using JetBrains.Annotations;
-global using Microsoft.Extensions.Logging;
\ No newline at end of file
+global using JetBrains.Annotations;
\ No newline at end of file
diff --git a/src/Testcontainers.Keycloak/KeycloakBuilder.cs b/src/Testcontainers.Keycloak/KeycloakBuilder.cs
index 933cbae0a..e61810f01 100644
--- a/src/Testcontainers.Keycloak/KeycloakBuilder.cs
+++ b/src/Testcontainers.Keycloak/KeycloakBuilder.cs
@@ -60,7 +60,7 @@ public KeycloakBuilder WithPassword(string password)
public override KeycloakContainer Build()
{
Validate();
- return new KeycloakContainer(DockerResourceConfiguration, TestcontainersSettings.Logger);
+ return new KeycloakContainer(DockerResourceConfiguration);
}
///
diff --git a/src/Testcontainers.Keycloak/KeycloakContainer.cs b/src/Testcontainers.Keycloak/KeycloakContainer.cs
index 775b14834..526aec6a1 100644
--- a/src/Testcontainers.Keycloak/KeycloakContainer.cs
+++ b/src/Testcontainers.Keycloak/KeycloakContainer.cs
@@ -8,9 +8,8 @@ public sealed class KeycloakContainer : DockerContainer
/// Initializes a new instance of the class.
///
/// The container configuration.
- /// The logger.
- public KeycloakContainer(KeycloakConfiguration configuration, ILogger logger)
- : base(configuration, logger)
+ public KeycloakContainer(KeycloakConfiguration configuration)
+ : base(configuration)
{
}
diff --git a/src/Testcontainers.Keycloak/Usings.cs b/src/Testcontainers.Keycloak/Usings.cs
index c6ee33b57..8e5c20fd5 100644
--- a/src/Testcontainers.Keycloak/Usings.cs
+++ b/src/Testcontainers.Keycloak/Usings.cs
@@ -4,5 +4,4 @@
global using DotNet.Testcontainers.Builders;
global using DotNet.Testcontainers.Configurations;
global using DotNet.Testcontainers.Containers;
-global using JetBrains.Annotations;
-global using Microsoft.Extensions.Logging;
\ No newline at end of file
+global using JetBrains.Annotations;
\ No newline at end of file
diff --git a/src/Testcontainers.Kusto/KustoBuilder.cs b/src/Testcontainers.Kusto/KustoBuilder.cs
index bcef295ab..a946ecde1 100644
--- a/src/Testcontainers.Kusto/KustoBuilder.cs
+++ b/src/Testcontainers.Kusto/KustoBuilder.cs
@@ -38,7 +38,7 @@ private KustoBuilder(KustoConfiguration resourceConfiguration)
public override KustoContainer Build()
{
Validate();
- return new KustoContainer(DockerResourceConfiguration, TestcontainersSettings.Logger);
+ return new KustoContainer(DockerResourceConfiguration);
}
///
diff --git a/src/Testcontainers.Kusto/KustoContainer.cs b/src/Testcontainers.Kusto/KustoContainer.cs
index b27b4df0d..05599e180 100644
--- a/src/Testcontainers.Kusto/KustoContainer.cs
+++ b/src/Testcontainers.Kusto/KustoContainer.cs
@@ -8,9 +8,8 @@ public sealed class KustoContainer : DockerContainer
/// Initializes a new instance of the class.
///
/// The container configuration.
- /// The logger.
- public KustoContainer(KustoConfiguration configuration, ILogger logger)
- : base(configuration, logger)
+ public KustoContainer(KustoConfiguration configuration)
+ : base(configuration)
{
}
diff --git a/src/Testcontainers.Kusto/Usings.cs b/src/Testcontainers.Kusto/Usings.cs
index de9f0ad87..1ea451a51 100644
--- a/src/Testcontainers.Kusto/Usings.cs
+++ b/src/Testcontainers.Kusto/Usings.cs
@@ -5,5 +5,4 @@
global using DotNet.Testcontainers.Builders;
global using DotNet.Testcontainers.Configurations;
global using DotNet.Testcontainers.Containers;
-global using JetBrains.Annotations;
-global using Microsoft.Extensions.Logging;
\ No newline at end of file
+global using JetBrains.Annotations;
\ No newline at end of file
diff --git a/src/Testcontainers.LocalStack/LocalStackBuilder.cs b/src/Testcontainers.LocalStack/LocalStackBuilder.cs
index d5f605380..f11f88d3e 100644
--- a/src/Testcontainers.LocalStack/LocalStackBuilder.cs
+++ b/src/Testcontainers.LocalStack/LocalStackBuilder.cs
@@ -34,7 +34,7 @@ private LocalStackBuilder(LocalStackConfiguration dockerResourceConfiguration)
public override LocalStackContainer Build()
{
Validate();
- return new LocalStackContainer(DockerResourceConfiguration, TestcontainersSettings.Logger);
+ return new LocalStackContainer(DockerResourceConfiguration);
}
///
diff --git a/src/Testcontainers.LocalStack/LocalStackContainer.cs b/src/Testcontainers.LocalStack/LocalStackContainer.cs
index 107a613e3..a65f776ea 100644
--- a/src/Testcontainers.LocalStack/LocalStackContainer.cs
+++ b/src/Testcontainers.LocalStack/LocalStackContainer.cs
@@ -8,9 +8,8 @@ public sealed class LocalStackContainer : DockerContainer
/// Initializes a new instance of the class.
///
/// The container configuration.
- /// The logger.
- public LocalStackContainer(LocalStackConfiguration configuration, ILogger logger)
- : base(configuration, logger)
+ public LocalStackContainer(LocalStackConfiguration configuration)
+ : base(configuration)
{
}
diff --git a/src/Testcontainers.LocalStack/Usings.cs b/src/Testcontainers.LocalStack/Usings.cs
index bf2829a65..79fd3af9b 100644
--- a/src/Testcontainers.LocalStack/Usings.cs
+++ b/src/Testcontainers.LocalStack/Usings.cs
@@ -3,5 +3,4 @@
global using DotNet.Testcontainers.Builders;
global using DotNet.Testcontainers.Configurations;
global using DotNet.Testcontainers.Containers;
-global using JetBrains.Annotations;
-global using Microsoft.Extensions.Logging;
\ No newline at end of file
+global using JetBrains.Annotations;
\ No newline at end of file
diff --git a/src/Testcontainers.MariaDb/MariaDbBuilder.cs b/src/Testcontainers.MariaDb/MariaDbBuilder.cs
index 87da769fc..cbc7c6da7 100644
--- a/src/Testcontainers.MariaDb/MariaDbBuilder.cs
+++ b/src/Testcontainers.MariaDb/MariaDbBuilder.cs
@@ -78,7 +78,7 @@ public override MariaDbContainer Build()
// By default, the base builder waits until the container is running. However, for MariaDb, a more advanced waiting strategy is necessary that requires access to the configured database, username and password.
// If the user does not provide a custom waiting strategy, append the default MariaDb waiting strategy.
var mariaDbBuilder = DockerResourceConfiguration.WaitStrategies.Count() > 1 ? this : WithWaitStrategy(Wait.ForUnixContainer().AddCustomWaitStrategy(new WaitUntil(DockerResourceConfiguration)));
- return new MariaDbContainer(mariaDbBuilder.DockerResourceConfiguration, TestcontainersSettings.Logger);
+ return new MariaDbContainer(mariaDbBuilder.DockerResourceConfiguration);
}
///
diff --git a/src/Testcontainers.MariaDb/MariaDbContainer.cs b/src/Testcontainers.MariaDb/MariaDbContainer.cs
index 08b603344..fd3845fa3 100644
--- a/src/Testcontainers.MariaDb/MariaDbContainer.cs
+++ b/src/Testcontainers.MariaDb/MariaDbContainer.cs
@@ -10,9 +10,8 @@ public sealed class MariaDbContainer : DockerContainer, IDatabaseContainer
/// Initializes a new instance of the class.
///
/// The container configuration.
- /// The logger.
- public MariaDbContainer(MariaDbConfiguration configuration, ILogger logger)
- : base(configuration, logger)
+ public MariaDbContainer(MariaDbConfiguration configuration)
+ : base(configuration)
{
_configuration = configuration;
}
diff --git a/src/Testcontainers.MariaDb/Usings.cs b/src/Testcontainers.MariaDb/Usings.cs
index a01abde62..e2b02a51e 100644
--- a/src/Testcontainers.MariaDb/Usings.cs
+++ b/src/Testcontainers.MariaDb/Usings.cs
@@ -10,5 +10,4 @@
global using DotNet.Testcontainers.Builders;
global using DotNet.Testcontainers.Configurations;
global using DotNet.Testcontainers.Containers;
-global using JetBrains.Annotations;
-global using Microsoft.Extensions.Logging;
\ No newline at end of file
+global using JetBrains.Annotations;
\ No newline at end of file
diff --git a/src/Testcontainers.Milvus/MilvusBuilder.cs b/src/Testcontainers.Milvus/MilvusBuilder.cs
index 24c6ed318..44c2d8a60 100644
--- a/src/Testcontainers.Milvus/MilvusBuilder.cs
+++ b/src/Testcontainers.Milvus/MilvusBuilder.cs
@@ -53,7 +53,7 @@ public MilvusBuilder WithEtcdEndpoint(string etcdEndpoint)
public override MilvusContainer Build()
{
Validate();
- return new MilvusContainer(DockerResourceConfiguration, TestcontainersSettings.Logger);
+ return new MilvusContainer(DockerResourceConfiguration);
}
///
diff --git a/src/Testcontainers.Milvus/MilvusContainer.cs b/src/Testcontainers.Milvus/MilvusContainer.cs
index 87c58f855..a856ad421 100644
--- a/src/Testcontainers.Milvus/MilvusContainer.cs
+++ b/src/Testcontainers.Milvus/MilvusContainer.cs
@@ -8,9 +8,8 @@ public sealed class MilvusContainer : DockerContainer
/// Initializes a new instance of the class.
///
/// The container configuration.
- /// The logger.
- public MilvusContainer(MilvusConfiguration configuration, ILogger logger)
- : base(configuration, logger)
+ public MilvusContainer(MilvusConfiguration configuration)
+ : base(configuration)
{
}
diff --git a/src/Testcontainers.Milvus/Usings.cs b/src/Testcontainers.Milvus/Usings.cs
index fd93092b4..4ee39f0be 100644
--- a/src/Testcontainers.Milvus/Usings.cs
+++ b/src/Testcontainers.Milvus/Usings.cs
@@ -4,5 +4,4 @@
global using DotNet.Testcontainers.Builders;
global using DotNet.Testcontainers.Configurations;
global using DotNet.Testcontainers.Containers;
-global using JetBrains.Annotations;
-global using Microsoft.Extensions.Logging;
\ No newline at end of file
+global using JetBrains.Annotations;
\ No newline at end of file
diff --git a/src/Testcontainers.Minio/MinioBuilder.cs b/src/Testcontainers.Minio/MinioBuilder.cs
index d3277a04d..184c384b1 100644
--- a/src/Testcontainers.Minio/MinioBuilder.cs
+++ b/src/Testcontainers.Minio/MinioBuilder.cs
@@ -60,7 +60,7 @@ public MinioBuilder WithPassword(string password)
public override MinioContainer Build()
{
Validate();
- return new MinioContainer(DockerResourceConfiguration, TestcontainersSettings.Logger);
+ return new MinioContainer(DockerResourceConfiguration);
}
///
diff --git a/src/Testcontainers.Minio/MinioContainer.cs b/src/Testcontainers.Minio/MinioContainer.cs
index 776b37675..656d577a9 100644
--- a/src/Testcontainers.Minio/MinioContainer.cs
+++ b/src/Testcontainers.Minio/MinioContainer.cs
@@ -10,9 +10,8 @@ public sealed class MinioContainer : DockerContainer
/// Initializes a new instance of the class.
///
/// The container configuration.
- /// The logger.
- public MinioContainer(MinioConfiguration configuration, ILogger logger)
- : base(configuration, logger)
+ public MinioContainer(MinioConfiguration configuration)
+ : base(configuration)
{
_configuration = configuration;
}
diff --git a/src/Testcontainers.Minio/Usings.cs b/src/Testcontainers.Minio/Usings.cs
index c6ee33b57..8e5c20fd5 100644
--- a/src/Testcontainers.Minio/Usings.cs
+++ b/src/Testcontainers.Minio/Usings.cs
@@ -4,5 +4,4 @@
global using DotNet.Testcontainers.Builders;
global using DotNet.Testcontainers.Configurations;
global using DotNet.Testcontainers.Containers;
-global using JetBrains.Annotations;
-global using Microsoft.Extensions.Logging;
\ No newline at end of file
+global using JetBrains.Annotations;
\ No newline at end of file
diff --git a/src/Testcontainers.MongoDb/MongoDbBuilder.cs b/src/Testcontainers.MongoDb/MongoDbBuilder.cs
index 033cd9fdd..b4221b018 100644
--- a/src/Testcontainers.MongoDb/MongoDbBuilder.cs
+++ b/src/Testcontainers.MongoDb/MongoDbBuilder.cs
@@ -69,7 +69,7 @@ public override MongoDbContainer Build()
// provided, the log message "Waiting for connections" appears twice.
// If the user does not provide a custom waiting strategy, append the default MongoDb waiting strategy.
var mongoDbBuilder = DockerResourceConfiguration.WaitStrategies.Count() > 1 ? this : WithWaitStrategy(Wait.ForUnixContainer().AddCustomWaitStrategy(new WaitUntil(DockerResourceConfiguration)));
- return new MongoDbContainer(mongoDbBuilder.DockerResourceConfiguration, TestcontainersSettings.Logger);
+ return new MongoDbContainer(mongoDbBuilder.DockerResourceConfiguration);
}
///
diff --git a/src/Testcontainers.MongoDb/MongoDbContainer.cs b/src/Testcontainers.MongoDb/MongoDbContainer.cs
index 88ad50832..b5eb44752 100644
--- a/src/Testcontainers.MongoDb/MongoDbContainer.cs
+++ b/src/Testcontainers.MongoDb/MongoDbContainer.cs
@@ -10,9 +10,8 @@ public sealed class MongoDbContainer : DockerContainer
/// Initializes a new instance of the class.
///
/// The container configuration.
- /// The logger.
- public MongoDbContainer(MongoDbConfiguration configuration, ILogger logger)
- : base(configuration, logger)
+ public MongoDbContainer(MongoDbConfiguration configuration)
+ : base(configuration)
{
_configuration = configuration;
}
diff --git a/src/Testcontainers.MongoDb/Usings.cs b/src/Testcontainers.MongoDb/Usings.cs
index a01abde62..e2b02a51e 100644
--- a/src/Testcontainers.MongoDb/Usings.cs
+++ b/src/Testcontainers.MongoDb/Usings.cs
@@ -10,5 +10,4 @@
global using DotNet.Testcontainers.Builders;
global using DotNet.Testcontainers.Configurations;
global using DotNet.Testcontainers.Containers;
-global using JetBrains.Annotations;
-global using Microsoft.Extensions.Logging;
\ No newline at end of file
+global using JetBrains.Annotations;
\ No newline at end of file
diff --git a/src/Testcontainers.MsSql/MsSqlBuilder.cs b/src/Testcontainers.MsSql/MsSqlBuilder.cs
index 804dc8e75..402986a81 100644
--- a/src/Testcontainers.MsSql/MsSqlBuilder.cs
+++ b/src/Testcontainers.MsSql/MsSqlBuilder.cs
@@ -52,7 +52,7 @@ public MsSqlBuilder WithPassword(string password)
public override MsSqlContainer Build()
{
Validate();
- return new MsSqlContainer(DockerResourceConfiguration, TestcontainersSettings.Logger);
+ return new MsSqlContainer(DockerResourceConfiguration);
}
///
diff --git a/src/Testcontainers.MsSql/MsSqlContainer.cs b/src/Testcontainers.MsSql/MsSqlContainer.cs
index 78c8f2c36..626fec38d 100644
--- a/src/Testcontainers.MsSql/MsSqlContainer.cs
+++ b/src/Testcontainers.MsSql/MsSqlContainer.cs
@@ -10,9 +10,8 @@ public sealed class MsSqlContainer : DockerContainer, IDatabaseContainer
/// Initializes a new instance of the class.
///
/// The container configuration.
- /// The logger.
- public MsSqlContainer(MsSqlConfiguration configuration, ILogger logger)
- : base(configuration, logger)
+ public MsSqlContainer(MsSqlConfiguration configuration)
+ : base(configuration)
{
_configuration = configuration;
}
diff --git a/src/Testcontainers.MsSql/Usings.cs b/src/Testcontainers.MsSql/Usings.cs
index a01abde62..e2b02a51e 100644
--- a/src/Testcontainers.MsSql/Usings.cs
+++ b/src/Testcontainers.MsSql/Usings.cs
@@ -10,5 +10,4 @@
global using DotNet.Testcontainers.Builders;
global using DotNet.Testcontainers.Configurations;
global using DotNet.Testcontainers.Containers;
-global using JetBrains.Annotations;
-global using Microsoft.Extensions.Logging;
\ No newline at end of file
+global using JetBrains.Annotations;
\ No newline at end of file
diff --git a/src/Testcontainers.MySql/MySqlBuilder.cs b/src/Testcontainers.MySql/MySqlBuilder.cs
index 9baba9bac..ac756ec73 100644
--- a/src/Testcontainers.MySql/MySqlBuilder.cs
+++ b/src/Testcontainers.MySql/MySqlBuilder.cs
@@ -78,7 +78,7 @@ public override MySqlContainer Build()
// By default, the base builder waits until the container is running. However, for MySql, a more advanced waiting strategy is necessary that requires access to the configured database, username and password.
// If the user does not provide a custom waiting strategy, append the default MySql waiting strategy.
var mySqlBuilder = DockerResourceConfiguration.WaitStrategies.Count() > 1 ? this : WithWaitStrategy(Wait.ForUnixContainer().AddCustomWaitStrategy(new WaitUntil(DockerResourceConfiguration)));
- return new MySqlContainer(mySqlBuilder.DockerResourceConfiguration, TestcontainersSettings.Logger);
+ return new MySqlContainer(mySqlBuilder.DockerResourceConfiguration);
}
///
diff --git a/src/Testcontainers.MySql/MySqlContainer.cs b/src/Testcontainers.MySql/MySqlContainer.cs
index 5b55be35e..001b1fef6 100644
--- a/src/Testcontainers.MySql/MySqlContainer.cs
+++ b/src/Testcontainers.MySql/MySqlContainer.cs
@@ -10,9 +10,8 @@ public sealed class MySqlContainer : DockerContainer, IDatabaseContainer
/// Initializes a new instance of the class.
///
/// The container configuration.
- /// The logger.
- public MySqlContainer(MySqlConfiguration configuration, ILogger logger)
- : base(configuration, logger)
+ public MySqlContainer(MySqlConfiguration configuration)
+ : base(configuration)
{
_configuration = configuration;
}
diff --git a/src/Testcontainers.MySql/Usings.cs b/src/Testcontainers.MySql/Usings.cs
index a01abde62..e2b02a51e 100644
--- a/src/Testcontainers.MySql/Usings.cs
+++ b/src/Testcontainers.MySql/Usings.cs
@@ -10,5 +10,4 @@
global using DotNet.Testcontainers.Builders;
global using DotNet.Testcontainers.Configurations;
global using DotNet.Testcontainers.Containers;
-global using JetBrains.Annotations;
-global using Microsoft.Extensions.Logging;
\ No newline at end of file
+global using JetBrains.Annotations;
\ No newline at end of file
diff --git a/src/Testcontainers.Nats/NatsBuilder.cs b/src/Testcontainers.Nats/NatsBuilder.cs
index 8de672756..eaea58cca 100644
--- a/src/Testcontainers.Nats/NatsBuilder.cs
+++ b/src/Testcontainers.Nats/NatsBuilder.cs
@@ -60,7 +60,7 @@ public NatsBuilder WithPassword(string password)
public override NatsContainer Build()
{
Validate();
- return new NatsContainer(DockerResourceConfiguration, TestcontainersSettings.Logger);
+ return new NatsContainer(DockerResourceConfiguration);
}
///
diff --git a/src/Testcontainers.Nats/NatsContainer.cs b/src/Testcontainers.Nats/NatsContainer.cs
index 0800fe0b5..23d8b2519 100644
--- a/src/Testcontainers.Nats/NatsContainer.cs
+++ b/src/Testcontainers.Nats/NatsContainer.cs
@@ -10,9 +10,8 @@ public sealed class NatsContainer : DockerContainer
/// Initializes a new instance of the class.
///
/// The container configuration.
- /// The logger.
- public NatsContainer(NatsConfiguration configuration, ILogger logger)
- : base(configuration, logger)
+ public NatsContainer(NatsConfiguration configuration)
+ : base(configuration)
{
_configuration = configuration;
}
diff --git a/src/Testcontainers.Nats/Usings.cs b/src/Testcontainers.Nats/Usings.cs
index 346e012e3..f82c6873d 100644
--- a/src/Testcontainers.Nats/Usings.cs
+++ b/src/Testcontainers.Nats/Usings.cs
@@ -5,5 +5,4 @@
global using DotNet.Testcontainers.Builders;
global using DotNet.Testcontainers.Configurations;
global using DotNet.Testcontainers.Containers;
-global using JetBrains.Annotations;
-global using Microsoft.Extensions.Logging;
\ No newline at end of file
+global using JetBrains.Annotations;
\ No newline at end of file
diff --git a/src/Testcontainers.Neo4j/Neo4jBuilder.cs b/src/Testcontainers.Neo4j/Neo4jBuilder.cs
index f839b3556..54770e961 100644
--- a/src/Testcontainers.Neo4j/Neo4jBuilder.cs
+++ b/src/Testcontainers.Neo4j/Neo4jBuilder.cs
@@ -36,7 +36,7 @@ private Neo4jBuilder(Neo4jConfiguration resourceConfiguration)
public override Neo4jContainer Build()
{
Validate();
- return new Neo4jContainer(DockerResourceConfiguration, TestcontainersSettings.Logger);
+ return new Neo4jContainer(DockerResourceConfiguration);
}
///
diff --git a/src/Testcontainers.Neo4j/Neo4jContainer.cs b/src/Testcontainers.Neo4j/Neo4jContainer.cs
index 267037220..cbc5c7e35 100644
--- a/src/Testcontainers.Neo4j/Neo4jContainer.cs
+++ b/src/Testcontainers.Neo4j/Neo4jContainer.cs
@@ -8,9 +8,8 @@ public sealed class Neo4jContainer : DockerContainer
/// Initializes a new instance of the class.
///
/// The container configuration.
- /// The logger.
- public Neo4jContainer(Neo4jConfiguration configuration, ILogger logger)
- : base(configuration, logger)
+ public Neo4jContainer(Neo4jConfiguration configuration)
+ : base(configuration)
{
}
diff --git a/src/Testcontainers.Neo4j/Usings.cs b/src/Testcontainers.Neo4j/Usings.cs
index bf2829a65..79fd3af9b 100644
--- a/src/Testcontainers.Neo4j/Usings.cs
+++ b/src/Testcontainers.Neo4j/Usings.cs
@@ -3,5 +3,4 @@
global using DotNet.Testcontainers.Builders;
global using DotNet.Testcontainers.Configurations;
global using DotNet.Testcontainers.Containers;
-global using JetBrains.Annotations;
-global using Microsoft.Extensions.Logging;
\ No newline at end of file
+global using JetBrains.Annotations;
\ No newline at end of file
diff --git a/src/Testcontainers.Oracle/OracleBuilder.cs b/src/Testcontainers.Oracle/OracleBuilder.cs
index 584bad01b..c5cd3339e 100644
--- a/src/Testcontainers.Oracle/OracleBuilder.cs
+++ b/src/Testcontainers.Oracle/OracleBuilder.cs
@@ -63,7 +63,7 @@ public OracleBuilder WithPassword(string password)
public override OracleContainer Build()
{
Validate();
- return new OracleContainer(DockerResourceConfiguration, TestcontainersSettings.Logger);
+ return new OracleContainer(DockerResourceConfiguration);
}
///
diff --git a/src/Testcontainers.Oracle/OracleContainer.cs b/src/Testcontainers.Oracle/OracleContainer.cs
index e1b1ae4c1..54eac0c72 100644
--- a/src/Testcontainers.Oracle/OracleContainer.cs
+++ b/src/Testcontainers.Oracle/OracleContainer.cs
@@ -10,9 +10,8 @@ public sealed class OracleContainer : DockerContainer, IDatabaseContainer
/// Initializes a new instance of the class.
///
/// The container configuration.
- /// The logger.
- public OracleContainer(OracleConfiguration configuration, ILogger logger)
- : base(configuration, logger)
+ public OracleContainer(OracleConfiguration configuration)
+ : base(configuration)
{
_configuration = configuration;
}
diff --git a/src/Testcontainers.Oracle/Usings.cs b/src/Testcontainers.Oracle/Usings.cs
index 648e00a64..6fe3559a7 100644
--- a/src/Testcontainers.Oracle/Usings.cs
+++ b/src/Testcontainers.Oracle/Usings.cs
@@ -8,5 +8,4 @@
global using DotNet.Testcontainers.Builders;
global using DotNet.Testcontainers.Configurations;
global using DotNet.Testcontainers.Containers;
-global using JetBrains.Annotations;
-global using Microsoft.Extensions.Logging;
\ No newline at end of file
+global using JetBrains.Annotations;
\ No newline at end of file
diff --git a/src/Testcontainers.Papercut/PapercutBuilder.cs b/src/Testcontainers.Papercut/PapercutBuilder.cs
index ecef08c86..c0202b818 100644
--- a/src/Testcontainers.Papercut/PapercutBuilder.cs
+++ b/src/Testcontainers.Papercut/PapercutBuilder.cs
@@ -36,7 +36,7 @@ private PapercutBuilder(PapercutConfiguration resourceConfiguration)
public override PapercutContainer Build()
{
Validate();
- return new PapercutContainer(DockerResourceConfiguration, TestcontainersSettings.Logger);
+ return new PapercutContainer(DockerResourceConfiguration);
}
///
diff --git a/src/Testcontainers.Papercut/PapercutContainer.cs b/src/Testcontainers.Papercut/PapercutContainer.cs
index e73e762e6..2ad934865 100644
--- a/src/Testcontainers.Papercut/PapercutContainer.cs
+++ b/src/Testcontainers.Papercut/PapercutContainer.cs
@@ -8,9 +8,8 @@ public sealed class PapercutContainer : DockerContainer
/// Initializes a new instance of the class.
///
/// The container configuration.
- /// The logger.
- public PapercutContainer(PapercutConfiguration configuration, ILogger logger)
- : base(configuration, logger)
+ public PapercutContainer(PapercutConfiguration configuration)
+ : base(configuration)
{
}
diff --git a/src/Testcontainers.Papercut/Usings.cs b/src/Testcontainers.Papercut/Usings.cs
index bf2829a65..79fd3af9b 100644
--- a/src/Testcontainers.Papercut/Usings.cs
+++ b/src/Testcontainers.Papercut/Usings.cs
@@ -3,5 +3,4 @@
global using DotNet.Testcontainers.Builders;
global using DotNet.Testcontainers.Configurations;
global using DotNet.Testcontainers.Containers;
-global using JetBrains.Annotations;
-global using Microsoft.Extensions.Logging;
\ No newline at end of file
+global using JetBrains.Annotations;
\ No newline at end of file
diff --git a/src/Testcontainers.PostgreSql/PostgreSqlBuilder.cs b/src/Testcontainers.PostgreSql/PostgreSqlBuilder.cs
index c7a0334ac..73ec3a317 100644
--- a/src/Testcontainers.PostgreSql/PostgreSqlBuilder.cs
+++ b/src/Testcontainers.PostgreSql/PostgreSqlBuilder.cs
@@ -77,7 +77,7 @@ public override PostgreSqlContainer Build()
// By default, the base builder waits until the container is running. However, for PostgreSql, a more advanced waiting strategy is necessary that requires access to the configured database and username.
// If the user does not provide a custom waiting strategy, append the default PostgreSql waiting strategy.
var postgreSqlBuilder = DockerResourceConfiguration.WaitStrategies.Count() > 1 ? this : WithWaitStrategy(Wait.ForUnixContainer().AddCustomWaitStrategy(new WaitUntil(DockerResourceConfiguration)));
- return new PostgreSqlContainer(postgreSqlBuilder.DockerResourceConfiguration, TestcontainersSettings.Logger);
+ return new PostgreSqlContainer(postgreSqlBuilder.DockerResourceConfiguration);
}
///
diff --git a/src/Testcontainers.PostgreSql/PostgreSqlContainer.cs b/src/Testcontainers.PostgreSql/PostgreSqlContainer.cs
index c771e6f11..b4ebdf8a9 100644
--- a/src/Testcontainers.PostgreSql/PostgreSqlContainer.cs
+++ b/src/Testcontainers.PostgreSql/PostgreSqlContainer.cs
@@ -10,9 +10,8 @@ public sealed class PostgreSqlContainer : DockerContainer, IDatabaseContainer
/// Initializes a new instance of the class.
///
/// The container configuration.
- /// The logger.
- public PostgreSqlContainer(PostgreSqlConfiguration configuration, ILogger logger)
- : base(configuration, logger)
+ public PostgreSqlContainer(PostgreSqlConfiguration configuration)
+ : base(configuration)
{
_configuration = configuration;
}
diff --git a/src/Testcontainers.PostgreSql/Usings.cs b/src/Testcontainers.PostgreSql/Usings.cs
index a01abde62..e2b02a51e 100644
--- a/src/Testcontainers.PostgreSql/Usings.cs
+++ b/src/Testcontainers.PostgreSql/Usings.cs
@@ -10,5 +10,4 @@
global using DotNet.Testcontainers.Builders;
global using DotNet.Testcontainers.Configurations;
global using DotNet.Testcontainers.Containers;
-global using JetBrains.Annotations;
-global using Microsoft.Extensions.Logging;
\ No newline at end of file
+global using JetBrains.Annotations;
\ No newline at end of file
diff --git a/src/Testcontainers.PubSub/PubSubBuilder.cs b/src/Testcontainers.PubSub/PubSubBuilder.cs
index f9c14cef2..3956e8a13 100644
--- a/src/Testcontainers.PubSub/PubSubBuilder.cs
+++ b/src/Testcontainers.PubSub/PubSubBuilder.cs
@@ -34,7 +34,7 @@ private PubSubBuilder(PubSubConfiguration resourceConfiguration)
public override PubSubContainer Build()
{
Validate();
- return new PubSubContainer(DockerResourceConfiguration, TestcontainersSettings.Logger);
+ return new PubSubContainer(DockerResourceConfiguration);
}
///
diff --git a/src/Testcontainers.PubSub/PubSubContainer.cs b/src/Testcontainers.PubSub/PubSubContainer.cs
index 32b07879f..b3a8e7ec6 100644
--- a/src/Testcontainers.PubSub/PubSubContainer.cs
+++ b/src/Testcontainers.PubSub/PubSubContainer.cs
@@ -8,9 +8,8 @@ public sealed class PubSubContainer : DockerContainer
/// Initializes a new instance of the class.
///
/// The container configuration.
- /// The logger.
- public PubSubContainer(PubSubConfiguration configuration, ILogger logger)
- : base(configuration, logger)
+ public PubSubContainer(PubSubConfiguration configuration)
+ : base(configuration)
{
}
diff --git a/src/Testcontainers.PubSub/Usings.cs b/src/Testcontainers.PubSub/Usings.cs
index bf2829a65..79fd3af9b 100644
--- a/src/Testcontainers.PubSub/Usings.cs
+++ b/src/Testcontainers.PubSub/Usings.cs
@@ -3,5 +3,4 @@
global using DotNet.Testcontainers.Builders;
global using DotNet.Testcontainers.Configurations;
global using DotNet.Testcontainers.Containers;
-global using JetBrains.Annotations;
-global using Microsoft.Extensions.Logging;
\ No newline at end of file
+global using JetBrains.Annotations;
\ No newline at end of file
diff --git a/src/Testcontainers.RabbitMq/RabbitMqBuilder.cs b/src/Testcontainers.RabbitMq/RabbitMqBuilder.cs
index 6ea51ddfb..5b72bbb95 100644
--- a/src/Testcontainers.RabbitMq/RabbitMqBuilder.cs
+++ b/src/Testcontainers.RabbitMq/RabbitMqBuilder.cs
@@ -60,7 +60,7 @@ public RabbitMqBuilder WithPassword(string password)
public override RabbitMqContainer Build()
{
Validate();
- return new RabbitMqContainer(DockerResourceConfiguration, TestcontainersSettings.Logger);
+ return new RabbitMqContainer(DockerResourceConfiguration);
}
///
diff --git a/src/Testcontainers.RabbitMq/RabbitMqContainer.cs b/src/Testcontainers.RabbitMq/RabbitMqContainer.cs
index 5f0431099..3e6a0fd95 100644
--- a/src/Testcontainers.RabbitMq/RabbitMqContainer.cs
+++ b/src/Testcontainers.RabbitMq/RabbitMqContainer.cs
@@ -10,9 +10,8 @@ public sealed class RabbitMqContainer : DockerContainer
/// Initializes a new instance of the class.
///
/// The container configuration.
- /// The logger.
- public RabbitMqContainer(RabbitMqConfiguration configuration, ILogger logger)
- : base(configuration, logger)
+ public RabbitMqContainer(RabbitMqConfiguration configuration)
+ : base(configuration)
{
_configuration = configuration;
}
diff --git a/src/Testcontainers.RabbitMq/Usings.cs b/src/Testcontainers.RabbitMq/Usings.cs
index c6ee33b57..8e5c20fd5 100644
--- a/src/Testcontainers.RabbitMq/Usings.cs
+++ b/src/Testcontainers.RabbitMq/Usings.cs
@@ -4,5 +4,4 @@
global using DotNet.Testcontainers.Builders;
global using DotNet.Testcontainers.Configurations;
global using DotNet.Testcontainers.Containers;
-global using JetBrains.Annotations;
-global using Microsoft.Extensions.Logging;
\ No newline at end of file
+global using JetBrains.Annotations;
\ No newline at end of file
diff --git a/src/Testcontainers.RavenDb/RavenDbBuilder.cs b/src/Testcontainers.RavenDb/RavenDbBuilder.cs
index 4c5dfbf98..86fc1435f 100644
--- a/src/Testcontainers.RavenDb/RavenDbBuilder.cs
+++ b/src/Testcontainers.RavenDb/RavenDbBuilder.cs
@@ -34,7 +34,7 @@ private RavenDbBuilder(RavenDbConfiguration resourceConfiguration)
public override RavenDbContainer Build()
{
Validate();
- return new RavenDbContainer(DockerResourceConfiguration, TestcontainersSettings.Logger);
+ return new RavenDbContainer(DockerResourceConfiguration);
}
///
diff --git a/src/Testcontainers.RavenDb/RavenDbContainer.cs b/src/Testcontainers.RavenDb/RavenDbContainer.cs
index 8252aeb38..62a5ad872 100644
--- a/src/Testcontainers.RavenDb/RavenDbContainer.cs
+++ b/src/Testcontainers.RavenDb/RavenDbContainer.cs
@@ -8,9 +8,8 @@ public sealed class RavenDbContainer : DockerContainer
/// Initializes a new instance of the class.
///
/// The container configuration.
- /// The logger.
- public RavenDbContainer(RavenDbConfiguration configuration, ILogger logger)
- : base(configuration, logger)
+ public RavenDbContainer(RavenDbConfiguration configuration)
+ : base(configuration)
{
}
diff --git a/src/Testcontainers.RavenDb/Usings.cs b/src/Testcontainers.RavenDb/Usings.cs
index bf2829a65..79fd3af9b 100644
--- a/src/Testcontainers.RavenDb/Usings.cs
+++ b/src/Testcontainers.RavenDb/Usings.cs
@@ -3,5 +3,4 @@
global using DotNet.Testcontainers.Builders;
global using DotNet.Testcontainers.Configurations;
global using DotNet.Testcontainers.Containers;
-global using JetBrains.Annotations;
-global using Microsoft.Extensions.Logging;
\ No newline at end of file
+global using JetBrains.Annotations;
\ No newline at end of file
diff --git a/src/Testcontainers.Redis/RedisBuilder.cs b/src/Testcontainers.Redis/RedisBuilder.cs
index 41d56b6c1..9c8be98d3 100644
--- a/src/Testcontainers.Redis/RedisBuilder.cs
+++ b/src/Testcontainers.Redis/RedisBuilder.cs
@@ -34,7 +34,7 @@ private RedisBuilder(RedisConfiguration resourceConfiguration)
public override RedisContainer Build()
{
Validate();
- return new RedisContainer(DockerResourceConfiguration, TestcontainersSettings.Logger);
+ return new RedisContainer(DockerResourceConfiguration);
}
///
diff --git a/src/Testcontainers.Redis/RedisContainer.cs b/src/Testcontainers.Redis/RedisContainer.cs
index ec3691919..4c30d0917 100644
--- a/src/Testcontainers.Redis/RedisContainer.cs
+++ b/src/Testcontainers.Redis/RedisContainer.cs
@@ -8,9 +8,8 @@ public sealed class RedisContainer : DockerContainer
/// Initializes a new instance of the class.
///
/// The container configuration.
- /// The logger.
- public RedisContainer(RedisConfiguration configuration, ILogger logger)
- : base(configuration, logger)
+ public RedisContainer(RedisConfiguration configuration)
+ : base(configuration)
{
}
diff --git a/src/Testcontainers.Redis/Usings.cs b/src/Testcontainers.Redis/Usings.cs
index b535a7165..3c22a4545 100644
--- a/src/Testcontainers.Redis/Usings.cs
+++ b/src/Testcontainers.Redis/Usings.cs
@@ -7,5 +7,4 @@
global using DotNet.Testcontainers.Builders;
global using DotNet.Testcontainers.Configurations;
global using DotNet.Testcontainers.Containers;
-global using JetBrains.Annotations;
-global using Microsoft.Extensions.Logging;
\ No newline at end of file
+global using JetBrains.Annotations;
\ No newline at end of file
diff --git a/src/Testcontainers.Redpanda/RedpandaBuilder.cs b/src/Testcontainers.Redpanda/RedpandaBuilder.cs
index 91cb37069..2a9d38260 100644
--- a/src/Testcontainers.Redpanda/RedpandaBuilder.cs
+++ b/src/Testcontainers.Redpanda/RedpandaBuilder.cs
@@ -38,7 +38,7 @@ private RedpandaBuilder(RedpandaConfiguration resourceConfiguration)
public override RedpandaContainer Build()
{
Validate();
- return new RedpandaContainer(DockerResourceConfiguration, TestcontainersSettings.Logger);
+ return new RedpandaContainer(DockerResourceConfiguration);
}
///
diff --git a/src/Testcontainers.Redpanda/RedpandaContainer.cs b/src/Testcontainers.Redpanda/RedpandaContainer.cs
index 1878f9b76..0ac279353 100644
--- a/src/Testcontainers.Redpanda/RedpandaContainer.cs
+++ b/src/Testcontainers.Redpanda/RedpandaContainer.cs
@@ -8,9 +8,8 @@ public sealed class RedpandaContainer : DockerContainer
/// Initializes a new instance of the class.
///
/// The container configuration.
- /// The logger.
- public RedpandaContainer(RedpandaConfiguration configuration, ILogger logger)
- : base(configuration, logger)
+ public RedpandaContainer(RedpandaConfiguration configuration)
+ : base(configuration)
{
}
diff --git a/src/Testcontainers.Redpanda/Usings.cs b/src/Testcontainers.Redpanda/Usings.cs
index 7752824f3..fd6c6ccbc 100644
--- a/src/Testcontainers.Redpanda/Usings.cs
+++ b/src/Testcontainers.Redpanda/Usings.cs
@@ -4,5 +4,4 @@
global using DotNet.Testcontainers.Builders;
global using DotNet.Testcontainers.Configurations;
global using DotNet.Testcontainers.Containers;
-global using JetBrains.Annotations;
-global using Microsoft.Extensions.Logging;
\ No newline at end of file
+global using JetBrains.Annotations;
\ No newline at end of file
diff --git a/src/Testcontainers.SqlEdge/SqlEdgeBuilder.cs b/src/Testcontainers.SqlEdge/SqlEdgeBuilder.cs
index 01bacc4e1..5c2b0d123 100644
--- a/src/Testcontainers.SqlEdge/SqlEdgeBuilder.cs
+++ b/src/Testcontainers.SqlEdge/SqlEdgeBuilder.cs
@@ -51,7 +51,7 @@ public SqlEdgeBuilder WithPassword(string password)
public override SqlEdgeContainer Build()
{
Validate();
- return new SqlEdgeContainer(DockerResourceConfiguration, TestcontainersSettings.Logger);
+ return new SqlEdgeContainer(DockerResourceConfiguration);
}
///
diff --git a/src/Testcontainers.SqlEdge/SqlEdgeContainer.cs b/src/Testcontainers.SqlEdge/SqlEdgeContainer.cs
index 17ff0f4f1..d26157cdd 100644
--- a/src/Testcontainers.SqlEdge/SqlEdgeContainer.cs
+++ b/src/Testcontainers.SqlEdge/SqlEdgeContainer.cs
@@ -10,9 +10,8 @@ public sealed class SqlEdgeContainer : DockerContainer, IDatabaseContainer
/// Initializes a new instance of the class.
///
/// The container configuration.
- /// The logger.
- public SqlEdgeContainer(SqlEdgeConfiguration configuration, ILogger logger)
- : base(configuration, logger)
+ public SqlEdgeContainer(SqlEdgeConfiguration configuration)
+ : base(configuration)
{
_configuration = configuration;
}
diff --git a/src/Testcontainers.SqlEdge/Usings.cs b/src/Testcontainers.SqlEdge/Usings.cs
index c42d82b9c..d0d26d7b2 100644
--- a/src/Testcontainers.SqlEdge/Usings.cs
+++ b/src/Testcontainers.SqlEdge/Usings.cs
@@ -5,5 +5,4 @@
global using DotNet.Testcontainers.Builders;
global using DotNet.Testcontainers.Configurations;
global using DotNet.Testcontainers.Containers;
-global using JetBrains.Annotations;
-global using Microsoft.Extensions.Logging;
\ No newline at end of file
+global using JetBrains.Annotations;
\ No newline at end of file
diff --git a/src/Testcontainers.WebDriver/Usings.cs b/src/Testcontainers.WebDriver/Usings.cs
index 6b26f91d1..00e88cf71 100644
--- a/src/Testcontainers.WebDriver/Usings.cs
+++ b/src/Testcontainers.WebDriver/Usings.cs
@@ -13,5 +13,4 @@
global using DotNet.Testcontainers.Images;
global using DotNet.Testcontainers.Networks;
global using JetBrains.Annotations;
-global using Microsoft.Extensions.Logging;
global using Microsoft.Extensions.Logging.Abstractions;
\ No newline at end of file
diff --git a/src/Testcontainers.WebDriver/WebDriverBuilder.cs b/src/Testcontainers.WebDriver/WebDriverBuilder.cs
index 15171b2a9..ed749451a 100644
--- a/src/Testcontainers.WebDriver/WebDriverBuilder.cs
+++ b/src/Testcontainers.WebDriver/WebDriverBuilder.cs
@@ -88,7 +88,7 @@ public WebDriverBuilder WithRecording()
public override WebDriverContainer Build()
{
Validate();
- return new WebDriverContainer(DockerResourceConfiguration, TestcontainersSettings.Logger);
+ return new WebDriverContainer(DockerResourceConfiguration);
}
///
diff --git a/src/Testcontainers.WebDriver/WebDriverContainer.cs b/src/Testcontainers.WebDriver/WebDriverContainer.cs
index 3c90cbc4e..dabf9ea9c 100644
--- a/src/Testcontainers.WebDriver/WebDriverContainer.cs
+++ b/src/Testcontainers.WebDriver/WebDriverContainer.cs
@@ -12,9 +12,8 @@ public sealed class WebDriverContainer : DockerContainer
/// Initializes a new instance of the class.
///
/// The container configuration.
- /// The logger.
- public WebDriverContainer(WebDriverConfiguration configuration, ILogger logger)
- : base(configuration, logger)
+ public WebDriverContainer(WebDriverConfiguration configuration)
+ : base(configuration)
{
_configuration = configuration;
_ffmpegContainer = configuration.FFmpegContainer ?? FFmpegContainer.Instance;
@@ -110,7 +109,7 @@ static FFmpegContainer()
/// Initializes a new instance of the class.
///
private FFmpegContainer()
- : base(new ContainerConfiguration(new ResourceConfiguration(new DockerEndpointAuthenticationConfiguration(new Uri("tcp://ffmpeg")))), NullLogger.Instance)
+ : base(new ContainerConfiguration(new ResourceConfiguration(new DockerEndpointAuthenticationConfiguration(new Uri("tcp://ffmpeg")), null, null, false, NullLogger.Instance)))
{
}
diff --git a/src/Testcontainers/Builders/AbstractBuilder`4.cs b/src/Testcontainers/Builders/AbstractBuilder`4.cs
index 364bc7b2a..6af5ceb79 100644
--- a/src/Testcontainers/Builders/AbstractBuilder`4.cs
+++ b/src/Testcontainers/Builders/AbstractBuilder`4.cs
@@ -6,6 +6,7 @@ namespace DotNet.Testcontainers.Builders
using DotNet.Testcontainers.Configurations;
using DotNet.Testcontainers.Containers;
using JetBrains.Annotations;
+ using Microsoft.Extensions.Logging;
///
/// An abstract fluent Docker resource builder.
@@ -25,7 +26,6 @@ public abstract class AbstractBuilderThe Docker resource configuration.
protected AbstractBuilder(TConfigurationEntity dockerResourceConfiguration)
{
- _ = TestcontainersSettings.SettingsInitialized.WaitOne(TimeSpan.FromSeconds(5));
}
///
@@ -82,6 +82,12 @@ public TBuilderEntity WithCreateParameterModifier(Action
return Clone(new ResourceConfiguration(parameterModifiers: parameterModifiers));
}
+ ///
+ public TBuilderEntity WithLogger(ILogger logger)
+ {
+ return Clone(new ResourceConfiguration(logger: logger));
+ }
+
///
public abstract TResourceEntity Build();
@@ -123,7 +129,7 @@ protected TBuilderEntity WithResourceReaperSessionId(Guid resourceReaperSessionI
/// A configured instance of .
protected virtual TBuilderEntity Init()
{
- return WithDockerEndpoint(TestcontainersSettings.OS.DockerEndpointAuthConfig).WithLabel(DefaultLabels.Instance);
+ return WithDockerEndpoint(TestcontainersSettings.OS.DockerEndpointAuthConfig).WithLabel(DefaultLabels.Instance).WithLogger(ConsoleLogger.Instance);
}
///
@@ -132,6 +138,9 @@ protected virtual TBuilderEntity Init()
/// Thrown when a mandatory Docker resource configuration is not set.
protected virtual void Validate()
{
+ _ = Guard.Argument(DockerResourceConfiguration.Logger, nameof(IResourceConfiguration.Logger))
+ .NotNull();
+
const string containerRuntimeNotFound = "Docker is either not running or misconfigured. Please ensure that Docker is running and that the endpoint is properly configured. You can customize your configuration using either the environment variables or the ~/.testcontainers.properties file. For more information, visit:\nhttps://dotnet.testcontainers.org/custom_configuration/";
_ = Guard.Argument(DockerResourceConfiguration.DockerEndpointAuthConfig, nameof(IResourceConfiguration.DockerEndpointAuthConfig))
.ThrowIf(argument => argument.Value == null, argument => new ArgumentException(containerRuntimeNotFound, argument.Name));
diff --git a/src/Testcontainers/Builders/ContainerBuilder.cs b/src/Testcontainers/Builders/ContainerBuilder.cs
index 783f781c6..416640f48 100644
--- a/src/Testcontainers/Builders/ContainerBuilder.cs
+++ b/src/Testcontainers/Builders/ContainerBuilder.cs
@@ -54,7 +54,7 @@ protected ContainerBuilder(IContainerConfiguration dockerResourceConfiguration)
public override IContainer Build()
{
Validate();
- return new DockerContainer(DockerResourceConfiguration, TestcontainersSettings.Logger);
+ return new DockerContainer(DockerResourceConfiguration);
}
///
diff --git a/src/Testcontainers/Builders/IAbstractBuilder`3.cs b/src/Testcontainers/Builders/IAbstractBuilder`3.cs
index 12e4cf8b3..aa9a54d55 100644
--- a/src/Testcontainers/Builders/IAbstractBuilder`3.cs
+++ b/src/Testcontainers/Builders/IAbstractBuilder`3.cs
@@ -5,6 +5,7 @@ namespace DotNet.Testcontainers.Builders
using DotNet.Testcontainers.Configurations;
using DotNet.Testcontainers.Containers;
using JetBrains.Annotations;
+ using Microsoft.Extensions.Logging;
///
/// A fluent Docker resource builder.
@@ -107,6 +108,14 @@ public interface IAbstractBuilder parameterModifier);
+ ///
+ /// Sets the logger.
+ ///
+ /// The logger.
+ /// A configured instance of .
+ [PublicAPI]
+ TBuilderEntity WithLogger(ILogger logger);
+
///
/// Builds an instance of with the given resource configuration.
///
diff --git a/src/Testcontainers/Builders/ImageFromDockerfileBuilder.cs b/src/Testcontainers/Builders/ImageFromDockerfileBuilder.cs
index fa7986f8d..27ca60591 100644
--- a/src/Testcontainers/Builders/ImageFromDockerfileBuilder.cs
+++ b/src/Testcontainers/Builders/ImageFromDockerfileBuilder.cs
@@ -103,7 +103,7 @@ public ImageFromDockerfileBuilder WithBuildArgument(string name, string value)
public override IFutureDockerImage Build()
{
Validate();
- return new FutureDockerImage(DockerResourceConfiguration, TestcontainersSettings.Logger);
+ return new FutureDockerImage(DockerResourceConfiguration);
}
///
diff --git a/src/Testcontainers/Builders/NetworkBuilder.cs b/src/Testcontainers/Builders/NetworkBuilder.cs
index 42b7a9f60..43b7b957c 100644
--- a/src/Testcontainers/Builders/NetworkBuilder.cs
+++ b/src/Testcontainers/Builders/NetworkBuilder.cs
@@ -69,7 +69,7 @@ public NetworkBuilder WithOption(string name, string value)
public override INetwork Build()
{
Validate();
- return new DockerNetwork(DockerResourceConfiguration, TestcontainersSettings.Logger);
+ return new DockerNetwork(DockerResourceConfiguration);
}
///
diff --git a/src/Testcontainers/Builders/VolumeBuilder.cs b/src/Testcontainers/Builders/VolumeBuilder.cs
index 5af8f5941..a56d246d1 100644
--- a/src/Testcontainers/Builders/VolumeBuilder.cs
+++ b/src/Testcontainers/Builders/VolumeBuilder.cs
@@ -54,7 +54,7 @@ public VolumeBuilder WithName(string name)
public override IVolume Build()
{
Validate();
- return new DockerVolume(DockerResourceConfiguration, TestcontainersSettings.Logger);
+ return new DockerVolume(DockerResourceConfiguration);
}
///
diff --git a/src/Testcontainers/Clients/DockerApiClient.cs b/src/Testcontainers/Clients/DockerApiClient.cs
index c5a7b55b1..0bc991f22 100644
--- a/src/Testcontainers/Clients/DockerApiClient.cs
+++ b/src/Testcontainers/Clients/DockerApiClient.cs
@@ -2,27 +2,132 @@ namespace DotNet.Testcontainers.Clients
{
using System;
using System.Collections.Concurrent;
+ using System.Collections.Generic;
+ using System.Globalization;
+ using System.Text;
+ using System.Threading;
+ using System.Threading.Tasks;
using Docker.DotNet;
using DotNet.Testcontainers.Configurations;
+ using JetBrains.Annotations;
+ using Microsoft.Extensions.Logging;
- internal abstract class DockerApiClient
+ ///
+ /// A Docker Engine API client.
+ ///
+ internal class DockerApiClient
{
private static readonly ConcurrentDictionary> Clients = new ConcurrentDictionary>();
- protected DockerApiClient(Guid sessionId, IDockerEndpointAuthenticationConfiguration dockerEndpointAuthConfig)
+ private static readonly ISet ProcessedHashCodes = new HashSet();
+
+ private static readonly SemaphoreSlim RuntimeInitialized = new SemaphoreSlim(1, 1);
+
+ ///
+ /// Initializes a new instance of the class.
+ ///
+ /// The test session id.
+ /// The Docker endpoint authentication configuration.
+ /// The logger.
+ protected DockerApiClient(Guid sessionId, IDockerEndpointAuthenticationConfiguration dockerEndpointAuthConfig, ILogger logger)
+ : this(Clients.GetOrAdd(dockerEndpointAuthConfig.Endpoint, _ => new Lazy(() => GetDockerClient(sessionId, dockerEndpointAuthConfig))).Value, logger)
{
- var lazyDockerClient = Clients.GetOrAdd(dockerEndpointAuthConfig.Endpoint, _ =>
- new Lazy(() =>
+ }
+
+ ///
+ /// Initializes a new instance of the class.
+ ///
+ /// The Docker Engine API client.
+ /// The logger.
+ protected DockerApiClient(IDockerClient dockerClient, ILogger logger)
+ {
+ DockerClient = dockerClient;
+ Logger = logger;
+ }
+
+ ///
+ /// Gets the Docker Engine API client.
+ ///
+ [NotNull]
+ protected IDockerClient DockerClient { get; }
+
+ ///
+ /// Gets the logger.
+ ///
+ [NotNull]
+ protected ILogger Logger { get; }
+
+ ///
+ /// Logs the container runtime information.
+ ///
+ ///
+ /// The method logs the information once per Docker Engine API client and logger.
+ ///
+ /// Cancellation token.
+ /// Task that completes when the information has been logged.
+ public async Task LogContainerRuntimeInfoAsync(CancellationToken ct = default)
+ {
+ var hashCode = HashCode.Combine(DockerClient, Logger);
+
+ await RuntimeInitialized.WaitAsync(ct)
+ .ConfigureAwait(false);
+
+ try
+ {
+ if (ProcessedHashCodes.Contains(hashCode))
{
- using (var dockerClientConfiguration = dockerEndpointAuthConfig.GetDockerClientConfiguration(sessionId))
- {
- return dockerClientConfiguration.CreateClient();
- }
- }));
+ return;
+ }
+
+ var runtimeInfo = new StringBuilder();
- Docker = lazyDockerClient.Value;
+ var byteUnits = new[] { "KB", "MB", "GB" };
+
+ var dockerInfo = await DockerClient.System.GetSystemInfoAsync(ct)
+ .ConfigureAwait(false);
+
+ var dockerVersion = await DockerClient.System.GetVersionAsync(ct)
+ .ConfigureAwait(false);
+
+ runtimeInfo.AppendLine("Connected to Docker:");
+
+ runtimeInfo.Append(" Host: ");
+ runtimeInfo.AppendLine(DockerClient.Configuration.EndpointBaseUri.ToString());
+
+ runtimeInfo.Append(" Server Version: ");
+ runtimeInfo.AppendLine(dockerInfo.ServerVersion);
+
+ runtimeInfo.Append(" Kernel Version: ");
+ runtimeInfo.AppendLine(dockerInfo.KernelVersion);
+
+ runtimeInfo.Append(" API Version: ");
+ runtimeInfo.AppendLine(dockerVersion.APIVersion);
+
+ runtimeInfo.Append(" Operating System: ");
+ runtimeInfo.AppendLine(dockerInfo.OperatingSystem);
+
+ runtimeInfo.Append(" Total Memory: ");
+ runtimeInfo.AppendFormat(CultureInfo.InvariantCulture, "{0:F} {1}", dockerInfo.MemTotal / Math.Pow(1024, byteUnits.Length), byteUnits[byteUnits.Length - 1]);
+
+ Logger.LogInformation(runtimeInfo.ToString());
+ }
+ catch(Exception e)
+ {
+ Logger.LogError(e, "Failed to retrieve Docker container runtime information.");
+ }
+ finally
+ {
+ ProcessedHashCodes.Add(hashCode);
+ RuntimeInitialized.Release();
+ }
}
- protected IDockerClient Docker { get; }
+ private static IDockerClient GetDockerClient(Guid sessionId, IDockerEndpointAuthenticationConfiguration dockerEndpointAuthConfig)
+ {
+ using (var dockerClientConfiguration = dockerEndpointAuthConfig.GetDockerClientConfiguration(sessionId))
+ {
+ return dockerClientConfiguration.CreateClient();
+ }
+ }
}
}
diff --git a/src/Testcontainers/Clients/DockerContainerOperations.cs b/src/Testcontainers/Clients/DockerContainerOperations.cs
index f30d9feb0..73cf62a31 100644
--- a/src/Testcontainers/Clients/DockerContainerOperations.cs
+++ b/src/Testcontainers/Clients/DockerContainerOperations.cs
@@ -14,23 +14,20 @@ namespace DotNet.Testcontainers.Clients
internal sealed class DockerContainerOperations : DockerApiClient, IDockerContainerOperations
{
- private readonly ILogger _logger;
-
public DockerContainerOperations(Guid sessionId, IDockerEndpointAuthenticationConfiguration dockerEndpointAuthConfig, ILogger logger)
- : base(sessionId, dockerEndpointAuthConfig)
+ : base(sessionId, dockerEndpointAuthConfig, logger)
{
- _logger = logger;
}
public async Task> GetAllAsync(CancellationToken ct = default)
{
- return await Docker.Containers.ListContainersAsync(new ContainersListParameters { All = true }, ct)
+ return await DockerClient.Containers.ListContainersAsync(new ContainersListParameters { All = true }, ct)
.ConfigureAwait(false);
}
public async Task> GetAllAsync(FilterByProperty filters, CancellationToken ct = default)
{
- return await Docker.Containers.ListContainersAsync(new ContainersListParameters { All = true, Filters = filters }, ct)
+ return await DockerClient.Containers.ListContainersAsync(new ContainersListParameters { All = true, Filters = filters }, ct)
.ConfigureAwait(false);
}
@@ -38,7 +35,7 @@ public async Task ByIdAsync(string id, CancellationTok
{
try
{
- return await Docker.Containers.InspectContainerAsync(id, ct)
+ return await DockerClient.Containers.InspectContainerAsync(id, ct)
.ConfigureAwait(false);
}
catch (DockerApiException)
@@ -57,7 +54,7 @@ public async Task ExistsWithIdAsync(string id, CancellationToken ct = defa
public async Task GetExitCodeAsync(string id, CancellationToken ct = default)
{
- var response = await Docker.Containers.WaitContainerAsync(id, ct)
+ var response = await DockerClient.Containers.WaitContainerAsync(id, ct)
.ConfigureAwait(false);
return response.StatusCode;
@@ -74,7 +71,7 @@ public async Task GetExitCodeAsync(string id, CancellationToken ct = defau
Timestamps = timestampsEnabled,
};
- using (var stdOutAndErrStream = await Docker.Containers.GetContainerLogsAsync(id, false, logsParameters, ct)
+ using (var stdOutAndErrStream = await DockerClient.Containers.GetContainerLogsAsync(id, false, logsParameters, ct)
.ConfigureAwait(false))
{
return await stdOutAndErrStream.ReadOutputToEndAsync(ct)
@@ -84,33 +81,33 @@ public async Task GetExitCodeAsync(string id, CancellationToken ct = defau
public Task StartAsync(string id, CancellationToken ct = default)
{
- _logger.StartDockerContainer(id);
- return Docker.Containers.StartContainerAsync(id, new ContainerStartParameters(), ct);
+ Logger.StartDockerContainer(id);
+ return DockerClient.Containers.StartContainerAsync(id, new ContainerStartParameters(), ct);
}
public Task StopAsync(string id, CancellationToken ct = default)
{
- _logger.StopDockerContainer(id);
- return Docker.Containers.StopContainerAsync(id, new ContainerStopParameters { WaitBeforeKillSeconds = 15 }, ct);
+ Logger.StopDockerContainer(id);
+ return DockerClient.Containers.StopContainerAsync(id, new ContainerStopParameters { WaitBeforeKillSeconds = 15 }, ct);
}
public Task RemoveAsync(string id, CancellationToken ct = default)
{
- _logger.DeleteDockerContainer(id);
- return Docker.Containers.RemoveContainerAsync(id, new ContainerRemoveParameters { Force = true, RemoveVolumes = true }, ct);
+ Logger.DeleteDockerContainer(id);
+ return DockerClient.Containers.RemoveContainerAsync(id, new ContainerRemoveParameters { Force = true, RemoveVolumes = true }, ct);
}
public Task ExtractArchiveToContainerAsync(string id, string path, TarOutputMemoryStream tarStream, CancellationToken ct = default)
{
- _logger.CopyArchiveToDockerContainer(id, tarStream.ContentLength);
- return Docker.Containers.ExtractArchiveToContainerAsync(id, new ContainerPathStatParameters { Path = path, AllowOverwriteDirWithFile = false }, tarStream, ct);
+ Logger.CopyArchiveToDockerContainer(id, tarStream.ContentLength);
+ return DockerClient.Containers.ExtractArchiveToContainerAsync(id, new ContainerPathStatParameters { Path = path, AllowOverwriteDirWithFile = false }, tarStream, ct);
}
public async Task GetArchiveFromContainerAsync(string id, string path, CancellationToken ct = default)
{
- _logger.ReadArchiveFromDockerContainer(id, path);
+ Logger.ReadArchiveFromDockerContainer(id, path);
- var tarResponse = await Docker.Containers.GetArchiveFromContainerAsync(id, new GetArchiveFromContainerParameters { Path = path }, false, ct)
+ var tarResponse = await DockerClient.Containers.GetArchiveFromContainerAsync(id, new GetArchiveFromContainerParameters { Path = path }, false, ct)
.ConfigureAwait(false);
return tarResponse.Stream;
@@ -123,7 +120,7 @@ public async Task AttachAsync(string id, IOutputConsumer outputConsumer, Cancell
return;
}
- _logger.AttachToDockerContainer(id, outputConsumer.GetType());
+ Logger.AttachToDockerContainer(id, outputConsumer.GetType());
var attachParameters = new ContainerAttachParameters
{
@@ -132,7 +129,7 @@ public async Task AttachAsync(string id, IOutputConsumer outputConsumer, Cancell
Stream = true,
};
- var stream = await Docker.Containers.AttachContainerAsync(id, false, attachParameters, ct)
+ var stream = await DockerClient.Containers.AttachContainerAsync(id, false, attachParameters, ct)
.ConfigureAwait(false);
_ = stream.CopyOutputToAsync(Stream.Null, outputConsumer.Stdout, outputConsumer.Stderr, ct)
@@ -141,7 +138,7 @@ public async Task AttachAsync(string id, IOutputConsumer outputConsumer, Cancell
public async Task ExecAsync(string id, IList command, CancellationToken ct = default)
{
- _logger.ExecuteCommandInDockerContainer(id, command);
+ Logger.ExecuteCommandInDockerContainer(id, command);
var execCreateParameters = new ContainerExecCreateParameters
{
@@ -150,16 +147,16 @@ public async Task ExecAsync(string id, IList command, Cancel
AttachStderr = true,
};
- var execCreateResponse = await Docker.Exec.ExecCreateContainerAsync(id, execCreateParameters, ct)
+ var execCreateResponse = await DockerClient.Exec.ExecCreateContainerAsync(id, execCreateParameters, ct)
.ConfigureAwait(false);
- using (var stdOutAndErrStream = await Docker.Exec.StartAndAttachContainerExecAsync(execCreateResponse.ID, false, ct)
+ using (var stdOutAndErrStream = await DockerClient.Exec.StartAndAttachContainerExecAsync(execCreateResponse.ID, false, ct)
.ConfigureAwait(false))
{
var (stdout, stderr) = await stdOutAndErrStream.ReadOutputToEndAsync(ct)
.ConfigureAwait(false);
- var execInspectResponse = await Docker.Exec.InspectContainerExecAsync(execCreateResponse.ID, ct)
+ var execInspectResponse = await DockerClient.Exec.InspectContainerExecAsync(execCreateResponse.ID, ct)
.ConfigureAwait(false);
return new ExecResult(stdout, stderr, execInspectResponse.ExitCode);
@@ -213,10 +210,10 @@ public async Task RunAsync(IContainerConfiguration configuration, Cancel
}
}
- var createContainerResponse = await Docker.Containers.CreateContainerAsync(createParameters, ct)
+ var createContainerResponse = await DockerClient.Containers.CreateContainerAsync(createParameters, ct)
.ConfigureAwait(false);
- _logger.DockerContainerCreated(createContainerResponse.ID);
+ Logger.DockerContainerCreated(createContainerResponse.ID);
return createContainerResponse.ID;
}
}
diff --git a/src/Testcontainers/Clients/DockerImageOperations.cs b/src/Testcontainers/Clients/DockerImageOperations.cs
index 7dc2df009..5c6c2196b 100644
--- a/src/Testcontainers/Clients/DockerImageOperations.cs
+++ b/src/Testcontainers/Clients/DockerImageOperations.cs
@@ -14,26 +14,23 @@ namespace DotNet.Testcontainers.Clients
internal sealed class DockerImageOperations : DockerApiClient, IDockerImageOperations
{
- private readonly ILogger _logger;
-
private readonly TraceProgress _traceProgress;
public DockerImageOperations(Guid sessionId, IDockerEndpointAuthenticationConfiguration dockerEndpointAuthConfig, ILogger logger)
- : base(sessionId, dockerEndpointAuthConfig)
+ : base(sessionId, dockerEndpointAuthConfig, logger)
{
- _logger = logger;
_traceProgress = new TraceProgress(logger);
}
public async Task> GetAllAsync(CancellationToken ct = default)
{
- return await Docker.Images.ListImagesAsync(new ImagesListParameters { All = true }, ct)
+ return await DockerClient.Images.ListImagesAsync(new ImagesListParameters { All = true }, ct)
.ConfigureAwait(false);
}
public async Task> GetAllAsync(FilterByProperty filters, CancellationToken ct = default)
{
- return await Docker.Images.ListImagesAsync(new ImagesListParameters { All = true, Filters = filters }, ct)
+ return await DockerClient.Images.ListImagesAsync(new ImagesListParameters { All = true, Filters = filters }, ct)
.ConfigureAwait(false);
}
@@ -41,7 +38,7 @@ public async Task ByIdAsync(string id, CancellationToken c
{
try
{
- return await Docker.Images.InspectImageAsync(id, ct)
+ return await DockerClient.Images.InspectImageAsync(id, ct)
.ConfigureAwait(false);
}
catch (DockerApiException)
@@ -74,16 +71,16 @@ public async Task CreateAsync(IImage image, IDockerRegistryAuthenticationConfigu
IdentityToken = dockerRegistryAuthConfig.IdentityToken,
};
- await Docker.Images.CreateImageAsync(createParameters, authConfig, _traceProgress, ct)
+ await DockerClient.Images.CreateImageAsync(createParameters, authConfig, _traceProgress, ct)
.ConfigureAwait(false);
- _logger.DockerImageCreated(image);
+ Logger.DockerImageCreated(image);
}
public Task DeleteAsync(IImage image, CancellationToken ct = default)
{
- _logger.DeleteDockerImage(image);
- return Docker.Images.DeleteImageAsync(image.FullName, new ImageDeleteParameters { Force = true }, ct);
+ Logger.DeleteDockerImage(image);
+ return DockerClient.Images.DeleteImageAsync(image.FullName, new ImageDeleteParameters { Force = true }, ct);
}
public async Task BuildAsync(IImageFromDockerfileConfiguration configuration, ITarArchive dockerfileArchive, CancellationToken ct = default)
@@ -122,7 +119,7 @@ await DeleteAsync(image, ct)
{
using (var dockerfileArchiveStream = new FileStream(dockerfileArchiveFilePath, FileMode.Open, FileAccess.Read))
{
- await Docker.Images.BuildImageFromDockerfileAsync(buildParameters, dockerfileArchiveStream, Array.Empty(), new Dictionary(), _traceProgress, ct)
+ await DockerClient.Images.BuildImageFromDockerfileAsync(buildParameters, dockerfileArchiveStream, Array.Empty(), new Dictionary(), _traceProgress, ct)
.ConfigureAwait(false);
var imageHasBeenCreated = await ExistsWithIdAsync(image.FullName, ct)
@@ -142,7 +139,7 @@ await DeleteAsync(image, ct)
}
}
- _logger.DockerImageBuilt(image);
+ Logger.DockerImageBuilt(image);
return image.FullName;
}
}
diff --git a/src/Testcontainers/Clients/DockerNetworkOperations.cs b/src/Testcontainers/Clients/DockerNetworkOperations.cs
index 5f9e086a4..d4a15af04 100644
--- a/src/Testcontainers/Clients/DockerNetworkOperations.cs
+++ b/src/Testcontainers/Clients/DockerNetworkOperations.cs
@@ -12,23 +12,20 @@ namespace DotNet.Testcontainers.Clients
internal sealed class DockerNetworkOperations : DockerApiClient, IDockerNetworkOperations
{
- private readonly ILogger _logger;
-
public DockerNetworkOperations(Guid sessionId, IDockerEndpointAuthenticationConfiguration dockerEndpointAuthConfig, ILogger logger)
- : base(sessionId, dockerEndpointAuthConfig)
+ : base(sessionId, dockerEndpointAuthConfig, logger)
{
- _logger = logger;
}
public async Task> GetAllAsync(CancellationToken ct = default)
{
- return await Docker.Networks.ListNetworksAsync(new NetworksListParameters(), ct)
+ return await DockerClient.Networks.ListNetworksAsync(new NetworksListParameters(), ct)
.ConfigureAwait(false);
}
public async Task> GetAllAsync(FilterByProperty filters, CancellationToken ct = default)
{
- return await Docker.Networks.ListNetworksAsync(new NetworksListParameters { Filters = filters }, ct)
+ return await DockerClient.Networks.ListNetworksAsync(new NetworksListParameters { Filters = filters }, ct)
.ConfigureAwait(false);
}
@@ -36,7 +33,7 @@ public async Task ByIdAsync(string id, CancellationToken ct = d
{
try
{
- return await Docker.Networks.InspectNetworkAsync(id, ct)
+ return await DockerClient.Networks.InspectNetworkAsync(id, ct)
.ConfigureAwait(false);
}
catch (DockerApiException)
@@ -76,23 +73,23 @@ public async Task CreateAsync(INetworkConfiguration configuration, Cance
}
}
- var createNetworkResponse = await Docker.Networks.CreateNetworkAsync(createParameters, ct)
+ var createNetworkResponse = await DockerClient.Networks.CreateNetworkAsync(createParameters, ct)
.ConfigureAwait(false);
- _logger.DockerNetworkCreated(createNetworkResponse.ID);
+ Logger.DockerNetworkCreated(createNetworkResponse.ID);
return createNetworkResponse.ID;
}
public Task DeleteAsync(string id, CancellationToken ct = default)
{
- _logger.DeleteDockerNetwork(id);
- return Docker.Networks.DeleteNetworkAsync(id, ct);
+ Logger.DeleteDockerNetwork(id);
+ return DockerClient.Networks.DeleteNetworkAsync(id, ct);
}
public Task ConnectAsync(string networkId, string containerId, CancellationToken ct = default)
{
- _logger.ConnectToDockerNetwork(networkId, containerId);
- return Docker.Networks.ConnectNetworkAsync(networkId, new NetworkConnectParameters { Container = containerId }, ct);
+ Logger.ConnectToDockerNetwork(networkId, containerId);
+ return DockerClient.Networks.ConnectNetworkAsync(networkId, new NetworkConnectParameters { Container = containerId }, ct);
}
}
}
diff --git a/src/Testcontainers/Clients/DockerSystemOperations.cs b/src/Testcontainers/Clients/DockerSystemOperations.cs
index 72853fcfc..628f02894 100644
--- a/src/Testcontainers/Clients/DockerSystemOperations.cs
+++ b/src/Testcontainers/Clients/DockerSystemOperations.cs
@@ -10,9 +10,8 @@ namespace DotNet.Testcontainers.Clients
internal sealed class DockerSystemOperations : DockerApiClient, IDockerSystemOperations
{
public DockerSystemOperations(Guid sessionId, IDockerEndpointAuthenticationConfiguration dockerEndpointAuthConfig, ILogger logger)
- : base(sessionId, dockerEndpointAuthConfig)
+ : base(sessionId, dockerEndpointAuthConfig, logger)
{
- _ = logger;
}
public async Task GetIsWindowsEngineEnabled(CancellationToken ct = default)
@@ -25,12 +24,12 @@ public async Task GetIsWindowsEngineEnabled(CancellationToken ct = default
public Task GetInfoAsync(CancellationToken ct = default)
{
- return Docker.System.GetSystemInfoAsync(ct);
+ return DockerClient.System.GetSystemInfoAsync(ct);
}
public Task GetVersionAsync(CancellationToken ct = default)
{
- return Docker.System.GetVersionAsync(ct);
+ return DockerClient.System.GetVersionAsync(ct);
}
}
}
diff --git a/src/Testcontainers/Clients/DockerVolumeOperations.cs b/src/Testcontainers/Clients/DockerVolumeOperations.cs
index 07b6634dd..aebd74d71 100644
--- a/src/Testcontainers/Clients/DockerVolumeOperations.cs
+++ b/src/Testcontainers/Clients/DockerVolumeOperations.cs
@@ -12,17 +12,14 @@ namespace DotNet.Testcontainers.Clients
internal sealed class DockerVolumeOperations : DockerApiClient, IDockerVolumeOperations
{
- private readonly ILogger _logger;
-
public DockerVolumeOperations(Guid sessionId, IDockerEndpointAuthenticationConfiguration dockerEndpointAuthConfig, ILogger logger)
- : base(sessionId, dockerEndpointAuthConfig)
+ : base(sessionId, dockerEndpointAuthConfig, logger)
{
- _logger = logger;
}
public async Task> GetAllAsync(CancellationToken ct = default)
{
- var response = await Docker.Volumes.ListAsync(ct)
+ var response = await DockerClient.Volumes.ListAsync(ct)
.ConfigureAwait(false);
return response.Volumes;
@@ -30,7 +27,7 @@ public async Task> GetAllAsync(CancellationToken ct
public async Task> GetAllAsync(FilterByProperty filters, CancellationToken ct = default)
{
- var response = await Docker.Volumes.ListAsync(new VolumesListParameters { Filters = filters }, ct)
+ var response = await DockerClient.Volumes.ListAsync(new VolumesListParameters { Filters = filters }, ct)
.ConfigureAwait(false);
return response.Volumes;
@@ -40,7 +37,7 @@ public async Task ByIdAsync(string id, CancellationToken ct = de
{
try
{
- return await Docker.Volumes.InspectAsync(id, ct)
+ return await DockerClient.Volumes.InspectAsync(id, ct)
.ConfigureAwait(false);
}
catch (DockerApiException)
@@ -78,17 +75,17 @@ public async Task CreateAsync(IVolumeConfiguration configuration, Cancel
}
}
- var createVolumeResponse = await Docker.Volumes.CreateAsync(createParameters, ct)
+ var createVolumeResponse = await DockerClient.Volumes.CreateAsync(createParameters, ct)
.ConfigureAwait(false);
- _logger.DockerVolumeCreated(createVolumeResponse.Name);
+ Logger.DockerVolumeCreated(createVolumeResponse.Name);
return createVolumeResponse.Name;
}
public Task DeleteAsync(string name, CancellationToken ct = default)
{
- _logger.DeleteDockerVolume(name);
- return Docker.Volumes.RemoveAsync(name, false, ct);
+ Logger.DeleteDockerVolume(name);
+ return DockerClient.Volumes.RemoveAsync(name, false, ct);
}
}
}
diff --git a/src/Testcontainers/Clients/IDockerSystemOperations.cs b/src/Testcontainers/Clients/IDockerSystemOperations.cs
index ed6f71dd6..577d75765 100644
--- a/src/Testcontainers/Clients/IDockerSystemOperations.cs
+++ b/src/Testcontainers/Clients/IDockerSystemOperations.cs
@@ -6,6 +6,8 @@ namespace DotNet.Testcontainers.Clients
internal interface IDockerSystemOperations
{
+ Task LogContainerRuntimeInfoAsync(CancellationToken ct = default);
+
Task GetIsWindowsEngineEnabled(CancellationToken ct = default);
Task GetInfoAsync(CancellationToken ct = default);
diff --git a/src/Testcontainers/Clients/TestcontainersClient.cs b/src/Testcontainers/Clients/TestcontainersClient.cs
index 27c9188c7..1d1090f66 100644
--- a/src/Testcontainers/Clients/TestcontainersClient.cs
+++ b/src/Testcontainers/Clients/TestcontainersClient.cs
@@ -291,7 +291,7 @@ public async Task RunAsync(IContainerConfiguration configuration, Cancel
var isWindowsEngineEnabled = await System.GetIsWindowsEngineEnabled(ct)
.ConfigureAwait(false);
- _ = await ResourceReaper.GetAndStartDefaultAsync(configuration.DockerEndpointAuthConfig, isWindowsEngineEnabled, ct)
+ _ = await ResourceReaper.GetAndStartDefaultAsync(configuration.DockerEndpointAuthConfig, configuration.Logger, isWindowsEngineEnabled, ct)
.ConfigureAwait(false);
}
diff --git a/src/Testcontainers/Configurations/Commons/IResourceConfiguration.cs b/src/Testcontainers/Configurations/Commons/IResourceConfiguration.cs
index eaf7f720c..5db978354 100644
--- a/src/Testcontainers/Configurations/Commons/IResourceConfiguration.cs
+++ b/src/Testcontainers/Configurations/Commons/IResourceConfiguration.cs
@@ -3,6 +3,7 @@ namespace DotNet.Testcontainers.Configurations
using System;
using System.Collections.Generic;
using JetBrains.Annotations;
+ using Microsoft.Extensions.Logging;
///
/// A resource configuration.
@@ -16,11 +17,6 @@ public interface IResourceConfiguration
///
Guid SessionId { get; }
- ///
- /// Gets a value indicating whether to reuse an existing resource configuration or not.
- ///
- bool? Reuse { get; }
-
///
/// Gets the Docker endpoint authentication configuration.
///
@@ -36,6 +32,16 @@ public interface IResourceConfiguration
///
IReadOnlyList> ParameterModifiers { get; }
+ ///
+ /// Gets a value indicating whether to reuse an existing resource configuration or not.
+ ///
+ bool? Reuse { get; }
+
+ ///
+ /// Gets the logger.
+ ///
+ ILogger Logger { get; }
+
///
/// Gets the reuse hash.
///
diff --git a/src/Testcontainers/Configurations/Commons/ResourceConfiguration.cs b/src/Testcontainers/Configurations/Commons/ResourceConfiguration.cs
index 0fa813bdf..c4e2b6720 100644
--- a/src/Testcontainers/Configurations/Commons/ResourceConfiguration.cs
+++ b/src/Testcontainers/Configurations/Commons/ResourceConfiguration.cs
@@ -8,6 +8,7 @@ namespace DotNet.Testcontainers.Configurations
using DotNet.Testcontainers.Builders;
using DotNet.Testcontainers.Containers;
using JetBrains.Annotations;
+ using Microsoft.Extensions.Logging;
///
[PublicAPI]
@@ -20,17 +21,20 @@ public class ResourceConfiguration : IResourceConfigurati
/// The test session id.
/// A list of low level modifications of the Docker.DotNet entity.
/// A value indicating whether to reuse an existing resource configuration or not.
+ /// The logger.
public ResourceConfiguration(
IDockerEndpointAuthenticationConfiguration dockerEndpointAuthenticationConfiguration = null,
IReadOnlyDictionary labels = null,
IReadOnlyList> parameterModifiers = null,
- bool? reuse = null)
+ bool? reuse = null,
+ ILogger logger = null)
{
SessionId = labels != null && labels.TryGetValue(ResourceReaper.ResourceReaperSessionLabel, out var resourceReaperSessionId) && Guid.TryParseExact(resourceReaperSessionId, "D", out var sessionId) ? sessionId : Guid.Empty;
DockerEndpointAuthConfig = dockerEndpointAuthenticationConfiguration;
Labels = labels;
ParameterModifiers = parameterModifiers;
Reuse = reuse;
+ Logger = logger;
}
///
@@ -52,7 +56,8 @@ protected ResourceConfiguration(IResourceConfiguration ol
dockerEndpointAuthenticationConfiguration: BuildConfiguration.Combine(oldValue.DockerEndpointAuthConfig, newValue.DockerEndpointAuthConfig),
labels: BuildConfiguration.Combine(oldValue.Labels, newValue.Labels),
parameterModifiers: BuildConfiguration.Combine(oldValue.ParameterModifiers, newValue.ParameterModifiers),
- reuse: (oldValue.Reuse.HasValue && oldValue.Reuse.Value) || (newValue.Reuse.HasValue && newValue.Reuse.Value))
+ reuse: (oldValue.Reuse.HasValue && oldValue.Reuse.Value) || (newValue.Reuse.HasValue && newValue.Reuse.Value),
+ logger: BuildConfiguration.Combine(oldValue.Logger, newValue.Logger))
{
}
@@ -60,10 +65,6 @@ protected ResourceConfiguration(IResourceConfiguration ol
[JsonIgnore]
public Guid SessionId { get; }
- ///
- [JsonIgnore]
- public bool? Reuse { get; }
-
///
[JsonIgnore]
public IDockerEndpointAuthenticationConfiguration DockerEndpointAuthConfig { get; }
@@ -76,6 +77,14 @@ protected ResourceConfiguration(IResourceConfiguration ol
[JsonIgnore]
public IReadOnlyList> ParameterModifiers { get; }
+ ///
+ [JsonIgnore]
+ public bool? Reuse { get; }
+
+ ///
+ [JsonIgnore]
+ public ILogger Logger { get; }
+
///
public virtual string GetReuseHash()
{
diff --git a/src/Testcontainers/Configurations/TestcontainersSettings.cs b/src/Testcontainers/Configurations/TestcontainersSettings.cs
index d565b61b4..40735c2dc 100644
--- a/src/Testcontainers/Configurations/TestcontainersSettings.cs
+++ b/src/Testcontainers/Configurations/TestcontainersSettings.cs
@@ -2,10 +2,8 @@ namespace DotNet.Testcontainers.Configurations
{
using System;
using System.Collections.Generic;
- using System.Globalization;
using System.Linq;
using System.Runtime.InteropServices;
- using System.Text;
using System.Threading;
using System.Threading.Tasks;
using DotNet.Testcontainers.Builders;
@@ -20,7 +18,7 @@ namespace DotNet.Testcontainers.Configurations
[PublicAPI]
public static class TestcontainersSettings
{
- private static readonly ManualResetEventSlim ManualResetEvent = new ManualResetEventSlim(false);
+ private static readonly ManualResetEventSlim ManualResetEvent = new ManualResetEventSlim(true);
[CanBeNull]
private static readonly IDockerEndpointAuthenticationProvider DockerEndpointAuthProvider
@@ -44,64 +42,6 @@ private static readonly IDockerEndpointAuthenticationConfiguration DockerEndpoin
static TestcontainersSettings()
{
- Task.Run(async () =>
- {
- var runtimeInfo = new StringBuilder();
-
- if (DockerEndpointAuthConfig != null)
- {
- using (var dockerClientConfiguration = DockerEndpointAuthConfig.GetDockerClientConfiguration())
- {
- using (var dockerClient = dockerClientConfiguration.CreateClient())
- {
- try
- {
- var byteUnits = new[] { "KB", "MB", "GB" };
-
- var dockerInfo = await dockerClient.System.GetSystemInfoAsync()
- .ConfigureAwait(false);
-
- var dockerVersion = await dockerClient.System.GetVersionAsync()
- .ConfigureAwait(false);
-
- runtimeInfo.AppendLine("Connected to Docker:");
-
- runtimeInfo.Append(" Host: ");
- runtimeInfo.AppendLine(dockerClient.Configuration.EndpointBaseUri.ToString());
-
- runtimeInfo.Append(" Server Version: ");
- runtimeInfo.AppendLine(dockerInfo.ServerVersion);
-
- runtimeInfo.Append(" Kernel Version: ");
- runtimeInfo.AppendLine(dockerInfo.KernelVersion);
-
- runtimeInfo.Append(" API Version: ");
- runtimeInfo.AppendLine(dockerVersion.APIVersion);
-
- runtimeInfo.Append(" Operating System: ");
- runtimeInfo.AppendLine(dockerInfo.OperatingSystem);
-
- runtimeInfo.Append(" Total Memory: ");
- runtimeInfo.AppendFormat(CultureInfo.InvariantCulture, "{0:F} {1}", dockerInfo.MemTotal / Math.Pow(1024, byteUnits.Length), byteUnits[byteUnits.Length - 1]);
- }
- catch
- {
- // Ignore exceptions in auto discovery. Users can provide the Docker endpoint with the builder too.
- }
- }
- }
- }
- else
- {
- runtimeInfo.AppendLine("Auto discovery did not detect a Docker host configuration");
- }
-
-#pragma warning disable CA1848, CA2254
- Logger.LogInformation(runtimeInfo.ToString());
-#pragma warning restore CA1848, CA2254
-
- ManualResetEvent.Set();
- });
}
///
@@ -167,6 +107,7 @@ static TestcontainersSettings()
/// Gets or sets the logger.
///
[NotNull]
+ [Obsolete("Use the builder API WithLogger(ILogger) instead.")]
public static ILogger Logger { get; set; }
= ConsoleLogger.Instance;
@@ -181,6 +122,7 @@ static TestcontainersSettings()
/// Gets the wait handle that signals settings initialized.
///
[NotNull]
+ [Obsolete("This property is no longer supported.")]
public static WaitHandle SettingsInitialized
=> ManualResetEvent.WaitHandle;
diff --git a/src/Testcontainers/Configurations/Unix.cs b/src/Testcontainers/Configurations/Unix.cs
index 4ccba5663..d6e8da664 100644
--- a/src/Testcontainers/Configurations/Unix.cs
+++ b/src/Testcontainers/Configurations/Unix.cs
@@ -64,6 +64,10 @@ public sealed class Unix : IOperatingSystem
UnixFileModes.OtherWrite |
UnixFileModes.OtherExecute;
+ static Unix()
+ {
+ }
+
///
/// Initializes a new instance of the class.
///
diff --git a/src/Testcontainers/Configurations/Windows.cs b/src/Testcontainers/Configurations/Windows.cs
index 36e36eeeb..bdf53a285 100644
--- a/src/Testcontainers/Configurations/Windows.cs
+++ b/src/Testcontainers/Configurations/Windows.cs
@@ -10,6 +10,10 @@ namespace DotNet.Testcontainers.Configurations
[PublicAPI]
public sealed class Windows : IOperatingSystem
{
+ static Windows()
+ {
+ }
+
///
/// Initializes a new instance of the class.
///
diff --git a/src/Testcontainers/Containers/DockerContainer.cs b/src/Testcontainers/Containers/DockerContainer.cs
index 3afaffc82..9d846d40f 100644
--- a/src/Testcontainers/Containers/DockerContainer.cs
+++ b/src/Testcontainers/Containers/DockerContainer.cs
@@ -28,16 +28,26 @@ public class DockerContainer : Resource, IContainer
private ContainerInspectResponse _container = new ContainerInspectResponse();
+ ///
+ /// Initializes a new instance of the class.
+ ///
+ /// The container configuration.
+ public DockerContainer(IContainerConfiguration configuration)
+ {
+ _client = new TestcontainersClient(configuration.SessionId, configuration.DockerEndpointAuthConfig, configuration.Logger);
+ _configuration = configuration;
+ }
+
///
/// Initializes a new instance of the class.
///
/// The container configuration.
/// The logger.
+ [Obsolete("Use the constructor DockerContainer(IContainerConfiguration) instead.")]
public DockerContainer(IContainerConfiguration configuration, ILogger logger)
{
_client = new TestcontainersClient(configuration.SessionId, configuration.DockerEndpointAuthConfig, logger);
_configuration = configuration;
- Logger = logger;
}
///
@@ -58,9 +68,6 @@ public DockerContainer(IContainerConfiguration configuration, ILogger logger)
///
public event EventHandler Stopped;
- ///
- public ILogger Logger { get; }
-
///
public DateTime CreatedTime { get; private set; }
@@ -70,6 +77,15 @@ public DockerContainer(IContainerConfiguration configuration, ILogger logger)
///
public DateTime StoppedTime { get; private set; }
+ ///
+ public ILogger Logger
+ {
+ get
+ {
+ return _configuration.Logger;
+ }
+ }
+
///
public string Id
{
@@ -371,6 +387,9 @@ protected override async Task UnsafeCreateAsync(CancellationToken ct = default)
return;
}
+ await _client.System.LogContainerRuntimeInfoAsync(ct)
+ .ConfigureAwait(false);
+
Creating?.Invoke(this, EventArgs.Empty);
string id;
diff --git a/src/Testcontainers/Containers/IContainer.cs b/src/Testcontainers/Containers/IContainer.cs
index 11b784bfe..d041f7822 100644
--- a/src/Testcontainers/Containers/IContainer.cs
+++ b/src/Testcontainers/Containers/IContainer.cs
@@ -52,12 +52,6 @@ public interface IContainer : IAsyncDisposable
[CanBeNull]
event EventHandler Stopped;
- ///
- /// Gets the logger.
- ///
- [NotNull]
- ILogger Logger { get; }
-
///
/// Gets the created timestamp.
///
@@ -73,6 +67,12 @@ public interface IContainer : IAsyncDisposable
///
DateTime StoppedTime { get; }
+ ///
+ /// Gets the logger.
+ ///
+ [NotNull]
+ ILogger Logger { get; }
+
///
/// Gets the container id.
///
diff --git a/src/Testcontainers/Containers/PortForwarding.cs b/src/Testcontainers/Containers/PortForwarding.cs
index 2ebec57f2..0fa61a035 100644
--- a/src/Testcontainers/Containers/PortForwarding.cs
+++ b/src/Testcontainers/Containers/PortForwarding.cs
@@ -9,7 +9,6 @@ namespace DotNet.Testcontainers.Containers
using DotNet.Testcontainers.Builders;
using DotNet.Testcontainers.Configurations;
using JetBrains.Annotations;
- using Microsoft.Extensions.Logging;
using Renci.SshNet;
///
@@ -26,9 +25,8 @@ static PortForwardingContainer()
/// Initializes a new instance of the class.
///
/// The container configuration.
- /// The logger.
- private PortForwardingContainer(PortForwardingConfiguration configuration, ILogger logger)
- : base(configuration, logger)
+ private PortForwardingContainer(PortForwardingConfiguration configuration)
+ : base(configuration)
{
_configuration = configuration;
}
@@ -107,7 +105,7 @@ public override PortForwardingContainer Build()
// instance of the port forwarding container. To improve the user experience, it
// is preferable to stop supporting `WithDockerEndpoint(string)` and instead rely
// on the environment variables or the properties file custom configurations.
- return DockerResourceConfiguration.DockerEndpointAuthConfig == null ? null : new PortForwardingContainer(DockerResourceConfiguration, TestcontainersSettings.Logger);
+ return DockerResourceConfiguration.DockerEndpointAuthConfig == null ? null : new PortForwardingContainer(DockerResourceConfiguration);
}
///
diff --git a/src/Testcontainers/Containers/ResourceReaper.cs b/src/Testcontainers/Containers/ResourceReaper.cs
index d3c9af560..7a8081216 100644
--- a/src/Testcontainers/Containers/ResourceReaper.cs
+++ b/src/Testcontainers/Containers/ResourceReaper.cs
@@ -11,6 +11,7 @@ namespace DotNet.Testcontainers.Containers
using DotNet.Testcontainers.Configurations;
using DotNet.Testcontainers.Images;
using JetBrains.Annotations;
+ using Microsoft.Extensions.Logging;
///
/// The Resource Reaper takes care of the remaining Docker resources and removes them: https://dotnet.testcontainers.org/api/resource-reaper/.
@@ -52,7 +53,7 @@ static ResourceReaper()
{
}
- private ResourceReaper(Guid sessionId, IDockerEndpointAuthenticationConfiguration dockerEndpointAuthConfig, IImage resourceReaperImage, IMount dockerSocket, bool requiresPrivilegedMode)
+ private ResourceReaper(Guid sessionId, IDockerEndpointAuthenticationConfiguration dockerEndpointAuthConfig, IImage resourceReaperImage, IMount dockerSocket, ILogger logger, bool requiresPrivilegedMode)
{
_resourceReaperContainer = new ContainerBuilder()
.WithName($"testcontainers-ryuk-{sessionId:D}")
@@ -63,6 +64,7 @@ private ResourceReaper(Guid sessionId, IDockerEndpointAuthenticationConfiguratio
.WithCleanUp(false)
.WithPortBinding(TestcontainersSettings.ResourceReaperPublicHostPort.Invoke(dockerEndpointAuthConfig), RyukPort)
.WithMount(dockerSocket)
+ .WithLogger(logger)
.Build();
SessionId = sessionId;
@@ -102,7 +104,22 @@ private ResourceReaper(Guid sessionId, IDockerEndpointAuthenticationConfiguratio
/// The cancellation token to cancel the initialization.
/// Task that completes when the has been started.
[PublicAPI]
- public static async Task GetAndStartDefaultAsync(IDockerEndpointAuthenticationConfiguration dockerEndpointAuthConfig, bool isWindowsEngineEnabled = false, CancellationToken ct = default)
+ [Obsolete("Use GetAndStartDefaultAsync(IDockerEndpointAuthenticationConfiguration, ILogger, bool, CancellationToken) instead.")]
+ public static Task GetAndStartDefaultAsync(IDockerEndpointAuthenticationConfiguration dockerEndpointAuthConfig, bool isWindowsEngineEnabled = false, CancellationToken ct = default)
+ {
+ return GetAndStartDefaultAsync(dockerEndpointAuthConfig, ConsoleLogger.Instance, isWindowsEngineEnabled, ct);
+ }
+
+ ///
+ /// Starts and returns the default instance.
+ ///
+ /// The Docker endpoint authentication configuration.
+ /// The logger.
+ /// Determines whether the Windows engine is enabled or not.
+ /// The cancellation token to cancel the initialization.
+ /// Task that completes when the has been started.
+ [PublicAPI]
+ public static async Task GetAndStartDefaultAsync(IDockerEndpointAuthenticationConfiguration dockerEndpointAuthConfig, ILogger logger, bool isWindowsEngineEnabled = false, CancellationToken ct = default)
{
if (isWindowsEngineEnabled)
{
@@ -129,7 +146,7 @@ await DefaultLock.WaitAsync(ct)
var requiresPrivilegedMode = TestcontainersSettings.ResourceReaperPrivilegedModeEnabled;
- _defaultInstance = await GetAndStartNewAsync(DefaultSessionId, dockerEndpointAuthConfig, resourceReaperImage, new UnixSocketMount(dockerEndpointAuthConfig.Endpoint), requiresPrivilegedMode, ct: ct)
+ _defaultInstance = await GetAndStartNewAsync(DefaultSessionId, dockerEndpointAuthConfig, resourceReaperImage, new UnixSocketMount(dockerEndpointAuthConfig.Endpoint), logger, requiresPrivilegedMode, ct: ct)
.ConfigureAwait(false);
return _defaultInstance;
@@ -177,14 +194,15 @@ await _resourceReaperContainer.DisposeAsync()
/// The Docker endpoint authentication configuration.
/// The Resource Reaper image.
/// The Docker socket.
+ /// The logger.
/// True if the container requires privileged mode, otherwise false.
/// The timeout to initialize the Ryuk connection (Default: ).
/// The cancellation token to cancel the initialization.
/// Task that completes when the has been started.
[PublicAPI]
- private static Task GetAndStartNewAsync(IDockerEndpointAuthenticationConfiguration dockerEndpointAuthConfig, IImage resourceReaperImage, IMount dockerSocket, bool requiresPrivilegedMode = false, TimeSpan initTimeout = default, CancellationToken ct = default)
+ private static Task GetAndStartNewAsync(IDockerEndpointAuthenticationConfiguration dockerEndpointAuthConfig, IImage resourceReaperImage, IMount dockerSocket, ILogger logger, bool requiresPrivilegedMode = false, TimeSpan initTimeout = default, CancellationToken ct = default)
{
- return GetAndStartNewAsync(Guid.NewGuid(), dockerEndpointAuthConfig, resourceReaperImage, dockerSocket, requiresPrivilegedMode, initTimeout, ct);
+ return GetAndStartNewAsync(Guid.NewGuid(), dockerEndpointAuthConfig, resourceReaperImage, dockerSocket, logger, requiresPrivilegedMode, initTimeout, ct);
}
///
@@ -194,16 +212,17 @@ private static Task GetAndStartNewAsync(IDockerEndpointAuthentic
/// The Docker endpoint authentication configuration.
/// The Resource Reaper image.
/// The Docker socket.
+ /// The logger.
/// True if the container requires privileged mode, otherwise false.
/// The timeout to initialize the Ryuk connection (Default: ).
/// The cancellation token to cancel the initialization.
/// Task that completes when the has been started.
[PublicAPI]
- private static async Task GetAndStartNewAsync(Guid sessionId, IDockerEndpointAuthenticationConfiguration dockerEndpointAuthConfig, IImage resourceReaperImage, IMount dockerSocket, bool requiresPrivilegedMode = false, TimeSpan initTimeout = default, CancellationToken ct = default)
+ private static async Task GetAndStartNewAsync(Guid sessionId, IDockerEndpointAuthenticationConfiguration dockerEndpointAuthConfig, IImage resourceReaperImage, IMount dockerSocket, ILogger logger, bool requiresPrivilegedMode = false, TimeSpan initTimeout = default, CancellationToken ct = default)
{
var ryukInitializedTaskSource = new TaskCompletionSource();
- var resourceReaper = new ResourceReaper(sessionId, dockerEndpointAuthConfig, resourceReaperImage, dockerSocket, requiresPrivilegedMode);
+ var resourceReaper = new ResourceReaper(sessionId, dockerEndpointAuthConfig, resourceReaperImage, dockerSocket, logger, requiresPrivilegedMode);
initTimeout = TimeSpan.Equals(default, initTimeout) ? TimeSpan.FromSeconds(ConnectionTimeoutInSeconds) : initTimeout;
diff --git a/src/Testcontainers/Images/FutureDockerImage.cs b/src/Testcontainers/Images/FutureDockerImage.cs
index 211c690b2..6a48e787e 100644
--- a/src/Testcontainers/Images/FutureDockerImage.cs
+++ b/src/Testcontainers/Images/FutureDockerImage.cs
@@ -6,7 +6,6 @@ namespace DotNet.Testcontainers.Images
using DotNet.Testcontainers.Clients;
using DotNet.Testcontainers.Configurations;
using JetBrains.Annotations;
- using Microsoft.Extensions.Logging;
///
[PublicAPI]
@@ -22,10 +21,9 @@ internal sealed class FutureDockerImage : Resource, IFutureDockerImage
/// Initializes a new instance of the class.
///
/// The image configuration.
- /// The logger.
- public FutureDockerImage(IImageFromDockerfileConfiguration configuration, ILogger logger)
+ public FutureDockerImage(IImageFromDockerfileConfiguration configuration)
{
- _client = new TestcontainersClient(configuration.SessionId, configuration.DockerEndpointAuthConfig, logger);
+ _client = new TestcontainersClient(configuration.SessionId, configuration.DockerEndpointAuthConfig, configuration.Logger);
_configuration = configuration;
}
@@ -112,6 +110,9 @@ protected override async Task UnsafeCreateAsync(CancellationToken ct = default)
return;
}
+ await _client.System.LogContainerRuntimeInfoAsync(ct)
+ .ConfigureAwait(false);
+
_ = await _client.BuildAsync(_configuration, ct)
.ConfigureAwait(false);
diff --git a/src/Testcontainers/Networks/DockerNetwork.cs b/src/Testcontainers/Networks/DockerNetwork.cs
index d17c66b3f..9c8086eaf 100644
--- a/src/Testcontainers/Networks/DockerNetwork.cs
+++ b/src/Testcontainers/Networks/DockerNetwork.cs
@@ -9,7 +9,6 @@ namespace DotNet.Testcontainers.Networks
using DotNet.Testcontainers.Clients;
using DotNet.Testcontainers.Configurations;
using JetBrains.Annotations;
- using Microsoft.Extensions.Logging;
///
[PublicAPI]
@@ -19,20 +18,16 @@ internal sealed class DockerNetwork : Resource, INetwork
private readonly INetworkConfiguration _configuration;
- private readonly ILogger _logger;
-
private NetworkResponse _network = new NetworkResponse();
///
/// Initializes a new instance of the class.
///
/// The network configuration.
- /// The logger.
- public DockerNetwork(INetworkConfiguration configuration, ILogger logger)
+ public DockerNetwork(INetworkConfiguration configuration)
{
- _client = new TestcontainersClient(configuration.SessionId, configuration.DockerEndpointAuthConfig, logger);
+ _client = new TestcontainersClient(configuration.SessionId, configuration.DockerEndpointAuthConfig, configuration.Logger);
_configuration = configuration;
- _logger = logger;
}
///
@@ -99,11 +94,14 @@ protected override async Task UnsafeCreateAsync(CancellationToken ct = default)
return;
}
+ await _client.System.LogContainerRuntimeInfoAsync(ct)
+ .ConfigureAwait(false);
+
string id;
if (_configuration.Reuse.HasValue && _configuration.Reuse.Value)
{
- _logger.ReusableExperimentalFeature();
+ _configuration.Logger.ReusableExperimentalFeature();
var filters = new FilterByReuseHash(_configuration);
@@ -114,13 +112,13 @@ protected override async Task UnsafeCreateAsync(CancellationToken ct = default)
if (reusableNetwork != null)
{
- _logger.ReusableResourceFound();
+ _configuration.Logger.ReusableResourceFound();
id = reusableNetwork.ID;
}
else
{
- _logger.ReusableResourceNotFound();
+ _configuration.Logger.ReusableResourceNotFound();
id = await _client.Network.CreateAsync(_configuration, ct)
.ConfigureAwait(false);
diff --git a/src/Testcontainers/Testcontainers.csproj b/src/Testcontainers/Testcontainers.csproj
index 591f98636..63610b647 100644
--- a/src/Testcontainers/Testcontainers.csproj
+++ b/src/Testcontainers/Testcontainers.csproj
@@ -10,6 +10,7 @@
+
diff --git a/src/Testcontainers/Volumes/DockerVolume.cs b/src/Testcontainers/Volumes/DockerVolume.cs
index bd78c9242..2f0e44a4b 100644
--- a/src/Testcontainers/Volumes/DockerVolume.cs
+++ b/src/Testcontainers/Volumes/DockerVolume.cs
@@ -9,7 +9,6 @@ namespace DotNet.Testcontainers.Volumes
using DotNet.Testcontainers.Clients;
using DotNet.Testcontainers.Configurations;
using JetBrains.Annotations;
- using Microsoft.Extensions.Logging;
///
[PublicAPI]
@@ -19,20 +18,16 @@ internal sealed class DockerVolume : Resource, IVolume
private readonly IVolumeConfiguration _configuration;
- private readonly ILogger _logger;
-
private VolumeResponse _volume = new VolumeResponse();
///
/// Initializes a new instance of the class.
///
/// The volume configuration.
- /// The logger.
- public DockerVolume(IVolumeConfiguration configuration, ILogger logger)
+ public DockerVolume(IVolumeConfiguration configuration)
{
- _client = new TestcontainersClient(configuration.SessionId, configuration.DockerEndpointAuthConfig, logger);
+ _client = new TestcontainersClient(configuration.SessionId, configuration.DockerEndpointAuthConfig, configuration.Logger);
_configuration = configuration;
- _logger = logger;
}
///
@@ -99,11 +94,14 @@ protected override async Task UnsafeCreateAsync(CancellationToken ct = default)
return;
}
+ await _client.System.LogContainerRuntimeInfoAsync(ct)
+ .ConfigureAwait(false);
+
string id;
if (_configuration.Reuse.HasValue && _configuration.Reuse.Value)
{
- _logger.ReusableExperimentalFeature();
+ _configuration.Logger.ReusableExperimentalFeature();
var filters = new FilterByReuseHash(_configuration);
@@ -114,13 +112,13 @@ protected override async Task UnsafeCreateAsync(CancellationToken ct = default)
if (reusableVolume != null)
{
- _logger.ReusableResourceFound();
+ _configuration.Logger.ReusableResourceFound();
id = reusableVolume.Name;
}
else
{
- _logger.ReusableResourceNotFound();
+ _configuration.Logger.ReusableResourceNotFound();
id = await _client.Volume.CreateAsync(_configuration, ct)
.ConfigureAwait(false);
diff --git a/tests/Testcontainers.Platform.Linux.Tests/LoggerTest.cs b/tests/Testcontainers.Platform.Linux.Tests/LoggerTest.cs
new file mode 100644
index 000000000..6cecc4fdb
--- /dev/null
+++ b/tests/Testcontainers.Platform.Linux.Tests/LoggerTest.cs
@@ -0,0 +1,89 @@
+namespace Testcontainers.Tests;
+
+public abstract class LoggerTest : IAsyncLifetime
+{
+ private readonly FakeLogger _fakeLogger;
+
+ protected LoggerTest(FakeLogger fakeLogger)
+ {
+ _fakeLogger = fakeLogger;
+ }
+
+ public Task InitializeAsync()
+ {
+ return new ContainerBuilder()
+ .WithImage(CommonImages.Alpine)
+ .WithCommand(CommonCommands.SleepInfinity)
+ .WithLogger(_fakeLogger)
+ .Build()
+ .StartAsync();
+ }
+
+ public Task DisposeAsync()
+ {
+ return Task.CompletedTask;
+ }
+
+ [Theory]
+ [InlineData(0)]
+ [InlineData(1)]
+ [InlineData(2)]
+ public void LogContainerRuntimeInformationOnce(int _)
+ {
+ Assert.Contains("Connected to Docker", _fakeLogger.Collector.GetSnapshot().First().Message);
+ }
+
+ [UsedImplicitly]
+ public sealed class SingleInstanceTest : LoggerTest
+ {
+ public SingleInstanceTest()
+ : base(new SingleInstance())
+ {
+ }
+ }
+
+ [UsedImplicitly]
+ public sealed class SharedInstanceTest : LoggerTest, IClassFixture
+ {
+ public SharedInstanceTest(SharedInstance sharedInstance)
+ : base(sharedInstance)
+ {
+ }
+ }
+
+ [UsedImplicitly]
+ [Collection(nameof(SharedCollection))]
+ public sealed class SharedCollectionTest1 : LoggerTest
+ {
+ public SharedCollectionTest1(SharedInstance sharedInstance)
+ : base(sharedInstance)
+ {
+ }
+ }
+
+ [UsedImplicitly]
+ [Collection(nameof(SharedCollection))]
+ public sealed class SharedCollectionTest2 : LoggerTest
+ {
+ public SharedCollectionTest2(SharedInstance sharedInstance)
+ : base(sharedInstance)
+ {
+ }
+ }
+
+ public sealed class SingleInstance : FakeLogger
+ {
+ // Ctor ITestOutputHelper
+ }
+
+ public sealed class SharedInstance : FakeLogger
+ {
+ // Ctor IMessageSink
+ }
+
+ [CollectionDefinition(nameof(SharedCollection))]
+ public sealed class SharedCollection : ICollectionFixture
+ {
+ // Ctor IMessageSink
+ }
+}
\ No newline at end of file
diff --git a/tests/Testcontainers.Platform.Linux.Tests/Testcontainers.Platform.Linux.Tests.csproj b/tests/Testcontainers.Platform.Linux.Tests/Testcontainers.Platform.Linux.Tests.csproj
index 0282b5373..5cde0f59f 100644
--- a/tests/Testcontainers.Platform.Linux.Tests/Testcontainers.Platform.Linux.Tests.csproj
+++ b/tests/Testcontainers.Platform.Linux.Tests/Testcontainers.Platform.Linux.Tests.csproj
@@ -6,6 +6,7 @@
+
diff --git a/tests/Testcontainers.Platform.Linux.Tests/Usings.cs b/tests/Testcontainers.Platform.Linux.Tests/Usings.cs
index 8e7257e47..7674d6b7e 100644
--- a/tests/Testcontainers.Platform.Linux.Tests/Usings.cs
+++ b/tests/Testcontainers.Platform.Linux.Tests/Usings.cs
@@ -19,4 +19,5 @@
global using ICSharpCode.SharpZipLib.Tar;
global using JetBrains.Annotations;
global using Microsoft.Extensions.Logging.Abstractions;
+global using Microsoft.Extensions.Logging.Testing;
global using Xunit;
\ No newline at end of file