public Property ShouldExtractAndInjectSpansViaB3(long traceIdHigh, long traceIdLow, long spanId, long?parentId, bool debug) { var traceId = new TraceId(traceIdHigh, traceIdLow); var context = new SpanContext(traceId, spanId.ToString("x16"), parentId?.ToString("x16"), debug); var carrier = new Dictionary <string, string>(); Tracer.Inject(context, BuiltinFormats.HttpHeaders, new TextMapInjectAdapter(carrier)); var extracted = (SpanContext)Tracer.Extract(BuiltinFormats.HttpHeaders, new TextMapExtractAdapter(carrier)); return((context == extracted).Label($"Expected [{context}] to be equal to [{extracted}]")); }
public void B3HeaderInjectionShouldHandleSingleHeaderFormat() { var traceId = Tracer.IdProvider.NextTraceId(); var context = new SpanContext(traceId, Tracer.IdProvider.NextSpanId(), Tracer.IdProvider.NextSpanId(), false, true); var carrier = new Dictionary <string, string>(); // tracer2 will inject with single headers var tracer2 = new MockZipkinTracer(propagtor: new B3Propagator(true)); tracer2.Inject(context, BuiltinFormats.HttpHeaders, new TextMapInjectAdapter(carrier)); // single header only carrier.Count.Should().Be(1); // tracer1 will still be able to read and extract single headers var extracted = Tracer.Extract(BuiltinFormats.HttpHeaders, new TextMapExtractAdapter(carrier)); extracted.Should().Be(context); }