Beispiel #1
0
        public void BuildJeagerThriftSpan()
        {
            var doubleField = new Field <double> {
                Key = "doubleField", Value = 1.1
            };
            var decimalField = new Field <decimal> {
                Key = "decimalField", Value = 5.5m
            };
            var int64Field = new Field <Int64> {
                Key = "int64Field", Value = 1942
            };
            var stringField = new Field <string> {
                Key = "stringField", Value = "stringValue"
            };
            var tracerTags = new Dictionary <string, Field>
            {
                { "doubleTag", doubleField },
                { "int64Tag", int64Field },
                { "stringTag", stringField }
            };
            var logTimestamp = DateTimeOffset.Parse("2/16/18 11:33:29 AM +00:00");
            var logFields1   = new List <Field> {
                doubleField
            };
            var logFields2 = new List <Field> {
                decimalField
            };
            var logs = new List <LogRecord>
            {
                new LogRecord(logTimestamp, logFields1),
                new LogRecord(logTimestamp, logFields2)
            };

            var serialization = new JaegerThriftSerialization();
            var span          = Substitute.For <ILetsTraceSpan>();
            var traceId       = new TraceId(10, 2);
            var spanId        = new SpanId(15);
            var parentId      = new SpanId(82);
            var context       = new SpanContext(traceId, spanId, parentId);

            span.Context.Returns(context);
            var op = "op, yo";

            span.OperationName.Returns(op);
            span.Tags.Returns(tracerTags);
            span.Logs.Returns(logs);
            var startTimestamp  = DateTimeOffset.Parse("2/16/18 11:33:28 AM +00:00");
            var finishTimestamp = DateTimeOffset.Parse("2/16/18 11:33:30 AM +00:00");

            span.StartTimestamp.Returns(startTimestamp);
            span.FinishTimestamp.Returns(finishTimestamp);

            var parentRefType = References.ChildOf;
            var parentContext = Substitute.For <ILetsTraceSpanContext>();

            parentContext.TraceId.Returns(traceId);
            parentContext.SpanId.Returns(parentId);
            var reference = new Reference(parentRefType, context);

            span.References.Returns(new List <Reference> {
                reference
            });

            var jSpan = serialization.BuildJaegerThriftSpan(span);

            Assert.Equal((long)traceId.Low, jSpan.TraceIdLow);
            Assert.Equal((long)traceId.High, jSpan.TraceIdHigh);
            Assert.Equal(spanId, jSpan.SpanId);
            Assert.Equal(parentId, jSpan.ParentSpanId);
            Assert.Equal(op, jSpan.OperationName);
            Assert.Equal(0, jSpan.Flags);
            Assert.Equal(1518780808000000, jSpan.StartTime);
            Assert.Equal(2000000, jSpan.Duration);

            // tags
            Assert.Equal(3, jSpan.Tags.Count);
            Assert.Equal("doubleTag", jSpan.Tags[0].Key);
            Assert.Equal(doubleField.Value, jSpan.Tags[0].VDouble);
            Assert.Equal("int64Tag", jSpan.Tags[1].Key);
            Assert.Equal(int64Field.Value, jSpan.Tags[1].VLong);
            Assert.Equal("stringTag", jSpan.Tags[2].Key);
            Assert.Equal(stringField.Value, jSpan.Tags[2].VStr);

            // logs
            Assert.Equal(JaegerTagType.DOUBLE, jSpan.Logs[0].Fields[0].VType);
            Assert.Equal(doubleField.Key, jSpan.Logs[0].Fields[0].Key);
            Assert.Equal(doubleField.Value, jSpan.Logs[0].Fields[0].VDouble);

            Assert.Equal(JaegerTagType.DOUBLE, jSpan.Logs[1].Fields[0].VType);
            Assert.Equal(decimalField.Key, jSpan.Logs[1].Fields[0].Key);
            Assert.Equal((double)decimalField.Value, jSpan.Logs[1].Fields[0].VDouble);

            // references
            Assert.Single(jSpan.References);
            Assert.Equal(JaegerReferenceType.CHILD_OF, jSpan.References[0].RefType);
            Assert.Equal((long)traceId.Low, jSpan.References[0].TraceIdLow);
            Assert.Equal((long)traceId.High, jSpan.References[0].TraceIdHigh);
            Assert.Equal(spanId, jSpan.References[0].SpanId);
        }
Beispiel #2
0
        public void BuildJeagerThriftSpan()
        {
            var doubleTagKey  = "doubleTag";
            var doubleLogKey  = "doubleLog";
            var decimalLogKey = "decimalLog";
            var int64TagKey   = "int64Tag";
            var stringTagKey  = "stringTag";
            var tracerTags    = new Dictionary <string, object>
            {
                { doubleTagKey, 1.1 },
                { int64TagKey, (Int64)1942 },
                { stringTagKey, "stringValue" }
            };
            var logTimestamp = new DateTime(2018, 2, 16, 11, 33, 29, DateTimeKind.Utc);
            var logFields1   = new Dictionary <string, object>
            {
                { doubleLogKey, 1.3 }
            };
            var logFields2 = new Dictionary <string, object>
            {
                { decimalLogKey, 5.5m }
            };
            var logs = new List <LogRecord>
            {
                new LogRecord(logTimestamp, logFields1),
                new LogRecord(logTimestamp, logFields2)
            };

            var serialization = new JaegerThriftSerialization();
            var span          = Substitute.For <IJaegerCoreSpan>();
            var traceId       = new TraceId(10, 2);
            var spanId        = new SpanId(15);
            var parentId      = new SpanId(82);
            var context       = new SpanContext(traceId, spanId, parentId);

            span.Context.Returns(context);
            var op = "op, yo";

            span.OperationName.Returns(op);
            span.Tags.Returns(tracerTags);
            span.Logs.Returns(logs);
            var startTimestamp  = new DateTime(2018, 2, 16, 11, 33, 28, DateTimeKind.Utc);
            var finishTimestamp = new DateTime(2018, 2, 16, 11, 33, 30, DateTimeKind.Utc);

            span.StartTimestampUtc.Returns(startTimestamp);
            span.FinishTimestampUtc.Returns(finishTimestamp);

            var parentRefType = References.ChildOf;
            var parentContext = Substitute.For <IJaegerCoreSpanContext>();

            parentContext.TraceId.Returns(traceId);
            parentContext.SpanId.Returns(parentId);
            var reference = new Reference(parentRefType, context);

            span.References.Returns(new List <Reference> {
                reference
            });

            var jSpan = serialization.BuildJaegerThriftSpan(span);

            Assert.Equal((long)traceId.Low, jSpan.TraceIdLow);
            Assert.Equal((long)traceId.High, jSpan.TraceIdHigh);
            Assert.Equal(spanId, jSpan.SpanId);
            Assert.Equal(parentId, jSpan.ParentSpanId);
            Assert.Equal(op, jSpan.OperationName);
            Assert.Equal(0, jSpan.Flags);
            Assert.Equal(1518780808000000, jSpan.StartTime);
            Assert.Equal(2000000, jSpan.Duration);

            // tags
            Assert.Equal(3, jSpan.Tags.Count);
            Assert.Equal(doubleTagKey, jSpan.Tags[0].Key);
            Assert.Equal(1.1, jSpan.Tags[0].VDouble);
            Assert.Equal(int64TagKey, jSpan.Tags[1].Key);
            Assert.Equal(1942, jSpan.Tags[1].VLong);
            Assert.Equal(stringTagKey, jSpan.Tags[2].Key);
            Assert.Equal("stringValue", jSpan.Tags[2].VStr);

            // logs
            Assert.Equal(JaegerTagType.DOUBLE, jSpan.Logs[0].Fields[0].VType);
            Assert.Equal(doubleLogKey, jSpan.Logs[0].Fields[0].Key);
            Assert.Equal(1.3, jSpan.Logs[0].Fields[0].VDouble);

            Assert.Equal(JaegerTagType.DOUBLE, jSpan.Logs[1].Fields[0].VType);
            Assert.Equal(decimalLogKey, jSpan.Logs[1].Fields[0].Key);
            Assert.Equal((double)5.5m, jSpan.Logs[1].Fields[0].VDouble);

            // references
            Assert.Single(jSpan.References);
            Assert.Equal(JaegerReferenceType.CHILD_OF, jSpan.References[0].RefType);
            Assert.Equal((long)traceId.Low, jSpan.References[0].TraceIdLow);
            Assert.Equal((long)traceId.High, jSpan.References[0].TraceIdHigh);
            Assert.Equal(spanId, jSpan.References[0].SpanId);
        }