public void NoEventsRecordedAfterEnd() { ISpan span = Span.StartSpan( spanContext, recordSpanOptions, SPAN_NAME, SpanKind.Internal, parentSpanId, TraceParams.Default, startEndHandler, timestampConverter); span.End(); // Check that adding trace events after Span#End() does not throw any exception and are not // recorded. foreach (var attribute in attributes) { span.SetAttribute(attribute.Key, attribute.Value); } span.SetAttribute( "MySingleStringAttributeKey", AttributeValue.StringAttributeValue("MySingleStringAttributeValue")); span.AddEvent(Event.Create(EVENT_DESCRIPTION)); span.AddEvent(EVENT_DESCRIPTION, attributes); span.AddLink(Link.FromSpanContext(spanContext)); SpanData spanData = ((Span)span).ToSpanData(); Assert.Equal(timestamp, spanData.StartTimestamp); Assert.Empty(spanData.Attributes.AttributeMap); Assert.Empty(spanData.Events.Events); Assert.Empty(spanData.Links.Links); Assert.Equal(Status.Ok, spanData.Status); Assert.Equal(timestamp, spanData.EndTimestamp); }
public void ToSpanData_NoRecordEvents() { ISpan span = Span.StartSpan( spanContext, noRecordSpanOptions, SPAN_NAME, parentSpanId, false, TraceParams.DEFAULT, startEndHandler, timestampConverter, testClock); // Check that adding trace events after Span#End() does not throw any exception. span.PutAttributes(attributes); span.AddAnnotation(Annotation.FromDescription(ANNOTATION_DESCRIPTION)); span.AddAnnotation(ANNOTATION_DESCRIPTION, attributes); span.AddMessageEvent( MessageEvent.Builder(MessageEventType.RECEIVED, 1).SetUncompressedMessageSize(3).Build()); span.AddLink(Link.FromSpanContext(spanContext, LinkType.CHILD_LINKED_SPAN)); span.End(); //exception.expect(IllegalStateException); Assert.Throws <InvalidOperationException>(() => ((Span)span).ToSpanData()); }
private static void LinkSpans(ISpan span, List <ILink> parentLinks) { if (parentLinks != null) { foreach (var link in parentLinks) { span.AddLink(link); } } }
public void ToSpanData_ActiveSpan() { ISpan span = Span.StartSpan( spanContext, recordSpanOptions, SPAN_NAME, SpanKind.Internal, parentSpanId, TraceParams.Default, startEndHandler, timestampConverter); span.SetAttribute( "MySingleStringAttributeKey", AttributeValue.StringAttributeValue("MySingleStringAttributeValue")); foreach (var attribute in attributes) { span.SetAttribute(attribute.Key, attribute.Value); } interval = TimeSpan.FromMilliseconds(100); span.AddEvent(Event.Create(EVENT_DESCRIPTION)); interval = TimeSpan.FromMilliseconds(200); span.AddEvent(EVENT_DESCRIPTION, attributes); interval = TimeSpan.FromMilliseconds(300); interval = TimeSpan.FromMilliseconds(400); ILink link = Link.FromSpanContext(spanContext); span.AddLink(link); SpanData spanData = ((Span)span).ToSpanData(); Assert.Equal(spanContext, spanData.Context); Assert.Equal(SPAN_NAME, spanData.Name); Assert.Equal(parentSpanId, spanData.ParentSpanId); Assert.Equal(0, spanData.Attributes.DroppedAttributesCount); Assert.Equal(expectedAttributes, spanData.Attributes.AttributeMap); Assert.Equal(0, spanData.Events.DroppedEventsCount); Assert.Equal(2, spanData.Events.Events.Count()); Assert.Equal(timestamp.AddDuration(Duration.Create(TimeSpan.FromMilliseconds(100))), spanData.Events.Events.ToList()[0].Timestamp); Assert.Equal(Event.Create(EVENT_DESCRIPTION), spanData.Events.Events.ToList()[0].Event); Assert.Equal(timestamp.AddDuration(Duration.Create(TimeSpan.FromMilliseconds(200))), spanData.Events.Events.ToList()[1].Timestamp); Assert.Equal(Event.Create(EVENT_DESCRIPTION, attributes), spanData.Events.Events.ToList()[1].Event); Assert.Equal(0, spanData.Links.DroppedLinksCount); Assert.Single(spanData.Links.Links); Assert.Equal(link, spanData.Links.Links.First()); Assert.Equal(timestamp, spanData.StartTimestamp); Assert.Null(spanData.Status); Assert.Null(spanData.EndTimestamp); var startEndMock = Mock.Get <IStartEndHandler>(startEndHandler); var spanBase = span as SpanBase; startEndMock.Verify(s => s.OnStart(spanBase), Times.Once); }
public void GoSpanData_EndedSpan() { ISpan span = Span.StartSpan( spanContext, recordSpanOptions, SPAN_NAME, parentSpanId, false, TraceParams.Default, startEndHandler, timestampConverter); span.SetAttribute( "MySingleStringAttributeKey", AttributeValue.StringAttributeValue("MySingleStringAttributeValue")); span.SetAttributes(attributes); interval = TimeSpan.FromMilliseconds(100); span.AddEvent(Event.Create(EVENT_DESCRIPTION)); interval = TimeSpan.FromMilliseconds(200); span.AddEvent(EVENT_DESCRIPTION, attributes); interval = TimeSpan.FromMilliseconds(300); ILink link = Link.FromSpanContext(spanContext, LinkType.ChildLinkedSpan); span.AddLink(link); interval = TimeSpan.FromMilliseconds(400); span.End(EndSpanOptions.Builder().SetStatus(Status.Cancelled).Build()); ISpanData spanData = ((Span)span).ToSpanData(); Assert.Equal(spanContext, spanData.Context); Assert.Equal(SPAN_NAME, spanData.Name); Assert.Equal(parentSpanId, spanData.ParentSpanId); Assert.False(spanData.HasRemoteParent); Assert.Equal(0, spanData.Attributes.DroppedAttributesCount); Assert.Equal(expectedAttributes, spanData.Attributes.AttributeMap); Assert.Equal(0, spanData.Events.DroppedEventsCount); Assert.Equal(2, spanData.Events.Events.Count()); Assert.Equal(timestamp.AddDuration(Duration.Create(TimeSpan.FromMilliseconds(100))), spanData.Events.Events.ToList()[0].Timestamp); Assert.Equal(Event.Create(EVENT_DESCRIPTION), spanData.Events.Events.ToList()[0].Event); Assert.Equal(timestamp.AddDuration(Duration.Create(TimeSpan.FromMilliseconds(200))), spanData.Events.Events.ToList()[1].Timestamp); Assert.Equal(Event.Create(EVENT_DESCRIPTION, attributes), spanData.Events.Events.ToList()[1].Event); Assert.Equal(0, spanData.Links.DroppedLinksCount); Assert.Single(spanData.Links.Links); Assert.Equal(link, spanData.Links.Links.First()); Assert.Equal(timestamp, spanData.StartTimestamp); Assert.Equal(Status.Cancelled, spanData.Status); Assert.Equal(timestamp.AddDuration(Duration.Create(TimeSpan.FromMilliseconds(400))), spanData.EndTimestamp); var startEndMock = Mock.Get <IStartEndHandler>(startEndHandler); var spanBase = span as SpanBase; startEndMock.Verify(s => s.OnStart(spanBase), Times.Once); startEndMock.Verify(s => s.OnEnd(spanBase), Times.Once); }
private static void LinkSpans(ISpan span, IEnumerable <ISpan> parentLinks) { if (parentLinks.Any()) { ILink childLink = Link.FromSpanContext(span.Context, LinkType.ChildLinkedSpan); foreach (ISpan linkedSpan in parentLinks) { linkedSpan.AddLink(childLink); span.AddLink(Link.FromSpanContext(linkedSpan.Context, LinkType.ParentLinkedSpan)); } } }
private static void LinkSpans(ISpan span, IList <ISpan> parentLinks) { if (parentLinks.Count > 0) { ILink childLink = Link.FromSpanContext(span.Context, LinkType.CHILD_LINKED_SPAN); foreach (ISpan linkedSpan in parentLinks) { linkedSpan.AddLink(childLink); span.AddLink(Link.FromSpanContext(linkedSpan.Context, LinkType.PARENT_LINKED_SPAN)); } } }
private static void LinkSpans(ISpan span, IEnumerable <ISpan> parentLinks) { if (parentLinks.Any()) { var childLink = Link.FromSpanContext(span.Context); foreach (var linkedSpan in parentLinks) { linkedSpan.AddLink(childLink); span.AddLink(Link.FromSpanContext(linkedSpan.Context)); } } }
public void DroppingLinks() { int maxNumberOfLinks = 8; TraceParams traceParams = TraceParams.DEFAULT.ToBuilder().SetMaxNumberOfLinks(maxNumberOfLinks).Build(); ISpan span = Span.StartSpan( spanContext, recordSpanOptions, SPAN_NAME, parentSpanId, false, traceParams, startEndHandler, timestampConverter, testClock); ILink link = Link.FromSpanContext(spanContext, LinkType.CHILD_LINKED_SPAN); for (int i = 0; i < 2 * maxNumberOfLinks; i++) { span.AddLink(link); } ISpanData spanData = ((Span)span).ToSpanData(); Assert.Equal(maxNumberOfLinks, spanData.Links.DroppedLinksCount); Assert.Equal(maxNumberOfLinks, spanData.Links.Links.Count); for (int i = 0; i < maxNumberOfLinks; i++) { Assert.Equal(link, spanData.Links.Links[i]); } span.End(); spanData = ((Span)span).ToSpanData(); Assert.Equal(maxNumberOfLinks, spanData.Links.DroppedLinksCount); Assert.Equal(maxNumberOfLinks, spanData.Links.Links.Count); for (int i = 0; i < maxNumberOfLinks; i++) { Assert.Equal(link, spanData.Links.Links[i]); } }
public void ToSpanData_NoRecordEvents() { ISpan span = Span.StartSpan( spanContext, noRecordSpanOptions, SPAN_NAME, parentSpanId, false, TraceParams.Default, startEndHandler, timestampConverter); // Check that adding trace events after Span#End() does not throw any exception. span.SetAttributes(attributes); span.AddEvent(Event.Create(EVENT_DESCRIPTION)); span.AddEvent(EVENT_DESCRIPTION, attributes); span.AddLink(Link.FromSpanContext(spanContext, LinkType.ChildLinkedSpan)); span.End(); // exception.expect(IllegalStateException); Assert.Throws <InvalidOperationException>(() => ((Span)span).ToSpanData()); }
public void DroppingLinks() { int maxNumberOfLinks = 8; TraceParams traceParams = TraceParams.Default.ToBuilder().SetMaxNumberOfLinks(maxNumberOfLinks).Build(); ISpan span = Span.StartSpan( spanContext, recordSpanOptions, SPAN_NAME, SpanKind.Internal, parentSpanId, traceParams, startEndHandler, timestampConverter); ILink link = Link.FromSpanContext(spanContext); for (int i = 0; i < 2 * maxNumberOfLinks; i++) { span.AddLink(link); } SpanData spanData = ((Span)span).ToSpanData(); Assert.Equal(maxNumberOfLinks, spanData.Links.DroppedLinksCount); Assert.Equal(maxNumberOfLinks, spanData.Links.Links.Count()); foreach (var actualLink in spanData.Links.Links) { Assert.Equal(link, actualLink); } span.End(); spanData = ((Span)span).ToSpanData(); Assert.Equal(maxNumberOfLinks, spanData.Links.DroppedLinksCount); Assert.Equal(maxNumberOfLinks, spanData.Links.Links.Count()); foreach (var actualLink in spanData.Links.Links) { Assert.Equal(link, actualLink); } }
public void NoEventsRecordedAfterEnd() { ISpan span = Span.StartSpan( spanContext, recordSpanOptions, SPAN_NAME, parentSpanId, false, TraceParams.DEFAULT, startEndHandler, timestampConverter, testClock); span.End(); // Check that adding trace events after Span#End() does not throw any exception and are not // recorded. span.PutAttributes(attributes); span.PutAttribute( "MySingleStringAttributeKey", AttributeValue.StringAttributeValue("MySingleStringAttributeValue")); span.AddAnnotation(Annotation.FromDescription(ANNOTATION_DESCRIPTION)); span.AddAnnotation(ANNOTATION_DESCRIPTION, attributes); span.AddMessageEvent( MessageEvent.Builder(MessageEventType.RECEIVED, 1).SetUncompressedMessageSize(3).Build()); span.AddLink(Link.FromSpanContext(spanContext, LinkType.CHILD_LINKED_SPAN)); ISpanData spanData = ((Span)span).ToSpanData(); Assert.Equal(timestamp, spanData.StartTimestamp); Assert.Empty(spanData.Attributes.AttributeMap); Assert.Empty(spanData.Annotations.Events); Assert.Empty(spanData.MessageEvents.Events); Assert.Empty(spanData.Links.Links); Assert.Equal(Status.OK, spanData.Status); Assert.Equal(timestamp, spanData.EndTimestamp); }
public void GoSpanData_EndedSpan() { ISpan span = Span.StartSpan( spanContext, recordSpanOptions, SPAN_NAME, parentSpanId, false, TraceParams.DEFAULT, startEndHandler, timestampConverter, testClock); span.PutAttribute( "MySingleStringAttributeKey", AttributeValue.StringAttributeValue("MySingleStringAttributeValue")); span.PutAttributes(attributes); testClock.AdvanceTime(Duration.Create(0, 100)); span.AddAnnotation(Annotation.FromDescription(ANNOTATION_DESCRIPTION)); testClock.AdvanceTime(Duration.Create(0, 100)); span.AddAnnotation(ANNOTATION_DESCRIPTION, attributes); testClock.AdvanceTime(Duration.Create(0, 100)); IMessageEvent networkEvent = MessageEvent.Builder(MessageEventType.RECEIVED, 1).SetUncompressedMessageSize(3).Build(); span.AddMessageEvent(networkEvent); ILink link = Link.FromSpanContext(spanContext, LinkType.CHILD_LINKED_SPAN); span.AddLink(link); testClock.AdvanceTime(Duration.Create(0, 100)); span.End(EndSpanOptions.Builder().SetStatus(Status.CANCELLED).Build()); ISpanData spanData = ((Span)span).ToSpanData(); Assert.Equal(spanContext, spanData.Context); Assert.Equal(SPAN_NAME, spanData.Name); Assert.Equal(parentSpanId, spanData.ParentSpanId); Assert.False(spanData.HasRemoteParent); Assert.Equal(0, spanData.Attributes.DroppedAttributesCount); Assert.Equal(expectedAttributes, spanData.Attributes.AttributeMap); Assert.Equal(0, spanData.Annotations.DroppedEventsCount); Assert.Equal(2, spanData.Annotations.Events.Count); Assert.Equal(timestamp.AddNanos(100), spanData.Annotations.Events[0].Timestamp); Assert.Equal(Annotation.FromDescription(ANNOTATION_DESCRIPTION), spanData.Annotations.Events[0].Event); Assert.Equal(timestamp.AddNanos(200), spanData.Annotations.Events[1].Timestamp); Assert.Equal(Annotation.FromDescriptionAndAttributes(ANNOTATION_DESCRIPTION, attributes), spanData.Annotations.Events[1].Event); Assert.Equal(0, spanData.MessageEvents.DroppedEventsCount); Assert.Equal(1, spanData.MessageEvents.Events.Count); Assert.Equal(timestamp.AddNanos(300), spanData.MessageEvents.Events[0].Timestamp); Assert.Equal(networkEvent, spanData.MessageEvents.Events[0].Event); Assert.Equal(0, spanData.Links.DroppedLinksCount); Assert.Equal(1, spanData.Links.Links.Count); Assert.Equal(link, spanData.Links.Links[0]); Assert.Equal(timestamp, spanData.StartTimestamp); Assert.Equal(Status.CANCELLED, spanData.Status); Assert.Equal(timestamp.AddNanos(400), spanData.EndTimestamp); var startEndMock = Mock.Get <IStartEndHandler>(startEndHandler); var spanBase = span as SpanBase; startEndMock.Verify(s => s.OnStart(spanBase), Times.Once); startEndMock.Verify(s => s.OnEnd(spanBase), Times.Once); }
public void ToSpanData_ActiveSpan() { ISpan span = Span.StartSpan( spanContext, recordSpanOptions, SPAN_NAME, parentSpanId, true, TraceParams.Default, startEndHandler, timestampConverter, testClock); span.PutAttribute( "MySingleStringAttributeKey", AttributeValue.StringAttributeValue("MySingleStringAttributeValue")); span.PutAttributes(attributes); testClock.AdvanceTime(Duration.Create(0, 100)); span.AddAnnotation(Annotation.FromDescription(ANNOTATION_DESCRIPTION)); testClock.AdvanceTime(Duration.Create(0, 100)); span.AddAnnotation(ANNOTATION_DESCRIPTION, attributes); testClock.AdvanceTime(Duration.Create(0, 100)); IMessageEvent networkEvent = MessageEvent.Builder(MessageEventType.Received, 1).SetUncompressedMessageSize(3).Build(); span.AddMessageEvent(networkEvent); testClock.AdvanceTime(Duration.Create(0, 100)); ILink link = Link.FromSpanContext(spanContext, LinkType.ChildLinkedSpan); span.AddLink(link); ISpanData spanData = ((Span)span).ToSpanData(); Assert.Equal(spanContext, spanData.Context); Assert.Equal(SPAN_NAME, spanData.Name); Assert.Equal(parentSpanId, spanData.ParentSpanId); Assert.True(spanData.HasRemoteParent); Assert.Equal(0, spanData.Attributes.DroppedAttributesCount); Assert.Equal(expectedAttributes, spanData.Attributes.AttributeMap); Assert.Equal(0, spanData.Annotations.DroppedEventsCount); Assert.Equal(2, spanData.Annotations.Events.Count()); Assert.Equal(timestamp.AddNanos(100), spanData.Annotations.Events.ToList()[0].Timestamp); Assert.Equal(Annotation.FromDescription(ANNOTATION_DESCRIPTION), spanData.Annotations.Events.ToList()[0].Event); Assert.Equal(timestamp.AddNanos(200), spanData.Annotations.Events.ToList()[1].Timestamp); Assert.Equal(Annotation.FromDescriptionAndAttributes(ANNOTATION_DESCRIPTION, attributes), spanData.Annotations.Events.ToList()[1].Event); Assert.Equal(0, spanData.MessageEvents.DroppedEventsCount); Assert.Single(spanData.MessageEvents.Events); Assert.Equal(timestamp.AddNanos(300), spanData.MessageEvents.Events.First().Timestamp); Assert.Equal(networkEvent, spanData.MessageEvents.Events.First().Event); Assert.Equal(0, spanData.Links.DroppedLinksCount); Assert.Single(spanData.Links.Links); Assert.Equal(link, spanData.Links.Links.First()); Assert.Equal(timestamp, spanData.StartTimestamp); Assert.Null(spanData.Status); Assert.Null(spanData.EndTimestamp); var startEndMock = Mock.Get <IStartEndHandler>(startEndHandler); var spanBase = span as SpanBase; startEndMock.Verify(s => s.OnStart(spanBase), Times.Once); }