diff --git a/instrumentation/guava-10.0/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/guava/v10_0/AsyncEventBusTest.java b/instrumentation/guava-10.0/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/guava/v10_0/AsyncEventBusTest.java new file mode 100644 index 000000000000..6b28bcaf91f5 --- /dev/null +++ b/instrumentation/guava-10.0/javaagent/src/test/java/io/opentelemetry/javaagent/instrumentation/guava/v10_0/AsyncEventBusTest.java @@ -0,0 +1,44 @@ +/* + * Copyright The OpenTelemetry Authors + * SPDX-License-Identifier: Apache-2.0 + */ + +package io.opentelemetry.javaagent.instrumentation.guava.v10_0; + +import com.google.common.eventbus.AsyncEventBus; +import com.google.common.eventbus.Subscribe; +import io.opentelemetry.instrumentation.testing.junit.AgentInstrumentationExtension; +import io.opentelemetry.instrumentation.testing.junit.InstrumentationExtension; +import java.util.concurrent.ExecutorService; +import java.util.concurrent.Executors; +import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.extension.RegisterExtension; + +class AsyncEventBusTest { + + @RegisterExtension + static final InstrumentationExtension testing = AgentInstrumentationExtension.create(); + + static final ExecutorService executor = Executors.newSingleThreadExecutor(); + static final AsyncEventBus asyncEventBus = new AsyncEventBus(executor); + + @Test + void contextPropagation() { + class Listener { + + @Subscribe + public void onEvent(String event) { + testing.runWithSpan("listener", () -> {}); + } + } + + asyncEventBus.register(new Listener()); + + testing.runWithSpan("parent", () -> asyncEventBus.post("test")); + + testing.waitAndAssertTraces( + trace -> + trace.hasSpansSatisfyingExactly( + span -> span.hasName("parent"), span -> span.hasName("listener"))); + } +} diff --git a/javaagent-tooling/src/main/java/io/opentelemetry/javaagent/tooling/ignore/AdditionalLibraryIgnoredTypesConfigurer.java b/javaagent-tooling/src/main/java/io/opentelemetry/javaagent/tooling/ignore/AdditionalLibraryIgnoredTypesConfigurer.java index 5bc4e05babd4..02e4c5039cd3 100644 --- a/javaagent-tooling/src/main/java/io/opentelemetry/javaagent/tooling/ignore/AdditionalLibraryIgnoredTypesConfigurer.java +++ b/javaagent-tooling/src/main/java/io/opentelemetry/javaagent/tooling/ignore/AdditionalLibraryIgnoredTypesConfigurer.java @@ -250,7 +250,8 @@ public void configure(IgnoredTypesBuilder builder) { .ignoreClass("com.google.common.") .allowClass("com.google.common.util.concurrent.") .allowClass("com.google.common.base.internal.Finalizer") - .allowClass("com.google.common.base.Java8Usage$$Lambda"); + .allowClass("com.google.common.base.Java8Usage$$Lambda") + .allowClass("com.google.common.eventbus.Subscriber$"); builder .ignoreClass("com.google.inject.")