Exemplo n.º 1
0
        public void EndServerTrace_WithTraceOn_CallSpanTracer()
        {
            var zipkinConfig      = new ZipkinConfig(new Uri("http://localhost"));
            var traceInfoAccessor = Substitute.For <ITraceInfoAccessor>();
            var spanTracer        = Substitute.For <ISpanTracer>();
            var logger            = Substitute.For <ILogger <ZipkinClient> >();

            var traceInfo = new TraceInfo("traceId", string.Empty, true, false, null, null, string.Empty);

            traceInfoAccessor.TraceInfo.Returns(ci => traceInfo);

            var zipkinClient = new ZipkinClient(zipkinConfig, traceInfoAccessor, spanTracer, logger);

            zipkinClient.EndServerTrace(null, 200);
            zipkinClient.EndServerTrace(new Span("span", traceInfo), 200);

            spanTracer.ReceivedWithAnyArgs(1).SendServerSpan(null, 200);
        }
Exemplo n.º 2
0
        private void Application_EndRequest(Object source, EventArgs e)
        {
            HttpApplication application = (HttpApplication)source;
            HttpContext     context     = application.Context;
            var             spanData    = context.Items["span"];

            if (spanData != null)
            {
                var span = spanData as Span;
                _client.EndServerTrace(span);
                context.Items.Remove("span");
            }
        }
        public override async Task Invoke(IOwinContext context)
        {
            if (_config.Bypass != null && _config.Bypass(context.Request))
            {
                await Next.Invoke(context);

                return;
            }

            var zipkin = new ZipkinClient(_config, context);
            var span   = zipkin.StartServerTrace(context.Request.Uri, context.Request.Method);
            await Next.Invoke(context);

            zipkin.EndServerTrace(span);
        }
Exemplo n.º 4
0
        public void EndServerTrace_ForNullSpan_NotCallSendServerSpan()
        {
            var zipkinConfig      = new ZipkinConfig(new Uri("http://localhost"));
            var traceInfoAccessor = Substitute.For <ITraceInfoAccessor>();
            var spanTracer        = Substitute.For <ISpanTracer>();
            var logger            = Substitute.For <ILogger <ZipkinClient> >();

            traceInfoAccessor.TraceInfo.Returns(ci => new TraceInfo("traceId", string.Empty, false, false, null, null, string.Empty));

            var zipkinClient = new ZipkinClient(zipkinConfig, traceInfoAccessor, spanTracer, logger);

            zipkinClient.EndServerTrace(null, 200);

            spanTracer.DidNotReceiveWithAnyArgs().SendServerSpan(null, 200);
        }
Exemplo n.º 5
0
        public void EndServerTrace_WithSpanTracerException_DoesntThrow()
        {
            var zipkinConfig      = new ZipkinConfig(new Uri("http://localhost"));
            var traceInfoAccessor = Substitute.For <ITraceInfoAccessor>();
            var spanTracer        = Substitute.For <ISpanTracer>();
            var logger            = Substitute.For <ILogger <ZipkinClient> >();

            var traceInfo = new TraceInfo("traceId", string.Empty, true, false, null, null, string.Empty);

            traceInfoAccessor.TraceInfo.Returns(ci => traceInfo);

            spanTracer.WhenForAnyArgs(x => x.SendServerSpan(null, 0)).Throw <Exception>();

            var zipkinClient = new ZipkinClient(zipkinConfig, traceInfoAccessor, spanTracer, logger);

            Assert.DoesNotThrow(() => zipkinClient.EndServerTrace(new Span("span", traceInfo), 200));
        }