Browse Source

Delete more cruft

- Remove migration from the tests
davidfowl/common-services
David Fowler 1 year ago
committed by Reuben Bond
parent
commit
08e7c3424d
6 changed files with 8 additions and 104 deletions
  1. +4
    -8
      src/Services/Catalog/Catalog.API/CustomExtensionMethods.cs
  2. +0
    -68
      src/Services/Catalog/Catalog.API/Extensions/WebHostExtensions.cs
  3. +1
    -0
      src/Services/Catalog/Catalog.API/Program.cs
  4. +1
    -2
      src/Services/Catalog/Catalog.API/appsettings.json
  5. +1
    -19
      src/Services/Catalog/Catalog.FunctionalTests/CatalogScenarioBase.cs
  6. +1
    -7
      src/Services/Catalog/Catalog.FunctionalTests/appsettings.json

+ 4
- 8
src/Services/Catalog/Catalog.API/CustomExtensionMethods.cs View File

@ -6,14 +6,10 @@ public static class CustomExtensionMethods
{
var hcBuilder = services.AddHealthChecks();
if (configuration.GetConnectionString("CatalogDB") is string connectionString)
{
hcBuilder
.AddSqlServer(
connectionString,
name: "CatalogDB-check",
tags: new string[] { "live", "ready" });
}
hcBuilder
.AddSqlServer(_ => configuration.GetConnectionString("CatalogDB"),
name: "CatalogDB-check",
tags: new string[] { "live", "ready" });
var accountName = configuration["AzureStorageAccountName"];
var accountKey = configuration["AzureStorageAccountKey"];


+ 0
- 68
src/Services/Catalog/Catalog.API/Extensions/WebHostExtensions.cs View File

@ -1,68 +0,0 @@
namespace Microsoft.eShopOnContainers.Services.Catalog.API.Extensions;
public static class WebHostExtensions
{
public static bool IsInKubernetes(this IServiceProvider services)
{
var cfg = services.GetService<IConfiguration>();
var orchestratorType = cfg.GetValue<string>("OrchestratorType");
return orchestratorType?.ToUpper() == "K8S";
}
public static IServiceProvider MigrateDbContext<TContext>(this IServiceProvider services, Action<TContext, IServiceProvider> seeder) where TContext : DbContext
{
var underK8s = services.IsInKubernetes();
using var scope = services.CreateScope();
var scopedServices = scope.ServiceProvider;
var logger = scopedServices.GetRequiredService<ILogger<TContext>>();
var context = scopedServices.GetService<TContext>();
try
{
logger.LogInformation("Migrating database associated with context {DbContextName}", typeof(TContext).Name);
if (underK8s)
{
InvokeSeeder(seeder, context, scopedServices);
}
else
{
var retry = Policy.Handle<SqlException>()
.WaitAndRetry(new TimeSpan[]
{
TimeSpan.FromSeconds(3),
TimeSpan.FromSeconds(5),
TimeSpan.FromSeconds(8),
});
//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(() => InvokeSeeder(seeder, context, scopedServices));
}
logger.LogInformation("Migrated database associated with context {DbContextName}", typeof(TContext).Name);
}
catch (Exception ex)
{
logger.LogError(ex, "An error occurred while migrating 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 services;
}
private static void InvokeSeeder<TContext>(Action<TContext, IServiceProvider> seeder, TContext context, IServiceProvider services)
where TContext : DbContext
{
context.Database.Migrate();
seeder(context, services);
}
}

+ 1
- 0
src/Services/Catalog/Catalog.API/Program.cs View File

@ -41,6 +41,7 @@ var eventBus = app.Services.GetRequiredService<IEventBus>();
eventBus.Subscribe<OrderStatusChangedToAwaitingValidationIntegrationEvent, OrderStatusChangedToAwaitingValidationIntegrationEventHandler>();
eventBus.Subscribe<OrderStatusChangedToPaidIntegrationEvent, OrderStatusChangedToPaidIntegrationEventHandler>();
// REVIEW: This is done fore development east but shouldn't be here in production
using (var scope = app.Services.CreateScope())
{
var context = scope.ServiceProvider.GetRequiredService<CatalogContext>();


+ 1
- 2
src/Services/Catalog/Catalog.API/appsettings.json View File

@ -16,8 +16,7 @@
}
},
"ConnectionStrings": {
"EventBus": "localhost",
"CatalogDB": ""
"EventBus": "localhost"
},
"EventBus": {
"SubscriptionClientName": "Catalog",


+ 1
- 19
src/Services/Catalog/Catalog.FunctionalTests/CatalogScenarioBase.cs View File

@ -7,29 +7,11 @@ public class CatalogScenariosBase
public TestServer CreateServer()
{
var factory = new CatalogApplication();
return factory.CreateServer();
return factory.Server;
}
private class CatalogApplication : WebApplicationFactory<Program>
{
public TestServer CreateServer()
{
Services
.MigrateDbContext<CatalogContext>((context, services) =>
{
var env = services.GetService<IWebHostEnvironment>();
var settings = services.GetService<IOptions<CatalogSettings>>();
var logger = services.GetService<ILogger<CatalogContextSeed>>();
new CatalogContextSeed()
.SeedAsync(context, env, settings, logger)
.Wait();
})
.MigrateDbContext<IntegrationEventLogContext>((_, __) => { });
return Server;
}
protected override IHost CreateHost(IHostBuilder builder)
{
builder.ConfigureAppConfiguration(c =>


+ 1
- 7
src/Services/Catalog/Catalog.FunctionalTests/appsettings.json View File

@ -1,10 +1,5 @@
{
"ExternalCatalogBaseUrl": "http://localhost:5101",
"Identity": {
"Url": "http://localhost:5105",
"ExternalUrl": "http://localhost:5105",
"Audience": "catalog"
},
"isTest": "true",
"PicBaseUrl": "http://localhost:5101/api/v1/catalog/items/[0]/pic/",
@ -13,7 +8,6 @@
},
"EventBus": {
"SubscriptionClientName": "Catalog",
"ConnectionString": "localhost"
"SubscriptionClientName": "Catalog"
}
}

Loading…
Cancel
Save