Ejemplo n.º 1
0
        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);
        }
Ejemplo n.º 2
0
        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);
        }
Ejemplo n.º 3
0
        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));
        }