public void status_ViaEndSpanOptions() { var span = (Span)Span.StartSpan( spanContext, recordSpanOptions, SPAN_NAME, SpanKind.Internal, parentSpanId, TraceParams.Default, startEndHandler, timestampConverter); interval = TimeSpan.FromMilliseconds(100); Assert.Equal(Status.Ok, span.Status); ((Span)span).Status = Status.Cancelled; Assert.Equal(Status.Cancelled, span.Status); span.End(EndSpanOptions.Builder().SetStatus(Status.Aborted).Build()); Assert.Equal(Status.Aborted, span.Status); var startEndMock = Mock.Get <IStartEndHandler>(startEndHandler); var spanBase = span as SpanBase; startEndMock.Verify(s => s.OnStart(spanBase), Times.Once); }
public void SetSampleToLocalSpanStore() { EndSpanOptions endSpanOptions = EndSpanOptions.Builder().SetSampleToLocalSpanStore(true).Build(); Assert.True(endSpanOptions.SampleToLocalSpanStore); }
public void status_ViaEndSpanOptions() { ISpan span = Span.StartSpan( spanContext, recordSpanOptions, SPAN_NAME, parentSpanId, false, TraceParams.DEFAULT, startEndHandler, timestampConverter, testClock); testClock.AdvanceTime(Duration.Create(0, 100)); Assert.Equal(Status.OK, span.Status); ((Span)span).Status = Status.CANCELLED; Assert.Equal(Status.CANCELLED, span.Status); span.End(EndSpanOptions.Builder().SetStatus(Status.ABORTED).Build()); Assert.Equal(Status.ABORTED, span.Status); var startEndMock = Mock.Get <IStartEndHandler>(startEndHandler); var spanBase = span as SpanBase; startEndMock.Verify(s => s.OnStart(spanBase), Times.Once); }
public void GoSpanData_EndedSpan() { var span = (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); ILink link = Link.FromSpanContext(spanContext); span.AddLink(link); interval = TimeSpan.FromMilliseconds(400); span.End(EndSpanOptions.Builder().SetStatus(Status.Cancelled).Build()); 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.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); }
public void SetStatus_Error() { EndSpanOptions endSpanOptions = EndSpanOptions.Builder() .SetStatus(Status.Cancelled.WithDescription("ThisIsAnError")) .Build(); Assert.Equal(Status.Cancelled.WithDescription("ThisIsAnError"), endSpanOptions.Status); }
public void EndSpanOptions_ToString() { EndSpanOptions endSpanOptions = EndSpanOptions.Builder() .SetStatus(Status.Cancelled.WithDescription("ThisIsAnError")) .Build(); Assert.Contains("ThisIsAnError", endSpanOptions.ToString()); }
public void RegisterSpanNamesViaSpanBuilderOption() { Assert.Contains(REGISTERED_SPAN_NAME, sampleStore.RegisteredSpanNamesForCollection); Assert.Equal(1, sampleStore.RegisteredSpanNamesForCollection.Count); CreateSampledSpan(NOT_REGISTERED_SPAN_NAME).End(EndSpanOptions.Builder().SetSampleToLocalSpanStore(true).Build()); Assert.Contains(REGISTERED_SPAN_NAME, sampleStore.RegisteredSpanNamesForCollection); Assert.Contains(NOT_REGISTERED_SPAN_NAME, sampleStore.RegisteredSpanNamesForCollection); Assert.Equal(2, sampleStore.RegisteredSpanNamesForCollection.Count); }
public void GetErrorSampledSpans() { var span = CreateSampledSpan(REGISTERED_SPAN_NAME) as Span; interval += TimeSpan.FromTicks(10); span.End(EndSpanOptions.Builder().SetStatus(Status.Cancelled).Build()); var samples = sampleStore.GetErrorSampledSpans( SampledSpanStoreErrorFilter.Create(REGISTERED_SPAN_NAME, CanonicalCode.Cancelled, 0)); Assert.Single(samples); Assert.Contains(span.ToSpanData(), samples); }
public void GetErrorSampledSpans() { Span span = CreateSampledSpan(REGISTERED_SPAN_NAME) as Span; testClock.AdvanceTime(Duration.Create(0, 1000)); span.End(EndSpanOptions.Builder().SetStatus(Status.Cancelled).Build()); var samples = sampleStore.GetErrorSampledSpans( SampledSpanStoreErrorFilter.Create(REGISTERED_SPAN_NAME, CanonicalCode.Cancelled, 0)); Assert.Single(samples); Assert.Contains(span.ToSpanData(), samples); }
public void GetErrorSampledSpans() { Span span = CreateSampledSpan(REGISTERED_SPAN_NAME) as Span; testClock.AdvanceTime(Duration.Create(0, 1000)); span.End(EndSpanOptions.Builder().SetStatus(Status.CANCELLED).Build()); IList <ISpanData> samples = sampleStore.GetErrorSampledSpans( SampledSpanStoreErrorFilter.Create(REGISTERED_SPAN_NAME, CanonicalCode.CANCELLED, 0)); Assert.Equal(1, samples.Count); Assert.True(samples.Contains(span.ToSpanData())); }
private void AddSpanNameToAllErrorBuckets(String spanName) { foreach (var code in Enum.GetValues(typeof(CanonicalCode)).Cast <CanonicalCode>()) { if (code != CanonicalCode.Ok) { var sampledSpan = CreateSampledSpan(spanName); var notSampledSpan = CreateNotSampledSpan(spanName); interval += TimeSpan.FromTicks(10); sampledSpan.End(EndSpanOptions.Builder().SetStatus(code.ToStatus()).Build()); notSampledSpan.End(EndSpanOptions.Builder().SetStatus(code.ToStatus()).Build()); } } }
private void AddSpanNameToAllErrorBuckets(String spanName) { foreach (CanonicalCode code in Enum.GetValues(typeof(CanonicalCode)).Cast <CanonicalCode>()) { if (code != CanonicalCode.Ok) { ISpan sampledSpan = CreateSampledSpan(spanName); ISpan notSampledSpan = CreateNotSampledSpan(spanName); testClock.AdvanceTime(Duration.Create(0, 1000)); sampledSpan.End(EndSpanOptions.Builder().SetStatus(code.ToStatus()).Build()); notSampledSpan.End(EndSpanOptions.Builder().SetStatus(code.ToStatus()).Build()); } } }
public void GetErrorSampledSpans_NullCode_MaxSpansToReturn() { Span span1 = CreateSampledSpan(REGISTERED_SPAN_NAME) as Span; testClock.AdvanceTime(Duration.Create(0, 1000)); span1.End(EndSpanOptions.Builder().SetStatus(Status.CANCELLED).Build()); Span span2 = CreateSampledSpan(REGISTERED_SPAN_NAME) as Span; testClock.AdvanceTime(Duration.Create(0, 1000)); span2.End(EndSpanOptions.Builder().SetStatus(Status.UNKNOWN).Build()); IList <ISpanData> samples = sampleStore.GetErrorSampledSpans(SampledSpanStoreErrorFilter.Create(REGISTERED_SPAN_NAME, null, 1)); Assert.Equal(1, samples.Count); Assert.True(samples.Contains(span1.ToSpanData()) || samples.Contains(span2.ToSpanData())); }
public void GetErrorSampledSpans_NullCode_MaxSpansToReturn() { var span1 = CreateSampledSpan(REGISTERED_SPAN_NAME) as Span; interval += TimeSpan.FromTicks(10); span1.End(EndSpanOptions.Builder().SetStatus(Status.Cancelled).Build()); var span2 = CreateSampledSpan(REGISTERED_SPAN_NAME) as Span; interval += TimeSpan.FromTicks(10); span2.End(EndSpanOptions.Builder().SetStatus(Status.Unknown).Build()); var samples = sampleStore.GetErrorSampledSpans(SampledSpanStoreErrorFilter.Create(REGISTERED_SPAN_NAME, null, 1)); Assert.Single(samples); Assert.True(samples.Contains(span1.ToSpanData()) || samples.Contains(span2.ToSpanData())); }
public void GetErrorSampledSpans_NullCode_MaxSpansToReturn() { Span span1 = CreateSampledSpan(REGISTERED_SPAN_NAME) as Span; testClock.AdvanceTime(Duration.Create(0, 1000)); span1.End(EndSpanOptions.Builder().SetStatus(Status.Cancelled).Build()); Span span2 = CreateSampledSpan(REGISTERED_SPAN_NAME) as Span; testClock.AdvanceTime(Duration.Create(0, 1000)); span2.End(EndSpanOptions.Builder().SetStatus(Status.Unknown).Build()); var samples = sampleStore.GetErrorSampledSpans(SampledSpanStoreErrorFilter.Create(REGISTERED_SPAN_NAME, null, 1)); Assert.Single(samples); Assert.True(samples.Contains(span1.ToSpanData()) || samples.Contains(span2.ToSpanData())); }
public void GetErrorSampledSpans_NullCode() { Span span1 = CreateSampledSpan(REGISTERED_SPAN_NAME) as Span; interval += TimeSpan.FromTicks(10); span1.End(EndSpanOptions.Builder().SetStatus(Status.Cancelled).Build()); Span span2 = CreateSampledSpan(REGISTERED_SPAN_NAME) as Span; interval += TimeSpan.FromTicks(10); span2.End(EndSpanOptions.Builder().SetStatus(Status.Unknown).Build()); var samples = sampleStore.GetErrorSampledSpans(SampledSpanStoreErrorFilter.Create(REGISTERED_SPAN_NAME, null, 0)); Assert.Equal(2, samples.Count()); Assert.Contains(span1.ToSpanData(), samples); Assert.Contains(span2.ToSpanData(), samples); }
public void GetErrorSampledSpans_MaxSpansToReturn() { var span1 = CreateSampledSpan(REGISTERED_SPAN_NAME) as Span; interval += TimeSpan.FromTicks(10); span1.End(EndSpanOptions.Builder().SetStatus(Status.Cancelled).Build()); // Advance time to allow other spans to be sampled. interval += TimeSpan.FromSeconds(5); var span2 = CreateSampledSpan(REGISTERED_SPAN_NAME) as Span; interval += TimeSpan.FromTicks(10); span2.End(EndSpanOptions.Builder().SetStatus(Status.Cancelled).Build()); var samples = sampleStore.GetErrorSampledSpans( SampledSpanStoreErrorFilter.Create(REGISTERED_SPAN_NAME, CanonicalCode.Cancelled, 1)); Assert.Single(samples); // No order guaranteed so one of the spans should be in the list. Assert.True(samples.Contains(span1.ToSpanData()) || samples.Contains(span2.ToSpanData())); }
public void GetErrorSampledSpans_MaxSpansToReturn() { Span span1 = CreateSampledSpan(REGISTERED_SPAN_NAME) as Span; testClock.AdvanceTime(Duration.Create(0, 1000)); span1.End(EndSpanOptions.Builder().SetStatus(Status.Cancelled).Build()); // Advance time to allow other spans to be sampled. testClock.AdvanceTime(Duration.Create(5, 0)); Span span2 = CreateSampledSpan(REGISTERED_SPAN_NAME) as Span; testClock.AdvanceTime(Duration.Create(0, 1000)); span2.End(EndSpanOptions.Builder().SetStatus(Status.Cancelled).Build()); var samples = sampleStore.GetErrorSampledSpans( SampledSpanStoreErrorFilter.Create(REGISTERED_SPAN_NAME, CanonicalCode.Cancelled, 1)); Assert.Single(samples); // No order guaranteed so one of the spans should be in the list. Assert.True(samples.Contains(span1.ToSpanData()) || samples.Contains(span2.ToSpanData())); }
public void SampleToLocalSpanStore() { ISpan span = Span.StartSpan( spanContext, recordSpanOptions, SPAN_NAME, parentSpanId, false, TraceParams.DEFAULT, startEndHandler, timestampConverter, testClock); span.End(EndSpanOptions.Builder().SetSampleToLocalSpanStore(true).Build()); Assert.True(((Span)span).IsSampleToLocalSpanStore); ISpan span2 = Span.StartSpan( spanContext, recordSpanOptions, SPAN_NAME, parentSpanId, false, TraceParams.DEFAULT, startEndHandler, timestampConverter, testClock); span2.End(); Assert.False(((Span)span2).IsSampleToLocalSpanStore); var startEndMock = Mock.Get <IStartEndHandler>(startEndHandler); var spanBase = span as SpanBase; startEndMock.Verify(s => s.OnEnd(spanBase), Times.Exactly(1)); var spanBase2 = span2 as SpanBase; startEndMock.Verify(s => s.OnEnd(spanBase2), Times.Exactly(1)); }
public void SetStatus_Ok() { EndSpanOptions endSpanOptions = EndSpanOptions.Builder().SetStatus(Status.Ok).Build(); Assert.Equal(Status.Ok, endSpanOptions.Status); }
public override void End(EndSpanOptions options) { }
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); }