6
6
package io .opentelemetry .opentracingshim ;
7
7
8
8
import static org .assertj .core .api .Assertions .assertThat ;
9
+ import static org .mockito .Mockito .doThrow ;
9
10
import static org .mockito .Mockito .mock ;
11
+ import static org .mockito .Mockito .verify ;
10
12
13
+ import io .opentelemetry .api .GlobalOpenTelemetry ;
14
+ import io .opentelemetry .api .OpenTelemetry ;
11
15
import io .opentelemetry .api .baggage .propagation .W3CBaggagePropagator ;
12
- import io .opentelemetry .api .trace .Tracer ;
16
+ import io .opentelemetry .api .trace .TracerProvider ;
13
17
import io .opentelemetry .context .Context ;
14
18
import io .opentelemetry .context .propagation .TextMapPropagator ;
19
+ import io .opentelemetry .sdk .OpenTelemetrySdk ;
15
20
import io .opentelemetry .sdk .testing .junit5 .OpenTelemetryExtension ;
21
+ import io .opentelemetry .sdk .trace .SdkTracerProvider ;
16
22
import io .opentracing .Scope ;
17
23
import io .opentracing .Span ;
18
24
import io .opentracing .SpanContext ;
25
+ import io .opentracing .Tracer ;
19
26
import io .opentracing .propagation .Format ;
20
27
import io .opentracing .propagation .TextMapAdapter ;
21
28
import io .opentracing .tag .BooleanTag ;
26
33
import java .util .Collections ;
27
34
import java .util .HashMap ;
28
35
import java .util .Map ;
36
+ import org .junit .jupiter .api .AfterEach ;
29
37
import org .junit .jupiter .api .BeforeEach ;
30
38
import org .junit .jupiter .api .Test ;
31
39
import org .junit .jupiter .api .extension .RegisterExtension ;
@@ -40,15 +48,22 @@ class TracerShimTest {
40
48
@ RegisterExtension static OpenTelemetryExtension otelTesting = OpenTelemetryExtension .create ();
41
49
42
50
TracerShim tracerShim ;
43
- Tracer tracer ;
51
+ TracerProvider provider ;
44
52
45
53
@ BeforeEach
46
54
void setUp () {
47
- tracer = otelTesting .getOpenTelemetry ().getTracer ("opentracingshim" );
55
+ GlobalOpenTelemetry .resetForTest ();
56
+ GlobalOpenTelemetry .set (otelTesting .getOpenTelemetry ());
57
+
58
+ provider = otelTesting .getOpenTelemetry ().getTracerProvider ();
48
59
TextMapPropagator propagator =
49
60
otelTesting .getOpenTelemetry ().getPropagators ().getTextMapPropagator ();
50
- ;
51
- tracerShim = new TracerShim (tracer , propagator , propagator );
61
+ tracerShim = new TracerShim (provider , propagator , propagator );
62
+ }
63
+
64
+ @ AfterEach
65
+ void cleanup () {
66
+ GlobalOpenTelemetry .resetForTest ();
52
67
}
53
68
54
69
@ Test
@@ -278,8 +293,8 @@ void inject_textMap() {
278
293
Map <String , String > map = new HashMap <>();
279
294
CustomTextMapPropagator textMapPropagator = new CustomTextMapPropagator ();
280
295
CustomTextMapPropagator httpHeadersPropagator = new CustomTextMapPropagator ();
281
- tracerShim = new TracerShim (tracer , textMapPropagator , httpHeadersPropagator );
282
- io .opentelemetry .api .trace .Span span = tracer .spanBuilder ("span" ).startSpan ();
296
+ tracerShim = new TracerShim (provider , textMapPropagator , httpHeadersPropagator );
297
+ io .opentelemetry .api .trace .Span span = tracerShim . tracer () .spanBuilder ("span" ).startSpan ();
283
298
SpanContext context = new SpanShim (span ).context ();
284
299
285
300
tracerShim .inject (context , Format .Builtin .TEXT_MAP , new TextMapAdapter (map ));
@@ -292,8 +307,8 @@ void inject_httpHeaders() {
292
307
Map <String , String > map = new HashMap <>();
293
308
CustomTextMapPropagator textMapPropagator = new CustomTextMapPropagator ();
294
309
CustomTextMapPropagator httpHeadersPropagator = new CustomTextMapPropagator ();
295
- tracerShim = new TracerShim (tracer , textMapPropagator , httpHeadersPropagator );
296
- io .opentelemetry .api .trace .Span span = tracer .spanBuilder ("span" ).startSpan ();
310
+ tracerShim = new TracerShim (provider , textMapPropagator , httpHeadersPropagator );
311
+ io .opentelemetry .api .trace .Span span = tracerShim . tracer () .spanBuilder ("span" ).startSpan ();
297
312
SpanContext context = new SpanShim (span ).context ();
298
313
299
314
tracerShim .inject (context , Format .Builtin .HTTP_HEADERS , new TextMapAdapter (map ));
@@ -306,7 +321,7 @@ void extract_textMap() {
306
321
Map <String , String > map = new HashMap <>();
307
322
CustomTextMapPropagator textMapPropagator = new CustomTextMapPropagator ();
308
323
CustomTextMapPropagator httpHeadersPropagator = new CustomTextMapPropagator ();
309
- tracerShim = new TracerShim (tracer , textMapPropagator , httpHeadersPropagator );
324
+ tracerShim = new TracerShim (provider , textMapPropagator , httpHeadersPropagator );
310
325
311
326
tracerShim .extract (Format .Builtin .TEXT_MAP , new TextMapAdapter (map ));
312
327
assertThat (textMapPropagator .isExtracted ()).isTrue ();
@@ -318,7 +333,7 @@ void extract_httpHeaders() {
318
333
Map <String , String > map = new HashMap <>();
319
334
CustomTextMapPropagator textMapPropagator = new CustomTextMapPropagator ();
320
335
CustomTextMapPropagator httpHeadersPropagator = new CustomTextMapPropagator ();
321
- tracerShim = new TracerShim (tracer , textMapPropagator , httpHeadersPropagator );
336
+ tracerShim = new TracerShim (provider , textMapPropagator , httpHeadersPropagator );
322
337
323
338
tracerShim .extract (Format .Builtin .HTTP_HEADERS , new TextMapAdapter (map ));
324
339
assertThat (textMapPropagator .isExtracted ()).isFalse ();
@@ -328,7 +343,7 @@ void extract_httpHeaders() {
328
343
@ Test
329
344
void extract_onlyBaggage () {
330
345
W3CBaggagePropagator propagator = W3CBaggagePropagator .getInstance ();
331
- tracerShim = new TracerShim (tracer , propagator , TextMapPropagator .noop ());
346
+ tracerShim = new TracerShim (provider , propagator , TextMapPropagator .noop ());
332
347
333
348
io .opentelemetry .api .baggage .Baggage baggage =
334
349
io .opentelemetry .api .baggage .Baggage .builder ().put ("foo" , "bar" ).build ();
@@ -342,8 +357,44 @@ void extract_onlyBaggage() {
342
357
}
343
358
344
359
@ Test
345
- void close () {
360
+ void close_OpenTelemetrySdk () {
361
+ SdkTracerProvider sdkProvider = mock (SdkTracerProvider .class );
362
+ doThrow (new RuntimeException ("testing error" )).when (sdkProvider ).close ();
363
+
364
+ Tracer tracerShim =
365
+ OpenTracingShim .createTracerShim (
366
+ OpenTelemetrySdk .builder ().setTracerProvider (sdkProvider ).build ());
367
+ tracerShim .close ();
368
+
369
+ verify (sdkProvider ).close ();
370
+
371
+ Span otSpan = tracerShim .buildSpan (null ).start ();
372
+ io .opentelemetry .api .trace .Span span = ((SpanShim ) otSpan ).getSpan ();
373
+ assertThat (span .getSpanContext ().isValid ()).isFalse ();
374
+ }
375
+
376
+ @ Test
377
+ void close_GlobalOpenTelemetry () {
378
+ GlobalOpenTelemetry .resetForTest ();
379
+ SdkTracerProvider sdkProvider = mock (SdkTracerProvider .class );
380
+ doThrow (new RuntimeException ("testing error" )).when (sdkProvider ).close ();
381
+ GlobalOpenTelemetry .set (OpenTelemetrySdk .builder ().setTracerProvider (sdkProvider ).build ());
382
+
383
+ Tracer tracerShim = OpenTracingShim .createTracerShim (GlobalOpenTelemetry .get ());
346
384
tracerShim .close ();
385
+
386
+ verify (sdkProvider ).close ();
387
+
388
+ Span otSpan = tracerShim .buildSpan (null ).start ();
389
+ io .opentelemetry .api .trace .Span span = ((SpanShim ) otSpan ).getSpan ();
390
+ assertThat (span .getSpanContext ().isValid ()).isFalse ();
391
+ }
392
+
393
+ @ Test
394
+ void close_NoopOpenTelemetry () {
395
+ Tracer tracerShim = OpenTracingShim .createTracerShim (OpenTelemetry .noop ());
396
+ tracerShim .close ();
397
+
347
398
Span otSpan = tracerShim .buildSpan (null ).start ();
348
399
io .opentelemetry .api .trace .Span span = ((SpanShim ) otSpan ).getSpan ();
349
400
assertThat (span .getSpanContext ().isValid ()).isFalse ();
@@ -390,7 +441,8 @@ void doesNotCrash() {
390
441
391
442
@ Test
392
443
void noopDoesNotCrash () {
393
- tracerShim .close ();
444
+ Tracer tracerShim = OpenTracingShim .createTracerShim (OpenTelemetry .noop ());
445
+
394
446
Span span =
395
447
tracerShim
396
448
.buildSpan ("test" )
0 commit comments