|
65 | 65 | import java.util.List; |
66 | 66 | import java.util.Map; |
67 | 67 | import java.util.Properties; |
| 68 | +import java.util.concurrent.ExecutorService; |
| 69 | +import java.util.concurrent.Executors; |
| 70 | +import java.util.concurrent.Future; |
68 | 71 | import java.util.concurrent.TimeUnit; |
69 | 72 | import java.util.function.BiFunction; |
70 | 73 | import java.util.function.Consumer; |
|
74 | 77 | import org.junit.jupiter.api.extension.ExtendWith; |
75 | 78 | import org.junit.jupiter.api.extension.RegisterExtension; |
76 | 79 | import org.mockito.Mock; |
| 80 | +import org.mockito.MockedStatic; |
77 | 81 | import org.mockito.Mockito; |
78 | 82 | import org.mockito.junit.jupiter.MockitoExtension; |
79 | 83 | import org.mockito.junit.jupiter.MockitoSettings; |
@@ -674,4 +678,36 @@ void configurationError_ClosesResources() { |
674 | 678 |
|
675 | 679 | logs.assertContains("Error closing io.opentelemetry.sdk.trace.SdkTracerProvider: Error!"); |
676 | 680 | } |
| 681 | + |
| 682 | + @Test |
| 683 | + @SuppressWarnings("unchecked") |
| 684 | + void test() throws Exception { |
| 685 | + AutoConfiguredOpenTelemetrySdkBuilder globalBuilder = builder.setResultAsGlobal(); |
| 686 | + ExecutorService executor = Executors.newSingleThreadExecutor(); |
| 687 | + |
| 688 | + OpenTelemetry gotGetOutput; |
| 689 | + AutoConfiguredOpenTelemetrySdk autoConfiguredSdk; |
| 690 | + try (MockedStatic<GlobalOpenTelemetry> mockGot = |
| 691 | + Mockito.mockStatic(GlobalOpenTelemetry.class)) { |
| 692 | + mockGot.when(GlobalOpenTelemetry::get).thenCallRealMethod(); |
| 693 | + mockGot.when(() -> GlobalOpenTelemetry.set(any(Supplier.class))).thenCallRealMethod(); |
| 694 | + mockGot |
| 695 | + .when(() -> GlobalOpenTelemetry.set(any(OpenTelemetry.class))) |
| 696 | + .then( |
| 697 | + invocation -> { |
| 698 | + Thread.sleep(1000); |
| 699 | + return invocation.callRealMethod(); |
| 700 | + }); |
| 701 | + |
| 702 | + Future<AutoConfiguredOpenTelemetrySdk> autoConfiguredSdkFuture = |
| 703 | + executor.submit(globalBuilder::build); |
| 704 | + gotGetOutput = GlobalOpenTelemetry.get(); |
| 705 | + autoConfiguredSdk = autoConfiguredSdkFuture.get(); |
| 706 | + } |
| 707 | + assertThat(gotGetOutput) |
| 708 | + .extracting("delegate") |
| 709 | + .isSameAs(autoConfiguredSdk.getOpenTelemetrySdk()); |
| 710 | + |
| 711 | + executor.shutdown(); |
| 712 | + } |
677 | 713 | } |
0 commit comments