3333import static org .mockito .ArgumentMatchers .any ;
3434import static org .mockito .ArgumentMatchers .anyString ;
3535import static org .mockito .ArgumentMatchers .eq ;
36+ import static org .mockito .Mockito .lenient ;
3637import static org .mockito .Mockito .never ;
3738import static org .mockito .Mockito .verify ;
3839import static org .mockito .Mockito .when ;
4950import io .opentelemetry .api .trace .SpanBuilder ;
5051import io .opentelemetry .api .trace .SpanKind ;
5152import io .opentelemetry .api .trace .Tracer ;
53+ import io .opentelemetry .context .Scope ;
5254import java .net .ConnectException ;
5355import java .net .SocketTimeoutException ;
5456import java .util .Map ;
@@ -64,15 +66,17 @@ class OpenTelemetryTracingTracerTest {
6466 @ Mock private Tracer tracer ;
6567 @ Mock private SpanBuilder spanBuilder ;
6668 @ Mock private Span span ;
69+ @ Mock private Scope scope ;
6770 private OpenTelemetryTracingTracer openTelemetryTracingTracer ;
6871 private static final String ATTEMPT_SPAN_NAME = "Service/Method/attempt" ;
6972
7073 @ BeforeEach
7174 void setUp () {
72- when (tracer .spanBuilder (anyString ())).thenReturn (spanBuilder );
73- when (spanBuilder .setSpanKind (any (SpanKind .class ))).thenReturn (spanBuilder );
74- when (spanBuilder .setAllAttributes (any (Attributes .class ))).thenReturn (spanBuilder );
75- when (spanBuilder .startSpan ()).thenReturn (span );
75+ lenient ().when (tracer .spanBuilder (anyString ())).thenReturn (spanBuilder );
76+ lenient ().when (spanBuilder .setSpanKind (any (SpanKind .class ))).thenReturn (spanBuilder );
77+ lenient ().when (spanBuilder .setAllAttributes (any (Attributes .class ))).thenReturn (spanBuilder );
78+ lenient ().when (spanBuilder .startSpan ()).thenReturn (span );
79+ lenient ().when (span .makeCurrent ()).thenReturn (scope );
7680 openTelemetryTracingTracer =
7781 new OpenTelemetryTracingTracer (tracer , ApiTracerContext .empty (), ATTEMPT_SPAN_NAME );
7882 }
@@ -680,4 +684,23 @@ void testInjectTraceContext_addsHeaders() {
680684 assertThat (carrier .get ("traceparent" )).contains ("00000000000000000000000000000001" );
681685 assertThat (carrier .get ("traceparent" )).contains ("0000000000000002" );
682686 }
687+
688+ @ Test
689+ void testInScope_whenAttemptSpanActive_makesSpanCurrentAndClosesScope () {
690+ openTelemetryTracingTracer .attemptStarted (new Object (), 1 );
691+ ApiTracer .Scope tracerScope = openTelemetryTracingTracer .inScope ();
692+ verify (span ).makeCurrent ();
693+
694+ tracerScope .close ();
695+ verify (scope ).close ();
696+ }
697+
698+ @ Test
699+ void testInScope_whenAttemptSpanNull_returnsNoopScope () {
700+ ApiTracer .Scope tracerScope = openTelemetryTracingTracer .inScope ();
701+ verify (span , never ()).makeCurrent ();
702+
703+ tracerScope .close ();
704+ verify (scope , never ()).close ();
705+ }
683706}
0 commit comments