public void ShouldSampleRespectsSamplerChoice() { var m = new Mock <ISampler>(); m.Setup(x => x.ShouldSample(It.IsAny <ISpanContext>(), It.IsAny <bool>(), It.IsAny <ITraceId>(), It.IsAny <ISpanId>(), It.IsAny <string>(), It.IsAny <IEnumerable <ISpan> >())).Returns(true); Assert.True(RedisProfilerEntryToSpanConverter.ShouldSample(SpanContext.Invalid, "SET", m.Object, out var context, out var parentId)); m = new Mock <ISampler>(); m.Setup(x => x.ShouldSample(It.IsAny <ISpanContext>(), It.IsAny <bool>(), It.IsAny <ITraceId>(), It.IsAny <ISpanId>(), It.IsAny <string>(), It.IsAny <IEnumerable <ISpan> >())).Returns(false); Assert.False(RedisProfilerEntryToSpanConverter.ShouldSample(SpanContext.Invalid, "SET", m.Object, out context, out parentId)); }
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 <ISpanContext>(y => y == parentContext), It.Is <bool>(y => y == false), It.Is <ITraceId>(y => y == traceId && y == context.TraceId), It.Is <ISpanId>(y => y.IsValid && y == context.SpanId), It.Is <string>(y => y == "SET"), It.Is <IEnumerable <ISpan> >(y => y == null))); }
public void ShouldSampleGeneratesNewTraceIdForInvalidContext() { var m = new Mock <ISampler>(); m.Setup(x => x.ShouldSample(It.IsAny <ISpanContext>(), It.IsAny <bool>(), It.IsAny <ITraceId>(), It.IsAny <ISpanId>(), It.IsAny <string>(), It.IsAny <IEnumerable <ISpan> >())).Returns((ISpanContext parentContext, bool hasRemoteParent, ITraceId traceId, ISpanId spanId, string name, IEnumerable <ISpan> parentLinks) => parentContext.TraceOptions.IsSampled); RedisProfilerEntryToSpanConverter.ShouldSample(SpanContext.Invalid, "SET", m.Object, out var context, out var parentId); m.Verify(x => x.ShouldSample( It.Is <ISpanContext>(y => y == SpanContext.Invalid), It.Is <bool>(y => y == false), It.Is <ITraceId>(y => y.IsValid && y == context.TraceId), It.Is <ISpanId>(y => y.IsValid && y == context.SpanId), It.Is <string>(y => y == "SET"), It.Is <IEnumerable <ISpan> >(y => y == null))); Assert.Equal(TraceOptions.Default, context.TraceOptions); }
public void ShouldSampleDoesntThrowWithoutSampler() { RedisProfilerEntryToSpanConverter.ShouldSample(SpanContext.Invalid, "SET", null, out var context, out var parentId); }