public async Task Dogfeed_ExistingUnhealthyInstances_DestroysUnhealthyInstances() { //Arrange var fakeMediator = Substitute.For <IMediator>(); FakeOutValidSupportedPlans(fakeMediator); FakeOutNewlyCreatedInstance(fakeMediator); fakeMediator .Send(Arg.Any <GetLoadBalancerByNameQuery>()) .Returns( new LoadBalancer() { InstanceHealthSummary = new List <InstanceHealthSummary>() { new InstanceHealthSummary() { InstanceName = "unhealthy-instance-1", InstanceHealth = InstanceHealthState.Unhealthy }, new InstanceHealthSummary() { InstanceName = "unhealthy-instance-2", InstanceHealth = InstanceHealthState.Unhealthy }, new InstanceHealthSummary() { InstanceName = "new-instance", InstanceHealth = InstanceHealthState.Healthy } } }); await using var environment = await IntegrationTestEnvironment.CreateAsync(new EnvironmentSetupOptions () { IocConfiguration = services => { IocRegistry.ConfigureDogfeeding(services); FakeOutMinimalServices(services); services.AddSingleton(fakeMediator); } }); var dogfeedService = environment.ServiceProvider.GetRequiredService <IDogfeedService>(); //Act await dogfeedService.DogfeedAsync(); //Assert await fakeMediator .Received() .Send(Arg.Is <DeleteInstanceByNameCommand>( arg => arg.Name == "unhealthy-instance-1")); await fakeMediator .Received() .Send(Arg.Is <DeleteInstanceByNameCommand>( arg => arg.Name == "unhealthy-instance-2")); }
public async Task Dogfeed_AllDetailsGiven_AssignsStaticIpAddressToNewInstance() { //Arrange var fakeMediator = Substitute.For <IMediator>(); FakeOutValidSupportedPlans(fakeMediator); FakeOutNewlyCreatedInstance(fakeMediator); fakeMediator .Send(Arg.Any <GetAllInstancesQuery>()) .Returns( new[] { new Instance() { Name = "new-instance" } }); fakeMediator .Send(Arg.Any <GetLoadBalancerByNameQuery>()) .Returns( new LoadBalancer() { InstanceHealthSummary = new List <InstanceHealthSummary>() { new InstanceHealthSummary() { InstanceName = "new-instance", InstanceHealth = InstanceHealthState.Healthy } } }); await using var environment = await IntegrationTestEnvironment.CreateAsync(new EnvironmentSetupOptions () { IocConfiguration = services => { IocRegistry.ConfigureDogfeeding(services); FakeOutMinimalServices(services); services.AddSingleton(fakeMediator); } }); var dogfeedService = environment.ServiceProvider.GetRequiredService <IDogfeedService>(); //Act await dogfeedService.DogfeedAsync(); //Assert await fakeMediator .Received() .Send(Arg.Is <AssignStaticIpToInstanceCommand>( arg => arg.InstanceName == "new-instance" && arg.StaticIpName == "main-ip")); }
public void ConfigureServices(IServiceCollection services) { IocRegistry.Register( services, Configuration); ConfigureNGrok(services); ConfigureAspNetCore(services); ConfigureSwagger(services); ConfigureAuthentication(services); }
public async Task Dogfeed_ExceptionThrownWhileAttachingNewInstanceToLoadBalancer_CleansUpNewInstance() { //Arrange var fakeMediator = Substitute.For <IMediator>(); FakeOutValidSupportedPlans(fakeMediator); FakeOutNewlyCreatedInstance(fakeMediator); fakeMediator .Send(Arg.Any <GetLoadBalancerByNameQuery>()) .Returns( new LoadBalancer() { InstanceHealthSummary = new List <InstanceHealthSummary>() { new InstanceHealthSummary() { InstanceName = "new-instance", InstanceHealth = InstanceHealthState.Healthy } } }); fakeMediator .Send(Arg.Any <AttachInstancesToLoadBalancerCommand>()) .Throws(new TestException()); await using var environment = await IntegrationTestEnvironment.CreateAsync(new EnvironmentSetupOptions () { IocConfiguration = services => { IocRegistry.ConfigureDogfeeding(services); FakeOutMinimalServices(services); services.AddSingleton(fakeMediator); } }); var dogfeedService = environment.ServiceProvider.GetRequiredService <IDogfeedService>(); //Act var exception = await Assert.ThrowsExceptionAsync <TestException>(async() => await dogfeedService.DogfeedAsync()); //Assert Assert.IsNotNull(exception); await fakeMediator .Received() .Send(Arg.Is <DeleteInstanceByNameCommand>( arg => arg.Name == "new-instance")); }
protected void Application_Start() { AreaRegistration.RegisterAllAreas(); FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters); RouteConfig.RegisterRoutes(RouteTable.Routes); BundleConfig.RegisterBundles(BundleTable.Bundles); var container = new IocContainer(); IocRegistry.Register(container); IDependencyResolver resolver = DependencyResolver.Current; DependencyResolver.SetResolver(new IocDependencyResolver(container, resolver)); }
public static void ConfigureServicesForTesting( IServiceCollection services) { RemoveTimedHostedServices(services); ConfigureAmazonLightsailDefaultFakes(services); ConfigureAmazonIdentityDefaultFakes(services); ConfigureFakeDelay(services); IocRegistry.ConfigureMediatr(services, typeof(Startup).Assembly, typeof(TestServiceProviderFactory).Assembly); services.AddScoped <Mediator>(); }
public static IHostBuilder CreateDoggerHostBuilder(IConfiguration?configuration, string[] args) => Host.CreateDefaultBuilder(args) .UseSerilog() .ConfigureWebHostDefaults(webBuilder => { if (configuration != null) { webBuilder.UseConfiguration(configuration); } webBuilder.UseStartup <Startup>(); webBuilder.UseNGrok(new NgrokOptions() { Disable = !Debugger.IsAttached, ShowNGrokWindow = false }); }) .ConfigureServices((context, services) => { IocRegistry.RegisterDelayedHostedServices(services); });
private static async Task DogfeedAsync(IConfiguration configuration) { var serviceCollection = new ServiceCollection(); serviceCollection.AddSingleton(configuration); IocRegistry.Register( serviceCollection, configuration); IocRegistry.ConfigureDogfeeding( serviceCollection); await using var serviceProvider = serviceCollection.BuildServiceProvider(); using var scope = serviceProvider.CreateScope(); var dogfeedService = scope .ServiceProvider .GetRequiredService <IDogfeedService>(); await dogfeedService.DogfeedAsync(); }
public static IContainer Initialize() { _container = new Container(c => c.AddRegistry <IocRegistry>()); IocRegistry.RegisterMappings(_container); return(_container); }
public async Task Dogfeed_NewInstanceHealthTimeoutExceeded_ThrowsException() { //Arrange var fakeMediator = Substitute.For <IMediator>(); FakeOutValidSupportedPlans(fakeMediator); FakeOutNewlyCreatedInstance(fakeMediator); fakeMediator .Send(Arg.Any <GetLoadBalancerByNameQuery>()) .Returns( new LoadBalancer() { InstanceHealthSummary = new List <InstanceHealthSummary>() { new InstanceHealthSummary() { InstanceName = "new-instance", InstanceHealth = InstanceHealthState.Healthy } } }); var fakeStopwatchWithHighElapsedTime = Substitute.For <IStopwatch>(); fakeStopwatchWithHighElapsedTime .Elapsed .Returns(TimeSpan.FromMinutes(31)); var fakeTime = Substitute.For <ITime>(); fakeTime .StartStopwatch() .Returns(fakeStopwatchWithHighElapsedTime); await using var environment = await IntegrationTestEnvironment.CreateAsync(new EnvironmentSetupOptions () { IocConfiguration = services => { IocRegistry.ConfigureDogfeeding(services); FakeOutMinimalServices(services); services.AddSingleton(fakeMediator); services.AddSingleton(fakeTime); } }); var dogfeedService = environment.ServiceProvider.GetRequiredService <IDogfeedService>(); //Act var exception = await Assert.ThrowsExceptionAsync <NewInstanceHealthTimeoutException>(async() => await dogfeedService.DogfeedAsync()); //Assert Assert.IsNotNull(exception); await fakeMediator .Received() .Send(Arg.Is <DeleteInstanceByNameCommand>( arg => arg.Name == "new-instance")); }