コード例 #1
0
        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}]"));
        }
コード例 #2
0
        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);
        }