コード例 #1
0
        public void WithSpan_NoopOnBrokenScope(bool stopSpan, bool recordEvents)
        {
            var spanContext = new SpanContext(ActivityTraceId.CreateRandom(), ActivitySpanId.CreateRandom(), recordEvents ? ActivityTraceFlags.Recorded : ActivityTraceFlags.None);

            var parentSpan  = tracer.StartSpan("parent", spanContext);
            var parentScope = CurrentSpanUtils.WithSpan(parentSpan, stopSpan);

            var childSpan     = (Span)tracer.StartSpan("child", parentSpan);
            var childActivity = childSpan.Activity;

            Assert.Same(parentSpan, CurrentSpanUtils.CurrentSpan);

            var childScope = CurrentSpanUtils.WithSpan(childSpan, stopSpan);

            parentScope.Dispose();

            Assert.Same(childSpan, CurrentSpanUtils.CurrentSpan);
            Assert.Equal(childActivity, Activity.Current);
        }
コード例 #2
0
        public void WithSpan_WrongActivity(bool stopSpan, bool recordEvents)
        {
            var spanContext = new SpanContext(ActivityTraceId.CreateRandom(), ActivitySpanId.CreateRandom(), recordEvents ? ActivityTraceFlags.Recorded : ActivityTraceFlags.None);

            var span = (Span)tracer.StartSpan("foo", spanContext);

            Assert.Same(BlankSpan.Instance, CurrentSpanUtils.CurrentSpan);
            using (CurrentSpanUtils.WithSpan(span, stopSpan))
            {
                Assert.Same(span.Activity, Activity.Current);
                Assert.Same(span, CurrentSpanUtils.CurrentSpan);

                var anotherActivity = new Activity("foo").Start();
            }

            Assert.Same(BlankSpan.Instance, CurrentSpanUtils.CurrentSpan);
            Assert.NotSame(span.Activity, Activity.Current);
            Assert.NotNull(Activity.Current);
        }
コード例 #3
0
        public void WithSpan_SameActivityCreateScopeTwice()
        {
            var activity = new Activity("foo").Start();
            var span     = Span.StartSpan(
                activity,
                Tracestate.Empty,
                SpanKind.Internal,
                TraceParams.Default,
                startEndHandler);

            using (CurrentSpanUtils.WithSpan(span, true))
                using (CurrentSpanUtils.WithSpan(span, true))
                {
                    Assert.Same(activity, Activity.Current);
                    Assert.Same(span, CurrentSpanUtils.CurrentSpan);
                }

            Assert.Same(BlankSpan.Instance, CurrentSpanUtils.CurrentSpan);
            Assert.Null(Activity.Current);
        }
コード例 #4
0
        public void WithSpan_NotOwningActivity(bool stopSpan, bool recordEvents)
        {
            var activity = new Activity("foo");

            if (recordEvents)
            {
                activity.ActivityTraceFlags |= ActivityTraceFlags.Recorded;
            }

            activity.Start();
            var span = (Span)tracer.StartSpanFromActivity("foo", activity);

            Assert.Same(BlankSpan.Instance, CurrentSpanUtils.CurrentSpan);
            using (CurrentSpanUtils.WithSpan(span, stopSpan))
            {
                Assert.Same(span.Activity, Activity.Current);
                Assert.Same(span, CurrentSpanUtils.CurrentSpan);
            }

            Assert.Same(BlankSpan.Instance, CurrentSpanUtils.CurrentSpan);
            Assert.Equal(activity, Activity.Current);
        }
コード例 #5
0
        public void WithSpan_RestoresParentScope(bool stopSpan, bool recordEvents)
        {
            var parentActivity = new Activity("parent").Start();

            if (recordEvents)
            {
                parentActivity.ActivityTraceFlags |= ActivityTraceFlags.Recorded;
            }

            var parentSpan = Span.StartSpan(
                parentActivity,
                Tracestate.Empty,
                SpanKind.Internal,
                TraceParams.Default,
                startEndHandler);

            var parentScope = CurrentSpanUtils.WithSpan(parentSpan, stopSpan);

            var childActivity = new Activity("child").Start();
            var childSpan     = Span.StartSpan(
                childActivity,
                Tracestate.Empty,
                SpanKind.Internal,
                TraceParams.Default,
                startEndHandler);

            Assert.Same(BlankSpan.Instance, CurrentSpanUtils.CurrentSpan);

            var childScope = CurrentSpanUtils.WithSpan(childSpan, stopSpan);

            childScope.Dispose();

            Assert.Equal(stopSpan & recordEvents, childSpan.HasEnded);
            Assert.False(parentSpan.HasEnded);

            Assert.Same(parentSpan, CurrentSpanUtils.CurrentSpan);
            Assert.Equal(parentActivity, Activity.Current);
        }