diff --git a/agent-module/plugins-test-module/plugins-test/src/main/java/com/navercorp/pinpoint/test/plugin/junit5/descriptor/PluginForkedTestMethodTestDescriptor.java b/agent-module/plugins-test-module/plugins-test/src/main/java/com/navercorp/pinpoint/test/plugin/junit5/descriptor/PluginForkedTestMethodTestDescriptor.java index c546b928f95d..771fe52a1ce1 100644 --- a/agent-module/plugins-test-module/plugins-test/src/main/java/com/navercorp/pinpoint/test/plugin/junit5/descriptor/PluginForkedTestMethodTestDescriptor.java +++ b/agent-module/plugins-test-module/plugins-test/src/main/java/com/navercorp/pinpoint/test/plugin/junit5/descriptor/PluginForkedTestMethodTestDescriptor.java @@ -16,6 +16,7 @@ package com.navercorp.pinpoint.test.plugin.junit5.descriptor; +import com.navercorp.pinpoint.test.plugin.PluginForkedTestInstance; import com.navercorp.pinpoint.test.plugin.junit5.engine.support.PluginForkedTestThrowableCollector; import com.navercorp.pinpoint.test.plugin.junit5.engine.support.PluginTestReport; import org.junit.jupiter.api.extension.ExtensionContext; @@ -23,17 +24,25 @@ import org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor; import org.junit.jupiter.engine.execution.JupiterEngineExecutionContext; import org.junit.platform.engine.TestExecutionResult; +import org.junit.platform.engine.TestSource; import org.junit.platform.engine.UniqueId; +import org.junit.platform.engine.support.descriptor.MethodSource; import org.junit.platform.engine.support.hierarchical.ThrowableCollector; import java.lang.reflect.Method; +import java.util.Optional; public class PluginForkedTestMethodTestDescriptor extends TestMethodTestDescriptor { + private final PluginForkedTestInstance pluginTestInstance; + private final MethodSource source; private PluginTestReport testReport; - public PluginForkedTestMethodTestDescriptor(UniqueId uniqueId, Class testClass, Method testMethod, JupiterConfiguration configuration) { + + public PluginForkedTestMethodTestDescriptor(UniqueId uniqueId, Class testClass, Method testMethod, JupiterConfiguration configuration, PluginForkedTestInstance pluginTestInstance) { super(uniqueId, testClass, testMethod, configuration); + this.pluginTestInstance = pluginTestInstance; + this.source = MethodSource.from(testClass.getName(), testMethod.getName() + "[" + pluginTestInstance.getTestId() + "]"); } @Override @@ -84,4 +93,9 @@ public SkipResult shouldBeSkipped(JupiterEngineExecutionContext context) throws } return SkipResult.doNotSkip(); } -} + + @Override + public Optional getSource() { + return Optional.of(source); + } +} \ No newline at end of file diff --git a/agent-module/plugins-test-module/plugins-test/src/main/java/com/navercorp/pinpoint/test/plugin/junit5/descriptor/PluginTestMethodTestDescriptor.java b/agent-module/plugins-test-module/plugins-test/src/main/java/com/navercorp/pinpoint/test/plugin/junit5/descriptor/PluginTestMethodTestDescriptor.java index 7df7b4db6697..d4c3f7f6ec5c 100644 --- a/agent-module/plugins-test-module/plugins-test/src/main/java/com/navercorp/pinpoint/test/plugin/junit5/descriptor/PluginTestMethodTestDescriptor.java +++ b/agent-module/plugins-test-module/plugins-test/src/main/java/com/navercorp/pinpoint/test/plugin/junit5/descriptor/PluginTestMethodTestDescriptor.java @@ -20,17 +20,22 @@ import org.junit.jupiter.engine.config.JupiterConfiguration; import org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor; import org.junit.jupiter.engine.execution.JupiterEngineExecutionContext; +import org.junit.platform.engine.TestSource; import org.junit.platform.engine.UniqueId; +import org.junit.platform.engine.support.descriptor.MethodSource; import java.lang.reflect.Method; +import java.util.Optional; public class PluginTestMethodTestDescriptor extends TestMethodTestDescriptor { private final PluginTestInstance pluginTestInstance; + private final MethodSource source; public PluginTestMethodTestDescriptor(UniqueId uniqueId, Class testClass, Method testMethod, JupiterConfiguration configuration, PluginTestInstance pluginTestInstance) { super(uniqueId, testClass, testMethod, configuration); this.pluginTestInstance = pluginTestInstance; + this.source = MethodSource.from(testClass.getName(), testMethod.getName() + "[" + pluginTestInstance.getTestId() + "]"); } @Override @@ -47,5 +52,8 @@ public JupiterEngineExecutionContext execute(JupiterEngineExecutionContext conte }, true); } - -} + @Override + public Optional getSource() { + return Optional.of(source); + } +} \ No newline at end of file diff --git a/agent-module/plugins-test-module/plugins-test/src/main/java/com/navercorp/pinpoint/test/plugin/junit5/engine/PluginForkedTestEngine.java b/agent-module/plugins-test-module/plugins-test/src/main/java/com/navercorp/pinpoint/test/plugin/junit5/engine/PluginForkedTestEngine.java index 9ff53ff310aa..0dfeb5f0f2c4 100644 --- a/agent-module/plugins-test-module/plugins-test/src/main/java/com/navercorp/pinpoint/test/plugin/junit5/engine/PluginForkedTestEngine.java +++ b/agent-module/plugins-test-module/plugins-test/src/main/java/com/navercorp/pinpoint/test/plugin/junit5/engine/PluginForkedTestEngine.java @@ -133,7 +133,7 @@ TestDescriptor addPluginForkedTestDescriptor(TestDescriptor testDescriptor, Jupi for (TestDescriptor descriptor : testDescriptor.getChildren()) { if (descriptor instanceof TestMethodTestDescriptor) { final Method method = ((TestMethodTestDescriptor) descriptor).getTestMethod(); - final PluginForkedTestMethodTestDescriptor pluginTestMethodTestDescriptor = toPluginTestMethodTestDescriptor(configuration, pluginTestClassTestDescriptor, method); + final PluginForkedTestMethodTestDescriptor pluginTestMethodTestDescriptor = toPluginTestMethodTestDescriptor(configuration, pluginTestClassTestDescriptor, pluginTestInstance, method); pluginTestClassTestDescriptor.addChild(pluginTestMethodTestDescriptor); } } @@ -150,11 +150,11 @@ private static PluginForkedTestClassTestDescriptor toPluginTestClassTestDescript return new PluginForkedTestClassTestDescriptor(parentTestDescriptor.getUniqueId().append(ClassTestDescriptor.SEGMENT_TYPE, testClass.getName()), testClass, configuration); } - private static PluginForkedTestMethodTestDescriptor toPluginTestMethodTestDescriptor(JupiterConfiguration configuration, PluginForkedTestClassTestDescriptor parentTestDescriptor, Method method) { + private static PluginForkedTestMethodTestDescriptor toPluginTestMethodTestDescriptor(JupiterConfiguration configuration, PluginForkedTestClassTestDescriptor parentTestDescriptor, PluginForkedTestInstance pluginForkedTestInstance, Method method) { final Class testClass = parentTestDescriptor.getTestClass(); final Method testMethod = method; String methodId = String.format("%s(%s)", method.getName(), ClassUtils.nullSafeToString(method.getParameterTypes())); - return new PluginForkedTestMethodTestDescriptor(parentTestDescriptor.getUniqueId().append(TestMethodTestDescriptor.SEGMENT_TYPE, methodId), testClass, testMethod, configuration); + return new PluginForkedTestMethodTestDescriptor(parentTestDescriptor.getUniqueId().append(TestMethodTestDescriptor.SEGMENT_TYPE, methodId), testClass, testMethod, configuration, pluginForkedTestInstance); } TestDescriptor addPluginJunitTestDescriptor(TestDescriptor testDescriptor, JupiterConfiguration configuration) { diff --git a/agent-module/plugins-test-module/plugins-test/src/main/java/com/navercorp/pinpoint/test/plugin/junit5/engine/PluginTestEngine.java b/agent-module/plugins-test-module/plugins-test/src/main/java/com/navercorp/pinpoint/test/plugin/junit5/engine/PluginTestEngine.java index b22e8edb3e6e..70d127a54e6e 100644 --- a/agent-module/plugins-test-module/plugins-test/src/main/java/com/navercorp/pinpoint/test/plugin/junit5/engine/PluginTestEngine.java +++ b/agent-module/plugins-test-module/plugins-test/src/main/java/com/navercorp/pinpoint/test/plugin/junit5/engine/PluginTestEngine.java @@ -181,7 +181,7 @@ TestDescriptor addPluginForkedTestDescriptor(TestDescriptor testDescriptor, Jupi for (TestDescriptor descriptor : testDescriptor.getChildren()) { if (descriptor instanceof TestMethodTestDescriptor) { final Method method = ((TestMethodTestDescriptor) descriptor).getTestMethod(); - final PluginForkedTestMethodTestDescriptor pluginTestMethodTestDescriptor = toPluginForkedTestMethodTestDescriptor(configuration, pluginTestClassTestDescriptor, method); + final PluginForkedTestMethodTestDescriptor pluginTestMethodTestDescriptor = toPluginForkedTestMethodTestDescriptor(configuration, pluginTestClassTestDescriptor, pluginTestInstance, method); pluginTestClassTestDescriptor.addChild(pluginTestMethodTestDescriptor); } } @@ -259,12 +259,12 @@ private static PluginTestMethodTestDescriptor toPluginTestMethodTestDescriptor(J } } - private static PluginForkedTestMethodTestDescriptor toPluginForkedTestMethodTestDescriptor(JupiterConfiguration configuration, PluginForkedTestClassTestDescriptor parentTestDescriptor, Method method) { + private static PluginForkedTestMethodTestDescriptor toPluginForkedTestMethodTestDescriptor(JupiterConfiguration configuration, PluginForkedTestClassTestDescriptor parentTestDescriptor, PluginForkedTestInstance pluginTestInstance, Method method) { try { final Class testClass = parentTestDescriptor.getTestClass(); final Method testMethod = ReflectionUtils.findMethod(testClass, method.getName(), method.getParameterTypes()).orElseThrow(() -> new IllegalStateException("not found method")); String methodId = String.format("%s(%s)", method.getName(), ClassUtils.nullSafeToString(method.getParameterTypes())); - return new PluginForkedTestMethodTestDescriptor(parentTestDescriptor.getUniqueId().append(TestMethodTestDescriptor.SEGMENT_TYPE, methodId), testClass, testMethod, configuration); + return new PluginForkedTestMethodTestDescriptor(parentTestDescriptor.getUniqueId().append(TestMethodTestDescriptor.SEGMENT_TYPE, methodId), testClass, testMethod, configuration, pluginTestInstance); } catch (Throwable t) { System.out.println(t.getMessage()); return null;