public void ContextFactoryNull() { var config = new AspNetCoreCorrelationConfiguration() .WithContextFactory(null); Assert.Throws <ArgumentNullException>(() => ContextTracingInstrumentation.Enable(config)); }
public void DefaultConfiguration() { var config = new AspNetCoreCorrelationConfiguration(); Assert.NotNull(config.ContextFactory); Assert.NotNull(config.ContextInjectors); Assert.True(config.InstrumentOutgoingRequests); Assert.True(config.ContextInjectors.First() is CorrelationContextInjector); }
public void IConfigurationValidEndpointFilter() { var configObj = new { EndpointFilter = new { Allow = true, Endpoints = new [] { "1.com", "2.com" } } }; using (var configFile = new TemporaryFile()) { configFile.Write(JsonConvert.SerializeObject(configObj)); var config = new AspNetCoreCorrelationConfiguration(build(configFile.FilePath)); Assert.False(config.EndpointFilter.Validate(new Uri("http://3.com"))); Assert.True(config.EndpointFilter.Validate(new Uri("http://2.com"))); } }
public void IConfigurationValidHeaders() { var configObj = new { Headers = new { CorrelationIdHeaderName = "correlation", RequestIdHeaderName = "request" } }; using (var configFile = new TemporaryFile()) { configFile.Write(JsonConvert.SerializeObject(configObj)); var config = new AspNetCoreCorrelationConfiguration(build(configFile.FilePath)); Assert.True(config.InstrumentOutgoingRequests); Assert.Equal("correlation", CorrelationHeaderInfo.CorrelationIdHeaderName); Assert.Equal("request", CorrelationHeaderInfo.RequestIdHeaderName); } }
// This method gets called by the runtime. Use this method to configure the HTTP request pipeline. public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory, IApplicationLifetime applicationLifetime) { loggerFactory.AddDebug(); var config = new AspNetCoreCorrelationConfiguration(Configuration.GetSection("Correlation")) { RequestNotifier = new OutgoingRequestNotifier() }; var instrumentation = ContextTracingInstrumentation.Enable(config); applicationLifetime.ApplicationStopped.Register(() => instrumentation?.Dispose()); app.UseMiddleware <IncomingRequestMiddleware>(); app.UseMvc(); }
public void IConfigurationOutRequests() { var configObj = new { InstrumentOutgoingRequests = false }; using (var configFile = new TemporaryFile()) { configFile.Write(JsonConvert.SerializeObject(configObj)); var config = new AspNetCoreCorrelationConfiguration(build(configFile.FilePath)); Assert.NotNull(config.ContextFactory); Assert.NotNull(config.ContextInjectors); Assert.NotNull(config.EndpointFilter); Assert.False(config.InstrumentOutgoingRequests); Assert.True(config.ContextInjectors.First() is CorrelationContextInjector); } }
public async Task SuccessFlowNotifier() { var notifier = new RequestNotifier(); var config = new AspNetCoreCorrelationConfiguration().WithOutgoingRequestNotifier(notifier); ContextTracingInstrumentation.Enable(config); var correlationId = Guid.NewGuid().ToString(); ContextResolver.SetRequestContext(new CorrelationContext(correlationId)); var client = new HttpClient(); await client.GetAsync("http://google.com"); Assert.True(notifier.BeforeWasCalled); Assert.True(notifier.AfterWasCalled); }
// This method gets called by the runtime. Use this method to configure the HTTP request pipeline public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory, IApplicationLifetime applicationLifetime) { loggerFactory.AddConsole(Configuration.GetSection("Logging")); loggerFactory.AddDebug(); var config = new AspNetCoreCorrelationConfiguration { RequestNotifier = new OutgoingRequestNotifier() }; var instrumentation = ContextTracingInstrumentation.Enable(config); applicationLifetime.ApplicationStopped.Register(() => { instrumentation?.Dispose(); }); app.UseApplicationInsightsRequestTelemetry(); app.UseApplicationInsightsExceptionTelemetry(); app.UseMvc(); }
public async Task SuccessFlowCustomInjector() { var injector = new InjectorMock(); var config = new AspNetCoreCorrelationConfiguration() .WithContextInjectors(new[] { injector }); ContextTracingInstrumentation.Enable(config); var correlationId = Guid.NewGuid().ToString(); ContextResolver.SetRequestContext(new CorrelationContext(correlationId)); var client = new HttpClient(); await client.GetAsync("http://bing.com"); Assert.True(injector.WasCalled); }
public async Task SuccessFlowCustomInjectorBlockedEndpoint() { var injector = new InjectorMock(); var validator = new EndpointValidator(); validator.AddEndpoint("google.com"); var config = new AspNetCoreCorrelationConfiguration() .WithEndpointValidator(validator); ContextTracingInstrumentation.Enable(config); var correlationId = Guid.NewGuid().ToString(); ContextResolver.SetRequestContext(new CorrelationContext(correlationId)); var client = new HttpClient(); await client.GetAsync("http://google.com"); Assert.False(injector.WasCalled); }
// This method gets called by the runtime. Use this method to configure the HTTP request pipeline public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory, IApplicationLifetime applicationLifetime) { loggerFactory.WithFilter(new FilterLoggerSettings { // {"Microsoft", LogLevel.Warning}, // {"System", LogLevel.Warning} }) .AddDebug() .AddElasicSearch(); var configuration = new AspNetCoreCorrelationConfiguration(Configuration.GetSection("Correlation")) { RequestNotifier = new OutgoingRequestNotifier(loggerFactory.CreateLogger <OutgoingRequestNotifier>()) }; var instrumentation = ContextTracingInstrumentation.Enable(configuration); var incomingRequestsHandler = registerIncomingRequestHandler(loggerFactory); applicationLifetime.ApplicationStopped.Register(() => { instrumentation?.Dispose(); incomingRequestsHandler?.Dispose(); }); app.UseMvc(); }