示例#1
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);

            Assert.Single(span.References);
            Assert.Equal(BuildReference(parent.Context, References.ChildOf), span.References[0]);
        }
示例#2
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);
        }
示例#3
0
        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]);
        }
示例#4
0
        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]);
        }
示例#5
0
        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);
        }
示例#7
0
        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);
        }