public async Task StartClientTrace_IsNotSampled_ReturnNullSpan() { 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(null, string.Empty, false, false, null, null, string.Empty)); var zipkinClient = new ZipkinClient(zipkinConfig, traceInfoAccessor, spanTracer, logger); Assert.IsNull(await zipkinClient.StartClientTrace(null, null)); Assert.IsNull(await zipkinClient.StartClientTrace(new Uri("http://localhost"), null)); Assert.IsNull(await zipkinClient.StartClientTrace(new Uri("http://localhost"), "POST")); }
public void StartClientTrace_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> >(); traceInfoAccessor.TraceInfo.Returns(ci => new TraceInfo("traceId", string.Empty, true, false, null, null, string.Empty)); spanTracer.WhenForAnyArgs(x => x.SendClientSpan(null, null, null)).Throw <Exception>(); var zipkinClient = new ZipkinClient(zipkinConfig, traceInfoAccessor, spanTracer, logger); Assert.DoesNotThrowAsync(() => zipkinClient.StartClientTrace(new Uri("http://localhost"), "POST")); }
public async Task StartClientTrace_WithTraceOn_ReceiveSpan() { var traceInfo = new TraceInfo("traceId", string.Empty, true, false, new Uri("http://localhost"), null); var span = new Span("span", traceInfo); 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, true, false, null, null, string.Empty)); spanTracer.SendClientSpan(null, null, null).ReturnsForAnyArgs(span); var zipkinClient = new ZipkinClient(zipkinConfig, traceInfoAccessor, spanTracer, logger); Assert.AreSame(await zipkinClient.StartClientTrace(new Uri("http://localhost"), "POST"), span); }