public void PropagatorStackShouldInjectExtractAllPropagators()
        {
            var ps             = new PropagatorStack(BuiltinFormats.TextMap);
            var httpPropagator = new HttpHeadersPropagator();
            var b3Propagator   = new B3Propagator();
            var textPropagator = new TextMapPropagator();

            ps.AddPropagator(httpPropagator);
            ps.AddPropagator(b3Propagator);
            ps.AddPropagator(textPropagator);

            var carrier = new Dictionary <string, string>();
            var context = new SpanContext(0, 0);

            ps.Inject(context, BuiltinFormats.TextMap, new TextMapInjectAdapter(carrier));

            var propagators = new List <IPropagator> {
                httpPropagator, b3Propagator, textPropagator
            };

            foreach (var t in propagators)
            {
                var extractedContext =
                    t.Extract(BuiltinFormats.TextMap, new TextMapExtractAdapter(carrier));
                Assert.NotNull(extractedContext);
                Assert.Equal(context.TraceId, extractedContext.TraceId);
                Assert.Equal(context.SpanId, extractedContext.SpanId);
            }
        }
        public void HttpHeaderPropagatorIsCaseInsensitive(CasingType casingType)
        {
            UInt64 spanId  = 4952807665017200957;
            UInt64 traceId = 14848807816610383171;

            var headers = new Dictionary <string, string>
            {
                { ToCase("Ot-Tracer-Spanid", casingType), spanId.ToString("X") },
                { ToCase("Ot-Tracer-Traceid", casingType), traceId.ToString("X") },
            };

            var httpPropagator   = new HttpHeadersPropagator();
            var extractedContext =
                httpPropagator.Extract(BuiltinFormats.HttpHeaders,
                                       new TextMapExtractAdapter(headers));

            Assert.NotNull(extractedContext);
            Assert.Equal(spanId.ToString("x"), extractedContext.SpanId);
            Assert.Equal(traceId.ToString("x"), extractedContext.TraceId);
        }