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()); }
public void DroppingNetworkEvents() { int maxNumberOfNetworkEvents = 8; TraceParams traceParams = TraceParams.Default .ToBuilder() .SetMaxNumberOfMessageEvents(maxNumberOfNetworkEvents) .Build(); ISpan span = Span.StartSpan( spanContext, recordSpanOptions, SPAN_NAME, parentSpanId, false, traceParams, startEndHandler, timestampConverter, testClock); IMessageEvent networkEvent = MessageEvent.Builder(MessageEventType.Received, 1).SetUncompressedMessageSize(3).Build(); for (int i = 0; i < 2 * maxNumberOfNetworkEvents; i++) { span.AddMessageEvent(networkEvent); testClock.AdvanceTime(Duration.Create(0, 100)); } ISpanData spanData = ((Span)span).ToSpanData(); Assert.Equal(maxNumberOfNetworkEvents, spanData.MessageEvents.DroppedEventsCount); Assert.Equal(maxNumberOfNetworkEvents, spanData.MessageEvents.Events.Count()); var list = spanData.MessageEvents.Events.ToList(); for (int i = 0; i < maxNumberOfNetworkEvents; i++) { Assert.Equal(timestamp.AddNanos(100 * (maxNumberOfNetworkEvents + i)), list[i].Timestamp); Assert.Equal(networkEvent, list[i].Event); } span.End(); spanData = ((Span)span).ToSpanData(); Assert.Equal(maxNumberOfNetworkEvents, spanData.MessageEvents.DroppedEventsCount); Assert.Equal(maxNumberOfNetworkEvents, spanData.MessageEvents.Events.Count()); list = spanData.MessageEvents.Events.ToList(); for (int i = 0; i < maxNumberOfNetworkEvents; i++) { Assert.Equal(timestamp.AddNanos(100 * (maxNumberOfNetworkEvents + i)), list[i].Timestamp); Assert.Equal(networkEvent, list[i].Event); } }
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); }