コード例 #1
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
        }
コード例 #2
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);
        }
コード例 #3
0
        public void AsChildOf_MultipleCallsWithSpan()
        {
            var tracerMock = GetDefaultTracerMock();
            var shim       = new SpanBuilderShim(tracerMock.Object, "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();

            tracerMock.Verify(
                o => o.StartSpan(
                    "foo",
                    span1.Span,
                    0,
                    It.Is <SpanCreationOptions>(so => so.StartTimestamp == default && so.Links.Single().Context.Equals(span2.Span.Context))), Times.Once);
        }
コード例 #4
0
        public void Activate()
        {
            var tracerMock = new Mock <ITracer>();
            var shim       = new ScopeManagerShim(tracerMock.Object);
            var scopeMock  = new Mock <IDisposable>();
            var spanShim   = new SpanShim(Defaults.GetOpenTelemetryMockSpan().Object);

            tracerMock.Setup(x => x.WithSpan(spanShim.Span)).Returns(scopeMock.Object);

            using (shim.Activate(spanShim, true))
            {
#if DEBUG
                Assert.Equal(1, shim.SpanScopeTableCount);
#endif
            }

#if DEBUG
            Assert.Equal(0, shim.SpanScopeTableCount);
#endif
            tracerMock.Verify(x => x.WithSpan(spanShim.Span), Times.Once);
            scopeMock.Verify(x => x.Dispose(), Times.Once);
        }
コード例 #5
0
        public void FinishSpanUsingSpecificTimestamp()
        {
            var shim = new SpanShim(Defaults.GetOpenTelemetryMockSpan().Object);

            Assert.Throws <NotImplementedException>(() => shim.Finish(DateTimeOffset.UtcNow));
        }