public void RoundTripRootSpanTest()
        {
            var parentSpanContext = new Mock <ISpanContext>();
            var traceContext      = new Mock <ITraceContext>();
            var spanContext       = new SpanContext(parentSpanContext.Object, traceContext.Object, serviceName: null);

            var span = new Span(spanContext, start: null);

            span.ServiceName = "ServiceName";
            span.SetTag("k0", "v0");
            span.SetTag("k1", "v1");
            span.SetTag("k2", "v2");

            var tracerSettings = new TracerSettings();
            var serializerSpan = new ZipkinSerializer.ZipkinSpan(span, tracerSettings);

            var serializer = new ZipkinSerializer();

            using var ms = new MemoryStream();

            serializer.Serialize(ms, new[] { new[] { span } }, tracerSettings);

            ms.Position = 0;
            var jsonText     = new StreamReader(ms).ReadToEnd();
            var actualTraces = JsonConvert.DeserializeObject <List <TestZipkinSpan> >(jsonText);

            Assert.Single(actualTraces);

            var actualSpan = actualTraces[0];

            actualSpan.AssertZipkinSerializerSpan(serializerSpan);
        }
コード例 #2
0
        public void AnnotationTruncation(string original, string expected)
        {
            var traceContext = new TraceContext(Tracer.Instance);
            var spanContext  = new SpanContext(null, traceContext, $"{nameof(AnnotationTruncation)}");
            var span         = new Span(spanContext, start: null);

            span.Log(original);

            var settings = new TracerSettings
            {
                RecordedValueMaxLength = expected.Length,
            };
            var zipkinSpan  = new ZipkinSerializer.ZipkinSpan(span, settings);
            var annotations = zipkinSpan.Annotations;

            Assert.Single(annotations);
            Assert.Equal($"{{\"event\":\"{expected}\"}}", annotations.First()["value"]);
        }
コード例 #3
0
        public void TagTruncation(string original, string expected)
        {
            var traceContext = new TraceContext(Tracer.Instance);
            var spanContext  = new SpanContext(null, traceContext, $"{nameof(TagTruncation)}");
            var span         = new Span(spanContext, start: null);

            span.SetTag("test", original);

            var settings = new TracerSettings
            {
                RecordedValueMaxLength = expected.Length,
            };
            var zipkinSpan = new ZipkinSerializer.ZipkinSpan(span, settings);
            var tags       = zipkinSpan.Tags;

            Assert.Single(tags);
            Assert.Equal(expected, tags.First().Value);
        }
 internal void AssertZipkinSerializerSpan(ZipkinSerializer.ZipkinSpan span)
 {
     Assert.Equal(Id, span.Id);
     Assert.Equal(TraceId, span.TraceId);
     Assert.Equal(ParentId, span.ParentId);
     Assert.Equal(Name, span.Name);
     Assert.Equal(Timestamp, span.Timestamp);
     Assert.Equal(Duration, span.Duration);
     Assert.Equal(Kind, span.Kind);
     Assert.Equal(LocalEndpoint.Count, span.LocalEndpoint.Count);
     Assert.Contains(
         LocalEndpoint,
         kvp => span.LocalEndpoint.TryGetValue(kvp.Key, out var value) && kvp.Value == value);
     Assert.Equal(Tags.Count, span.Tags.Count);
     Assert.Contains(
         Tags,
         kvp => span.Tags.TryGetValue(kvp.Key, out var value) && kvp.Value == value);
 }
        public void RoundTripRootSpanTest()
        {
            var span       = SpanFactory.CreateSpan();
            var zipkinSpan = new ZipkinSerializer.ZipkinSpan(span);

            var serializer = new ZipkinSerializer();

            using var ms = new MemoryStream();

            serializer.Serialize(ms, new[] { new[] { span } });

            ms.Position = 0;
            var jsonText     = new StreamReader(ms).ReadToEnd();
            var actualTraces = JsonConvert.DeserializeObject <List <TestZipkinSpan> >(jsonText);

            Assert.Single(actualTraces);

            var actualSpan = actualTraces[0];

            actualSpan.AssertZipkinSerializerSpan(zipkinSpan);
        }