public async Task BeginEndTelemetryAvailable() { TelemetryListener telemetryListener = null; var server = TestServer.Create(app => { telemetryListener = app.ApplicationServices.GetRequiredService <TelemetryListener>(); app.Run(context => { return(context.Response.WriteAsync("Hello World")); }); }); var listener = new TestTelemetryListener(); telemetryListener.SubscribeWithAdapter(listener); var result = await server.CreateClient().GetStringAsync("/path"); Assert.Equal("Hello World", result); Assert.NotNull(listener.BeginRequest?.HttpContext); Assert.NotNull(listener.EndRequest?.HttpContext); Assert.Null(listener.UnhandledException); }
public async Task ExceptionTelemetryAvailable() { TelemetryListener telemetryListener = null; var server = TestServer.Create(app => { telemetryListener = app.ApplicationServices.GetRequiredService <TelemetryListener>(); app.Run(context => { throw new Exception("Test exception"); }); }); var listener = new TestTelemetryListener(); telemetryListener.SubscribeWithAdapter(listener); await Assert.ThrowsAsync <Exception>(() => server.CreateClient().GetAsync("/path")); Assert.NotNull(listener.BeginRequest?.HttpContext); Assert.Null(listener.EndRequest?.HttpContext); Assert.NotNull(listener.UnhandledException?.HttpContext); Assert.NotNull(listener.UnhandledException?.Exception); }
private RouteContext CreateRouteContext( ActionDescriptor actionDescriptor = null, IActionSelector actionSelector = null, IActionInvokerFactory invokerFactory = null, ILoggerFactory loggerFactory = null, IOptions <MvcOptions> optionsAccessor = null, object telemetryListener = null) { if (actionDescriptor == null) { var mockAction = new Mock <ActionDescriptor>(); actionDescriptor = mockAction.Object; } if (actionSelector == null) { var mockActionSelector = new Mock <IActionSelector>(); mockActionSelector.Setup(a => a.SelectAsync(It.IsAny <RouteContext>())) .Returns(Task.FromResult(actionDescriptor)); actionSelector = mockActionSelector.Object; } if (invokerFactory == null) { var mockInvoker = new Mock <IActionInvoker>(); mockInvoker.Setup(i => i.InvokeAsync()) .Returns(Task.FromResult(true)); var mockInvokerFactory = new Mock <IActionInvokerFactory>(); mockInvokerFactory.Setup(f => f.CreateInvoker(It.IsAny <ActionContext>())) .Returns(mockInvoker.Object); invokerFactory = mockInvokerFactory.Object; } if (loggerFactory == null) { loggerFactory = NullLoggerFactory.Instance; } if (optionsAccessor == null) { optionsAccessor = new TestOptionsManager <MvcOptions>(); } var telemetry = new TelemetryListener("Microsoft.AspNet"); if (telemetryListener != null) { telemetry.SubscribeWithAdapter(telemetryListener); } var httpContext = new Mock <HttpContext>(); httpContext.Setup(h => h.RequestServices.GetService(typeof(IActionContextAccessor))) .Returns(new ActionContextAccessor()); httpContext.Setup(h => h.RequestServices.GetService(typeof(IActionSelector))) .Returns(actionSelector); httpContext.Setup(h => h.RequestServices.GetService(typeof(IActionInvokerFactory))) .Returns(invokerFactory); httpContext.Setup(h => h.RequestServices.GetService(typeof(ILoggerFactory))) .Returns(loggerFactory); httpContext.Setup(h => h.RequestServices.GetService(typeof(MvcMarkerService))) .Returns(new MvcMarkerService()); httpContext.Setup(h => h.RequestServices.GetService(typeof(IOptions <MvcOptions>))) .Returns(optionsAccessor); httpContext.Setup(h => h.RequestServices.GetService(typeof(TelemetrySource))) .Returns(telemetry); return(new RouteContext(httpContext.Object)); }