|
3 | 3 | import com.google.common.eventbus.AsyncEventBus; |
4 | 4 | import com.google.common.eventbus.Subscribe; |
5 | 5 | import io.opentelemetry.api.trace.Span; |
| 6 | +import io.opentelemetry.instrumentation.testing.junit.AgentInstrumentationExtension; |
| 7 | +import io.opentelemetry.instrumentation.testing.junit.InstrumentationExtension; |
6 | 8 | import org.junit.jupiter.api.Test; |
| 9 | +import org.junit.jupiter.api.extension.RegisterExtension; |
7 | 10 | import java.util.concurrent.ExecutorService; |
8 | 11 | import java.util.concurrent.Executors; |
9 | 12 |
|
10 | 13 | import static org.assertj.core.api.Assertions.assertThat; |
11 | 14 |
|
12 | 15 | public class AsyncEventBusTest { |
13 | 16 |
|
| 17 | + @RegisterExtension |
| 18 | + static final InstrumentationExtension testing = AgentInstrumentationExtension.create(); |
| 19 | + |
14 | 20 | static final ExecutorService executor = Executors.newSingleThreadExecutor(); |
15 | 21 |
|
16 | 22 | static final AsyncEventBus asyncEventBus = new AsyncEventBus(executor); |
17 | 23 |
|
18 | 24 | @Test |
19 | 25 | void testAsyncEventBusTakeEffect() { |
20 | | - String traceId = Span.current().getSpanContext().getTraceId(); |
| 26 | + class Listener { |
| 27 | + String receivedTraceId; |
21 | 28 |
|
22 | | - class EventListener { |
23 | 29 | @Subscribe |
24 | | - public void handleEvent(String event) { |
25 | | - String eventTraceId = Span.current().getSpanContext().getTraceId(); |
26 | | - assertThat(eventTraceId).isNotEqualTo("00000000000000000000000000000000"); |
27 | | - assertThat(eventTraceId).isEqualTo(traceId); |
| 30 | + public void onEvent(String event) { |
| 31 | + testing.runWithSpan("listener", () -> { |
| 32 | + receivedTraceId = Span.current().getSpanContext().getTraceId(); |
| 33 | + }); |
28 | 34 | } |
29 | 35 | } |
30 | 36 |
|
31 | | - asyncEventBus.register(new EventListener()); |
32 | | - asyncEventBus.post("Hello, AsyncEventBus!"); |
| 37 | + Listener listener = new Listener(); |
| 38 | + asyncEventBus.register(listener); |
| 39 | + |
| 40 | + String[] parentTraceId = new String[1]; |
| 41 | + testing.runWithSpan("parent", () -> { |
| 42 | + parentTraceId[0] = Span.current().getSpanContext().getTraceId(); |
| 43 | + asyncEventBus.post("test"); |
| 44 | + }); |
| 45 | + |
| 46 | + testing.waitAndAssertTraces( |
| 47 | + trace |
| 48 | + -> trace.hasSpansSatisfyingExactly( |
| 49 | + span -> span.hasName("parent"), |
| 50 | + span -> span.hasName("listener") |
| 51 | + )); |
| 52 | + |
| 53 | + assertThat(listener.receivedTraceId) |
| 54 | + .isNotNull() |
| 55 | + .isNotEqualTo("00000000000000000000000000000000") |
| 56 | + .isEqualTo(parentTraceId[0]); |
33 | 57 | } |
34 | 58 | } |
0 commit comments