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); }
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); }
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); }
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)); }