Exemple #1
0
        public void AsChildOf_MultipleCallsWithSpanContext()
        {
            var tracerMock = GetDefaultTracerMock();
            var shim       = new SpanBuilderShim(tracerMock.Object, "foo");

            // Multiple calls
            var spanContext1 = SpanContextShimTests.GetSpanContextShim();
            var spanContext2 = SpanContextShimTests.GetSpanContextShim();

            shim.AsChildOf(spanContext1);
            shim.AsChildOf(spanContext2);

            // build
            shim.Start();

            tracerMock.Verify(o => o.StartSpan("foo", spanContext1.SpanContext, 0,
                                               It.Is <SpanCreationOptions>(so => so.StartTimestamp == default && so.Links.Single().Context.Equals(spanContext2.SpanContext))), Times.Once);
        }
Exemple #2
0
        public void AsChildOf_MultipleCallsWithSpan()
        {
            var tracer = TracerProvider.Default.GetTracer(TracerName);
            var shim   = new SpanBuilderShim(tracer, "foo");

            // Multiple calls
            var span1 = new SpanShim(tracer.StartSpan(SpanName1));
            var span2 = new SpanShim(tracer.StartSpan(SpanName2));

            shim.AsChildOf(span1);
            shim.AsChildOf(span2);

            // build
            var spanShim = (SpanShim)shim.Start();

            Assert.Equal("foo", spanShim.Span.Activity.OperationName);
            Assert.Contains(spanShim.Context.TraceId, spanShim.Span.Activity.TraceId.ToHexString());

            // TODO: Check for multi level parenting
        }
Exemple #3
0
        public void AsChildOf_MultipleCallsWithSpan()
        {
            var spanBuilderMock = GetDefaultSpanBuilderMock();
            var shim            = new SpanBuilderShim(GetDefaultTracer(spanBuilderMock), "foo");

            // Multiple calls
            var span1 = new SpanShim(Defaults.GetOpenTelemetryMockSpan().Object);
            var span2 = new SpanShim(Defaults.GetOpenTelemetryMockSpan().Object);

            shim.AsChildOf(span1);
            shim.AsChildOf(span2);

            // build
            shim.Start();

            spanBuilderMock.Verify(o => o.SetParent(span1.Span), Times.Once);
            spanBuilderMock.Verify(o => o.SetParent(It.IsAny <Trace.SpanContext>()), Times.Never);

            // The rest become links
            spanBuilderMock.Verify(o => o.AddLink(It.Is <Trace.ILink>(link => link.Context == span2.Span.Context)), Times.Once);
        }
Exemple #4
0
        public void AsChildOf_MultipleCallsWithSpanContext()
        {
            var spanBuilderMock = GetDefaultSpanBuilderMock();
            var shim            = new SpanBuilderShim(GetDefaultTracer(spanBuilderMock), "foo");

            // Multiple calls
            var spanContext1 = SpanContextShimTests.GetSpanContextShim();
            var spanContext2 = SpanContextShimTests.GetSpanContextShim();

            shim.AsChildOf(spanContext1);
            shim.AsChildOf(spanContext2);

            // build
            shim.Start();

            // Only a single call to SetParent
            spanBuilderMock.Verify(o => o.SetParent(spanContext1.SpanContext), Times.Once);
            spanBuilderMock.Verify(o => o.SetParent(It.IsAny <Trace.ISpan>()), Times.Never);

            // The rest become links
            spanBuilderMock.Verify(o => o.AddLink(It.Is <Trace.ILink>(link => link.Context == spanContext2.SpanContext)), Times.Once);
        }
Exemple #5
0
        public void AsChildOf_MultipleCallsWithSpanContext()
        {
            var tracer = TracerProvider.Default.GetTracer(TracerName);
            var shim   = new SpanBuilderShim(tracer, "foo");

            // Multiple calls
            var spanContext1 = SpanContextShimTests.GetSpanContextShim();
            var spanContext2 = SpanContextShimTests.GetSpanContextShim();

            // Add parent context
            shim.AsChildOf(spanContext1);

            // Adds as link as parent context already exists
            shim.AsChildOf(spanContext2);

            // build
            var spanShim = (SpanShim)shim.Start();

            Assert.Equal("foo", spanShim.Span.Activity.OperationName);
            Assert.Contains(spanContext1.TraceId, spanShim.Span.Activity.ParentId);
            Assert.Equal(spanContext2.SpanId, spanShim.Span.Activity.Links.First().Context.SpanId.ToHexString());
        }
Exemple #6
0
        public void AsChildOf_WithNullSpan()
        {
            var spanBuilderMock = GetDefaultSpanBuilderMock();
            var shim            = new SpanBuilderShim(GetDefaultTracer(spanBuilderMock), "foo");

            // Add a null parent
            shim.AsChildOf((global::OpenTracing.ISpan)null);

            // build
            shim.Start();

            spanBuilderMock.Verify(o => o.SetParent(It.IsAny <Trace.ISpan>()), Times.Never);
            spanBuilderMock.Verify(o => o.SetParent(It.IsAny <Trace.SpanContext>()), Times.Never);
        }
Exemple #7
0
        public void AsChildOf_WithNullSpan()
        {
            var tracerMock = GetDefaultTracerMock();
            var shim       = new SpanBuilderShim(tracerMock.Object, "foo");

            // Add a null parent
            shim.AsChildOf((global::OpenTracing.ISpan)null);

            // build
            shim.Start();

            tracerMock.Verify(o => o.StartSpan("foo", It.IsAny <ISpan>(), 0,
                                               It.Is <SpanCreationOptions>(so => so.StartTimestamp == default && !so.Links.Any())), Times.Once);
        }
Exemple #8
0
        public void AsChildOf_WithNullSpan()
        {
            var tracer = TracerProvider.Default.GetTracer(TracerName);
            var shim   = new SpanBuilderShim(tracer, "foo");

            // Add a null parent
            shim.AsChildOf((global::OpenTracing.ISpan)null);

            // build
            var spanShim = (SpanShim)shim.Start();

            Assert.Equal("foo", spanShim.Span.Activity.OperationName);
            Assert.Null(spanShim.Span.Activity.Parent);
        }
Exemple #9
0
        public void AsChildOfWithSpanContext()
        {
            var tracer = TracerProvider.Default.GetTracer(TracerName);
            var shim   = new SpanBuilderShim(tracer, "foo");

            // Add a parent
            var spanContext = SpanContextShimTests.GetSpanContextShim();
            var test        = shim.AsChildOf(spanContext);

            // build
            var spanShim = (SpanShim)shim.Start();

            Assert.NotNull(spanShim.Span.Activity.ParentId);
        }
Exemple #10
0
        public void AsChildOf_WithNullSpanContext()
        {
            var tracer = TracerProvider.Default.GetTracer(TracerName);
            var shim   = new SpanBuilderShim(tracer, "foo");

            // Add a null parent
            shim.AsChildOf((global::OpenTracing.ISpanContext)null);

            // build
            var spanShim = (SpanShim)shim.Start();

            // should be no parent.
            Assert.Null(spanShim.Span.Activity.Parent);
        }
        public void IgnoreActiveSpan()
        {
            var tracerMock = GetDefaultTracerMock();
            var shim       = new SpanBuilderShim(tracerMock.Object, "foo");

            // Add a parent. The shim requires that the ISpan implementation be a SpanShim
            shim.AsChildOf(new SpanShim(Defaults.GetOpenTelemetryMockSpan().Object));

            // Set to Ignore
            shim.IgnoreActiveSpan();

            // build
            shim.Start();

            tracerMock.Verify(o => o.StartRootSpan("foo", 0,
Exemple #12
0
        public void AsChildOfWithSpanContext()
        {
            var tracerMock = GetDefaultTracerMock();
            var shim       = new SpanBuilderShim(tracerMock.Object, "foo");

            // Add a parent
            var spanContext = SpanContextShimTests.GetSpanContextShim();

            shim.AsChildOf(spanContext);

            // build
            shim.Start();

            tracerMock.Verify(o => o.StartSpan("foo", spanContext.SpanContext, 0,
                                               It.Is <SpanCreationOptions>(so => so.StartTimestamp == default && !so.Links.Any())), Times.Once);
        }
Exemple #13
0
        public void AsChildOf_WithSpan()
        {
            var spanBuilderMock = GetDefaultSpanBuilderMock();
            var shim            = new SpanBuilderShim(GetDefaultTracer(spanBuilderMock), "foo");

            // Add a parent.
            var span = new SpanShim(Defaults.GetOpenTelemetryMockSpan().Object);

            shim.AsChildOf(span);

            // build
            shim.Start();

            spanBuilderMock.Verify(o => o.SetParent(span.Span), Times.Once);
            spanBuilderMock.Verify(o => o.SetParent(It.IsAny <Trace.SpanContext>()), Times.Never);
        }
Exemple #14
0
        public void IgnoreActiveSpan()
        {
            var tracer = TracerProvider.Default.GetTracer(TracerName);
            var shim   = new SpanBuilderShim(tracer, "foo");

            // Add a parent. The shim requires that the ISpan implementation be a SpanShim
            shim.AsChildOf(new SpanShim(tracer.StartSpan(SpanName1)));

            // Set to Ignore
            shim.IgnoreActiveSpan();

            // build
            var spanShim = (SpanShim)shim.Start();

            Assert.Equal("foo", spanShim.Span.Activity.OperationName);
        }
Exemple #15
0
        public void AsChildOf_WithSpan()
        {
            var tracer = TracerProvider.Default.GetTracer(TracerName);
            var shim   = new SpanBuilderShim(tracer, "foo");

            // Add a parent.
            var span = new SpanShim(tracer.StartSpan(SpanName1));

            shim.AsChildOf(span);

            // build
            var spanShim = (SpanShim)shim.Start();

            Assert.Equal("foo", spanShim.Span.Activity.OperationName);
            Assert.NotNull(spanShim.Span.Activity.ParentId);
        }
Exemple #16
0
        public void AsChildOf_WithSpan()
        {
            var tracerMock = GetDefaultTracerMock();
            var shim       = new SpanBuilderShim(tracerMock.Object, "foo");

            // Add a parent.
            var span = new SpanShim(Defaults.GetOpenTelemetryMockSpan().Object);

            shim.AsChildOf(span);

            // build
            shim.Start();

            tracerMock.Verify(o => o.StartSpan("foo", span.Span, 0,
                                               It.Is <SpanCreationOptions>(so => so.StartTimestamp == default && !so.Links.Any())), Times.Once);
        }
Exemple #17
0
        public void AsChildOfWithSpanContext()
        {
            var spanBuilderMock = GetDefaultSpanBuilderMock();
            var shim            = new SpanBuilderShim(GetDefaultTracer(spanBuilderMock), "foo");

            // Add a parent
            var spanContext = SpanContextShimTests.GetSpanContextShim();

            shim.AsChildOf(spanContext);

            // build
            shim.Start();

            spanBuilderMock.Verify(o => o.SetParent(spanContext.SpanContext), Times.Once);
            spanBuilderMock.Verify(o => o.SetParent(It.IsAny <Trace.ISpan>()), Times.Never);
        }
Exemple #18
0
        public void IgnoreActiveSpan()
        {
            var tracerMock = GetDefaultTracerMock();
            var shim       = new SpanBuilderShim(tracerMock.Object, "foo");

            // Add a parent. The shim requires that the ISpan implementation be a SpanShim
            shim.AsChildOf(new SpanShim(Defaults.GetOpenTelemetryMockSpan().Object));

            // Set to Ignore
            shim.IgnoreActiveSpan();

            // build
            shim.Start();

            tracerMock.Verify(o => o.StartRootSpan("foo", 0,
                                                   It.Is <SpanCreationOptions>(so => so.StartTimestamp == default && !so.Links.Any())), Times.Once);
        }
Exemple #19
0
        public void IgnoreActiveSpan()
        {
            var spanBuilderMock = GetDefaultSpanBuilderMock();
            var shim            = new SpanBuilderShim(GetDefaultTracer(spanBuilderMock), "foo");

            // Add a parent. The shim requires that the ISpan implementation be a SpanShim
            shim.AsChildOf(new SpanShim(Defaults.GetOpenTelemetryMockSpan().Object));

            // Set to Ignore
            shim.IgnoreActiveSpan();

            spanBuilderMock.Verify(o => o.SetParent(It.IsAny <Trace.SpanContext>()), Times.Never);

            // There should be two methods calls to the underlying the builder. SetNoParent is last.
            int callOrder = 0;

            spanBuilderMock.Setup(x => x.SetParent(It.IsAny <Trace.ISpan>())).Callback(() => Assert.Equal(0, callOrder++));
            spanBuilderMock.Setup(x => x.SetNoParent()).Callback(() => Assert.Equal(1, callOrder++));

            // build
            shim.Start();
        }