Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
15 changes: 15 additions & 0 deletions dd-java-agent/instrumentation/junit-5.3/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,11 @@ muzzle {
}
}

ext {
latestDepTestMinJavaVersionForTests = JavaVersion.VERSION_17
}

addTestSuiteForDir('latest5Test', 'test')
addTestSuiteForDir('latestDepTest', 'test')

dependencies {
Expand All @@ -36,6 +41,10 @@ dependencies {
testImplementation group: 'org.junit.jupiter', name: 'junit-jupiter-engine', version: '5.12.0'
testImplementation group: 'org.junit.jupiter', name: 'junit-jupiter-params', version: '5.12.0'

latest5TestImplementation group: 'org.junit.platform', name: 'junit-platform-launcher', version: '1.+'
latest5TestImplementation group: 'org.junit.jupiter', name: 'junit-jupiter-engine', version: '5.+'
latest5TestImplementation group: 'org.junit.jupiter', name: 'junit-jupiter-params', version: '5.+'

latestDepTestImplementation group: 'org.junit.platform', name: 'junit-platform-launcher', version: '+'
latestDepTestImplementation group: 'org.junit.jupiter', name: 'junit-jupiter-engine', version: '+'
latestDepTestImplementation group: 'org.junit.jupiter', name: 'junit-jupiter-params', version: '+'
Expand All @@ -48,3 +57,9 @@ configurations.matching({ it.name.startsWith('test') }).each({
force group: 'org.junit.jupiter', name: 'junit-jupiter-params', version: '5.12.0'
}
})

tasks.named("compileLatestDepTestJava").configure {
setJavaVersion(it, 17)
sourceCompatibility = JavaVersion.VERSION_1_8
targetCompatibility = JavaVersion.VERSION_1_8
}
30 changes: 13 additions & 17 deletions dd-java-agent/instrumentation/junit-5.3/gradle.lockfile
Original file line number Diff line number Diff line change
Expand Up @@ -53,7 +53,7 @@ commons-fileupload:commons-fileupload:1.5=latestDepTestCompileClasspath,latestDe
commons-io:commons-io:2.11.0=latestDepTestCompileClasspath,latestDepTestRuntimeClasspath,testCompileClasspath,testRuntimeClasspath
de.thetaphi:forbiddenapis:3.8=compileClasspath
info.picocli:picocli:4.6.3=latestDepTestRuntimeClasspath,testRuntimeClasspath
io.sqreen:libsqreen:15.0.1=latestDepTestRuntimeClasspath,testRuntimeClasspath
io.sqreen:libsqreen:16.0.0=latestDepTestRuntimeClasspath,testRuntimeClasspath
javax.servlet:javax.servlet-api:3.1.0=latestDepTestCompileClasspath,latestDepTestRuntimeClasspath,testCompileClasspath,testRuntimeClasspath
jaxen:jaxen:1.2.0=spotbugs
jline:jline:2.14.6=latestDepTestRuntimeClasspath,testRuntimeClasspath
Expand Down Expand Up @@ -124,40 +124,36 @@ org.freemarker:freemarker:2.3.31=latestDepTestCompileClasspath,latestDepTestRunt
org.gmetrics:GMetrics:2.1.0=codenarc
org.hamcrest:hamcrest-core:1.3=latestDepTestCompileClasspath,latestDepTestRuntimeClasspath,testCompileClasspath,testRuntimeClasspath
org.hamcrest:hamcrest:2.2=latestDepTestCompileClasspath,latestDepTestRuntimeClasspath,testCompileClasspath,testRuntimeClasspath
org.jacoco:org.jacoco.core:0.8.12=latestDepTestRuntimeClasspath,testRuntimeClasspath
org.jacoco:org.jacoco.report:0.8.12=latestDepTestRuntimeClasspath,testRuntimeClasspath
org.jacoco:org.jacoco.core:0.8.13=latestDepTestRuntimeClasspath,testRuntimeClasspath
org.jacoco:org.jacoco.report:0.8.13=latestDepTestRuntimeClasspath,testRuntimeClasspath
org.jctools:jctools-core:3.3.0=instrumentPluginClasspath,latestDepTestRuntimeClasspath,muzzleTooling,runtimeClasspath,testRuntimeClasspath
org.jetbrains.kotlin:kotlin-stdlib-common:1.6.21=latestDepTestCompileClasspath,latestDepTestRuntimeClasspath,testCompileClasspath,testRuntimeClasspath
org.jetbrains.kotlin:kotlin-stdlib-jdk7:1.6.21=latestDepTestCompileClasspath,latestDepTestRuntimeClasspath,testCompileClasspath,testRuntimeClasspath
org.jetbrains.kotlin:kotlin-stdlib-jdk8:1.6.21=latestDepTestCompileClasspath,latestDepTestRuntimeClasspath,testCompileClasspath,testRuntimeClasspath
org.jetbrains.kotlin:kotlin-stdlib:1.6.21=latestDepTestCompileClasspath,latestDepTestRuntimeClasspath,testCompileClasspath,testRuntimeClasspath
org.jetbrains:annotations:13.0=latestDepTestCompileClasspath,latestDepTestRuntimeClasspath,testCompileClasspath,testRuntimeClasspath
org.jspecify:jspecify:1.0.0=latestDepTestCompileClasspath
org.junit.jupiter:junit-jupiter-api:5.12.0=testCompileClasspath,testRuntimeClasspath
org.junit.jupiter:junit-jupiter-api:5.3.0=compileClasspath
org.junit.jupiter:junit-jupiter-api:5.13.4=latestDepTestCompileClasspath,latestDepTestRuntimeClasspath
org.junit.jupiter:junit-jupiter-api:6.0.0-RC2=latestDepTestCompileClasspath,latestDepTestRuntimeClasspath
org.junit.jupiter:junit-jupiter-engine:5.12.0=testCompileClasspath,testRuntimeClasspath
org.junit.jupiter:junit-jupiter-engine:5.13.4=latestDepTestCompileClasspath,latestDepTestRuntimeClasspath
org.junit.jupiter:junit-jupiter-engine:6.0.0-RC2=latestDepTestCompileClasspath,latestDepTestRuntimeClasspath
org.junit.jupiter:junit-jupiter-params:5.12.0=testCompileClasspath,testRuntimeClasspath
org.junit.jupiter:junit-jupiter-params:5.13.4=latestDepTestCompileClasspath,latestDepTestRuntimeClasspath
org.junit.jupiter:junit-jupiter-params:6.0.0-RC2=latestDepTestCompileClasspath,latestDepTestRuntimeClasspath
org.junit.jupiter:junit-jupiter:5.12.0=testCompileClasspath,testRuntimeClasspath
org.junit.jupiter:junit-jupiter:6.0.0-RC2=latestDepTestCompileClasspath,latestDepTestRuntimeClasspath
org.junit.platform:junit-platform-commons:1.12.0=testCompileClasspath,testRuntimeClasspath
org.junit.platform:junit-platform-commons:1.3.0=compileClasspath
org.junit.platform:junit-platform-commons:1.13.4=latestDepTestCompileClasspath,latestDepTestRuntimeClasspath
org.junit.platform:junit-platform-commons:6.0.0-RC2=latestDepTestCompileClasspath,latestDepTestRuntimeClasspath
org.junit.platform:junit-platform-engine:1.12.0=testCompileClasspath,testRuntimeClasspath
org.junit.platform:junit-platform-engine:1.3.0=compileClasspath
org.junit.platform:junit-platform-engine:1.13.4=latestDepTestCompileClasspath,latestDepTestRuntimeClasspath
org.junit.platform:junit-platform-engine:6.0.0-RC2=latestDepTestCompileClasspath,latestDepTestRuntimeClasspath
org.junit.platform:junit-platform-launcher:1.12.0=testCompileClasspath,testRuntimeClasspath
org.junit.platform:junit-platform-launcher:1.3.0=compileClasspath
org.junit.platform:junit-platform-launcher:1.13.4=latestDepTestCompileClasspath,latestDepTestRuntimeClasspath
org.junit.platform:junit-platform-launcher:6.0.0-RC2=latestDepTestCompileClasspath,latestDepTestRuntimeClasspath
org.junit.platform:junit-platform-runner:1.12.0=testRuntimeClasspath
org.junit.platform:junit-platform-runner:1.9.0=latestDepTestRuntimeClasspath
org.junit.platform:junit-platform-suite-api:1.12.0=testRuntimeClasspath
org.junit.platform:junit-platform-suite-api:1.13.4=latestDepTestRuntimeClasspath
org.junit.platform:junit-platform-suite-api:6.0.0-RC2=latestDepTestRuntimeClasspath
org.junit.platform:junit-platform-suite-commons:1.12.0=testRuntimeClasspath
org.junit.platform:junit-platform-suite-commons:1.9.0=latestDepTestRuntimeClasspath
org.junit:junit-bom:5.12.0=testCompileClasspath,testRuntimeClasspath
org.junit:junit-bom:5.9.1=spotbugs
org.junit:junit-bom:5.13.4=latestDepTestCompileClasspath,latestDepTestRuntimeClasspath
org.junit:junit-bom:6.0.0-RC2=latestDepTestCompileClasspath,latestDepTestRuntimeClasspath
org.msgpack:jackson-dataformat-msgpack:0.9.6=latestDepTestCompileClasspath,latestDepTestRuntimeClasspath,testCompileClasspath,testRuntimeClasspath
org.msgpack:msgpack-core:0.9.6=latestDepTestCompileClasspath,latestDepTestRuntimeClasspath,testCompileClasspath,testRuntimeClasspath
org.objenesis:objenesis:3.3=latestDepTestCompileClasspath,latestDepTestRuntimeClasspath,testCompileClasspath,testRuntimeClasspath
Expand Down
11 changes: 11 additions & 0 deletions dd-java-agent/instrumentation/junit-5.3/junit-5.8/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,10 @@ muzzle {
}
}

ext {
latestDepTestMinJavaVersionForTests = JavaVersion.VERSION_17
}

addTestSuiteForDir('latestDepTest', 'test')

dependencies {
Expand Down Expand Up @@ -52,3 +56,10 @@ configurations.matching({ it.name.startsWith('test') }).each({
force group: 'org.junit.jupiter', name: 'junit-jupiter-params', version: '5.12.0'
}
})

tasks.named("compileLatestDepTestJava").configure {
setJavaVersion(it, 17)
sourceCompatibility = JavaVersion.VERSION_1_8
targetCompatibility = JavaVersion.VERSION_1_8
}

30 changes: 13 additions & 17 deletions dd-java-agent/instrumentation/junit-5.3/junit-5.8/gradle.lockfile
Original file line number Diff line number Diff line change
Expand Up @@ -53,7 +53,7 @@ commons-fileupload:commons-fileupload:1.5=latestDepTestCompileClasspath,latestDe
commons-io:commons-io:2.11.0=latestDepTestCompileClasspath,latestDepTestRuntimeClasspath,testCompileClasspath,testRuntimeClasspath
de.thetaphi:forbiddenapis:3.8=compileClasspath
info.picocli:picocli:4.6.3=latestDepTestRuntimeClasspath,testRuntimeClasspath
io.sqreen:libsqreen:15.0.1=latestDepTestRuntimeClasspath,testRuntimeClasspath
io.sqreen:libsqreen:16.0.0=latestDepTestRuntimeClasspath,testRuntimeClasspath
javax.servlet:javax.servlet-api:3.1.0=latestDepTestCompileClasspath,latestDepTestRuntimeClasspath,testCompileClasspath,testRuntimeClasspath
jaxen:jaxen:1.2.0=spotbugs
jline:jline:2.14.6=latestDepTestRuntimeClasspath,testRuntimeClasspath
Expand Down Expand Up @@ -123,42 +123,38 @@ org.freemarker:freemarker:2.3.31=latestDepTestCompileClasspath,latestDepTestRunt
org.gmetrics:GMetrics:2.1.0=codenarc
org.hamcrest:hamcrest-core:1.3=latestDepTestCompileClasspath,latestDepTestRuntimeClasspath,testCompileClasspath,testRuntimeClasspath
org.hamcrest:hamcrest:2.2=latestDepTestCompileClasspath,latestDepTestRuntimeClasspath,testCompileClasspath,testRuntimeClasspath
org.jacoco:org.jacoco.core:0.8.12=latestDepTestRuntimeClasspath,testRuntimeClasspath
org.jacoco:org.jacoco.report:0.8.12=latestDepTestRuntimeClasspath,testRuntimeClasspath
org.jacoco:org.jacoco.core:0.8.13=latestDepTestRuntimeClasspath,testRuntimeClasspath
org.jacoco:org.jacoco.report:0.8.13=latestDepTestRuntimeClasspath,testRuntimeClasspath
org.jctools:jctools-core:3.3.0=instrumentPluginClasspath,latestDepTestRuntimeClasspath,muzzleTooling,runtimeClasspath,testRuntimeClasspath
org.jetbrains.kotlin:kotlin-stdlib-common:1.6.21=latestDepTestCompileClasspath,latestDepTestRuntimeClasspath,testCompileClasspath,testRuntimeClasspath
org.jetbrains.kotlin:kotlin-stdlib-jdk7:1.6.21=latestDepTestCompileClasspath,latestDepTestRuntimeClasspath,testCompileClasspath,testRuntimeClasspath
org.jetbrains.kotlin:kotlin-stdlib-jdk8:1.6.21=latestDepTestCompileClasspath,latestDepTestRuntimeClasspath,testCompileClasspath,testRuntimeClasspath
org.jetbrains.kotlin:kotlin-stdlib:1.6.21=latestDepTestCompileClasspath,latestDepTestRuntimeClasspath,testCompileClasspath,testRuntimeClasspath
org.jetbrains:annotations:13.0=latestDepTestCompileClasspath,latestDepTestRuntimeClasspath,testCompileClasspath,testRuntimeClasspath
org.jspecify:jspecify:1.0.0=latestDepTestCompileClasspath
org.junit.jupiter:junit-jupiter-api:5.12.0=testCompileClasspath,testRuntimeClasspath
org.junit.jupiter:junit-jupiter-api:5.8.0=compileClasspath
org.junit.jupiter:junit-jupiter-api:5.13.4=latestDepTestCompileClasspath,latestDepTestRuntimeClasspath
org.junit.jupiter:junit-jupiter-api:6.0.0-RC2=latestDepTestCompileClasspath,latestDepTestRuntimeClasspath
org.junit.jupiter:junit-jupiter-engine:5.12.0=testCompileClasspath,testRuntimeClasspath
org.junit.jupiter:junit-jupiter-engine:5.8.0=compileClasspath
org.junit.jupiter:junit-jupiter-engine:5.13.4=latestDepTestCompileClasspath,latestDepTestRuntimeClasspath
org.junit.jupiter:junit-jupiter-engine:6.0.0-RC2=latestDepTestCompileClasspath,latestDepTestRuntimeClasspath
org.junit.jupiter:junit-jupiter-params:5.12.0=testCompileClasspath,testRuntimeClasspath
org.junit.jupiter:junit-jupiter-params:5.13.4=latestDepTestCompileClasspath,latestDepTestRuntimeClasspath
org.junit.jupiter:junit-jupiter-params:6.0.0-RC2=latestDepTestCompileClasspath,latestDepTestRuntimeClasspath
org.junit.jupiter:junit-jupiter:5.12.0=testCompileClasspath,testRuntimeClasspath
org.junit.jupiter:junit-jupiter:6.0.0-RC2=latestDepTestCompileClasspath,latestDepTestRuntimeClasspath
org.junit.platform:junit-platform-commons:1.12.0=testCompileClasspath,testRuntimeClasspath
org.junit.platform:junit-platform-commons:1.8.0=compileClasspath
org.junit.platform:junit-platform-commons:1.13.4=latestDepTestCompileClasspath,latestDepTestRuntimeClasspath
org.junit.platform:junit-platform-commons:6.0.0-RC2=latestDepTestCompileClasspath,latestDepTestRuntimeClasspath
org.junit.platform:junit-platform-engine:1.12.0=testCompileClasspath,testRuntimeClasspath
org.junit.platform:junit-platform-engine:1.8.0=compileClasspath
org.junit.platform:junit-platform-engine:1.13.4=latestDepTestCompileClasspath,latestDepTestRuntimeClasspath
org.junit.platform:junit-platform-engine:6.0.0-RC2=latestDepTestCompileClasspath,latestDepTestRuntimeClasspath
org.junit.platform:junit-platform-launcher:1.12.0=testCompileClasspath,testRuntimeClasspath
org.junit.platform:junit-platform-launcher:1.8.0=compileClasspath
org.junit.platform:junit-platform-launcher:1.13.4=latestDepTestCompileClasspath,latestDepTestRuntimeClasspath
org.junit.platform:junit-platform-launcher:6.0.0-RC2=latestDepTestCompileClasspath,latestDepTestRuntimeClasspath
org.junit.platform:junit-platform-runner:1.12.0=testRuntimeClasspath
org.junit.platform:junit-platform-runner:1.9.0=latestDepTestRuntimeClasspath
org.junit.platform:junit-platform-suite-api:1.12.0=testRuntimeClasspath
org.junit.platform:junit-platform-suite-api:1.13.4=latestDepTestRuntimeClasspath
org.junit.platform:junit-platform-suite-api:6.0.0-RC2=latestDepTestRuntimeClasspath
org.junit.platform:junit-platform-suite-commons:1.12.0=testRuntimeClasspath
org.junit.platform:junit-platform-suite-commons:1.9.0=latestDepTestRuntimeClasspath
org.junit:junit-bom:5.12.0=testCompileClasspath,testRuntimeClasspath
org.junit:junit-bom:5.8.0=compileClasspath
org.junit:junit-bom:5.9.1=spotbugs
org.junit:junit-bom:1.13.4=latestDepTestCompileClasspath,latestDepTestRuntimeClasspath
org.junit:junit-bom:6.0.0-RC2=latestDepTestCompileClasspath,latestDepTestRuntimeClasspath
org.msgpack:jackson-dataformat-msgpack:0.9.6=latestDepTestCompileClasspath,latestDepTestRuntimeClasspath,testCompileClasspath,testRuntimeClasspath
org.msgpack:msgpack-core:0.9.6=latestDepTestCompileClasspath,latestDepTestRuntimeClasspath,testCompileClasspath,testRuntimeClasspath
org.objenesis:objenesis:3.3=latestDepTestCompileClasspath,latestDepTestRuntimeClasspath,testCompileClasspath,testRuntimeClasspath
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,118 @@
package datadog.trace.instrumentation.junit5;

import datadog.trace.util.MethodHandles;
import java.lang.invoke.MethodHandle;
import java.util.Arrays;
import java.util.function.BiFunction;
import org.junit.platform.commons.util.ClassLoaderUtils;
import org.junit.platform.engine.ConfigurationParameters;
import org.junit.platform.engine.EngineExecutionListener;
import org.junit.platform.engine.ExecutionRequest;
import org.junit.platform.engine.TestDescriptor;

public class ExecutionRequestFactory {

private static final MethodHandles METHOD_HANDLES =
new MethodHandles(ClassLoaderUtils.getDefaultClassLoader());

/*
* From 5.13.0-RC1 onwards ExecutionRequest requires two additional arguments on creation.
* - OutputDirectoryProvider outputDirectoryProvider
* - NamespacedHierarchicalStore<Namespace> requestLevelStore
*/
private static final MethodHandle GET_OUTPUT_DIRECTORY_PROVIDER =
METHOD_HANDLES.method(ExecutionRequest.class, "getOutputDirectoryProvider");
private static final MethodHandle GET_STORE =
METHOD_HANDLES.method(ExecutionRequest.class, "getStore");
/*
* From 6.0.0-M2 onwards CancellationToken is also required.
*/
private static final MethodHandle GET_CANCELLATION_TOKEN =
METHOD_HANDLES.method(ExecutionRequest.class, "getCancellationToken");

private static final String[] CREATE_PARAMETER_TYPES =
new String[] {
"org.junit.platform.engine.TestDescriptor",
"org.junit.platform.engine.EngineExecutionListener",
"org.junit.platform.engine.ConfigurationParameters",
"org.junit.platform.engine.reporting.OutputDirectoryProvider",
"org.junit.platform.engine.support.store.NamespacedHierarchicalStore",
"org.junit.platform.engine.CancellationToken"
};

private static final BiFunction<ExecutionRequest, EngineExecutionListener, ExecutionRequest>
EXECUTION_REQUEST_CREATE = createExecutionRequestHandle();

private static BiFunction<ExecutionRequest, EngineExecutionListener, ExecutionRequest>
createExecutionRequestHandle() {
// 6.0.0-M2 and later
if (GET_CANCELLATION_TOKEN != null) {
MethodHandle createMethod =
METHOD_HANDLES.method(
ExecutionRequest.class,
m ->
"create".equals(m.getName())
&& m.getParameterCount() == 6
&& Arrays.equals(
Arrays.stream(m.getParameterTypes()).map(Class::getName).toArray(),
CREATE_PARAMETER_TYPES));

return (request, listener) -> {
Object provider = METHOD_HANDLES.invoke(GET_OUTPUT_DIRECTORY_PROVIDER, request);
Object store = METHOD_HANDLES.invoke(GET_STORE, request);
Object cancellationToken = METHOD_HANDLES.invoke(GET_CANCELLATION_TOKEN, request);
return METHOD_HANDLES.invoke(
createMethod,
request.getRootTestDescriptor(),
listener,
request.getConfigurationParameters(),
provider,
store,
cancellationToken);
};
}

// 5.13.0-RC1 and later
if (GET_STORE != null && GET_OUTPUT_DIRECTORY_PROVIDER != null) {
MethodHandle createMethod =
METHOD_HANDLES.method(
ExecutionRequest.class,
m ->
"create".equals(m.getName())
&& m.getParameterCount() == 5
&& Arrays.equals(
Arrays.stream(m.getParameterTypes()).map(Class::getName).toArray(),
Arrays.copyOf(CREATE_PARAMETER_TYPES, 5)));

return (request, listener) -> {
Object provider = METHOD_HANDLES.invoke(GET_OUTPUT_DIRECTORY_PROVIDER, request);
Object store = METHOD_HANDLES.invoke(GET_STORE, request);
return METHOD_HANDLES.invoke(
createMethod,
request.getRootTestDescriptor(),
listener,
request.getConfigurationParameters(),
provider,
store);
};
}

MethodHandle constructor =
METHOD_HANDLES.constructor(
ExecutionRequest.class,
TestDescriptor.class,
EngineExecutionListener.class,
ConfigurationParameters.class);
return (request, listener) ->
METHOD_HANDLES.invoke(
constructor,
request.getRootTestDescriptor(),
listener,
request.getConfigurationParameters());
}

public static ExecutionRequest createExecutionRequest(
ExecutionRequest request, EngineExecutionListener listener) {
return EXECUTION_REQUEST_CREATE.apply(request, listener);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -49,6 +49,7 @@ public ElementMatcher<TypeDescription> hierarchyMatcher() {
public String[] helperClassNames() {
return new String[] {
packageName + ".JUnitPlatformUtils",
packageName + ".ExecutionRequestFactory",
packageName + ".TestEventsHandlerHolder",
packageName + ".TracingListener",
packageName + ".CompositeEngineListener",
Expand Down Expand Up @@ -117,7 +118,7 @@ public static void addTracingListener(
EngineExecutionListener compositeListener =
new CompositeEngineListener(tracingListener, originalListener);
executionRequest =
JUnitPlatformUtils.createExecutionRequest(executionRequest, compositeListener);
ExecutionRequestFactory.createExecutionRequest(executionRequest, compositeListener);
}

// JUnit 5.3.0 and above
Expand Down
Loading