From e2ffc32b05aacc3ac8ffd7540d607c811bf72663 Mon Sep 17 00:00:00 2001 From: Matteo Gregoricchio Date: Sat, 11 Mar 2023 23:43:23 +0100 Subject: [PATCH] tests: update testcontainers to 3.0.0 --- .../Serilog.Ui.Common.Tests.csproj | 2 +- .../SqlUtil/DatabaseInstance.cs | 28 ++++++------------- ...erilog.Ui.MsSqlServerProvider.Tests.csproj | 3 +- .../Util/MsSqlServerTestProvider.cs | 14 ++++++---- .../Serilog.Ui.MySqlProvider.Tests.csproj | 3 +- .../Util/MySqlTestProvider.cs | 19 ++++++------- ...Serilog.Ui.PostgreSqlProvider.Tests.csproj | 3 +- .../Util/PostgresTestProvider.cs | 14 ++++------ 8 files changed, 39 insertions(+), 47 deletions(-) diff --git a/tests/Serilog.Ui.Common.Tests/Serilog.Ui.Common.Tests.csproj b/tests/Serilog.Ui.Common.Tests/Serilog.Ui.Common.Tests.csproj index ba825fe0..640c53ff 100644 --- a/tests/Serilog.Ui.Common.Tests/Serilog.Ui.Common.Tests.csproj +++ b/tests/Serilog.Ui.Common.Tests/Serilog.Ui.Common.Tests.csproj @@ -19,7 +19,7 @@ - + diff --git a/tests/Serilog.Ui.Common.Tests/SqlUtil/DatabaseInstance.cs b/tests/Serilog.Ui.Common.Tests/SqlUtil/DatabaseInstance.cs index bf19fbf1..57c5379d 100644 --- a/tests/Serilog.Ui.Common.Tests/SqlUtil/DatabaseInstance.cs +++ b/tests/Serilog.Ui.Common.Tests/SqlUtil/DatabaseInstance.cs @@ -2,8 +2,6 @@ using System.Threading; using System.Threading.Tasks; using Ardalis.GuardClauses; -using DotNet.Testcontainers.Builders; -using DotNet.Testcontainers.Configurations; using DotNet.Testcontainers.Containers; using Microsoft.Data.SqlClient; using MySql.Data.MySqlClient; @@ -15,20 +13,16 @@ namespace Serilog.Ui.Common.Tests.SqlUtil { #nullable enable - public abstract class DatabaseInstance : IIntegrationRunner - where TContainer : TestcontainerDatabase - where TConfiguration : TestcontainerDatabaseConfiguration, new() + public abstract class DatabaseInstance : IIntegrationRunner { private bool disposedValue; - protected TConfiguration? Configuration = new() { Password = "#DockerFakePw#" }; - - protected virtual string Name { get; } = nameof(TContainer); + protected virtual string Name { get; } = nameof(IContainer); /// /// Gets or sets the Testcontainers container. /// - protected TContainer? Container { get; set; } + protected virtual IContainer? Container { get; set; } /// /// Gets or sets the IDataProvider. @@ -41,16 +35,10 @@ public abstract class DatabaseInstance : IIntegratio public LogModelPropsCollector GetPropsCollector() => Guard.Against.Null(Collector)!; - public Task InitializeAsync() + public async Task InitializeAsync() { - Container = new TestcontainersBuilder() - .WithDatabase(Configuration) - .WithName($"Testing_{Name}_{Guid.NewGuid()}") - .WithWaitStrategy(Wait.ForUnixContainer()) - .WithStartupCallback(async (dc, token) => await GetDbContextInstanceAsync(token)) - .Build(); - - return Container.StartAsync(); + await Container!.StartAsync(); + await GetDbContextInstanceAsync(); } /// @@ -68,7 +56,7 @@ public Task InitializeAsync() /// protected abstract Task InitializeAdditionalAsync(); - private async Task GetDbContextInstanceAsync(CancellationToken token) + private async Task GetDbContextInstanceAsync(CancellationToken token = default) { int retry = default; @@ -110,7 +98,7 @@ protected virtual void Dispose(bool disposing) { if (disposing) { - Configuration?.Dispose(); + // additional dispose items } disposedValue = true; diff --git a/tests/Serilog.Ui.MsSqlServerProvider.Tests/Serilog.Ui.MsSqlServerProvider.Tests.csproj b/tests/Serilog.Ui.MsSqlServerProvider.Tests/Serilog.Ui.MsSqlServerProvider.Tests.csproj index b9b5173f..35559577 100644 --- a/tests/Serilog.Ui.MsSqlServerProvider.Tests/Serilog.Ui.MsSqlServerProvider.Tests.csproj +++ b/tests/Serilog.Ui.MsSqlServerProvider.Tests/Serilog.Ui.MsSqlServerProvider.Tests.csproj @@ -25,7 +25,8 @@ - + + runtime; build; native; contentfiles; analyzers; buildtransitive diff --git a/tests/Serilog.Ui.MsSqlServerProvider.Tests/Util/MsSqlServerTestProvider.cs b/tests/Serilog.Ui.MsSqlServerProvider.Tests/Util/MsSqlServerTestProvider.cs index 551fb77d..ac8a70fd 100644 --- a/tests/Serilog.Ui.MsSqlServerProvider.Tests/Util/MsSqlServerTestProvider.cs +++ b/tests/Serilog.Ui.MsSqlServerProvider.Tests/Util/MsSqlServerTestProvider.cs @@ -1,6 +1,5 @@ using Dapper; -using DotNet.Testcontainers.Configurations; -using DotNet.Testcontainers.Containers; +using Testcontainers.MsSql; using Microsoft.Data.SqlClient; using Serilog.Ui.Common.Tests.DataSamples; using Serilog.Ui.Common.Tests.SqlUtil; @@ -14,19 +13,24 @@ namespace MsSql.Tests.Util [CollectionDefinition(nameof(SqlServerDataProvider))] public class SqlServerCollection : ICollectionFixture { } - public sealed class MsSqlServerTestProvider : DatabaseInstance + public sealed class MsSqlServerTestProvider : DatabaseInstance { + public MsSqlServerTestProvider() + { + Container = new MsSqlBuilder().Build(); + } + public RelationalDbOptions DbOptions { get; set; } = new() { TableName = "Logs", Schema = "dbo" }; - protected override string Name => nameof(MsSqlTestcontainer); + protected override string Name => nameof(MsSqlContainer); protected override async Task CheckDbReadinessAsync() { - DbOptions.ConnectionString = Container?.ConnectionString + "TrustServerCertificate=True;"; + DbOptions.ConnectionString = (Container as MsSqlContainer)?.GetConnectionString(); using var dataContext = new SqlConnection(DbOptions.ConnectionString); diff --git a/tests/Serilog.Ui.MySqlProvider.Tests/Serilog.Ui.MySqlProvider.Tests.csproj b/tests/Serilog.Ui.MySqlProvider.Tests/Serilog.Ui.MySqlProvider.Tests.csproj index 9ee944fe..48637717 100644 --- a/tests/Serilog.Ui.MySqlProvider.Tests/Serilog.Ui.MySqlProvider.Tests.csproj +++ b/tests/Serilog.Ui.MySqlProvider.Tests/Serilog.Ui.MySqlProvider.Tests.csproj @@ -25,7 +25,8 @@ - + + runtime; build; native; contentfiles; analyzers; buildtransitive diff --git a/tests/Serilog.Ui.MySqlProvider.Tests/Util/MySqlTestProvider.cs b/tests/Serilog.Ui.MySqlProvider.Tests/Util/MySqlTestProvider.cs index 6be6a594..f7f2c67b 100644 --- a/tests/Serilog.Ui.MySqlProvider.Tests/Util/MySqlTestProvider.cs +++ b/tests/Serilog.Ui.MySqlProvider.Tests/Util/MySqlTestProvider.cs @@ -1,28 +1,25 @@ using Ardalis.GuardClauses; using Dapper; -using DotNet.Testcontainers.Configurations; -using DotNet.Testcontainers.Containers; using MySql.Data.MySqlClient; using Serilog.Ui.Common.Tests.DataSamples; using Serilog.Ui.Common.Tests.SqlUtil; using Serilog.Ui.Core; using Serilog.Ui.MySqlProvider; using System.Threading.Tasks; +using Testcontainers.MySql; using Xunit; namespace MySql.Tests.Util { [CollectionDefinition(nameof(MySqlDataProvider))] public class MySqlCollection : ICollectionFixture { } - public sealed class MySqlTestProvider : DatabaseInstance - { - protected override string Name => nameof(MySqlTestcontainer); - public MySqlTestProvider() + public sealed class MySqlTestProvider : DatabaseInstance + { + protected override string Name => nameof(MySqlContainer); + public MySqlTestProvider() : base() { - Guard.Against.Null(Configuration); - Configuration.Username = "mysql-tests"; - Configuration.Database = "testdatabase"; + Container = new MySqlBuilder().Build(); } public RelationalDbOptions DbOptions { get; set; } = new() @@ -33,7 +30,9 @@ public MySqlTestProvider() protected override async Task CheckDbReadinessAsync() { - DbOptions.ConnectionString = Container?.ConnectionString; + Guard.Against.Null(Container); + + DbOptions.ConnectionString = (Container as MySqlContainer)?.GetConnectionString(); using var dataContext = new MySqlConnection(DbOptions.ConnectionString); diff --git a/tests/Serilog.Ui.PostgreSqlProvider.Tests/Serilog.Ui.PostgreSqlProvider.Tests.csproj b/tests/Serilog.Ui.PostgreSqlProvider.Tests/Serilog.Ui.PostgreSqlProvider.Tests.csproj index 8ad7d8de..6e28cec6 100644 --- a/tests/Serilog.Ui.PostgreSqlProvider.Tests/Serilog.Ui.PostgreSqlProvider.Tests.csproj +++ b/tests/Serilog.Ui.PostgreSqlProvider.Tests/Serilog.Ui.PostgreSqlProvider.Tests.csproj @@ -26,7 +26,8 @@ - + + runtime; build; native; contentfiles; analyzers; buildtransitive diff --git a/tests/Serilog.Ui.PostgreSqlProvider.Tests/Util/PostgresTestProvider.cs b/tests/Serilog.Ui.PostgreSqlProvider.Tests/Util/PostgresTestProvider.cs index c2e4732b..877e2f40 100644 --- a/tests/Serilog.Ui.PostgreSqlProvider.Tests/Util/PostgresTestProvider.cs +++ b/tests/Serilog.Ui.PostgreSqlProvider.Tests/Util/PostgresTestProvider.cs @@ -1,7 +1,6 @@ using Ardalis.GuardClauses; using Dapper; -using DotNet.Testcontainers.Configurations; -using DotNet.Testcontainers.Containers; +//using using Npgsql; using Serilog.Ui.Common.Tests.DataSamples; using Serilog.Ui.Common.Tests.SqlUtil; @@ -9,21 +8,20 @@ using Serilog.Ui.PostgreSqlProvider; using System.Linq; using System.Threading.Tasks; +using Testcontainers.PostgreSql; using Xunit; namespace Postgres.Tests.Util { [CollectionDefinition(nameof(PostgresDataProvider))] public class PostgresCollection : ICollectionFixture { } - public sealed class PostgresTestProvider : DatabaseInstance + public sealed class PostgresTestProvider : DatabaseInstance { - protected override string Name => nameof(PostgreSqlTestcontainer); + protected override string Name => nameof(PostgreSqlContainer); public PostgresTestProvider() { - Guard.Against.Null(Configuration); - Configuration.Username = "mysql-tests"; - Configuration.Database = "testdatabase"; + Container = new PostgreSqlBuilder().Build(); } public RelationalDbOptions DbOptions { get; set; } = new() @@ -34,7 +32,7 @@ public PostgresTestProvider() protected override async Task CheckDbReadinessAsync() { - DbOptions.ConnectionString = Container?.ConnectionString ?? string.Empty; + DbOptions.ConnectionString = (Container as PostgreSqlContainer)?.GetConnectionString() ?? string.Empty; using var dataContext = new NpgsqlConnection(DbOptions.ConnectionString);