Esempio n. 1
0
        public async Task Invoke_Trace()
        {
            var accessor = new HttpContextAccessor {
                HttpContext = new DefaultHttpContext()
            };
            var context    = CreateHttpContext();
            var tracerMock = CreateIManagedTracerMock(context);

            var delegateMock = new Mock <RequestDelegate>();

            delegateMock.Setup(d => d(context)).Returns(Task.CompletedTask);

            Func <TraceHeaderContext, IManagedTracer> fakeFactory = f => tracerMock.Object;

            Assert.Equal(NullManagedTracer.Instance, ContextTracerManager.GetCurrentTracer(accessor));

            var middleware = new CloudTraceMiddleware(delegateMock.Object, fakeFactory, accessor);
            await middleware.Invoke(context, _traceHeaderContext);

            Assert.Equal(tracerMock.Object, ContextTracerManager.GetCurrentTracer(accessor));

            Assert.True(context.Response.Headers.ContainsKey(TraceHeaderContext.TraceHeader));
            Assert.Equal(_traceHeaderContext.ToString(), context.Response.Headers[TraceHeaderContext.TraceHeader]);

            delegateMock.VerifyAll();
            tracerMock.VerifyAll();
        }
Esempio n. 2
0
        public async Task Invoke_Trace()
        {
            var context    = CreateHttpContext();
            var tracerMock = CreateIManagedTracerMock(context);

            var delegateMock = new Mock <RequestDelegate>();

            delegateMock.Setup(d => d(context)).Returns(Task.CompletedTask);

            Func <TraceHeaderContext, IManagedTracer> fakeFactory = f => tracerMock.Object;

            Assert.Equal(NullManagedTracer.Instance, ContextTracerManager.GetCurrentTracer());

            var middleware = new CloudTraceMiddleware(delegateMock.Object, fakeFactory, new DefaultCloudTraceNameProvider());
            await middleware.Invoke(context, _traceHeaderContext);

            // Since the current tracer is AsyncLocal<>, it will be back to the default after awaiting the middleware invoke
            Assert.Equal(NullManagedTracer.Instance, ContextTracerManager.GetCurrentTracer());

            Assert.True(context.Response.Headers.ContainsKey(TraceHeaderContext.TraceHeader));
            Assert.Equal(_traceHeaderContext.ToString(), context.Response.Headers[TraceHeaderContext.TraceHeader]);

            delegateMock.VerifyAll();
            tracerMock.VerifyAll();
        }