diff --git a/instrumentation/spring/spring-core-2.0/javaagent/src/test/java/SimpleAsyncTaskExecutorInstrumentationTest.java b/instrumentation/spring/spring-core-2.0/javaagent/src/test/java/SimpleAsyncTaskExecutorInstrumentationTest.java index 20be618c19de..2fb1a6030f0a 100644 --- a/instrumentation/spring/spring-core-2.0/javaagent/src/test/java/SimpleAsyncTaskExecutorInstrumentationTest.java +++ b/instrumentation/spring/spring-core-2.0/javaagent/src/test/java/SimpleAsyncTaskExecutorInstrumentationTest.java @@ -3,11 +3,14 @@ * SPDX-License-Identifier: Apache-2.0 */ +import static org.junit.jupiter.api.Assumptions.assumeTrue; + import io.opentelemetry.api.GlobalOpenTelemetry; import io.opentelemetry.api.trace.SpanKind; import io.opentelemetry.api.trace.Tracer; import io.opentelemetry.instrumentation.testing.junit.AgentInstrumentationExtension; import io.opentelemetry.instrumentation.testing.junit.InstrumentationExtension; +import java.lang.reflect.Method; import java.util.concurrent.Callable; import java.util.concurrent.CountDownLatch; import org.junit.jupiter.api.Test; @@ -22,6 +25,23 @@ class SimpleAsyncTaskExecutorInstrumentationTest { private static final SimpleAsyncTaskExecutor EXECUTOR = new SimpleAsyncTaskExecutor(); + private static final Method submitListenableRunnable; + private static final Method submitListenableCallable; + + static { + // removed in spring 7 + submitListenableRunnable = findMethod("submitListenable", Runnable.class); + submitListenableCallable = findMethod("submitListenable", Callable.class); + } + + private static Method findMethod(String name, Class... parameterTypes) { + try { + return SimpleAsyncTaskExecutor.class.getMethod(name, parameterTypes); + } catch (Exception e) { + return null; + } + } + @Test void executeRunnable() { executeTwoTasks(EXECUTOR::execute); @@ -39,12 +59,14 @@ void submitCallable() { @Test void submitListenableRunnable() { - executeTwoTasks(task -> EXECUTOR.submitListenable((Runnable) task)); + assumeTrue(submitListenableRunnable != null); + executeTwoTasks(task -> submitListenableRunnable.invoke(EXECUTOR, task)); } @Test void submitListenableCallable() { - executeTwoTasks(task -> EXECUTOR.submitListenable((Callable) task)); + assumeTrue(submitListenableCallable != null); + executeTwoTasks(task -> submitListenableCallable.invoke(EXECUTOR, task)); } private static void executeTwoTasks(ThrowingConsumer task) {