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); }
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"]); }
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); }