diff --git a/src/BuildingBlocks/WebHostCustomization/WebHost.Customization/WebHostExtensions.cs b/src/BuildingBlocks/WebHostCustomization/WebHost.Customization/WebHostExtensions.cs index 2b7f661da..6316ae59d 100644 --- a/src/BuildingBlocks/WebHostCustomization/WebHost.Customization/WebHostExtensions.cs +++ b/src/BuildingBlocks/WebHostCustomization/WebHost.Customization/WebHostExtensions.cs @@ -24,9 +24,7 @@ namespace Microsoft.AspNetCore.Hosting using (var scope = webHost.Services.CreateScope()) { var services = scope.ServiceProvider; - var logger = services.GetRequiredService>(); - var context = services.GetService(); try @@ -60,7 +58,6 @@ namespace Microsoft.AspNetCore.Hosting } catch (Exception ex) { - Console.WriteLine(ex.Message.ToString() + "An error occurred while migrating the database used on context {DbContextName}" + typeof(TContext).Name); logger.LogError(ex, "An error occurred while migrating the database used on context {DbContextName}", typeof(TContext).Name); if (underK8s) { @@ -72,72 +69,11 @@ namespace Microsoft.AspNetCore.Hosting return webHost; } - - public static IWebHost RemoveDbContext(this IWebHost webHost) where TContext : DbContext - { - var underK8s = webHost.IsInKubernetes(); - - using (var scope = webHost.Services.CreateScope()) - { - var services = scope.ServiceProvider; - var logger = services.GetRequiredService>(); - var context = services.GetService(); - - try - { - logger.LogInformation("Deleting the database associated with context {DbContextName}" + typeof(TContext).Name); - - if (underK8s) - { - InvokeRemover(context); - } - else - { - var retries = 10; - var retry = Policy.Handle() - .WaitAndRetry( - retryCount: retries, - sleepDurationProvider: retryAttempt => TimeSpan.FromSeconds(Math.Pow(2, retryAttempt)), - onRetry: (exception, timeSpan, retry, ctx) => - { - Console.WriteLine(" --RETRYING Exception " + exception.Message.ToString()); - logger.LogWarning(exception, "[{prefix}] Exception {ExceptionType} with message {Message} detected on attempt {retry} of {retries}", nameof(TContext), exception.GetType().Name, exception.Message, retry, retries); - }); - - //if the sql server container is not created on run docker compose this - //migration can't fail for network related exception. The retry options for DbContext only - //apply to transient exceptions - // Note that this is NOT applied when running some orchestrators (let the orchestrator to recreate the failing service) - retry.Execute(() => InvokeRemover(context)); - } - - Console.WriteLine("Deleted database associated with context {DbContextName}", typeof(TContext).Name); - logger.LogInformation("Deleted database associated with context {DbContextName}", typeof(TContext).Name); - } - catch (Exception ex) - { - Console.WriteLine(ex.Message.ToString() + "An error occurred while deleting the database used on context {DbContextName}" + typeof(TContext).Name); - logger.LogError(ex, "An error occurred while deleting the database used on context {DbContextName}", typeof(TContext).Name); - if (underK8s) - { - throw; // Rethrow under k8s because we rely on k8s to re-run the pod - } - } - } - - return webHost; - } - private static void InvokeSeeder(Action seeder, TContext context, IServiceProvider services) where TContext : DbContext { context.Database.Migrate(); seeder(context, services); } - private static void InvokeRemover(TContext context) - where TContext : DbContext - { - context.Database.EnsureDeleted(); - } } } diff --git a/src/Services/Marketing/Marketing.API/Infrastructure/MarketingContext.cs b/src/Services/Marketing/Marketing.API/Infrastructure/MarketingContext.cs index 064a1c3e5..e06106b5e 100644 --- a/src/Services/Marketing/Marketing.API/Infrastructure/MarketingContext.cs +++ b/src/Services/Marketing/Marketing.API/Infrastructure/MarketingContext.cs @@ -35,13 +35,10 @@ .AddJsonFile("appsettings.json", optional: false, reloadOnChange: true) .AddEnvironmentVariables() .Build(); - var connectionString = configuration["ConnectionString"]; - Console.WriteLine(" -- Connection string"); - Console.WriteLine(connectionString); + var connectionString = configuration["ConnectionString"]; var optionsBuilder = new DbContextOptionsBuilder() .UseSqlServer(connectionString); - // .UseSqlServer("Server=.;Initial Catalog=Microsoft.eShopOnContainers.Services.MarketingDb;Integrated Security=true"); return new MarketingContext(optionsBuilder.Options); } } diff --git a/src/Services/Marketing/Marketing.FunctionalTests/CampaignScenarios.cs b/src/Services/Marketing/Marketing.FunctionalTests/CampaignScenarios.cs index f2643e998..3742b80c6 100644 --- a/src/Services/Marketing/Marketing.FunctionalTests/CampaignScenarios.cs +++ b/src/Services/Marketing/Marketing.FunctionalTests/CampaignScenarios.cs @@ -9,6 +9,7 @@ using Xunit; namespace Marketing.FunctionalTests { + [Collection("Sequential")] public class CampaignScenarios : CampaignScenarioBase { diff --git a/src/Services/Marketing/Marketing.FunctionalTests/MarketingScenarioBase.cs b/src/Services/Marketing/Marketing.FunctionalTests/MarketingScenarioBase.cs index fdee81ce3..7ddf991a4 100644 --- a/src/Services/Marketing/Marketing.FunctionalTests/MarketingScenarioBase.cs +++ b/src/Services/Marketing/Marketing.FunctionalTests/MarketingScenarioBase.cs @@ -20,13 +20,9 @@ namespace Marketing.FunctionalTests public TestServer CreateServer() { - - Console.WriteLine(" Creating test server"); var path = Assembly.GetAssembly(typeof(MarketingScenarioBase)) .Location; - Console.WriteLine(" Creating builder"); - var hostBuilder = new WebHostBuilder() .UseContentRoot(Path.GetDirectoryName(path)) .ConfigureAppConfiguration(cb => @@ -37,22 +33,9 @@ namespace Marketing.FunctionalTests .CaptureStartupErrors(true) .UseStartup(); - Console.WriteLine(" Created builder"); - var testServer = new TestServer(hostBuilder); - using (var scope = testServer.Services.CreateScope()) - { - var services = scope.ServiceProvider; - - var logger = services.GetRequiredService>(); - var settings = services.GetRequiredService>(); - logger.LogError("connectionString " + settings.Value.ConnectionString); - Console.WriteLine("connectionString " + settings.Value.ConnectionString); - } - testServer.Host - .RemoveDbContext() .MigrateDbContext((context, services) => { var logger = services.GetService>(); @@ -63,11 +46,6 @@ namespace Marketing.FunctionalTests .Wait(); }); - Console.WriteLine(" Thread to sleep"); - - Thread.Sleep(5000); - Console.WriteLine(" Thread after"); - return testServer; } diff --git a/src/Services/Marketing/Marketing.FunctionalTests/UserLocationRoleScenarios.cs b/src/Services/Marketing/Marketing.FunctionalTests/UserLocationRoleScenarios.cs index b8ee38e17..fe76923e0 100644 --- a/src/Services/Marketing/Marketing.FunctionalTests/UserLocationRoleScenarios.cs +++ b/src/Services/Marketing/Marketing.FunctionalTests/UserLocationRoleScenarios.cs @@ -8,6 +8,7 @@ using Xunit; namespace Marketing.FunctionalTests { + [Collection("Sequential")] public class UserLocationRoleScenarios : UserLocationRoleScenariosBase {