From 9e7aa67ce6ac5d672600429bf96666d02262d61f Mon Sep 17 00:00:00 2001 From: Bruce Bujon Date: Tue, 9 Jul 2024 10:31:37 +0200 Subject: [PATCH] Refactor Java concurrency instrumentations (#7101) * feat(concurrent): Refactor instrumentations per feature * chore(concurrent): Move Java classes * feat(concurrency): Refactor test suites * feat(concurrency): Unify instrumentation names * feat(concurrency): Introduce instrumentation names constant class --- .../AsyncPropagatingDisableInstrumentation.java | 3 ++- .../ConcurrentInstrumentationNames.java | 8 ++++++++ .../concurrent/TaskUnwrappingInstrumentation.java | 4 +++- .../WrapRunnableAsNewTaskInstrumentation.java | 3 ++- .../AbstractExecutorInstrumentation.java | 7 +++---- .../JavaExecutorInstrumentation.java | 2 +- .../NonStandardExecutorInstrumentation.java | 5 +++-- .../RejectedExecutionHandlerInstrumentation.java | 5 +++-- .../ThreadPoolExecutorInstrumentation.java | 6 +++--- .../JavaForkJoinPoolInstrumentation.java | 6 ++++-- .../JavaForkJoinTaskInstrumentation.java | 6 ++++-- .../ConsumerTaskInstrumentation.java | 11 ++++++++--- .../RunnableFutureInstrumentation.java | 5 +++-- .../{ => runnable}/RunnableInstrumentation.java | 6 ++++-- .../{ => timer}/JavaTimerInstrumentation.java | 6 ++++-- .../{ => timer}/TimerTaskInstrumentation.java | 7 +++++-- .../src/test/groovy/CrossedContextTest.groovy | 1 + .../ExecutorInstrumentationTest.groovy | 15 +++++++-------- .../NettyExecutorInstrumentationTest.groovy | 3 +++ .../RecursiveThreadPoolPropagationTest.groovy | 5 +++++ .../{ => executor}/RejectedExecutionTest.groovy | 5 +++++ .../test/groovy/executor/ToBeIgnoredExecutor.java | 11 +++++++++++ .../ForkJoinPoolPropagationTest.groovy | 2 ++ .../FutureTaskContinuationTest.groovy | 3 ++- .../{ => runnable}/ModuleInjectionTest.groovy | 2 ++ .../{ => timer}/TimerTaskContinuationTest.groovy | 2 ++ .../executor}/CustomThreadPoolExecutor.java | 2 ++ .../TypeAwareThreadPoolExecutor.java | 2 ++ .../recursive}/RecursiveThreadPoolExecution.java | 2 ++ ...siveThreadPoolMixedSubmissionAndExecution.java | 2 ++ .../recursive}/RecursiveThreadPoolSubmission.java | 2 ++ .../ExecutingRejectedExecutionHandler.java | 2 ++ .../SwallowingRejectedExecutionHandler.java | 2 ++ .../src/test/java/{ => forkjoin}/LinearTask.java | 2 ++ .../test/java/{ => forkjoin}/PeriodicTask.java | 2 ++ .../test/java/{ => runnable}/CheckpointTask.java | 2 ++ .../java/{ => runnable}/ComparableAsyncChild.java | 2 ++ .../src/test/java/{ => runnable}/Descendant.java | 2 ++ .../test/java/{ => runnable}/JavaAsyncChild.java | 2 ++ .../{groovy => java/runnable}/SettableFuture.java | 2 ++ 40 files changed, 128 insertions(+), 39 deletions(-) create mode 100644 dd-java-agent/instrumentation/java-concurrent/src/main/java/datadog/trace/instrumentation/java/concurrent/ConcurrentInstrumentationNames.java rename dd-java-agent/instrumentation/java-concurrent/src/main/java/datadog/trace/instrumentation/java/concurrent/{ => executor}/AbstractExecutorInstrumentation.java (89%) rename dd-java-agent/instrumentation/java-concurrent/src/main/java/datadog/trace/instrumentation/java/concurrent/{ => executor}/JavaExecutorInstrumentation.java (97%) rename dd-java-agent/instrumentation/java-concurrent/src/main/java/datadog/trace/instrumentation/java/concurrent/{ => executor}/NonStandardExecutorInstrumentation.java (85%) rename dd-java-agent/instrumentation/java-concurrent/src/main/java/datadog/trace/instrumentation/java/concurrent/{ => executor}/RejectedExecutionHandlerInstrumentation.java (95%) rename dd-java-agent/instrumentation/java-concurrent/src/main/java/datadog/trace/instrumentation/java/concurrent/{ => executor}/ThreadPoolExecutorInstrumentation.java (97%) rename dd-java-agent/instrumentation/java-concurrent/src/main/java/datadog/trace/instrumentation/java/concurrent/{ => forkjoin}/JavaForkJoinPoolInstrumentation.java (90%) rename dd-java-agent/instrumentation/java-concurrent/src/main/java/datadog/trace/instrumentation/java/concurrent/{ => forkjoin}/JavaForkJoinTaskInstrumentation.java (92%) rename dd-java-agent/instrumentation/java-concurrent/src/main/java/datadog/trace/instrumentation/java/concurrent/{ => runnable}/ConsumerTaskInstrumentation.java (83%) rename dd-java-agent/instrumentation/java-concurrent/src/main/java/datadog/trace/instrumentation/java/concurrent/{ => runnable}/RunnableFutureInstrumentation.java (97%) rename dd-java-agent/instrumentation/java-concurrent/src/main/java/datadog/trace/instrumentation/java/concurrent/{ => runnable}/RunnableInstrumentation.java (88%) rename dd-java-agent/instrumentation/java-concurrent/src/main/java/datadog/trace/instrumentation/java/concurrent/{ => timer}/JavaTimerInstrumentation.java (88%) rename dd-java-agent/instrumentation/java-concurrent/src/main/java/datadog/trace/instrumentation/java/concurrent/{ => timer}/TimerTaskInstrumentation.java (81%) rename dd-java-agent/instrumentation/java-concurrent/src/test/groovy/{ => executor}/ExecutorInstrumentationTest.groovy (98%) rename dd-java-agent/instrumentation/java-concurrent/src/test/groovy/{ => executor}/NettyExecutorInstrumentationTest.groovy (99%) rename dd-java-agent/instrumentation/java-concurrent/src/test/groovy/{ => executor}/RecursiveThreadPoolPropagationTest.groovy (99%) rename dd-java-agent/instrumentation/java-concurrent/src/test/groovy/{ => executor}/RejectedExecutionTest.groovy (97%) create mode 100644 dd-java-agent/instrumentation/java-concurrent/src/test/groovy/executor/ToBeIgnoredExecutor.java rename dd-java-agent/instrumentation/java-concurrent/src/test/groovy/{ => forkjoin}/ForkJoinPoolPropagationTest.groovy (99%) rename dd-java-agent/instrumentation/java-concurrent/src/test/groovy/{ => runnable}/FutureTaskContinuationTest.groovy (97%) rename dd-java-agent/instrumentation/java-concurrent/src/test/groovy/{ => runnable}/ModuleInjectionTest.groovy (96%) rename dd-java-agent/instrumentation/java-concurrent/src/test/groovy/{ => timer}/TimerTaskContinuationTest.groovy (99%) rename dd-java-agent/instrumentation/java-concurrent/src/test/{groovy => java/executor}/CustomThreadPoolExecutor.java (99%) rename dd-java-agent/instrumentation/java-concurrent/src/test/java/{ => executor}/TypeAwareThreadPoolExecutor.java (97%) rename dd-java-agent/instrumentation/java-concurrent/src/test/java/{ => executor/recursive}/RecursiveThreadPoolExecution.java (97%) rename dd-java-agent/instrumentation/java-concurrent/src/test/java/{ => executor/recursive}/RecursiveThreadPoolMixedSubmissionAndExecution.java (97%) rename dd-java-agent/instrumentation/java-concurrent/src/test/java/{ => executor/recursive}/RecursiveThreadPoolSubmission.java (97%) rename dd-java-agent/instrumentation/java-concurrent/src/test/java/{ => executor/rejectedexecutionhandler}/ExecutingRejectedExecutionHandler.java (88%) rename dd-java-agent/instrumentation/java-concurrent/src/test/java/{ => executor/rejectedexecutionhandler}/SwallowingRejectedExecutionHandler.java (91%) rename dd-java-agent/instrumentation/java-concurrent/src/test/java/{ => forkjoin}/LinearTask.java (98%) rename dd-java-agent/instrumentation/java-concurrent/src/test/java/{ => forkjoin}/PeriodicTask.java (96%) rename dd-java-agent/instrumentation/java-concurrent/src/test/java/{ => runnable}/CheckpointTask.java (97%) rename dd-java-agent/instrumentation/java-concurrent/src/test/java/{ => runnable}/ComparableAsyncChild.java (97%) rename dd-java-agent/instrumentation/java-concurrent/src/test/java/{ => runnable}/Descendant.java (97%) rename dd-java-agent/instrumentation/java-concurrent/src/test/java/{ => runnable}/JavaAsyncChild.java (98%) rename dd-java-agent/instrumentation/java-concurrent/src/test/{groovy => java/runnable}/SettableFuture.java (96%) diff --git a/dd-java-agent/instrumentation/java-concurrent/src/main/java/datadog/trace/instrumentation/java/concurrent/AsyncPropagatingDisableInstrumentation.java b/dd-java-agent/instrumentation/java-concurrent/src/main/java/datadog/trace/instrumentation/java/concurrent/AsyncPropagatingDisableInstrumentation.java index 47ceb56a17d..4f54449e45d 100644 --- a/dd-java-agent/instrumentation/java-concurrent/src/main/java/datadog/trace/instrumentation/java/concurrent/AsyncPropagatingDisableInstrumentation.java +++ b/dd-java-agent/instrumentation/java-concurrent/src/main/java/datadog/trace/instrumentation/java/concurrent/AsyncPropagatingDisableInstrumentation.java @@ -6,6 +6,7 @@ import static datadog.trace.agent.tooling.bytebuddy.matcher.NameMatchers.named; import static datadog.trace.agent.tooling.bytebuddy.matcher.NameMatchers.namedOneOf; import static datadog.trace.bootstrap.instrumentation.api.AgentTracer.activeScope; +import static datadog.trace.instrumentation.java.concurrent.ConcurrentInstrumentationNames.EXECUTOR_INSTRUMENTATION_NAME; import static net.bytebuddy.matcher.ElementMatchers.isDeclaredBy; import static net.bytebuddy.matcher.ElementMatchers.isTypeInitializer; @@ -27,7 +28,7 @@ public final class AsyncPropagatingDisableInstrumentation extends InstrumenterMo implements Instrumenter.CanShortcutTypeMatching { public AsyncPropagatingDisableInstrumentation() { - super("java_concurrent"); + super(EXECUTOR_INSTRUMENTATION_NAME); } private static final ElementMatcher.Junction RX_WORKERS = diff --git a/dd-java-agent/instrumentation/java-concurrent/src/main/java/datadog/trace/instrumentation/java/concurrent/ConcurrentInstrumentationNames.java b/dd-java-agent/instrumentation/java-concurrent/src/main/java/datadog/trace/instrumentation/java/concurrent/ConcurrentInstrumentationNames.java new file mode 100644 index 00000000000..8a2cbd4381a --- /dev/null +++ b/dd-java-agent/instrumentation/java-concurrent/src/main/java/datadog/trace/instrumentation/java/concurrent/ConcurrentInstrumentationNames.java @@ -0,0 +1,8 @@ +package datadog.trace.instrumentation.java.concurrent; + +/** Defines common instrumentation names. */ +public final class ConcurrentInstrumentationNames { + public static final String EXECUTOR_INSTRUMENTATION_NAME = "java_concurrent"; + public static final String FORK_JOIN_POOL_INSTRUMENTATION_NAME = "fjp"; + public static final String RUNNABLE_INSTRUMENTATION_NAME = "runnable"; +} diff --git a/dd-java-agent/instrumentation/java-concurrent/src/main/java/datadog/trace/instrumentation/java/concurrent/TaskUnwrappingInstrumentation.java b/dd-java-agent/instrumentation/java-concurrent/src/main/java/datadog/trace/instrumentation/java/concurrent/TaskUnwrappingInstrumentation.java index c5d8bf50b98..091365003cc 100644 --- a/dd-java-agent/instrumentation/java-concurrent/src/main/java/datadog/trace/instrumentation/java/concurrent/TaskUnwrappingInstrumentation.java +++ b/dd-java-agent/instrumentation/java-concurrent/src/main/java/datadog/trace/instrumentation/java/concurrent/TaskUnwrappingInstrumentation.java @@ -1,5 +1,7 @@ package datadog.trace.instrumentation.java.concurrent; +import static datadog.trace.instrumentation.java.concurrent.ConcurrentInstrumentationNames.EXECUTOR_INSTRUMENTATION_NAME; + import com.google.auto.service.AutoService; import datadog.trace.agent.tooling.Instrumenter; import datadog.trace.agent.tooling.InstrumenterModule; @@ -11,7 +13,7 @@ public class TaskUnwrappingInstrumentation extends InstrumenterModule.Profiling implements Instrumenter.ForKnownTypes, Instrumenter.HasTypeAdvice { public TaskUnwrappingInstrumentation() { - super("java_concurrent", "task-unwrapping"); + super(EXECUTOR_INSTRUMENTATION_NAME, "task-unwrapping"); } @Override diff --git a/dd-java-agent/instrumentation/java-concurrent/src/main/java/datadog/trace/instrumentation/java/concurrent/WrapRunnableAsNewTaskInstrumentation.java b/dd-java-agent/instrumentation/java-concurrent/src/main/java/datadog/trace/instrumentation/java/concurrent/WrapRunnableAsNewTaskInstrumentation.java index cd37efb026d..9e13b502c6d 100644 --- a/dd-java-agent/instrumentation/java-concurrent/src/main/java/datadog/trace/instrumentation/java/concurrent/WrapRunnableAsNewTaskInstrumentation.java +++ b/dd-java-agent/instrumentation/java-concurrent/src/main/java/datadog/trace/instrumentation/java/concurrent/WrapRunnableAsNewTaskInstrumentation.java @@ -4,6 +4,7 @@ import static datadog.trace.agent.tooling.bytebuddy.matcher.NameMatchers.named; import static datadog.trace.bootstrap.instrumentation.java.concurrent.ExcludeFilter.ExcludeType.RUNNABLE; import static datadog.trace.bootstrap.instrumentation.java.concurrent.ExcludeFilter.exclude; +import static datadog.trace.instrumentation.java.concurrent.ConcurrentInstrumentationNames.EXECUTOR_INSTRUMENTATION_NAME; import static net.bytebuddy.matcher.ElementMatchers.isDeclaredBy; import static net.bytebuddy.matcher.ElementMatchers.isMethod; import static net.bytebuddy.matcher.ElementMatchers.not; @@ -25,7 +26,7 @@ public final class WrapRunnableAsNewTaskInstrumentation extends InstrumenterModule.Tracing implements Instrumenter.ForBootstrap, Instrumenter.ForKnownTypes { public WrapRunnableAsNewTaskInstrumentation() { - super("java_concurrent", "new-task-for"); + super(EXECUTOR_INSTRUMENTATION_NAME, "new-task-for"); } @Override diff --git a/dd-java-agent/instrumentation/java-concurrent/src/main/java/datadog/trace/instrumentation/java/concurrent/AbstractExecutorInstrumentation.java b/dd-java-agent/instrumentation/java-concurrent/src/main/java/datadog/trace/instrumentation/java/concurrent/executor/AbstractExecutorInstrumentation.java similarity index 89% rename from dd-java-agent/instrumentation/java-concurrent/src/main/java/datadog/trace/instrumentation/java/concurrent/AbstractExecutorInstrumentation.java rename to dd-java-agent/instrumentation/java-concurrent/src/main/java/datadog/trace/instrumentation/java/concurrent/executor/AbstractExecutorInstrumentation.java index c26907ef298..12acf657a5e 100644 --- a/dd-java-agent/instrumentation/java-concurrent/src/main/java/datadog/trace/instrumentation/java/concurrent/AbstractExecutorInstrumentation.java +++ b/dd-java-agent/instrumentation/java-concurrent/src/main/java/datadog/trace/instrumentation/java/concurrent/executor/AbstractExecutorInstrumentation.java @@ -1,7 +1,8 @@ -package datadog.trace.instrumentation.java.concurrent; +package datadog.trace.instrumentation.java.concurrent.executor; import static datadog.trace.agent.tooling.bytebuddy.matcher.HierarchyMatchers.implementsInterface; import static datadog.trace.agent.tooling.bytebuddy.matcher.NameMatchers.named; +import static datadog.trace.instrumentation.java.concurrent.ConcurrentInstrumentationNames.EXECUTOR_INSTRUMENTATION_NAME; import datadog.trace.agent.tooling.Instrumenter; import datadog.trace.agent.tooling.InstrumenterModule; @@ -20,13 +21,11 @@ public abstract class AbstractExecutorInstrumentation extends InstrumenterModule private static final Logger log = LoggerFactory.getLogger(AbstractExecutorInstrumentation.class); - public static final String EXEC_NAME = "java_concurrent"; - /** To apply to all executors, use override setting below. */ private final boolean TRACE_ALL_EXECUTORS = InstrumenterConfig.get().isTraceExecutorsAll(); public AbstractExecutorInstrumentation(final String... additionalNames) { - super(EXEC_NAME, additionalNames); + super(EXECUTOR_INSTRUMENTATION_NAME, additionalNames); if (TRACE_ALL_EXECUTORS) { log.warn("Tracing all executors enabled. This is not a recommended setting."); diff --git a/dd-java-agent/instrumentation/java-concurrent/src/main/java/datadog/trace/instrumentation/java/concurrent/JavaExecutorInstrumentation.java b/dd-java-agent/instrumentation/java-concurrent/src/main/java/datadog/trace/instrumentation/java/concurrent/executor/JavaExecutorInstrumentation.java similarity index 97% rename from dd-java-agent/instrumentation/java-concurrent/src/main/java/datadog/trace/instrumentation/java/concurrent/JavaExecutorInstrumentation.java rename to dd-java-agent/instrumentation/java-concurrent/src/main/java/datadog/trace/instrumentation/java/concurrent/executor/JavaExecutorInstrumentation.java index 9ed29076da6..5df2d8385fd 100644 --- a/dd-java-agent/instrumentation/java-concurrent/src/main/java/datadog/trace/instrumentation/java/concurrent/JavaExecutorInstrumentation.java +++ b/dd-java-agent/instrumentation/java-concurrent/src/main/java/datadog/trace/instrumentation/java/concurrent/executor/JavaExecutorInstrumentation.java @@ -1,4 +1,4 @@ -package datadog.trace.instrumentation.java.concurrent; +package datadog.trace.instrumentation.java.concurrent.executor; import static datadog.trace.agent.tooling.bytebuddy.matcher.NameMatchers.named; import static datadog.trace.bootstrap.instrumentation.api.AgentTracer.activeScope; diff --git a/dd-java-agent/instrumentation/java-concurrent/src/main/java/datadog/trace/instrumentation/java/concurrent/NonStandardExecutorInstrumentation.java b/dd-java-agent/instrumentation/java-concurrent/src/main/java/datadog/trace/instrumentation/java/concurrent/executor/NonStandardExecutorInstrumentation.java similarity index 85% rename from dd-java-agent/instrumentation/java-concurrent/src/main/java/datadog/trace/instrumentation/java/concurrent/NonStandardExecutorInstrumentation.java rename to dd-java-agent/instrumentation/java-concurrent/src/main/java/datadog/trace/instrumentation/java/concurrent/executor/NonStandardExecutorInstrumentation.java index 8c58dd39500..fc89f66afc9 100644 --- a/dd-java-agent/instrumentation/java-concurrent/src/main/java/datadog/trace/instrumentation/java/concurrent/NonStandardExecutorInstrumentation.java +++ b/dd-java-agent/instrumentation/java-concurrent/src/main/java/datadog/trace/instrumentation/java/concurrent/executor/NonStandardExecutorInstrumentation.java @@ -1,6 +1,7 @@ -package datadog.trace.instrumentation.java.concurrent; +package datadog.trace.instrumentation.java.concurrent.executor; import static datadog.trace.agent.tooling.bytebuddy.matcher.NameMatchers.named; +import static datadog.trace.instrumentation.java.concurrent.ConcurrentInstrumentationNames.EXECUTOR_INSTRUMENTATION_NAME; import static java.util.Collections.singletonMap; import static net.bytebuddy.matcher.ElementMatchers.takesArgument; import static net.bytebuddy.matcher.ElementMatchers.takesArguments; @@ -14,7 +15,7 @@ public final class NonStandardExecutorInstrumentation extends AbstractExecutorInstrumentation { public NonStandardExecutorInstrumentation() { - super(EXEC_NAME + ".other"); + super(EXECUTOR_INSTRUMENTATION_NAME + ".other"); } @Override diff --git a/dd-java-agent/instrumentation/java-concurrent/src/main/java/datadog/trace/instrumentation/java/concurrent/RejectedExecutionHandlerInstrumentation.java b/dd-java-agent/instrumentation/java-concurrent/src/main/java/datadog/trace/instrumentation/java/concurrent/executor/RejectedExecutionHandlerInstrumentation.java similarity index 95% rename from dd-java-agent/instrumentation/java-concurrent/src/main/java/datadog/trace/instrumentation/java/concurrent/RejectedExecutionHandlerInstrumentation.java rename to dd-java-agent/instrumentation/java-concurrent/src/main/java/datadog/trace/instrumentation/java/concurrent/executor/RejectedExecutionHandlerInstrumentation.java index 65da485f490..6dec821c142 100644 --- a/dd-java-agent/instrumentation/java-concurrent/src/main/java/datadog/trace/instrumentation/java/concurrent/RejectedExecutionHandlerInstrumentation.java +++ b/dd-java-agent/instrumentation/java-concurrent/src/main/java/datadog/trace/instrumentation/java/concurrent/executor/RejectedExecutionHandlerInstrumentation.java @@ -1,10 +1,11 @@ -package datadog.trace.instrumentation.java.concurrent; +package datadog.trace.instrumentation.java.concurrent.executor; import static datadog.trace.agent.tooling.bytebuddy.matcher.HierarchyMatchers.implementsInterface; import static datadog.trace.agent.tooling.bytebuddy.matcher.NameMatchers.nameEndsWith; import static datadog.trace.agent.tooling.bytebuddy.matcher.NameMatchers.named; import static datadog.trace.agent.tooling.bytebuddy.matcher.NameMatchers.namedOneOf; import static datadog.trace.bootstrap.instrumentation.java.concurrent.AdviceUtils.cancelTask; +import static datadog.trace.instrumentation.java.concurrent.ConcurrentInstrumentationNames.EXECUTOR_INSTRUMENTATION_NAME; import static net.bytebuddy.matcher.ElementMatchers.isMethod; import static net.bytebuddy.matcher.ElementMatchers.takesArgument; @@ -29,7 +30,7 @@ public class RejectedExecutionHandlerInstrumentation extends InstrumenterModule. implements Instrumenter.ForBootstrap, Instrumenter.CanShortcutTypeMatching { public RejectedExecutionHandlerInstrumentation() { - super("java_concurrent", "rejected-execution-handler"); + super(EXECUTOR_INSTRUMENTATION_NAME, "rejected-execution-handler"); } @Override diff --git a/dd-java-agent/instrumentation/java-concurrent/src/main/java/datadog/trace/instrumentation/java/concurrent/ThreadPoolExecutorInstrumentation.java b/dd-java-agent/instrumentation/java-concurrent/src/main/java/datadog/trace/instrumentation/java/concurrent/executor/ThreadPoolExecutorInstrumentation.java similarity index 97% rename from dd-java-agent/instrumentation/java-concurrent/src/main/java/datadog/trace/instrumentation/java/concurrent/ThreadPoolExecutorInstrumentation.java rename to dd-java-agent/instrumentation/java-concurrent/src/main/java/datadog/trace/instrumentation/java/concurrent/executor/ThreadPoolExecutorInstrumentation.java index 63b5fac318c..8375a3d9294 100644 --- a/dd-java-agent/instrumentation/java-concurrent/src/main/java/datadog/trace/instrumentation/java/concurrent/ThreadPoolExecutorInstrumentation.java +++ b/dd-java-agent/instrumentation/java-concurrent/src/main/java/datadog/trace/instrumentation/java/concurrent/executor/ThreadPoolExecutorInstrumentation.java @@ -1,4 +1,4 @@ -package datadog.trace.instrumentation.java.concurrent; +package datadog.trace.instrumentation.java.concurrent.executor; import static datadog.trace.agent.tooling.bytebuddy.matcher.HierarchyMatchers.extendsClass; import static datadog.trace.agent.tooling.bytebuddy.matcher.NameMatchers.named; @@ -6,7 +6,7 @@ import static datadog.trace.bootstrap.instrumentation.java.concurrent.ExcludeFilter.ExcludeType.RUNNABLE; import static datadog.trace.bootstrap.instrumentation.java.concurrent.ExcludeFilter.ExcludeType.RUNNABLE_FUTURE; import static datadog.trace.bootstrap.instrumentation.java.concurrent.ExcludeFilter.exclude; -import static datadog.trace.instrumentation.java.concurrent.AbstractExecutorInstrumentation.EXEC_NAME; +import static datadog.trace.instrumentation.java.concurrent.ConcurrentInstrumentationNames.EXECUTOR_INSTRUMENTATION_NAME; import static net.bytebuddy.matcher.ElementMatchers.isConstructor; import static net.bytebuddy.matcher.ElementMatchers.isDeclaredBy; import static net.bytebuddy.matcher.ElementMatchers.isMethod; @@ -76,7 +76,7 @@ public final class ThreadPoolExecutorInstrumentation extends InstrumenterModule. namedOneOf("org.elasticsearch.common.util.concurrent.EsThreadPoolExecutor"))); public ThreadPoolExecutorInstrumentation() { - super(EXEC_NAME); + super(EXECUTOR_INSTRUMENTATION_NAME); } @Override diff --git a/dd-java-agent/instrumentation/java-concurrent/src/main/java/datadog/trace/instrumentation/java/concurrent/JavaForkJoinPoolInstrumentation.java b/dd-java-agent/instrumentation/java-concurrent/src/main/java/datadog/trace/instrumentation/java/concurrent/forkjoin/JavaForkJoinPoolInstrumentation.java similarity index 90% rename from dd-java-agent/instrumentation/java-concurrent/src/main/java/datadog/trace/instrumentation/java/concurrent/JavaForkJoinPoolInstrumentation.java rename to dd-java-agent/instrumentation/java-concurrent/src/main/java/datadog/trace/instrumentation/java/concurrent/forkjoin/JavaForkJoinPoolInstrumentation.java index 36544ddc39d..89a5f3ae16c 100644 --- a/dd-java-agent/instrumentation/java-concurrent/src/main/java/datadog/trace/instrumentation/java/concurrent/JavaForkJoinPoolInstrumentation.java +++ b/dd-java-agent/instrumentation/java-concurrent/src/main/java/datadog/trace/instrumentation/java/concurrent/forkjoin/JavaForkJoinPoolInstrumentation.java @@ -1,4 +1,4 @@ -package datadog.trace.instrumentation.java.concurrent; +package datadog.trace.instrumentation.java.concurrent.forkjoin; import static datadog.trace.agent.tooling.bytebuddy.matcher.NameMatchers.named; import static datadog.trace.agent.tooling.bytebuddy.matcher.NameMatchers.namedOneOf; @@ -6,6 +6,8 @@ import static datadog.trace.bootstrap.instrumentation.java.concurrent.AdviceUtils.capture; import static datadog.trace.bootstrap.instrumentation.java.concurrent.ExcludeFilter.ExcludeType.FORK_JOIN_TASK; import static datadog.trace.bootstrap.instrumentation.java.concurrent.ExcludeFilter.exclude; +import static datadog.trace.instrumentation.java.concurrent.ConcurrentInstrumentationNames.EXECUTOR_INSTRUMENTATION_NAME; +import static datadog.trace.instrumentation.java.concurrent.ConcurrentInstrumentationNames.FORK_JOIN_POOL_INSTRUMENTATION_NAME; import static java.util.Collections.singletonMap; import static net.bytebuddy.matcher.ElementMatchers.isMethod; @@ -26,7 +28,7 @@ public class JavaForkJoinPoolInstrumentation extends InstrumenterModule.Tracing implements Instrumenter.ForBootstrap, Instrumenter.ForSingleType { public JavaForkJoinPoolInstrumentation() { - super("java_concurrent", "fjp"); + super(EXECUTOR_INSTRUMENTATION_NAME, FORK_JOIN_POOL_INSTRUMENTATION_NAME); } @Override diff --git a/dd-java-agent/instrumentation/java-concurrent/src/main/java/datadog/trace/instrumentation/java/concurrent/JavaForkJoinTaskInstrumentation.java b/dd-java-agent/instrumentation/java-concurrent/src/main/java/datadog/trace/instrumentation/java/concurrent/forkjoin/JavaForkJoinTaskInstrumentation.java similarity index 92% rename from dd-java-agent/instrumentation/java-concurrent/src/main/java/datadog/trace/instrumentation/java/concurrent/JavaForkJoinTaskInstrumentation.java rename to dd-java-agent/instrumentation/java-concurrent/src/main/java/datadog/trace/instrumentation/java/concurrent/forkjoin/JavaForkJoinTaskInstrumentation.java index 528bceb7ff6..ce9bba18687 100644 --- a/dd-java-agent/instrumentation/java-concurrent/src/main/java/datadog/trace/instrumentation/java/concurrent/JavaForkJoinTaskInstrumentation.java +++ b/dd-java-agent/instrumentation/java-concurrent/src/main/java/datadog/trace/instrumentation/java/concurrent/forkjoin/JavaForkJoinTaskInstrumentation.java @@ -1,4 +1,4 @@ -package datadog.trace.instrumentation.java.concurrent; +package datadog.trace.instrumentation.java.concurrent.forkjoin; import static datadog.trace.agent.tooling.bytebuddy.matcher.HierarchyMatchers.declaresMethod; import static datadog.trace.agent.tooling.bytebuddy.matcher.HierarchyMatchers.extendsClass; @@ -11,6 +11,8 @@ import static datadog.trace.bootstrap.instrumentation.java.concurrent.ExcludeFilter.ExcludeType.FORK_JOIN_TASK; import static datadog.trace.bootstrap.instrumentation.java.concurrent.ExcludeFilter.ExcludeType.RUNNABLE_FUTURE; import static datadog.trace.bootstrap.instrumentation.java.concurrent.ExcludeFilter.exclude; +import static datadog.trace.instrumentation.java.concurrent.ConcurrentInstrumentationNames.EXECUTOR_INSTRUMENTATION_NAME; +import static datadog.trace.instrumentation.java.concurrent.ConcurrentInstrumentationNames.FORK_JOIN_POOL_INSTRUMENTATION_NAME; import static java.util.Collections.singletonMap; import static net.bytebuddy.matcher.ElementMatchers.isMethod; @@ -41,7 +43,7 @@ public final class JavaForkJoinTaskInstrumentation extends InstrumenterModule.Tr implements Instrumenter.ForBootstrap, Instrumenter.ForTypeHierarchy, ExcludeFilterProvider { public JavaForkJoinTaskInstrumentation() { - super(AbstractExecutorInstrumentation.EXEC_NAME); + super(EXECUTOR_INSTRUMENTATION_NAME, FORK_JOIN_POOL_INSTRUMENTATION_NAME); } @Override diff --git a/dd-java-agent/instrumentation/java-concurrent/src/main/java/datadog/trace/instrumentation/java/concurrent/ConsumerTaskInstrumentation.java b/dd-java-agent/instrumentation/java-concurrent/src/main/java/datadog/trace/instrumentation/java/concurrent/runnable/ConsumerTaskInstrumentation.java similarity index 83% rename from dd-java-agent/instrumentation/java-concurrent/src/main/java/datadog/trace/instrumentation/java/concurrent/ConsumerTaskInstrumentation.java rename to dd-java-agent/instrumentation/java-concurrent/src/main/java/datadog/trace/instrumentation/java/concurrent/runnable/ConsumerTaskInstrumentation.java index 4741a419a59..c39f3dcc865 100644 --- a/dd-java-agent/instrumentation/java-concurrent/src/main/java/datadog/trace/instrumentation/java/concurrent/ConsumerTaskInstrumentation.java +++ b/dd-java-agent/instrumentation/java-concurrent/src/main/java/datadog/trace/instrumentation/java/concurrent/runnable/ConsumerTaskInstrumentation.java @@ -1,10 +1,10 @@ -package datadog.trace.instrumentation.java.concurrent; +package datadog.trace.instrumentation.java.concurrent.runnable; import static datadog.trace.agent.tooling.bytebuddy.matcher.NameMatchers.named; import static datadog.trace.bootstrap.instrumentation.api.AgentTracer.activeScope; import static datadog.trace.bootstrap.instrumentation.java.concurrent.AdviceUtils.endTaskScope; import static datadog.trace.bootstrap.instrumentation.java.concurrent.AdviceUtils.startTaskScope; -import static datadog.trace.instrumentation.java.concurrent.AbstractExecutorInstrumentation.EXEC_NAME; +import static datadog.trace.instrumentation.java.concurrent.ConcurrentInstrumentationNames.EXECUTOR_INSTRUMENTATION_NAME; import static java.util.Collections.singletonMap; import static net.bytebuddy.matcher.ElementMatchers.isConstructor; @@ -18,11 +18,16 @@ import java.util.concurrent.ForkJoinTask; import net.bytebuddy.asm.Advice; +/** + * Instrument the Runnable implementation of {@code ConsumerTask} (JDK 9+) where the ForkJoinTask + * parent class is already instrumented by {@link + * datadog.trace.instrumentation.java.concurrent.forkjoin.JavaForkJoinTaskInstrumentation} + */ @AutoService(InstrumenterModule.class) public class ConsumerTaskInstrumentation extends InstrumenterModule.Tracing implements Instrumenter.ForBootstrap, Instrumenter.ForSingleType { public ConsumerTaskInstrumentation() { - super(EXEC_NAME, "consumer-task"); + super(EXECUTOR_INSTRUMENTATION_NAME, "consumer-task"); } @Override diff --git a/dd-java-agent/instrumentation/java-concurrent/src/main/java/datadog/trace/instrumentation/java/concurrent/RunnableFutureInstrumentation.java b/dd-java-agent/instrumentation/java-concurrent/src/main/java/datadog/trace/instrumentation/java/concurrent/runnable/RunnableFutureInstrumentation.java similarity index 97% rename from dd-java-agent/instrumentation/java-concurrent/src/main/java/datadog/trace/instrumentation/java/concurrent/RunnableFutureInstrumentation.java rename to dd-java-agent/instrumentation/java-concurrent/src/main/java/datadog/trace/instrumentation/java/concurrent/runnable/RunnableFutureInstrumentation.java index f5c07559922..5a2cc4f932b 100644 --- a/dd-java-agent/instrumentation/java-concurrent/src/main/java/datadog/trace/instrumentation/java/concurrent/RunnableFutureInstrumentation.java +++ b/dd-java-agent/instrumentation/java-concurrent/src/main/java/datadog/trace/instrumentation/java/concurrent/runnable/RunnableFutureInstrumentation.java @@ -1,4 +1,4 @@ -package datadog.trace.instrumentation.java.concurrent; +package datadog.trace.instrumentation.java.concurrent.runnable; import static datadog.trace.agent.tooling.bytebuddy.matcher.HierarchyMatchers.extendsClass; import static datadog.trace.agent.tooling.bytebuddy.matcher.NameMatchers.nameEndsWith; @@ -11,6 +11,7 @@ import static datadog.trace.bootstrap.instrumentation.java.concurrent.AdviceUtils.startTaskScope; import static datadog.trace.bootstrap.instrumentation.java.concurrent.ExcludeFilter.ExcludeType.RUNNABLE; import static datadog.trace.bootstrap.instrumentation.java.concurrent.ExcludeFilter.ExcludeType.RUNNABLE_FUTURE; +import static datadog.trace.instrumentation.java.concurrent.ConcurrentInstrumentationNames.EXECUTOR_INSTRUMENTATION_NAME; import static java.util.Collections.singletonMap; import static net.bytebuddy.matcher.ElementMatchers.isConstructor; import static net.bytebuddy.matcher.ElementMatchers.isDeclaredBy; @@ -38,7 +39,7 @@ public final class RunnableFutureInstrumentation extends InstrumenterModule.Tracing implements Instrumenter.ForBootstrap, Instrumenter.ForTypeHierarchy, ExcludeFilterProvider { public RunnableFutureInstrumentation() { - super("java_concurrent", "runnable-future"); + super(EXECUTOR_INSTRUMENTATION_NAME, "runnable-future"); } @Override diff --git a/dd-java-agent/instrumentation/java-concurrent/src/main/java/datadog/trace/instrumentation/java/concurrent/RunnableInstrumentation.java b/dd-java-agent/instrumentation/java-concurrent/src/main/java/datadog/trace/instrumentation/java/concurrent/runnable/RunnableInstrumentation.java similarity index 88% rename from dd-java-agent/instrumentation/java-concurrent/src/main/java/datadog/trace/instrumentation/java/concurrent/RunnableInstrumentation.java rename to dd-java-agent/instrumentation/java-concurrent/src/main/java/datadog/trace/instrumentation/java/concurrent/runnable/RunnableInstrumentation.java index 4a6304dc1c0..ff29ef2b02b 100644 --- a/dd-java-agent/instrumentation/java-concurrent/src/main/java/datadog/trace/instrumentation/java/concurrent/RunnableInstrumentation.java +++ b/dd-java-agent/instrumentation/java-concurrent/src/main/java/datadog/trace/instrumentation/java/concurrent/runnable/RunnableInstrumentation.java @@ -1,9 +1,11 @@ -package datadog.trace.instrumentation.java.concurrent; +package datadog.trace.instrumentation.java.concurrent.runnable; import static datadog.trace.agent.tooling.bytebuddy.matcher.HierarchyMatchers.implementsInterface; import static datadog.trace.agent.tooling.bytebuddy.matcher.NameMatchers.named; import static datadog.trace.agent.tooling.bytebuddy.matcher.NameMatchers.notExcludedByName; import static datadog.trace.bootstrap.instrumentation.java.concurrent.ExcludeFilter.ExcludeType.RUNNABLE; +import static datadog.trace.instrumentation.java.concurrent.ConcurrentInstrumentationNames.EXECUTOR_INSTRUMENTATION_NAME; +import static datadog.trace.instrumentation.java.concurrent.ConcurrentInstrumentationNames.RUNNABLE_INSTRUMENTATION_NAME; import static java.util.Collections.singletonMap; import static net.bytebuddy.matcher.ElementMatchers.isPublic; import static net.bytebuddy.matcher.ElementMatchers.not; @@ -29,7 +31,7 @@ public final class RunnableInstrumentation extends InstrumenterModule.Tracing implements Instrumenter.ForBootstrap, Instrumenter.ForTypeHierarchy { public RunnableInstrumentation() { - super(AbstractExecutorInstrumentation.EXEC_NAME, "runnable"); + super(EXECUTOR_INSTRUMENTATION_NAME, RUNNABLE_INSTRUMENTATION_NAME); } @Override diff --git a/dd-java-agent/instrumentation/java-concurrent/src/main/java/datadog/trace/instrumentation/java/concurrent/JavaTimerInstrumentation.java b/dd-java-agent/instrumentation/java-concurrent/src/main/java/datadog/trace/instrumentation/java/concurrent/timer/JavaTimerInstrumentation.java similarity index 88% rename from dd-java-agent/instrumentation/java-concurrent/src/main/java/datadog/trace/instrumentation/java/concurrent/JavaTimerInstrumentation.java rename to dd-java-agent/instrumentation/java-concurrent/src/main/java/datadog/trace/instrumentation/java/concurrent/timer/JavaTimerInstrumentation.java index d4238a0a0eb..33b9767ce63 100644 --- a/dd-java-agent/instrumentation/java-concurrent/src/main/java/datadog/trace/instrumentation/java/concurrent/JavaTimerInstrumentation.java +++ b/dd-java-agent/instrumentation/java-concurrent/src/main/java/datadog/trace/instrumentation/java/concurrent/timer/JavaTimerInstrumentation.java @@ -1,4 +1,4 @@ -package datadog.trace.instrumentation.java.concurrent; +package datadog.trace.instrumentation.java.concurrent.timer; import static datadog.trace.agent.tooling.bytebuddy.matcher.NameMatchers.named; import static datadog.trace.bootstrap.instrumentation.java.concurrent.AdviceUtils.cancelTask; @@ -6,6 +6,8 @@ import static datadog.trace.bootstrap.instrumentation.java.concurrent.ExcludeFilter.ExcludeType.RUNNABLE; import static datadog.trace.bootstrap.instrumentation.java.concurrent.ExcludeFilter.exclude; import static datadog.trace.bootstrap.instrumentation.java.concurrent.QueueTimerHelper.startQueuingTimer; +import static datadog.trace.instrumentation.java.concurrent.ConcurrentInstrumentationNames.EXECUTOR_INSTRUMENTATION_NAME; +import static datadog.trace.instrumentation.java.concurrent.ConcurrentInstrumentationNames.RUNNABLE_INSTRUMENTATION_NAME; import static java.util.Collections.singletonMap; import static net.bytebuddy.matcher.ElementMatchers.isMethod; import static net.bytebuddy.matcher.ElementMatchers.isPrivate; @@ -27,7 +29,7 @@ public class JavaTimerInstrumentation extends InstrumenterModule.Tracing implements Instrumenter.ForBootstrap, Instrumenter.ForSingleType { public JavaTimerInstrumentation() { - super("java_timer", "java_concurrent", "runnable"); + super("java_timer", EXECUTOR_INSTRUMENTATION_NAME, RUNNABLE_INSTRUMENTATION_NAME); } @Override diff --git a/dd-java-agent/instrumentation/java-concurrent/src/main/java/datadog/trace/instrumentation/java/concurrent/TimerTaskInstrumentation.java b/dd-java-agent/instrumentation/java-concurrent/src/main/java/datadog/trace/instrumentation/java/concurrent/timer/TimerTaskInstrumentation.java similarity index 81% rename from dd-java-agent/instrumentation/java-concurrent/src/main/java/datadog/trace/instrumentation/java/concurrent/TimerTaskInstrumentation.java rename to dd-java-agent/instrumentation/java-concurrent/src/main/java/datadog/trace/instrumentation/java/concurrent/timer/TimerTaskInstrumentation.java index 07c6372b77d..40cb8fc2b93 100644 --- a/dd-java-agent/instrumentation/java-concurrent/src/main/java/datadog/trace/instrumentation/java/concurrent/TimerTaskInstrumentation.java +++ b/dd-java-agent/instrumentation/java-concurrent/src/main/java/datadog/trace/instrumentation/java/concurrent/timer/TimerTaskInstrumentation.java @@ -1,7 +1,9 @@ -package datadog.trace.instrumentation.java.concurrent; +package datadog.trace.instrumentation.java.concurrent.timer; import static datadog.trace.agent.tooling.bytebuddy.matcher.HierarchyMatchers.extendsClass; import static datadog.trace.agent.tooling.bytebuddy.matcher.NameMatchers.named; +import static datadog.trace.instrumentation.java.concurrent.ConcurrentInstrumentationNames.EXECUTOR_INSTRUMENTATION_NAME; +import static datadog.trace.instrumentation.java.concurrent.ConcurrentInstrumentationNames.RUNNABLE_INSTRUMENTATION_NAME; import static java.util.Collections.singletonMap; import static net.bytebuddy.matcher.ElementMatchers.isPublic; import static net.bytebuddy.matcher.ElementMatchers.takesArguments; @@ -12,6 +14,7 @@ import datadog.trace.bootstrap.InstrumentationContext; import datadog.trace.bootstrap.instrumentation.java.concurrent.AdviceUtils; import datadog.trace.bootstrap.instrumentation.java.concurrent.State; +import datadog.trace.instrumentation.java.concurrent.runnable.RunnableInstrumentation; import java.util.Map; import java.util.TimerTask; import net.bytebuddy.asm.Advice; @@ -29,7 +32,7 @@ public final class TimerTaskInstrumentation extends InstrumenterModule.Tracing implements Instrumenter.ForBootstrap, Instrumenter.ForTypeHierarchy { public TimerTaskInstrumentation() { - super("java_timer", AbstractExecutorInstrumentation.EXEC_NAME, "runnable"); + super("java_timer", EXECUTOR_INSTRUMENTATION_NAME, RUNNABLE_INSTRUMENTATION_NAME); } @Override diff --git a/dd-java-agent/instrumentation/java-concurrent/src/test/groovy/CrossedContextTest.groovy b/dd-java-agent/instrumentation/java-concurrent/src/test/groovy/CrossedContextTest.groovy index eeed2e22bb8..b9496f952b3 100644 --- a/dd-java-agent/instrumentation/java-concurrent/src/test/groovy/CrossedContextTest.groovy +++ b/dd-java-agent/instrumentation/java-concurrent/src/test/groovy/CrossedContextTest.groovy @@ -6,6 +6,7 @@ import io.netty.channel.nio.NioEventLoopGroup import io.netty.channel.oio.OioEventLoopGroup import io.netty.util.concurrent.DefaultEventExecutor import org.apache.tomcat.util.threads.TaskQueue +import runnable.Descendant import spock.lang.Shared import java.util.concurrent.ExecutorService diff --git a/dd-java-agent/instrumentation/java-concurrent/src/test/groovy/ExecutorInstrumentationTest.groovy b/dd-java-agent/instrumentation/java-concurrent/src/test/groovy/executor/ExecutorInstrumentationTest.groovy similarity index 98% rename from dd-java-agent/instrumentation/java-concurrent/src/test/groovy/ExecutorInstrumentationTest.groovy rename to dd-java-agent/instrumentation/java-concurrent/src/test/groovy/executor/ExecutorInstrumentationTest.groovy index 17b50b88816..7e7db7eb5c3 100644 --- a/dd-java-agent/instrumentation/java-concurrent/src/test/groovy/ExecutorInstrumentationTest.groovy +++ b/dd-java-agent/instrumentation/java-concurrent/src/test/groovy/executor/ExecutorInstrumentationTest.groovy @@ -1,10 +1,15 @@ +package executor + import com.google.common.util.concurrent.MoreExecutors import datadog.trace.agent.test.AgentTestRunner import datadog.trace.api.Trace import datadog.trace.bootstrap.instrumentation.api.Tags import datadog.trace.bootstrap.instrumentation.java.concurrent.RunnableWrapper import datadog.trace.core.DDSpan +import forkjoin.PeriodicTask import org.apache.tomcat.util.threads.TaskQueue +import runnable.ComparableAsyncChild +import runnable.JavaAsyncChild import spock.lang.Shared import java.lang.reflect.InvocationTargetException @@ -63,8 +68,8 @@ abstract class ExecutorInstrumentationTest extends AgentTestRunner { void configurePreAgent() { super.configurePreAgent() - injectSysConfig("dd.trace.executors", "CustomThreadPoolExecutor") - injectSysConfig("trace.thread-pool-executors.exclude", "ExecutorInstrumentationTest\$ToBeIgnoredExecutor") + injectSysConfig("dd.trace.executors", CustomThreadPoolExecutor.name) + injectSysConfig("trace.thread-pool-executors.exclude", ToBeIgnoredExecutor.name) } def "#poolName '#name' propagates"() { @@ -482,12 +487,6 @@ abstract class ExecutorInstrumentationTest extends AgentTestRunner { poolName = poolImpl.class.simpleName } - - static class ToBeIgnoredExecutor extends ThreadPoolExecutor { - ToBeIgnoredExecutor() { - super(1, 1, 0, TimeUnit.MILLISECONDS, new ArrayBlockingQueue(10)) - } - } } class ExecutorInstrumentationForkedTest extends ExecutorInstrumentationTest { diff --git a/dd-java-agent/instrumentation/java-concurrent/src/test/groovy/NettyExecutorInstrumentationTest.groovy b/dd-java-agent/instrumentation/java-concurrent/src/test/groovy/executor/NettyExecutorInstrumentationTest.groovy similarity index 99% rename from dd-java-agent/instrumentation/java-concurrent/src/test/groovy/NettyExecutorInstrumentationTest.groovy rename to dd-java-agent/instrumentation/java-concurrent/src/test/groovy/executor/NettyExecutorInstrumentationTest.groovy index 01f2767af1f..4a3ae7b553d 100644 --- a/dd-java-agent/instrumentation/java-concurrent/src/test/groovy/NettyExecutorInstrumentationTest.groovy +++ b/dd-java-agent/instrumentation/java-concurrent/src/test/groovy/executor/NettyExecutorInstrumentationTest.groovy @@ -1,3 +1,5 @@ +package executor + import datadog.trace.agent.test.AgentTestRunner import datadog.trace.api.Trace import datadog.trace.core.DDSpan @@ -6,6 +8,7 @@ import io.netty.channel.epoll.EpollEventLoopGroup import io.netty.channel.local.LocalEventLoopGroup import io.netty.channel.nio.NioEventLoopGroup import io.netty.util.concurrent.DefaultEventExecutorGroup +import runnable.JavaAsyncChild import spock.lang.Shared import java.lang.reflect.InvocationTargetException diff --git a/dd-java-agent/instrumentation/java-concurrent/src/test/groovy/RecursiveThreadPoolPropagationTest.groovy b/dd-java-agent/instrumentation/java-concurrent/src/test/groovy/executor/RecursiveThreadPoolPropagationTest.groovy similarity index 99% rename from dd-java-agent/instrumentation/java-concurrent/src/test/groovy/RecursiveThreadPoolPropagationTest.groovy rename to dd-java-agent/instrumentation/java-concurrent/src/test/groovy/executor/RecursiveThreadPoolPropagationTest.groovy index 5cce9765519..090f7d01575 100644 --- a/dd-java-agent/instrumentation/java-concurrent/src/test/groovy/RecursiveThreadPoolPropagationTest.groovy +++ b/dd-java-agent/instrumentation/java-concurrent/src/test/groovy/executor/RecursiveThreadPoolPropagationTest.groovy @@ -1,5 +1,10 @@ +package executor + import datadog.trace.agent.test.AgentTestRunner import datadog.trace.core.DDSpan +import executor.recursive.RecursiveThreadPoolExecution +import executor.recursive.RecursiveThreadPoolMixedSubmissionAndExecution +import executor.recursive.RecursiveThreadPoolSubmission import io.netty.channel.DefaultEventLoopGroup import spock.lang.Shared diff --git a/dd-java-agent/instrumentation/java-concurrent/src/test/groovy/RejectedExecutionTest.groovy b/dd-java-agent/instrumentation/java-concurrent/src/test/groovy/executor/RejectedExecutionTest.groovy similarity index 97% rename from dd-java-agent/instrumentation/java-concurrent/src/test/groovy/RejectedExecutionTest.groovy rename to dd-java-agent/instrumentation/java-concurrent/src/test/groovy/executor/RejectedExecutionTest.groovy index 9f195547435..63ec8439df9 100644 --- a/dd-java-agent/instrumentation/java-concurrent/src/test/groovy/RejectedExecutionTest.groovy +++ b/dd-java-agent/instrumentation/java-concurrent/src/test/groovy/executor/RejectedExecutionTest.groovy @@ -1,8 +1,13 @@ +package executor + import datadog.trace.agent.test.AgentTestRunner import datadog.trace.api.DDSpanId import datadog.trace.core.DDSpan +import executor.rejectedexecutionhandler.ExecutingRejectedExecutionHandler +import executor.rejectedexecutionhandler.SwallowingRejectedExecutionHandler import io.netty.util.concurrent.DefaultEventExecutor import io.netty.util.concurrent.DefaultThreadFactory +import runnable.JavaAsyncChild import java.util.concurrent.ArrayBlockingQueue import java.util.concurrent.CountDownLatch diff --git a/dd-java-agent/instrumentation/java-concurrent/src/test/groovy/executor/ToBeIgnoredExecutor.java b/dd-java-agent/instrumentation/java-concurrent/src/test/groovy/executor/ToBeIgnoredExecutor.java new file mode 100644 index 00000000000..4c6ffeadc52 --- /dev/null +++ b/dd-java-agent/instrumentation/java-concurrent/src/test/groovy/executor/ToBeIgnoredExecutor.java @@ -0,0 +1,11 @@ +package executor; + +import java.util.concurrent.ArrayBlockingQueue; +import java.util.concurrent.ThreadPoolExecutor; +import java.util.concurrent.TimeUnit; + +public class ToBeIgnoredExecutor extends ThreadPoolExecutor { + public ToBeIgnoredExecutor() { + super(1, 1, 0, TimeUnit.MILLISECONDS, new ArrayBlockingQueue<>(10)); + } +} diff --git a/dd-java-agent/instrumentation/java-concurrent/src/test/groovy/ForkJoinPoolPropagationTest.groovy b/dd-java-agent/instrumentation/java-concurrent/src/test/groovy/forkjoin/ForkJoinPoolPropagationTest.groovy similarity index 99% rename from dd-java-agent/instrumentation/java-concurrent/src/test/groovy/ForkJoinPoolPropagationTest.groovy rename to dd-java-agent/instrumentation/java-concurrent/src/test/groovy/forkjoin/ForkJoinPoolPropagationTest.groovy index 3776276e345..236a04e3e6b 100644 --- a/dd-java-agent/instrumentation/java-concurrent/src/test/groovy/ForkJoinPoolPropagationTest.groovy +++ b/dd-java-agent/instrumentation/java-concurrent/src/test/groovy/forkjoin/ForkJoinPoolPropagationTest.groovy @@ -1,3 +1,5 @@ +package forkjoin + import datadog.trace.agent.test.AgentTestRunner import datadog.trace.core.DDSpan diff --git a/dd-java-agent/instrumentation/java-concurrent/src/test/groovy/FutureTaskContinuationTest.groovy b/dd-java-agent/instrumentation/java-concurrent/src/test/groovy/runnable/FutureTaskContinuationTest.groovy similarity index 97% rename from dd-java-agent/instrumentation/java-concurrent/src/test/groovy/FutureTaskContinuationTest.groovy rename to dd-java-agent/instrumentation/java-concurrent/src/test/groovy/runnable/FutureTaskContinuationTest.groovy index 4c947aff6ea..f20605be291 100644 --- a/dd-java-agent/instrumentation/java-concurrent/src/test/groovy/FutureTaskContinuationTest.groovy +++ b/dd-java-agent/instrumentation/java-concurrent/src/test/groovy/runnable/FutureTaskContinuationTest.groovy @@ -1,7 +1,8 @@ +package runnable + import datadog.trace.agent.test.AgentTestRunner import java.util.concurrent.ExecutionException -import java.util.concurrent.FutureTask import static datadog.trace.agent.test.utils.TraceUtils.basicSpan import static datadog.trace.agent.test.utils.TraceUtils.runUnderTrace diff --git a/dd-java-agent/instrumentation/java-concurrent/src/test/groovy/ModuleInjectionTest.groovy b/dd-java-agent/instrumentation/java-concurrent/src/test/groovy/runnable/ModuleInjectionTest.groovy similarity index 96% rename from dd-java-agent/instrumentation/java-concurrent/src/test/groovy/ModuleInjectionTest.groovy rename to dd-java-agent/instrumentation/java-concurrent/src/test/groovy/runnable/ModuleInjectionTest.groovy index adfcfd75f27..74639f9f4cb 100644 --- a/dd-java-agent/instrumentation/java-concurrent/src/test/groovy/ModuleInjectionTest.groovy +++ b/dd-java-agent/instrumentation/java-concurrent/src/test/groovy/runnable/ModuleInjectionTest.groovy @@ -1,3 +1,5 @@ +package runnable + import datadog.trace.agent.test.AgentTestRunner import javax.swing.* diff --git a/dd-java-agent/instrumentation/java-concurrent/src/test/groovy/TimerTaskContinuationTest.groovy b/dd-java-agent/instrumentation/java-concurrent/src/test/groovy/timer/TimerTaskContinuationTest.groovy similarity index 99% rename from dd-java-agent/instrumentation/java-concurrent/src/test/groovy/TimerTaskContinuationTest.groovy rename to dd-java-agent/instrumentation/java-concurrent/src/test/groovy/timer/TimerTaskContinuationTest.groovy index 77f0e052947..66b98ef054a 100644 --- a/dd-java-agent/instrumentation/java-concurrent/src/test/groovy/TimerTaskContinuationTest.groovy +++ b/dd-java-agent/instrumentation/java-concurrent/src/test/groovy/timer/TimerTaskContinuationTest.groovy @@ -1,3 +1,5 @@ +package timer + import static datadog.trace.agent.test.utils.TraceUtils.basicSpan import static datadog.trace.agent.test.utils.TraceUtils.runUnderTrace import static datadog.trace.bootstrap.instrumentation.api.AgentTracer.activateSpan diff --git a/dd-java-agent/instrumentation/java-concurrent/src/test/groovy/CustomThreadPoolExecutor.java b/dd-java-agent/instrumentation/java-concurrent/src/test/java/executor/CustomThreadPoolExecutor.java similarity index 99% rename from dd-java-agent/instrumentation/java-concurrent/src/test/groovy/CustomThreadPoolExecutor.java rename to dd-java-agent/instrumentation/java-concurrent/src/test/java/executor/CustomThreadPoolExecutor.java index fc0d7ab265f..0aeb3aaff03 100644 --- a/dd-java-agent/instrumentation/java-concurrent/src/test/groovy/CustomThreadPoolExecutor.java +++ b/dd-java-agent/instrumentation/java-concurrent/src/test/java/executor/CustomThreadPoolExecutor.java @@ -1,3 +1,5 @@ +package executor; + import java.util.ArrayList; import java.util.List; import java.util.concurrent.AbstractExecutorService; diff --git a/dd-java-agent/instrumentation/java-concurrent/src/test/java/TypeAwareThreadPoolExecutor.java b/dd-java-agent/instrumentation/java-concurrent/src/test/java/executor/TypeAwareThreadPoolExecutor.java similarity index 97% rename from dd-java-agent/instrumentation/java-concurrent/src/test/java/TypeAwareThreadPoolExecutor.java rename to dd-java-agent/instrumentation/java-concurrent/src/test/java/executor/TypeAwareThreadPoolExecutor.java index 9e845ce693a..d873f901ddb 100644 --- a/dd-java-agent/instrumentation/java-concurrent/src/test/java/TypeAwareThreadPoolExecutor.java +++ b/dd-java-agent/instrumentation/java-concurrent/src/test/java/executor/TypeAwareThreadPoolExecutor.java @@ -1,3 +1,5 @@ +package executor; + import datadog.trace.bootstrap.instrumentation.java.concurrent.Wrapper; import java.util.concurrent.ArrayBlockingQueue; import java.util.concurrent.ThreadPoolExecutor; diff --git a/dd-java-agent/instrumentation/java-concurrent/src/test/java/RecursiveThreadPoolExecution.java b/dd-java-agent/instrumentation/java-concurrent/src/test/java/executor/recursive/RecursiveThreadPoolExecution.java similarity index 97% rename from dd-java-agent/instrumentation/java-concurrent/src/test/java/RecursiveThreadPoolExecution.java rename to dd-java-agent/instrumentation/java-concurrent/src/test/java/executor/recursive/RecursiveThreadPoolExecution.java index 40ef2a819af..f02b42956ba 100644 --- a/dd-java-agent/instrumentation/java-concurrent/src/test/java/RecursiveThreadPoolExecution.java +++ b/dd-java-agent/instrumentation/java-concurrent/src/test/java/executor/recursive/RecursiveThreadPoolExecution.java @@ -1,3 +1,5 @@ +package executor.recursive; + import static datadog.trace.bootstrap.instrumentation.api.AgentTracer.activateSpan; import static datadog.trace.bootstrap.instrumentation.api.AgentTracer.startSpan; diff --git a/dd-java-agent/instrumentation/java-concurrent/src/test/java/RecursiveThreadPoolMixedSubmissionAndExecution.java b/dd-java-agent/instrumentation/java-concurrent/src/test/java/executor/recursive/RecursiveThreadPoolMixedSubmissionAndExecution.java similarity index 97% rename from dd-java-agent/instrumentation/java-concurrent/src/test/java/RecursiveThreadPoolMixedSubmissionAndExecution.java rename to dd-java-agent/instrumentation/java-concurrent/src/test/java/executor/recursive/RecursiveThreadPoolMixedSubmissionAndExecution.java index dad040cc047..0dbcb4c6871 100644 --- a/dd-java-agent/instrumentation/java-concurrent/src/test/java/RecursiveThreadPoolMixedSubmissionAndExecution.java +++ b/dd-java-agent/instrumentation/java-concurrent/src/test/java/executor/recursive/RecursiveThreadPoolMixedSubmissionAndExecution.java @@ -1,3 +1,5 @@ +package executor.recursive; + import static datadog.trace.bootstrap.instrumentation.api.AgentTracer.activateSpan; import static datadog.trace.bootstrap.instrumentation.api.AgentTracer.startSpan; diff --git a/dd-java-agent/instrumentation/java-concurrent/src/test/java/RecursiveThreadPoolSubmission.java b/dd-java-agent/instrumentation/java-concurrent/src/test/java/executor/recursive/RecursiveThreadPoolSubmission.java similarity index 97% rename from dd-java-agent/instrumentation/java-concurrent/src/test/java/RecursiveThreadPoolSubmission.java rename to dd-java-agent/instrumentation/java-concurrent/src/test/java/executor/recursive/RecursiveThreadPoolSubmission.java index 1064b453afd..e49c50eea67 100644 --- a/dd-java-agent/instrumentation/java-concurrent/src/test/java/RecursiveThreadPoolSubmission.java +++ b/dd-java-agent/instrumentation/java-concurrent/src/test/java/executor/recursive/RecursiveThreadPoolSubmission.java @@ -1,3 +1,5 @@ +package executor.recursive; + import static datadog.trace.bootstrap.instrumentation.api.AgentTracer.activateSpan; import static datadog.trace.bootstrap.instrumentation.api.AgentTracer.startSpan; diff --git a/dd-java-agent/instrumentation/java-concurrent/src/test/java/ExecutingRejectedExecutionHandler.java b/dd-java-agent/instrumentation/java-concurrent/src/test/java/executor/rejectedexecutionhandler/ExecutingRejectedExecutionHandler.java similarity index 88% rename from dd-java-agent/instrumentation/java-concurrent/src/test/java/ExecutingRejectedExecutionHandler.java rename to dd-java-agent/instrumentation/java-concurrent/src/test/java/executor/rejectedexecutionhandler/ExecutingRejectedExecutionHandler.java index b3661484feb..02a25ce65c3 100644 --- a/dd-java-agent/instrumentation/java-concurrent/src/test/java/ExecutingRejectedExecutionHandler.java +++ b/dd-java-agent/instrumentation/java-concurrent/src/test/java/executor/rejectedexecutionhandler/ExecutingRejectedExecutionHandler.java @@ -1,3 +1,5 @@ +package executor.rejectedexecutionhandler; + import java.util.concurrent.RejectedExecutionHandler; import java.util.concurrent.ThreadPoolExecutor; diff --git a/dd-java-agent/instrumentation/java-concurrent/src/test/java/SwallowingRejectedExecutionHandler.java b/dd-java-agent/instrumentation/java-concurrent/src/test/java/executor/rejectedexecutionhandler/SwallowingRejectedExecutionHandler.java similarity index 91% rename from dd-java-agent/instrumentation/java-concurrent/src/test/java/SwallowingRejectedExecutionHandler.java rename to dd-java-agent/instrumentation/java-concurrent/src/test/java/executor/rejectedexecutionhandler/SwallowingRejectedExecutionHandler.java index dd65c230046..c168f0069cc 100644 --- a/dd-java-agent/instrumentation/java-concurrent/src/test/java/SwallowingRejectedExecutionHandler.java +++ b/dd-java-agent/instrumentation/java-concurrent/src/test/java/executor/rejectedexecutionhandler/SwallowingRejectedExecutionHandler.java @@ -1,3 +1,5 @@ +package executor.rejectedexecutionhandler; + import io.netty.util.concurrent.SingleThreadEventExecutor; import java.util.concurrent.RejectedExecutionHandler; import java.util.concurrent.ThreadPoolExecutor; diff --git a/dd-java-agent/instrumentation/java-concurrent/src/test/java/LinearTask.java b/dd-java-agent/instrumentation/java-concurrent/src/test/java/forkjoin/LinearTask.java similarity index 98% rename from dd-java-agent/instrumentation/java-concurrent/src/test/java/LinearTask.java rename to dd-java-agent/instrumentation/java-concurrent/src/test/java/forkjoin/LinearTask.java index 85590be3da9..5bcc09dacec 100644 --- a/dd-java-agent/instrumentation/java-concurrent/src/test/java/LinearTask.java +++ b/dd-java-agent/instrumentation/java-concurrent/src/test/java/forkjoin/LinearTask.java @@ -1,3 +1,5 @@ +package forkjoin; + import static datadog.trace.bootstrap.instrumentation.api.AgentTracer.activateSpan; import static datadog.trace.bootstrap.instrumentation.api.AgentTracer.startSpan; diff --git a/dd-java-agent/instrumentation/java-concurrent/src/test/java/PeriodicTask.java b/dd-java-agent/instrumentation/java-concurrent/src/test/java/forkjoin/PeriodicTask.java similarity index 96% rename from dd-java-agent/instrumentation/java-concurrent/src/test/java/PeriodicTask.java rename to dd-java-agent/instrumentation/java-concurrent/src/test/java/forkjoin/PeriodicTask.java index 1b769e95367..60bbd7a5316 100644 --- a/dd-java-agent/instrumentation/java-concurrent/src/test/java/PeriodicTask.java +++ b/dd-java-agent/instrumentation/java-concurrent/src/test/java/forkjoin/PeriodicTask.java @@ -1,3 +1,5 @@ +package forkjoin; + import datadog.trace.api.Trace; public class PeriodicTask implements Runnable { diff --git a/dd-java-agent/instrumentation/java-concurrent/src/test/java/CheckpointTask.java b/dd-java-agent/instrumentation/java-concurrent/src/test/java/runnable/CheckpointTask.java similarity index 97% rename from dd-java-agent/instrumentation/java-concurrent/src/test/java/CheckpointTask.java rename to dd-java-agent/instrumentation/java-concurrent/src/test/java/runnable/CheckpointTask.java index 53ce26b97bf..04db8db76b9 100644 --- a/dd-java-agent/instrumentation/java-concurrent/src/test/java/CheckpointTask.java +++ b/dd-java-agent/instrumentation/java-concurrent/src/test/java/runnable/CheckpointTask.java @@ -1,3 +1,5 @@ +package runnable; + import static datadog.trace.bootstrap.instrumentation.api.AgentTracer.activeScope; import datadog.trace.api.Trace; diff --git a/dd-java-agent/instrumentation/java-concurrent/src/test/java/ComparableAsyncChild.java b/dd-java-agent/instrumentation/java-concurrent/src/test/java/runnable/ComparableAsyncChild.java similarity index 97% rename from dd-java-agent/instrumentation/java-concurrent/src/test/java/ComparableAsyncChild.java rename to dd-java-agent/instrumentation/java-concurrent/src/test/java/runnable/ComparableAsyncChild.java index 87d4d8fe0c7..4decb64ccc2 100644 --- a/dd-java-agent/instrumentation/java-concurrent/src/test/java/ComparableAsyncChild.java +++ b/dd-java-agent/instrumentation/java-concurrent/src/test/java/runnable/ComparableAsyncChild.java @@ -1,3 +1,5 @@ +package runnable; + public class ComparableAsyncChild implements Runnable, Comparable { private final int priority; diff --git a/dd-java-agent/instrumentation/java-concurrent/src/test/java/Descendant.java b/dd-java-agent/instrumentation/java-concurrent/src/test/java/runnable/Descendant.java similarity index 97% rename from dd-java-agent/instrumentation/java-concurrent/src/test/java/Descendant.java rename to dd-java-agent/instrumentation/java-concurrent/src/test/java/runnable/Descendant.java index 3ad3d9e8246..6e818e18485 100644 --- a/dd-java-agent/instrumentation/java-concurrent/src/test/java/Descendant.java +++ b/dd-java-agent/instrumentation/java-concurrent/src/test/java/runnable/Descendant.java @@ -1,3 +1,5 @@ +package runnable; + import static datadog.trace.bootstrap.instrumentation.api.AgentTracer.activateSpan; import static datadog.trace.bootstrap.instrumentation.api.AgentTracer.startSpan; diff --git a/dd-java-agent/instrumentation/java-concurrent/src/test/java/JavaAsyncChild.java b/dd-java-agent/instrumentation/java-concurrent/src/test/java/runnable/JavaAsyncChild.java similarity index 98% rename from dd-java-agent/instrumentation/java-concurrent/src/test/java/JavaAsyncChild.java rename to dd-java-agent/instrumentation/java-concurrent/src/test/java/runnable/JavaAsyncChild.java index 67266dcb122..9faac6c347f 100644 --- a/dd-java-agent/instrumentation/java-concurrent/src/test/java/JavaAsyncChild.java +++ b/dd-java-agent/instrumentation/java-concurrent/src/test/java/runnable/JavaAsyncChild.java @@ -1,3 +1,5 @@ +package runnable; + import datadog.trace.api.Trace; import java.util.concurrent.Callable; import java.util.concurrent.ForkJoinTask; diff --git a/dd-java-agent/instrumentation/java-concurrent/src/test/groovy/SettableFuture.java b/dd-java-agent/instrumentation/java-concurrent/src/test/java/runnable/SettableFuture.java similarity index 96% rename from dd-java-agent/instrumentation/java-concurrent/src/test/groovy/SettableFuture.java rename to dd-java-agent/instrumentation/java-concurrent/src/test/java/runnable/SettableFuture.java index 098f09cf06a..9df241918ab 100644 --- a/dd-java-agent/instrumentation/java-concurrent/src/test/groovy/SettableFuture.java +++ b/dd-java-agent/instrumentation/java-concurrent/src/test/java/runnable/SettableFuture.java @@ -1,3 +1,5 @@ +package runnable; + import java.util.concurrent.Callable; import java.util.concurrent.FutureTask;