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 }
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); }
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); }
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); }
public void FinishSpanUsingSpecificTimestamp() { var shim = new SpanShim(Defaults.GetOpenTelemetryMockSpan().Object); Assert.Throws <NotImplementedException>(() => shim.Finish(DateTimeOffset.UtcNow)); }