예제 #1
0
        public void TextMapPropagator_Extract_TraceContextHeaderMissing()
        {
            var headersConfig = new HeadersConfig("TraceContextHeaderName", "TraceBaggageHeaderPrefix");
            var propagator    = new TextMapPropagator(headersConfig, (val) => val, (val) => val);
            var carrier       = new DictionaryTextMap(new Dictionary <string, string> {
                { "TraceBaggageHeaderPrefix-Item1", "item1" },
                { "TraceBaggageHeaderPrefix-Item2", "item2" },
            });

            var sc = (SpanContext)propagator.Extract(carrier);

            Assert.Null(sc);
        }
예제 #2
0
        public void TextMapPropagator_Inject_SetsTheRightHeadersWithTheRightData()
        {
            var headersConfig = new HeadersConfig("TraceContextHeaderName", "TraceBaggageHeaderPrefix");
            var propagator    = new TextMapPropagator(headersConfig, (val) => val, (val) => val);
            var baggage       = new Dictionary <string, string> {
                { "key1", "value1" }, { "key2", "value2" }
            };
            var spanContext = Substitute.For <ILetsTraceSpanContext>();
            var carrier     = new DictionaryTextMap();

            spanContext.GetBaggageItems().Returns(baggage);

            propagator.Inject(spanContext, carrier);

            var carrierDict = carrier.ToDictionary(c => c.Key, c => c.Value);

            Assert.Equal(spanContext.GetType().FullName, carrierDict[headersConfig.TraceContextHeaderName]); // cannot mock ToString
            Assert.Equal(baggage["key1"], carrierDict[$"{headersConfig.TraceBaggageHeaderPrefix}-key1"]);
            Assert.Equal(baggage["key2"], carrierDict[$"{headersConfig.TraceBaggageHeaderPrefix}-key2"]);
        }
예제 #3
0
        public void TextMapPropagator_Extract_SetsTheRightHeadersWithTheRightData()
        {
            var headersConfig = new HeadersConfig("TraceContextHeaderName", "TraceBaggageHeaderPrefix");
            var propagator    = new TextMapPropagator(headersConfig, (val) => val, (val) => val);
            var carrier       = new DictionaryTextMap(new Dictionary <string, string> {
                { "TraceContextHeaderName", "1:2:3:4" },
                { "TraceBaggageHeaderPrefix-Item1", "item1" },
                { "TraceBaggageHeaderPrefix-Item2", "item2" },
            });

            var sc = (SpanContext)propagator.Extract(carrier);

            var baggage = sc.GetBaggageItems().ToDictionary(kv => kv.Key, kv => kv.Value);

            Assert.Equal("item1", baggage["Item1"]);
            Assert.Equal("item2", baggage["Item2"]);
            Assert.Equal("1", sc.TraceId.Low.ToString());
            Assert.Equal("2", sc.SpanId.ToString());
            Assert.Equal("3", sc.ParentId.ToString());
            Assert.Equal(4, (byte)sc.Flags);
        }