public LinkTest() { spanContext = SpanContext.Create(TraceId.GenerateRandomId(random), SpanId.GenerateRandomId(random), TraceOptions.DEFAULT);; attributesMap.Add("MyAttributeKey0", AttributeValue <string> .Create("MyStringAttribute")); attributesMap.Add("MyAttributeKey1", AttributeValue <long> .Create(10)); attributesMap.Add("MyAttributeKey2", AttributeValue <bool> .Create(true)); }
// Applies the given sampler to NUM_SAMPLE_TRIES random traceId/spanId pairs. private static void AssertSamplerSamplesWithProbability( ISampler sampler, ISpanContext parent, IList <ISpan> parentLinks, double probability) { RandomGenerator random = new RandomGenerator(1234); int count = 0; // Count of spans with sampling enabled for (int i = 0; i < NUM_SAMPLE_TRIES; i++) { if (sampler.ShouldSample( parent, false, TraceId.GenerateRandomId(random), SpanId.GenerateRandomId(random), SPAN_NAME, parentLinks)) { count++; } } double proportionSampled = (double)count / NUM_SAMPLE_TRIES; // Allow for a large amount of slop (+/- 10%) in number of sampled traces, to avoid flakiness. Assert.True(proportionSampled <probability + 0.1 && proportionSampled> probability - 0.1); }
public async Task SuccesfulTemplateControllerCallUsesParentContext() { var startEndHandler = new Mock <IStartEndHandler>(); var expectedTraceId = TraceId.GenerateRandomId(new RandomGenerator()); var expectedSpanId = SpanId.GenerateRandomId(new RandomGenerator()); var tf = new Mock <ITextFormat>(); tf.Setup(m => m.Extract <HttpRequest>(It.IsAny <HttpRequest>(), It.IsAny <Func <HttpRequest, string, IEnumerable <string> > >())).Returns(SpanContext.Create( expectedTraceId, expectedSpanId, TraceOptions.Default, Tracestate.Empty )); var tracer = new Tracer(new RandomGenerator(), startEndHandler.Object, new TraceConfig(), null, null, tf.Object); // Arrange using (var client = this.factory .WithWebHostBuilder(builder => builder.ConfigureTestServices((services) => { services.AddSingleton <ITracer>(tracer); services.AddSingleton <ITextFormat>(tf.Object); services.AddSingleton <IBinaryFormat>(new BinaryFormat()); })) .CreateClient()) { // Act var response = await client.GetAsync("/api/values/2"); // Assert response.EnsureSuccessStatusCode(); // Status Code 200-299 for (var i = 0; i < 10; i++) { if (startEndHandler.Invocations.Count == 2) { break; } // We need to let End callback execute as it is executed AFTER response was returned. // In unit tests environment there may be a lot of parallel unit tests executed, so // giving some breezing room for the End callback to complete await Task.Delay(TimeSpan.FromSeconds(1)); } } Assert.Equal(2, startEndHandler.Invocations.Count); // begin and end was called var spanData = ((Span)startEndHandler.Invocations[0].Arguments[0]).ToSpanData(); Assert.Equal(SpanKind.Server, spanData.Kind); Assert.Equal("api/Values/{id}", spanData.Name); Assert.Equal(AttributeValue.StringAttributeValue("/api/values/2"), spanData.Attributes.AttributeMap["http.path"]); Assert.Equal(expectedTraceId, spanData.Context.TraceId); Assert.Equal(expectedSpanId, spanData.ParentSpanId); }
public LinkTest() { spanContext = SpanContext.Create(TraceId.GenerateRandomId(random), SpanId.GenerateRandomId(random), TraceOptions.Default, Tracestate.Empty);; attributesMap.Add("MyAttributeKey0", AttributeValue <string> .Create("MyStringAttribute")); attributesMap.Add("MyAttributeKey1", AttributeValue <long> .Create(10)); attributesMap.Add("MyAttributeKey2", AttributeValue <bool> .Create(true)); attributesMap.Add("MyAttributeKey3", AttributeValue <double> .Create(0.005)); }
public SpanExporterTest() { sampledSpanContext = SpanContext.Create(TraceId.GenerateRandomId(random), SpanId.GenerateRandomId(random), TraceOptions.Builder().SetIsSampled(true).Build(), Tracestate.Empty); notSampledSpanContext = SpanContext.Create(TraceId.GenerateRandomId(random), SpanId.GenerateRandomId(random), TraceOptions.Default, Tracestate.Empty); startEndHandler = new StartEndHandler(spanExporter, runningSpanStore, null, new SimpleEventQueue()); spanExporter.RegisterHandler("test.service", serviceHandler); }
public SamplersTest() { traceId = TraceId.GenerateRandomId(random); parentSpanId = SpanId.GenerateRandomId(random); spanId = SpanId.GenerateRandomId(random); sampledSpanContext = SpanContext.Create(traceId, parentSpanId, TraceOptions.Builder().SetIsSampled(true).Build(), Tracestate.Empty); notSampledSpanContext = SpanContext.Create(traceId, parentSpanId, TraceOptions.Default, Tracestate.Empty); sampledSpan = new TestSpan(sampledSpanContext, SpanOptions.RecordEvents); }
public SamplersTest() { traceId = TraceId.GenerateRandomId(random); parentSpanId = SpanId.GenerateRandomId(random); spanId = SpanId.GenerateRandomId(random); sampledSpanContext = SpanContext.Create(traceId, parentSpanId, TraceOptions.Builder().SetIsSampled(true).Build()); notSampledSpanContext = SpanContext.Create(traceId, parentSpanId, TraceOptions.DEFAULT); sampledSpan = new NoopSpan(sampledSpanContext, SpanOptions.RECORD_EVENTS); }
public SamplersTest() { traceId = TraceId.GenerateRandomId(random); parentSpanId = SpanId.GenerateRandomId(random); spanId = SpanId.GenerateRandomId(random); sampledSpanContext = SpanContext.Create(traceId, parentSpanId, TraceOptions.Builder().SetIsSampled(true).Build(), Tracestate.Empty); notSampledSpanContext = SpanContext.Create(traceId, parentSpanId, TraceOptions.Default, Tracestate.Empty); sampledLink = Link.FromSpanContext(sampledSpanContext); }
public InProcessSampledSpanStoreTest() { sampledSpanContext = SpanContext.Create(TraceId.GenerateRandomId(random), SpanId.GenerateRandomId(random), TraceOptions.Builder().SetIsSampled(true).Build(), Tracestate.Empty); notSampledSpanContext = SpanContext.Create(TraceId.GenerateRandomId(random), SpanId.GenerateRandomId(random), TraceOptions.Default, Tracestate.Empty); parentSpanId = SpanId.GenerateRandomId(random); startEndHandler = new TestStartEndHandler(sampleStore); sampleStore.RegisterSpanNamesForCollection(new List <string>() { REGISTERED_SPAN_NAME }); }
public InProcessSampledSpanStoreTest() { timestamp = Timestamp.FromDateTimeOffset(startTime); timestampConverter = Timer.StartNew(startTime, () => interval); sampledSpanContext = SpanContext.Create(TraceId.GenerateRandomId(random), SpanId.GenerateRandomId(random), TraceOptions.Builder().SetIsSampled(true).Build(), Tracestate.Empty); notSampledSpanContext = SpanContext.Create(TraceId.GenerateRandomId(random), SpanId.GenerateRandomId(random), TraceOptions.Default, Tracestate.Empty); parentSpanId = SpanId.GenerateRandomId(random); startEndHandler = new TestStartEndHandler(sampleStore); sampleStore.RegisterSpanNamesForCollection(new List <string>() { REGISTERED_SPAN_NAME }); }
public SpanBaseTest() { random = new RandomGenerator(1234); spanContext = SpanContext.Create( TraceId.GenerateRandomId(random), SpanId.GenerateRandomId(random), TraceOptions.Builder().SetIsSampled(true).Build(), Tracestate.Empty); notSampledSpanContext = SpanContext.Create( TraceId.GenerateRandomId(random), SpanId.GenerateRandomId(random), TraceOptions.Default, Tracestate.Empty); spanOptions = SpanOptions.RecordEvents; }
public SpanTest() { timestamp = Timestamp.FromDateTimeOffset(startTime); timestampConverter = Timer.StartNew(startTime, () => interval); spanContext = SpanContext.Create(TraceId.GenerateRandomId(random), SpanId.GenerateRandomId(random), OpenTelemetry.Trace.TraceOptions.Default, Tracestate.Empty); parentSpanId = SpanId.GenerateRandomId(random); attributes.Add( "MyStringAttributeKey", AttributeValue.StringAttributeValue("MyStringAttributeValue")); attributes.Add("MyLongAttributeKey", AttributeValue.LongAttributeValue(123L)); attributes.Add("MyBooleanAttributeKey", AttributeValue.BooleanAttributeValue(false)); expectedAttributes = new Dictionary <String, IAttributeValue>(attributes); expectedAttributes.Add( "MySingleStringAttributeKey", AttributeValue.StringAttributeValue("MySingleStringAttributeValue")); }
//@Rule public readonly ExpectedException exception = ExpectedException.none(); public SpanTest() { spanContext = SpanContext.Create(TraceId.GenerateRandomId(random), SpanId.GenerateRandomId(random), TraceOptions.DEFAULT); parentSpanId = SpanId.GenerateRandomId(random); testClock = TestClock.Create(timestamp); timestampConverter = TimestampConverter.Now(testClock); attributes.Add( "MyStringAttributeKey", AttributeValue.StringAttributeValue("MyStringAttributeValue")); attributes.Add("MyLongAttributeKey", AttributeValue.LongAttributeValue(123L)); attributes.Add("MyBooleanAttributeKey", AttributeValue.BooleanAttributeValue(false)); expectedAttributes = new Dictionary <String, IAttributeValue>(attributes); expectedAttributes.Add( "MySingleStringAttributeKey", AttributeValue.StringAttributeValue("MySingleStringAttributeValue")); }
public SpanBaseTest() { random = new RandomGenerator(1234); spanContext = SpanContext.Create( TraceId.GenerateRandomId(random), SpanId.GenerateRandomId(random), TraceOptions.Builder().SetIsSampled(true).Build()); notSampledSpanContext = SpanContext.Create( TraceId.GenerateRandomId(random), SpanId.GenerateRandomId(random), TraceOptions.DEFAULT); spanOptions = SpanOptions.RECORD_EVENTS; }
public SpanDataTest() { spanContext = SpanContext.Create(TraceId.GenerateRandomId(random), SpanId.GenerateRandomId(random), TraceOptions.Default, Tracestate.Empty); parentSpanId = SpanId.GenerateRandomId(random); attributesMap.Add("MyAttributeKey1", AttributeValue.LongAttributeValue(10)); attributesMap.Add("MyAttributeKey2", AttributeValue.BooleanAttributeValue(true)); attributes = Attributes.Create(attributesMap, 1); eventList.Add(TimedEvent <IEvent> .Create(eventTimestamp1, spanEvent)); eventList.Add(TimedEvent <IEvent> .Create(eventTimestamp3, spanEvent)); events = TimedEvents <IEvent> .Create(eventList, 2); linksList.Add(Link.FromSpanContext(spanContext, LinkType.ChildLinkedSpan)); links = LinkList.Create(linksList, 0); }
public void ShouldSamplePassesArgumentsToSamplerAndReturnsInContext() { var m = new Mock <ISampler>(); var r = new RandomGenerator(); var traceId = TraceId.GenerateRandomId(r); var parentContext = SpanContext.Create(traceId, SpanId.GenerateRandomId(r), TraceOptions.Sampled, Tracestate.Builder.Set("a", "b").Build()); RedisProfilerEntryToSpanConverter.ShouldSample(parentContext, "SET", m.Object, out var context, out var parentId); m.Verify(x => x.ShouldSample( It.Is <SpanContext>(y => y == parentContext), It.Is <TraceId>(y => y == traceId && y == context.TraceId), It.Is <SpanId>(y => y.IsValid && y == context.SpanId), It.Is <string>(y => y == "SET"), It.Is <IEnumerable <ISpan> >(y => y == null))); }
public CurrentSpanUtilsTest() { random = new RandomGenerator(1234); spanContext = SpanContext.Create( TraceId.GenerateRandomId(random), SpanId.GenerateRandomId(random), TraceOptions.Builder().SetIsSampled(true).Build()); spanOptions = SpanOptions.RECORD_EVENTS; var mockSpan = new Mock <NoopSpan>(spanContext, spanOptions) { CallBase = true }; span = mockSpan.Object; }
public void StartSpanLastParentWins2() { var spanContext = SpanContext.Create( TraceId.GenerateRandomId(randomHandler), SpanId.GenerateRandomId(randomHandler), TraceOptions.Default, Tracestate.Empty); var span = (Span) new SpanBuilder(SpanName, spanBuilderOptions) .SetParent(spanContext) .SetNoParent() .StartSpan(); Assert.True(span.Context.IsValid); Assert.NotEqual(spanContext.TraceId, span.Context.TraceId); Assert.Null(span.ParentSpanId); }
public CurrentSpanUtilsTest() { random = new RandomGenerator(1234); spanContext = SpanContext.Create( TraceId.GenerateRandomId(random), SpanId.GenerateRandomId(random), TraceOptions.Builder().SetIsSampled(true).Build(), Tracestate.Empty); spanOptions = SpanOptions.RecordEvents; var mockSpan = new Mock <TestSpan>() { CallBase = true }; span = mockSpan.Object; }
private ISpan CreateSpan(string spanName) { ISpanContext spanContext = SpanContext.Create( TraceId.GenerateRandomId(random), SpanId.GenerateRandomId(random), TraceOptions.Default, Tracestate.Empty); return(Span.StartSpan( spanContext, recordSpanOptions, spanName, SpanId.GenerateRandomId(random), false, TraceParams.Default, startEndHandler, null)); }
private ISpan CreateSpan(string spanName) { ISpanContext spanContext = SpanContext.Create( TraceId.GenerateRandomId(random), SpanId.GenerateRandomId(random), TraceOptions.DEFAULT); return(Span.StartSpan( spanContext, recordSpanOptions, spanName, SpanId.GenerateRandomId(random), false, TraceParams.DEFAULT, startEndHandler, null, DateTimeOffsetClock.GetInstance())); }
public void StartRemoteSpan() { SpanContext spanContext = SpanContext.Create( TraceId.GenerateRandomId(randomHandler), SpanId.GenerateRandomId(randomHandler), TraceOptions.Default, Tracestate.Empty); ISpan span = SpanBuilder.Create(SPAN_NAME, SpanKind.Internal, spanContext, spanBuilderOptions) .SetRecordEvents(true) .StartSpan(); Assert.True(span.Context.IsValid); Assert.Equal(spanContext.TraceId, span.Context.TraceId); Assert.False(span.Context.TraceOptions.IsSampled); ISpanData spanData = ((Span)span).ToSpanData(); Assert.Equal(spanContext.SpanId, spanData.ParentSpanId); }
public void StartRemoteSpan() { ISpanContext spanContext = SpanContext.Create( TraceId.GenerateRandomId(randomHandler), SpanId.GenerateRandomId(randomHandler), TraceOptions.DEFAULT); ISpan span = SpanBuilder.CreateWithRemoteParent(SPAN_NAME, spanContext, spanBuilderOptions) .StartSpan(); Assert.True(span.Context.IsValid); Assert.Equal(spanContext.TraceId, span.Context.TraceId); Assert.True(span.Context.TraceOptions.IsSampled); ISpanData spanData = ((Span)span).ToSpanData(); Assert.Equal(spanContext.SpanId, spanData.ParentSpanId); Assert.True(spanData.HasRemoteParent); }
public SpanDataTest() { spanContext = SpanContext.Create(TraceId.GenerateRandomId(random), SpanId.GenerateRandomId(random), TraceOptions.DEFAULT); parentSpanId = SpanId.GenerateRandomId(random); attributesMap.Add("MyAttributeKey1", AttributeValue.LongAttributeValue(10)); attributesMap.Add("MyAttributeKey2", AttributeValue.BooleanAttributeValue(true)); attributes = Attributes.Create(attributesMap, 1); annotationsList.Add(TimedEvent <IAnnotation> .Create(eventTimestamp1, annotation)); annotationsList.Add(TimedEvent <IAnnotation> .Create(eventTimestamp3, annotation)); annotations = TimedEvents <IAnnotation> .Create(annotationsList, 2); //networkEventsList.add(SpanData.TimedEvent.Create(eventTimestamp1, recvNetworkEvent)); //networkEventsList.add(SpanData.TimedEvent.Create(eventTimestamp2, sentNetworkEvent)); //networkEvents = TimedEvents.Create(networkEventsList, 3); messageEventsList.Add(TimedEvent <IMessageEvent> .Create(eventTimestamp1, recvMessageEvent)); messageEventsList.Add(TimedEvent <IMessageEvent> .Create(eventTimestamp2, sentMessageEvent)); messageEvents = TimedEvents <IMessageEvent> .Create(messageEventsList, 3); linksList.Add(Link.FromSpanContext(spanContext, LinkType.CHILD_LINKED_SPAN)); links = LinkList.Create(linksList, 0); }