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); }
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); }
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); }
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); }
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); }