public void TestConvertSpanOneReferenceChildOf() { Span parent = (Span)_tracer.BuildSpan("foo").Start(); Span child = (Span)_tracer.BuildSpan("foo") .AsChildOf(parent) .Start(); GrpcSpan span = JaegerGrpcSpanConverter.ConvertSpan(child); Assert.Single(span.References); Assert.Equal(BuildReference(parent.Context, References.ChildOf), span.References[0]); }
public void TestConvertSpanOneReferenceChildOf() { Span parent = (Span)_tracer.BuildSpan("foo").Start(); Span child = (Span)_tracer.BuildSpan("foo") .AsChildOf(parent) .Start(); GrpcSpan span = JaegerGrpcSpanConverter.ConvertSpan(child); // TODO: Check ParentSpanID //Assert.Equal((long)child.Context.ParentId, span.ParentSpanId); Assert.Empty(span.References); }
public void TestConvertSpanMixedReferences() { Span parent = (Span)_tracer.BuildSpan("foo").Start(); Span parent2 = (Span)_tracer.BuildSpan("foo").Start(); Span child = (Span)_tracer.BuildSpan("foo") .AddReference(References.FollowsFrom, parent.Context) .AsChildOf(parent2) .Start(); GrpcSpan span = JaegerGrpcSpanConverter.ConvertSpan(child); Assert.Equal(2, span.References.Count); Assert.Equal(BuildReference(parent.Context, References.FollowsFrom), span.References[0]); Assert.Equal(BuildReference(parent2.Context, References.ChildOf), span.References[1]); }
public void TestConvertSpanTwoReferencesChildOf() { Span parent = (Span)_tracer.BuildSpan("foo").Start(); Span parent2 = (Span)_tracer.BuildSpan("foo").Start(); Span child = (Span)_tracer.BuildSpan("foo") .AsChildOf(parent) .AsChildOf(parent2) .Start(); GrpcSpan span = JaegerGrpcSpanConverter.ConvertSpan(child); // TODO: Check ParentSpanID //Assert.Equal(0, span.ParentSpanId); Assert.Equal(2, span.References.Count); Assert.Equal(BuildReference(parent.Context, References.ChildOf), span.References[0]); Assert.Equal(BuildReference(parent2.Context, References.ChildOf), span.References[1]); }
public void TestConvertSpan() { var logTimestamp = new DateTimeOffset(2018, 4, 13, 10, 30, 0, TimeSpan.Zero); var fields = new Dictionary <string, object> { { "k", "v" } }; Span span = (Span)_tracer.BuildSpan("operation-name").Start(); span.Log(logTimestamp, fields); span.SetBaggageItem("foo", "bar"); GrpcSpan grpcSpan = JaegerGrpcSpanConverter.ConvertSpan(span); Assert.Equal("operation-name", grpcSpan.OperationName); Assert.Equal(2, grpcSpan.Logs.Count); GrpcLog grpcLog = grpcSpan.Logs[0]; Assert.Equal(logTimestamp, grpcLog.Timestamp.ToDateTimeOffset()); Assert.Single(grpcLog.Fields); GrpcTag grpcTag = grpcLog.Fields[0]; Assert.Equal("k", grpcTag.Key); Assert.Equal("v", grpcTag.VStr); // NOTE: In Java, the order is different (event, value, key) because the HashMap algorithm is different. grpcLog = grpcSpan.Logs[1]; Assert.Equal(3, grpcLog.Fields.Count); grpcTag = grpcLog.Fields[0]; Assert.Equal("event", grpcTag.Key); Assert.Equal("baggage", grpcTag.VStr); grpcTag = grpcLog.Fields[1]; Assert.Equal("key", grpcTag.Key); Assert.Equal("foo", grpcTag.VStr); grpcTag = grpcLog.Fields[2]; Assert.Equal("value", grpcTag.Key); Assert.Equal("bar", grpcTag.VStr); }
public static GrpcSpan ConvertSpan(Span span) { var context = span.Context; var startTime = span.StartTimestampUtc; var duration = (span.FinishTimestampUtc ?? startTime) - startTime; var references = span.GetReferences(); var grpcSpan = new GrpcSpan { TraceId = ByteString.CopyFrom(context.TraceId.ToByteArray()), SpanId = ByteString.CopyFrom(context.SpanId.ToByteArray()), OperationName = span.OperationName, Flags = (uint)context.Flags, StartTime = Timestamp.FromDateTime(startTime), Duration = Duration.FromTimeSpan(duration), References = { BuildReferences(references) }, Tags = { BuildTags(span.GetTags()) }, Logs = { BuildLogs(span.GetLogs()) } }; return(grpcSpan); }
public static GrpcSpan ConvertSpan(Span span) { var context = span.Context; var startTime = span.StartTimestampUtc; var duration = (span.FinishTimestampUtc ?? startTime) - startTime; var references = span.GetReferences(); var oneChildOfParent = references.Count == 1 && string.Equals(References.ChildOf, references[0].Type, StringComparison.Ordinal); var grpcSpan = new GrpcSpan { TraceId = ByteString.CopyFrom(context.TraceId.ToByteArray()), SpanId = ByteString.CopyFrom(context.SpanId.ToByteArray()), OperationName = span.OperationName, Flags = (uint)context.Flags, StartTime = Timestamp.FromDateTime(startTime), Duration = Duration.FromTimeSpan(duration), References = { oneChildOfParent ? new List <GrpcReference>() : BuildReferences(references) }, Tags = { BuildTags(span.GetTags()) }, Logs = { BuildLogs(span.GetLogs()) } }; return(grpcSpan); }