diff --git a/dd-java-agent/agent-ci-visibility/src/main/java/datadog/trace/civisibility/events/TestEventsHandlerImpl.java b/dd-java-agent/agent-ci-visibility/src/main/java/datadog/trace/civisibility/events/TestEventsHandlerImpl.java index 33d28c2629d..c1e4a67adcc 100644 --- a/dd-java-agent/agent-ci-visibility/src/main/java/datadog/trace/civisibility/events/TestEventsHandlerImpl.java +++ b/dd-java-agent/agent-ci-visibility/src/main/java/datadog/trace/civisibility/events/TestEventsHandlerImpl.java @@ -291,6 +291,11 @@ public boolean skip(TestIdentifier test) { return testModule.skip(test); } + @Override + public boolean isSkippable(TestIdentifier test) { + return testModule.isSkippable(test); + } + @Override @Nonnull public TestRetryPolicy retryPolicy(TestIdentifier test) { diff --git a/dd-java-agent/instrumentation/junit-5.3/spock-junit-5/src/main/java/datadog/trace/instrumentation/junit5/JUnit5SpockItrInstrumentation.java b/dd-java-agent/instrumentation/junit-5.3/spock-junit-5/src/main/java/datadog/trace/instrumentation/junit5/JUnit5SpockItrInstrumentation.java index 1af2114614c..7b4f4f85cf7 100644 --- a/dd-java-agent/instrumentation/junit-5.3/spock-junit-5/src/main/java/datadog/trace/instrumentation/junit5/JUnit5SpockItrInstrumentation.java +++ b/dd-java-agent/instrumentation/junit-5.3/spock-junit-5/src/main/java/datadog/trace/instrumentation/junit5/JUnit5SpockItrInstrumentation.java @@ -13,14 +13,14 @@ import datadog.trace.api.civisibility.config.TestIdentifier; import datadog.trace.bootstrap.CallDepthThreadLocalMap; import edu.umd.cs.findbugs.annotations.SuppressFBWarnings; -import java.util.Collection; import java.util.Set; import net.bytebuddy.asm.Advice; import net.bytebuddy.description.type.TypeDescription; import net.bytebuddy.matcher.ElementMatcher; -import org.junit.platform.engine.TestTag; +import org.junit.platform.engine.TestDescriptor; import org.junit.platform.engine.support.hierarchical.Node; import org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService; +import org.spockframework.runtime.SpecNode; import org.spockframework.runtime.SpockNode; @AutoService(Instrumenter.class) @@ -102,16 +102,38 @@ public static void shouldBeSkipped( return; } - Collection tags = SpockUtils.getTags(spockNode); - for (TestTag tag : tags) { - if (InstrumentationBridge.ITR_UNSKIPPABLE_TAG.equals(tag.getName())) { - return; - } + if (SpockUtils.isUnskippable(spockNode)) { + return; } - TestIdentifier test = SpockUtils.toTestIdentifier(spockNode); - if (test != null && TestEventsHandlerHolder.TEST_EVENTS_HANDLER.skip(test)) { + if (spockNode instanceof SpecNode) { + // suite + SpecNode specNode = (SpecNode) spockNode; + Set features = specNode.getChildren(); + for (TestDescriptor feature : features) { + if (feature instanceof SpockNode && SpockUtils.isUnskippable((SpockNode) feature)) { + return; + } + + TestIdentifier featureIdentifier = SpockUtils.toTestIdentifier(feature); + if (featureIdentifier == null + || !TestEventsHandlerHolder.TEST_EVENTS_HANDLER.isSkippable(featureIdentifier)) { + return; + } + } + + // all children are skippable + for (TestDescriptor feature : features) { + TestEventsHandlerHolder.TEST_EVENTS_HANDLER.skip(SpockUtils.toTestIdentifier(feature)); + } skipResult = Node.SkipResult.skip(InstrumentationBridge.ITR_SKIP_REASON); + + } else { + // individual test case + TestIdentifier test = SpockUtils.toTestIdentifier(spockNode); + if (test != null && TestEventsHandlerHolder.TEST_EVENTS_HANDLER.skip(test)) { + skipResult = Node.SkipResult.skip(InstrumentationBridge.ITR_SKIP_REASON); + } } } diff --git a/dd-java-agent/instrumentation/junit-5.3/spock-junit-5/src/main/java/datadog/trace/instrumentation/junit5/SpockUtils.java b/dd-java-agent/instrumentation/junit-5.3/spock-junit-5/src/main/java/datadog/trace/instrumentation/junit5/SpockUtils.java index 056f6aca21a..eaf849edf13 100644 --- a/dd-java-agent/instrumentation/junit-5.3/spock-junit-5/src/main/java/datadog/trace/instrumentation/junit5/SpockUtils.java +++ b/dd-java-agent/instrumentation/junit-5.3/spock-junit-5/src/main/java/datadog/trace/instrumentation/junit5/SpockUtils.java @@ -1,5 +1,6 @@ package datadog.trace.instrumentation.junit5; +import datadog.trace.api.civisibility.InstrumentationBridge; import datadog.trace.api.civisibility.config.TestIdentifier; import java.lang.invoke.MethodHandle; import java.lang.reflect.Method; @@ -64,6 +65,16 @@ public static Collection getTags(SpockNode spockNode) { } } + public static boolean isUnskippable(SpockNode spockNode) { + Collection tags = SpockUtils.getTags(spockNode); + for (TestTag tag : tags) { + if (InstrumentationBridge.ITR_UNSKIPPABLE_TAG.equals(tag.getName())) { + return true; + } + } + return false; + } + public static Method getTestMethod(MethodSource methodSource) { String methodName = methodSource.getMethodName(); if (methodName == null) { diff --git a/dd-java-agent/instrumentation/junit-5.3/spock-junit-5/src/test/groovy/SpockTest.groovy b/dd-java-agent/instrumentation/junit-5.3/spock-junit-5/src/test/groovy/SpockTest.groovy index ef9e154e15f..cae43f6aaaa 100644 --- a/dd-java-agent/instrumentation/junit-5.3/spock-junit-5/src/test/groovy/SpockTest.groovy +++ b/dd-java-agent/instrumentation/junit-5.3/spock-junit-5/src/test/groovy/SpockTest.groovy @@ -6,8 +6,10 @@ import org.example.TestFailedParameterizedSpock import org.example.TestFailedSpock import org.example.TestFailedThenSucceedParameterizedSpock import org.example.TestFailedThenSucceedSpock +import org.example.TestParameterizedSetupSpecSpock import org.example.TestParameterizedSpock import org.example.TestSucceedAndFailedSpock +import org.example.TestSucceedSetupSpecSpock import org.example.TestSucceedSpock import org.example.TestSucceedSpockSlow import org.example.TestSucceedSpockUnskippable @@ -47,13 +49,21 @@ class SpockTest extends CiVisibilityInstrumentationTest { assertSpansData(testcaseName, expectedTracesCount) where: - testcaseName | tests | expectedTracesCount | skippedTests - "test-itr-skipping" | [TestSucceedSpock] | 2 | [new TestIdentifier("org.example.TestSucceedSpock", "test success", null, null)] - "test-itr-skipping-parameterized" | [TestParameterizedSpock] | 3 | [ + testcaseName | tests | expectedTracesCount | skippedTests + "test-itr-skipping" | [TestSucceedSpock] | 2 | [new TestIdentifier("org.example.TestSucceedSpock", "test success", null, null)] + "test-itr-skipping-parameterized" | [TestParameterizedSpock] | 3 | [ new TestIdentifier("org.example.TestParameterizedSpock", "test add 1 and 2", '{"metadata":{"test_name":"test add 1 and 2"}}', null) ] - "test-itr-unskippable" | [TestSucceedSpockUnskippable] | 2 | [new TestIdentifier("org.example.TestSucceedSpockUnskippable", "test success", null, null)] - "test-itr-unskippable-suite" | [TestSucceedSpockUnskippableSuite] | 2 | [new TestIdentifier("org.example.TestSucceedSpockUnskippableSuite", "test success", null, null)] + "test-itr-unskippable" | [TestSucceedSpockUnskippable] | 2 | [new TestIdentifier("org.example.TestSucceedSpockUnskippable", "test success", null, null)] + "test-itr-unskippable-suite" | [TestSucceedSpockUnskippableSuite] | 2 | [new TestIdentifier("org.example.TestSucceedSpockUnskippableSuite", "test success", null, null)] + "test-itr-skipping-spec-setup" | [TestSucceedSetupSpecSpock] | 2 | [ + new TestIdentifier("org.example.TestSucceedSetupSpecSpock", "test success", null, null), + new TestIdentifier("org.example.TestSucceedSetupSpecSpock", "test another success", null, null) + ] + "test-itr-not-skipping-spec-setup" | [TestSucceedSetupSpecSpock] | 2 | [new TestIdentifier("org.example.TestSucceedSetupSpecSpock", "test success", null, null)] + "test-itr-not-skipping-parameterized-spec-setup" | [TestParameterizedSetupSpecSpock] | 2 | [ + new TestIdentifier("org.example.TestParameterizedSetupSpecSpock", "test add 1 and 2", '{"metadata":{"test_name":"test add 1 and 2"}}', null) + ] } def "test flaky retries #testcaseName"() { @@ -86,18 +96,18 @@ class SpockTest extends CiVisibilityInstrumentationTest { assertSpansData(testcaseName, expectedTracesCount) where: - testcaseName | tests | expectedTracesCount | knownTestsList - "test-efd-known-test" | [TestSucceedSpock] | 2 | [new TestIdentifier("org.example.TestSucceedSpock", "test success", null, null)] - "test-efd-known-parameterized-test" | [TestParameterizedSpock] | 3 | [ + testcaseName | tests | expectedTracesCount | knownTestsList + "test-efd-known-test" | [TestSucceedSpock] | 2 | [new TestIdentifier("org.example.TestSucceedSpock", "test success", null, null)] + "test-efd-known-parameterized-test" | [TestParameterizedSpock] | 3 | [ new TestIdentifier("org.example.TestParameterizedSpock", "test add 1 and 2", null, null), new TestIdentifier("org.example.TestParameterizedSpock", "test add 4 and 4", null, null) ] - "test-efd-new-test" | [TestSucceedSpock] | 4 | [] - "test-efd-new-parameterized-test" | [TestParameterizedSpock] | 7 | [] - "test-efd-known-tests-and-new-test" | [TestParameterizedSpock] | 5 | [new TestIdentifier("org.example.TestParameterizedSpock", "test add 1 and 2", null, null)] - "test-efd-new-slow-test" | [TestSucceedSpockSlow] | 3 | [] // is executed only twice - "test-efd-new-very-slow-test" | [TestSucceedSpockVerySlow] | 2 | [] // is executed only once - "test-efd-faulty-session-threshold" | [TestSucceedAndFailedSpock] | 8 | [] + "test-efd-new-test" | [TestSucceedSpock] | 4 | [] + "test-efd-new-parameterized-test" | [TestParameterizedSpock] | 7 | [] + "test-efd-known-tests-and-new-test" | [TestParameterizedSpock] | 5 | [new TestIdentifier("org.example.TestParameterizedSpock", "test add 1 and 2", null, null)] + "test-efd-new-slow-test" | [TestSucceedSpockSlow] | 3 | [] // is executed only twice + "test-efd-new-very-slow-test" | [TestSucceedSpockVerySlow] | 2 | [] // is executed only once + "test-efd-faulty-session-threshold" | [TestSucceedAndFailedSpock] | 8 | [] } private static void runTests(List> classes) { diff --git a/dd-java-agent/instrumentation/junit-5.3/spock-junit-5/src/test/groovy/org/example/TestParameterizedSetupSpecSpock.groovy b/dd-java-agent/instrumentation/junit-5.3/spock-junit-5/src/test/groovy/org/example/TestParameterizedSetupSpecSpock.groovy new file mode 100644 index 00000000000..bd48300107f --- /dev/null +++ b/dd-java-agent/instrumentation/junit-5.3/spock-junit-5/src/test/groovy/org/example/TestParameterizedSetupSpecSpock.groovy @@ -0,0 +1,29 @@ +package org.example + +import datadog.trace.bootstrap.instrumentation.api.AgentScope +import datadog.trace.bootstrap.instrumentation.api.AgentSpan +import datadog.trace.bootstrap.instrumentation.api.AgentTracer +import datadog.trace.bootstrap.instrumentation.api.ScopeSource +import spock.lang.Specification + +class TestParameterizedSetupSpecSpock extends Specification { + + def setupSpec() { + AgentTracer.TracerAPI agentTracer = AgentTracer.get() + AgentSpan span = agentTracer.buildSpan("spock-manual", "spec-setup").start() + try (AgentScope scope = agentTracer.activateSpan(span, ScopeSource.MANUAL)) { + // manually trace spec setup to check whether ITR skips it or not + } + span.finish() + } + + def "test add #a and #b"() { + expect: + a + b == c + + where: + a | b | c + 1 | 2 | 3 + 4 | 4 | 8 + } +} diff --git a/dd-java-agent/instrumentation/junit-5.3/spock-junit-5/src/test/groovy/org/example/TestSucceedSetupSpecSpock.groovy b/dd-java-agent/instrumentation/junit-5.3/spock-junit-5/src/test/groovy/org/example/TestSucceedSetupSpecSpock.groovy new file mode 100644 index 00000000000..56c505e200b --- /dev/null +++ b/dd-java-agent/instrumentation/junit-5.3/spock-junit-5/src/test/groovy/org/example/TestSucceedSetupSpecSpock.groovy @@ -0,0 +1,29 @@ +package org.example + +import datadog.trace.bootstrap.instrumentation.api.AgentScope +import datadog.trace.bootstrap.instrumentation.api.AgentSpan +import datadog.trace.bootstrap.instrumentation.api.AgentTracer +import datadog.trace.bootstrap.instrumentation.api.ScopeSource +import spock.lang.Specification + +class TestSucceedSetupSpecSpock extends Specification { + + def setupSpec() { + AgentTracer.TracerAPI agentTracer = AgentTracer.get() + AgentSpan span = agentTracer.buildSpan("spock-manual", "spec-setup").start() + try (AgentScope scope = agentTracer.activateSpan(span, ScopeSource.MANUAL)) { + // manually trace spec setup to check whether ITR skips it or not + } + span.finish() + } + + def "test success"() { + expect: + 1 == 1 + } + + def "test another success"() { + expect: + 1 == 1 + } +} diff --git a/dd-java-agent/instrumentation/junit-5.3/spock-junit-5/src/test/resources/test-itr-not-skipping-parameterized-spec-setup/coverages.ftl b/dd-java-agent/instrumentation/junit-5.3/spock-junit-5/src/test/resources/test-itr-not-skipping-parameterized-spec-setup/coverages.ftl new file mode 100644 index 00000000000..8878e547a79 --- /dev/null +++ b/dd-java-agent/instrumentation/junit-5.3/spock-junit-5/src/test/resources/test-itr-not-skipping-parameterized-spec-setup/coverages.ftl @@ -0,0 +1 @@ +[ ] \ No newline at end of file diff --git a/dd-java-agent/instrumentation/junit-5.3/spock-junit-5/src/test/resources/test-itr-not-skipping-parameterized-spec-setup/events.ftl b/dd-java-agent/instrumentation/junit-5.3/spock-junit-5/src/test/resources/test-itr-not-skipping-parameterized-spec-setup/events.ftl new file mode 100644 index 00000000000..a1b382fa3f5 --- /dev/null +++ b/dd-java-agent/instrumentation/junit-5.3/spock-junit-5/src/test/resources/test-itr-not-skipping-parameterized-spec-setup/events.ftl @@ -0,0 +1,240 @@ +[ { + "type" : "test_suite_end", + "version" : 1, + "content" : { + "test_session_id" : ${content_test_session_id}, + "test_module_id" : ${content_test_module_id}, + "test_suite_id" : ${content_test_suite_id}, + "service" : "worker.org.gradle.process.internal.worker.gradleworkermain", + "name" : "junit.test_suite", + "resource" : "org.example.TestParameterizedSetupSpecSpock", + "start" : ${content_start}, + "duration" : ${content_duration}, + "error" : 0, + "metrics" : { }, + "meta" : { + "test.type" : "test", + "os.architecture" : ${content_meta_os_architecture}, + "test.source.file" : "dummy_source_path", + "test.module" : "spock-junit-5", + "test.status" : "pass", + "runtime.name" : ${content_meta_runtime_name}, + "runtime.vendor" : ${content_meta_runtime_vendor}, + "env" : "none", + "os.platform" : ${content_meta_os_platform}, + "dummy_ci_tag" : "dummy_ci_tag_value", + "os.version" : ${content_meta_os_version}, + "library_version" : ${content_meta_library_version}, + "component" : "junit", + "span.kind" : "test_suite_end", + "test.suite" : "org.example.TestParameterizedSetupSpecSpock", + "runtime.version" : ${content_meta_runtime_version}, + "test.framework_version" : ${content_meta_test_framework_version}, + "test.framework" : "spock" + } + } +}, { + "type" : "test", + "version" : 2, + "content" : { + "trace_id" : ${content_trace_id}, + "span_id" : ${content_span_id}, + "parent_id" : ${content_parent_id}, + "test_session_id" : ${content_test_session_id}, + "test_module_id" : ${content_test_module_id}, + "test_suite_id" : ${content_test_suite_id}, + "itr_correlation_id" : "itrCorrelationId", + "service" : "worker.org.gradle.process.internal.worker.gradleworkermain", + "name" : "junit.test", + "resource" : "org.example.TestParameterizedSetupSpecSpock.test add 1 and 2", + "start" : ${content_start_2}, + "duration" : ${content_duration_2}, + "error" : 0, + "metrics" : { + "process_id" : ${content_metrics_process_id}, + "_dd.profiling.enabled" : 0, + "_dd.trace_span_attribute_schema" : 0, + "test.source.end" : 18, + "test.source.start" : 12 + }, + "meta" : { + "os.architecture" : ${content_meta_os_architecture}, + "test.source.file" : "dummy_source_path", + "test.source.method" : "test add #a and #b(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)V", + "test.module" : "spock-junit-5", + "test.status" : "skip", + "language" : "jvm", + "runtime.name" : ${content_meta_runtime_name}, + "os.platform" : ${content_meta_os_platform}, + "test.codeowners" : "[\"owner1\",\"owner2\"]", + "os.version" : ${content_meta_os_version}, + "library_version" : ${content_meta_library_version}, + "test.name" : "test add 1 and 2", + "span.kind" : "test", + "test.suite" : "org.example.TestParameterizedSetupSpecSpock", + "runtime.version" : ${content_meta_runtime_version}, + "runtime-id" : ${content_meta_runtime_id}, + "test.type" : "test", + "test.skip_reason" : "Skipped by Datadog Intelligent Test Runner", + "runtime.vendor" : ${content_meta_runtime_vendor}, + "env" : "none", + "dummy_ci_tag" : "dummy_ci_tag_value", + "test.parameters" : "{\"metadata\":{\"test_name\":\"test add 1 and 2\"}}", + "component" : "junit", + "_dd.profiling.ctx" : "test", + "test.skipped_by_itr" : "true", + "test.framework_version" : ${content_meta_test_framework_version}, + "test.framework" : "spock" + } + } +}, { + "type" : "test", + "version" : 2, + "content" : { + "trace_id" : ${content_trace_id_2}, + "span_id" : ${content_span_id_2}, + "parent_id" : ${content_parent_id}, + "test_session_id" : ${content_test_session_id}, + "test_module_id" : ${content_test_module_id}, + "test_suite_id" : ${content_test_suite_id}, + "itr_correlation_id" : "itrCorrelationId", + "service" : "worker.org.gradle.process.internal.worker.gradleworkermain", + "name" : "junit.test", + "resource" : "org.example.TestParameterizedSetupSpecSpock.test add 4 and 4", + "start" : ${content_start_3}, + "duration" : ${content_duration_3}, + "error" : 0, + "metrics" : { + "process_id" : ${content_metrics_process_id}, + "_dd.profiling.enabled" : 0, + "_dd.trace_span_attribute_schema" : 0, + "test.source.end" : 18, + "test.source.start" : 12 + }, + "meta" : { + "os.architecture" : ${content_meta_os_architecture}, + "test.source.file" : "dummy_source_path", + "test.source.method" : "test add #a and #b(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)V", + "test.module" : "spock-junit-5", + "test.status" : "pass", + "language" : "jvm", + "runtime.name" : ${content_meta_runtime_name}, + "os.platform" : ${content_meta_os_platform}, + "test.codeowners" : "[\"owner1\",\"owner2\"]", + "os.version" : ${content_meta_os_version}, + "library_version" : ${content_meta_library_version}, + "test.name" : "test add 4 and 4", + "span.kind" : "test", + "test.suite" : "org.example.TestParameterizedSetupSpecSpock", + "runtime.version" : ${content_meta_runtime_version}, + "runtime-id" : ${content_meta_runtime_id}, + "test.type" : "test", + "runtime.vendor" : ${content_meta_runtime_vendor}, + "env" : "none", + "dummy_ci_tag" : "dummy_ci_tag_value", + "test.parameters" : "{\"metadata\":{\"test_name\":\"test add 4 and 4\"}}", + "component" : "junit", + "_dd.profiling.ctx" : "test", + "test.framework_version" : ${content_meta_test_framework_version}, + "test.framework" : "spock" + } + } +}, { + "type" : "span", + "version" : 1, + "content" : { + "trace_id" : ${content_trace_id_3}, + "span_id" : ${content_span_id_3}, + "parent_id" : ${content_test_suite_id}, + "service" : "worker.org.gradle.process.internal.worker.gradleworkermain", + "name" : "spec_setup", + "resource" : "spec_setup", + "start" : ${content_start_4}, + "duration" : ${content_duration_4}, + "error" : 0, + "metrics" : { }, + "meta" : { + "library_version" : ${content_meta_library_version}, + "env" : "none" + } + } +}, { + "type" : "test_session_end", + "version" : 1, + "content" : { + "test_session_id" : ${content_test_session_id}, + "service" : "worker.org.gradle.process.internal.worker.gradleworkermain", + "name" : "junit.test_session", + "resource" : "spock-junit-5", + "start" : ${content_start_5}, + "duration" : ${content_duration_5}, + "error" : 0, + "metrics" : { + "process_id" : ${content_metrics_process_id}, + "test.itr.tests_skipping.count" : 1, + "_dd.profiling.enabled" : 0, + "_dd.trace_span_attribute_schema" : 0 + }, + "meta" : { + "os.architecture" : ${content_meta_os_architecture}, + "test.status" : "pass", + "_dd.ci.itr.tests_skipped" : "true", + "language" : "jvm", + "runtime.name" : ${content_meta_runtime_name}, + "os.platform" : ${content_meta_os_platform}, + "os.version" : ${content_meta_os_version}, + "library_version" : ${content_meta_library_version}, + "span.kind" : "test_session_end", + "runtime.version" : ${content_meta_runtime_version}, + "runtime-id" : ${content_meta_runtime_id}, + "test.itr.tests_skipping.enabled" : "true", + "test.type" : "test", + "runtime.vendor" : ${content_meta_runtime_vendor}, + "env" : "none", + "dummy_ci_tag" : "dummy_ci_tag_value", + "component" : "junit", + "_dd.profiling.ctx" : "test", + "test.itr.tests_skipping.type" : "test", + "test.command" : "spock-junit-5", + "test.framework_version" : ${content_meta_test_framework_version}, + "test.framework" : "spock" + } + } +}, { + "type" : "test_module_end", + "version" : 1, + "content" : { + "test_session_id" : ${content_test_session_id}, + "test_module_id" : ${content_test_module_id}, + "service" : "worker.org.gradle.process.internal.worker.gradleworkermain", + "name" : "junit.test_module", + "resource" : "spock-junit-5", + "start" : ${content_start_6}, + "duration" : ${content_duration_6}, + "error" : 0, + "metrics" : { + "test.itr.tests_skipping.count" : 1 + }, + "meta" : { + "test.type" : "test", + "os.architecture" : ${content_meta_os_architecture}, + "test.module" : "spock-junit-5", + "test.status" : "pass", + "_dd.ci.itr.tests_skipped" : "true", + "runtime.name" : ${content_meta_runtime_name}, + "runtime.vendor" : ${content_meta_runtime_vendor}, + "env" : "none", + "os.platform" : ${content_meta_os_platform}, + "dummy_ci_tag" : "dummy_ci_tag_value", + "os.version" : ${content_meta_os_version}, + "library_version" : ${content_meta_library_version}, + "component" : "junit", + "span.kind" : "test_module_end", + "test.itr.tests_skipping.type" : "test", + "runtime.version" : ${content_meta_runtime_version}, + "test.framework_version" : ${content_meta_test_framework_version}, + "test.framework" : "spock", + "test.itr.tests_skipping.enabled" : "true" + } + } +} ] \ No newline at end of file diff --git a/dd-java-agent/instrumentation/junit-5.3/spock-junit-5/src/test/resources/test-itr-not-skipping-spec-setup/coverages.ftl b/dd-java-agent/instrumentation/junit-5.3/spock-junit-5/src/test/resources/test-itr-not-skipping-spec-setup/coverages.ftl new file mode 100644 index 00000000000..8878e547a79 --- /dev/null +++ b/dd-java-agent/instrumentation/junit-5.3/spock-junit-5/src/test/resources/test-itr-not-skipping-spec-setup/coverages.ftl @@ -0,0 +1 @@ +[ ] \ No newline at end of file diff --git a/dd-java-agent/instrumentation/junit-5.3/spock-junit-5/src/test/resources/test-itr-not-skipping-spec-setup/events.ftl b/dd-java-agent/instrumentation/junit-5.3/spock-junit-5/src/test/resources/test-itr-not-skipping-spec-setup/events.ftl new file mode 100644 index 00000000000..98d5b008e22 --- /dev/null +++ b/dd-java-agent/instrumentation/junit-5.3/spock-junit-5/src/test/resources/test-itr-not-skipping-spec-setup/events.ftl @@ -0,0 +1,238 @@ +[ { + "type" : "test_suite_end", + "version" : 1, + "content" : { + "test_session_id" : ${content_test_session_id}, + "test_module_id" : ${content_test_module_id}, + "test_suite_id" : ${content_test_suite_id}, + "service" : "worker.org.gradle.process.internal.worker.gradleworkermain", + "name" : "junit.test_suite", + "resource" : "org.example.TestSucceedSetupSpecSpock", + "start" : ${content_start}, + "duration" : ${content_duration}, + "error" : 0, + "metrics" : { }, + "meta" : { + "test.type" : "test", + "os.architecture" : ${content_meta_os_architecture}, + "test.source.file" : "dummy_source_path", + "test.module" : "spock-junit-5", + "test.status" : "pass", + "runtime.name" : ${content_meta_runtime_name}, + "runtime.vendor" : ${content_meta_runtime_vendor}, + "env" : "none", + "os.platform" : ${content_meta_os_platform}, + "dummy_ci_tag" : "dummy_ci_tag_value", + "os.version" : ${content_meta_os_version}, + "library_version" : ${content_meta_library_version}, + "component" : "junit", + "span.kind" : "test_suite_end", + "test.suite" : "org.example.TestSucceedSetupSpecSpock", + "runtime.version" : ${content_meta_runtime_version}, + "test.framework_version" : ${content_meta_test_framework_version}, + "test.framework" : "spock" + } + } +}, { + "type" : "test", + "version" : 2, + "content" : { + "trace_id" : ${content_trace_id}, + "span_id" : ${content_span_id}, + "parent_id" : ${content_parent_id}, + "test_session_id" : ${content_test_session_id}, + "test_module_id" : ${content_test_module_id}, + "test_suite_id" : ${content_test_suite_id}, + "itr_correlation_id" : "itrCorrelationId", + "service" : "worker.org.gradle.process.internal.worker.gradleworkermain", + "name" : "junit.test", + "resource" : "org.example.TestSucceedSetupSpecSpock.test another success", + "start" : ${content_start_2}, + "duration" : ${content_duration_2}, + "error" : 0, + "metrics" : { + "process_id" : ${content_metrics_process_id}, + "_dd.profiling.enabled" : 0, + "_dd.trace_span_attribute_schema" : 0, + "test.source.end" : 18, + "test.source.start" : 12 + }, + "meta" : { + "os.architecture" : ${content_meta_os_architecture}, + "test.source.file" : "dummy_source_path", + "test.source.method" : "test another success()V", + "test.module" : "spock-junit-5", + "test.status" : "pass", + "language" : "jvm", + "runtime.name" : ${content_meta_runtime_name}, + "os.platform" : ${content_meta_os_platform}, + "test.codeowners" : "[\"owner1\",\"owner2\"]", + "os.version" : ${content_meta_os_version}, + "library_version" : ${content_meta_library_version}, + "test.name" : "test another success", + "span.kind" : "test", + "test.suite" : "org.example.TestSucceedSetupSpecSpock", + "runtime.version" : ${content_meta_runtime_version}, + "runtime-id" : ${content_meta_runtime_id}, + "test.type" : "test", + "runtime.vendor" : ${content_meta_runtime_vendor}, + "env" : "none", + "dummy_ci_tag" : "dummy_ci_tag_value", + "component" : "junit", + "_dd.profiling.ctx" : "test", + "test.framework_version" : ${content_meta_test_framework_version}, + "test.framework" : "spock" + } + } +}, { + "type" : "test", + "version" : 2, + "content" : { + "trace_id" : ${content_trace_id_2}, + "span_id" : ${content_span_id_2}, + "parent_id" : ${content_parent_id}, + "test_session_id" : ${content_test_session_id}, + "test_module_id" : ${content_test_module_id}, + "test_suite_id" : ${content_test_suite_id}, + "itr_correlation_id" : "itrCorrelationId", + "service" : "worker.org.gradle.process.internal.worker.gradleworkermain", + "name" : "junit.test", + "resource" : "org.example.TestSucceedSetupSpecSpock.test success", + "start" : ${content_start_3}, + "duration" : ${content_duration_3}, + "error" : 0, + "metrics" : { + "process_id" : ${content_metrics_process_id}, + "_dd.profiling.enabled" : 0, + "_dd.trace_span_attribute_schema" : 0, + "test.source.end" : 18, + "test.source.start" : 12 + }, + "meta" : { + "os.architecture" : ${content_meta_os_architecture}, + "test.source.file" : "dummy_source_path", + "test.source.method" : "test success()V", + "test.module" : "spock-junit-5", + "test.status" : "skip", + "language" : "jvm", + "runtime.name" : ${content_meta_runtime_name}, + "os.platform" : ${content_meta_os_platform}, + "test.codeowners" : "[\"owner1\",\"owner2\"]", + "os.version" : ${content_meta_os_version}, + "library_version" : ${content_meta_library_version}, + "test.name" : "test success", + "span.kind" : "test", + "test.suite" : "org.example.TestSucceedSetupSpecSpock", + "runtime.version" : ${content_meta_runtime_version}, + "runtime-id" : ${content_meta_runtime_id}, + "test.type" : "test", + "test.skip_reason" : "Skipped by Datadog Intelligent Test Runner", + "runtime.vendor" : ${content_meta_runtime_vendor}, + "env" : "none", + "dummy_ci_tag" : "dummy_ci_tag_value", + "component" : "junit", + "_dd.profiling.ctx" : "test", + "test.skipped_by_itr" : "true", + "test.framework_version" : ${content_meta_test_framework_version}, + "test.framework" : "spock" + } + } +}, { + "type" : "span", + "version" : 1, + "content" : { + "trace_id" : ${content_trace_id_3}, + "span_id" : ${content_span_id_3}, + "parent_id" : ${content_test_suite_id}, + "service" : "worker.org.gradle.process.internal.worker.gradleworkermain", + "name" : "spec_setup", + "resource" : "spec_setup", + "start" : ${content_start_4}, + "duration" : ${content_duration_4}, + "error" : 0, + "metrics" : { }, + "meta" : { + "library_version" : ${content_meta_library_version}, + "env" : "none" + } + } +}, { + "type" : "test_session_end", + "version" : 1, + "content" : { + "test_session_id" : ${content_test_session_id}, + "service" : "worker.org.gradle.process.internal.worker.gradleworkermain", + "name" : "junit.test_session", + "resource" : "spock-junit-5", + "start" : ${content_start_5}, + "duration" : ${content_duration_5}, + "error" : 0, + "metrics" : { + "process_id" : ${content_metrics_process_id}, + "test.itr.tests_skipping.count" : 1, + "_dd.profiling.enabled" : 0, + "_dd.trace_span_attribute_schema" : 0 + }, + "meta" : { + "os.architecture" : ${content_meta_os_architecture}, + "test.status" : "pass", + "_dd.ci.itr.tests_skipped" : "true", + "language" : "jvm", + "runtime.name" : ${content_meta_runtime_name}, + "os.platform" : ${content_meta_os_platform}, + "os.version" : ${content_meta_os_version}, + "library_version" : ${content_meta_library_version}, + "span.kind" : "test_session_end", + "runtime.version" : ${content_meta_runtime_version}, + "runtime-id" : ${content_meta_runtime_id}, + "test.itr.tests_skipping.enabled" : "true", + "test.type" : "test", + "runtime.vendor" : ${content_meta_runtime_vendor}, + "env" : "none", + "dummy_ci_tag" : "dummy_ci_tag_value", + "component" : "junit", + "_dd.profiling.ctx" : "test", + "test.itr.tests_skipping.type" : "test", + "test.command" : "spock-junit-5", + "test.framework_version" : ${content_meta_test_framework_version}, + "test.framework" : "spock" + } + } +}, { + "type" : "test_module_end", + "version" : 1, + "content" : { + "test_session_id" : ${content_test_session_id}, + "test_module_id" : ${content_test_module_id}, + "service" : "worker.org.gradle.process.internal.worker.gradleworkermain", + "name" : "junit.test_module", + "resource" : "spock-junit-5", + "start" : ${content_start_6}, + "duration" : ${content_duration_6}, + "error" : 0, + "metrics" : { + "test.itr.tests_skipping.count" : 1 + }, + "meta" : { + "test.type" : "test", + "os.architecture" : ${content_meta_os_architecture}, + "test.module" : "spock-junit-5", + "test.status" : "pass", + "_dd.ci.itr.tests_skipped" : "true", + "runtime.name" : ${content_meta_runtime_name}, + "runtime.vendor" : ${content_meta_runtime_vendor}, + "env" : "none", + "os.platform" : ${content_meta_os_platform}, + "dummy_ci_tag" : "dummy_ci_tag_value", + "os.version" : ${content_meta_os_version}, + "library_version" : ${content_meta_library_version}, + "component" : "junit", + "span.kind" : "test_module_end", + "test.itr.tests_skipping.type" : "test", + "runtime.version" : ${content_meta_runtime_version}, + "test.framework_version" : ${content_meta_test_framework_version}, + "test.framework" : "spock", + "test.itr.tests_skipping.enabled" : "true" + } + } +} ] diff --git a/dd-java-agent/instrumentation/junit-5.3/spock-junit-5/src/test/resources/test-itr-skipping-parameterized-spec-setup/coverages.ftl b/dd-java-agent/instrumentation/junit-5.3/spock-junit-5/src/test/resources/test-itr-skipping-parameterized-spec-setup/coverages.ftl new file mode 100644 index 00000000000..8878e547a79 --- /dev/null +++ b/dd-java-agent/instrumentation/junit-5.3/spock-junit-5/src/test/resources/test-itr-skipping-parameterized-spec-setup/coverages.ftl @@ -0,0 +1 @@ +[ ] \ No newline at end of file diff --git a/dd-java-agent/instrumentation/junit-5.3/spock-junit-5/src/test/resources/test-itr-skipping-parameterized-spec-setup/events.ftl b/dd-java-agent/instrumentation/junit-5.3/spock-junit-5/src/test/resources/test-itr-skipping-parameterized-spec-setup/events.ftl new file mode 100644 index 00000000000..62461f62870 --- /dev/null +++ b/dd-java-agent/instrumentation/junit-5.3/spock-junit-5/src/test/resources/test-itr-skipping-parameterized-spec-setup/events.ftl @@ -0,0 +1,242 @@ +[ { + "type" : "test_suite_end", + "version" : 1, + "content" : { + "test_session_id" : ${content_test_session_id}, + "test_module_id" : ${content_test_module_id}, + "test_suite_id" : ${content_test_suite_id}, + "service" : "worker.org.gradle.process.internal.worker.gradleworkermain", + "name" : "junit.test_suite", + "resource" : "org.example.TestParameterizedSetupSpecSpock", + "start" : ${content_start}, + "duration" : ${content_duration}, + "error" : 0, + "metrics" : { }, + "meta" : { + "test.type" : "test", + "os.architecture" : ${content_meta_os_architecture}, + "test.source.file" : "dummy_source_path", + "test.module" : "spock-junit-5", + "test.status" : "skip", + "runtime.name" : ${content_meta_runtime_name}, + "runtime.vendor" : ${content_meta_runtime_vendor}, + "env" : "none", + "os.platform" : ${content_meta_os_platform}, + "dummy_ci_tag" : "dummy_ci_tag_value", + "os.version" : ${content_meta_os_version}, + "library_version" : ${content_meta_library_version}, + "component" : "junit", + "span.kind" : "test_suite_end", + "test.suite" : "org.example.TestParameterizedSetupSpecSpock", + "runtime.version" : ${content_meta_runtime_version}, + "test.framework_version" : ${content_meta_test_framework_version}, + "test.framework" : "spock" + } + } +}, { + "type" : "test", + "version" : 2, + "content" : { + "trace_id" : ${content_trace_id}, + "span_id" : ${content_span_id}, + "parent_id" : ${content_parent_id}, + "test_session_id" : ${content_test_session_id}, + "test_module_id" : ${content_test_module_id}, + "test_suite_id" : ${content_test_suite_id}, + "itr_correlation_id" : "itrCorrelationId", + "service" : "worker.org.gradle.process.internal.worker.gradleworkermain", + "name" : "junit.test", + "resource" : "org.example.TestParameterizedSetupSpecSpock.test add 1 and 2", + "start" : ${content_start_2}, + "duration" : ${content_duration_2}, + "error" : 0, + "metrics" : { + "process_id" : ${content_metrics_process_id}, + "_dd.profiling.enabled" : 0, + "_dd.trace_span_attribute_schema" : 0, + "test.source.end" : 18, + "test.source.start" : 12 + }, + "meta" : { + "os.architecture" : ${content_meta_os_architecture}, + "test.source.file" : "dummy_source_path", + "test.source.method" : "test add #a and #b(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)V", + "test.module" : "spock-junit-5", + "test.status" : "skip", + "language" : "jvm", + "runtime.name" : ${content_meta_runtime_name}, + "os.platform" : ${content_meta_os_platform}, + "test.codeowners" : "[\"owner1\",\"owner2\"]", + "os.version" : ${content_meta_os_version}, + "library_version" : ${content_meta_library_version}, + "test.name" : "test add 1 and 2", + "span.kind" : "test", + "test.suite" : "org.example.TestParameterizedSetupSpecSpock", + "runtime.version" : ${content_meta_runtime_version}, + "runtime-id" : ${content_meta_runtime_id}, + "test.type" : "test", + "test.skip_reason" : "Skipped by Datadog Intelligent Test Runner", + "runtime.vendor" : ${content_meta_runtime_vendor}, + "env" : "none", + "dummy_ci_tag" : "dummy_ci_tag_value", + "test.parameters" : "{\"metadata\":{\"test_name\":\"test add 1 and 2\"}}", + "component" : "junit", + "_dd.profiling.ctx" : "test", + "test.skipped_by_itr" : "true", + "test.framework_version" : ${content_meta_test_framework_version}, + "test.framework" : "spock" + } + } +}, { + "type" : "test", + "version" : 2, + "content" : { + "trace_id" : ${content_trace_id_2}, + "span_id" : ${content_span_id_2}, + "parent_id" : ${content_parent_id}, + "test_session_id" : ${content_test_session_id}, + "test_module_id" : ${content_test_module_id}, + "test_suite_id" : ${content_test_suite_id}, + "itr_correlation_id" : "itrCorrelationId", + "service" : "worker.org.gradle.process.internal.worker.gradleworkermain", + "name" : "junit.test", + "resource" : "org.example.TestParameterizedSetupSpecSpock.test add 4 and 4", + "start" : ${content_start_3}, + "duration" : ${content_duration_3}, + "error" : 0, + "metrics" : { + "process_id" : ${content_metrics_process_id}, + "_dd.profiling.enabled" : 0, + "_dd.trace_span_attribute_schema" : 0, + "test.source.end" : 18, + "test.source.start" : 12 + }, + "meta" : { + "os.architecture" : ${content_meta_os_architecture}, + "test.source.file" : "dummy_source_path", + "test.source.method" : "test add #a and #b(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)V", + "test.module" : "spock-junit-5", + "test.status" : "skip", + "language" : "jvm", + "runtime.name" : ${content_meta_runtime_name}, + "os.platform" : ${content_meta_os_platform}, + "test.codeowners" : "[\"owner1\",\"owner2\"]", + "os.version" : ${content_meta_os_version}, + "library_version" : ${content_meta_library_version}, + "test.name" : "test add 4 and 4", + "span.kind" : "test", + "test.suite" : "org.example.TestParameterizedSetupSpecSpock", + "runtime.version" : ${content_meta_runtime_version}, + "runtime-id" : ${content_meta_runtime_id}, + "test.type" : "test", + "test.skip_reason" : "Skipped by Datadog Intelligent Test Runner", + "runtime.vendor" : ${content_meta_runtime_vendor}, + "env" : "none", + "dummy_ci_tag" : "dummy_ci_tag_value", + "test.parameters" : "{\"metadata\":{\"test_name\":\"test add 4 and 4\"}}", + "component" : "junit", + "_dd.profiling.ctx" : "test", + "test.skipped_by_itr" : "true", + "test.framework_version" : ${content_meta_test_framework_version}, + "test.framework" : "spock" + } + } +}, { + "type" : "span", + "version" : 1, + "content" : { + "trace_id" : ${content_trace_id_3}, + "span_id" : ${content_span_id_3}, + "parent_id" : ${content_test_suite_id}, + "service" : "worker.org.gradle.process.internal.worker.gradleworkermain", + "name" : "spec_setup", + "resource" : "spec_setup", + "start" : ${content_start_4}, + "duration" : ${content_duration_4}, + "error" : 0, + "metrics" : { }, + "meta" : { + "library_version" : ${content_meta_library_version}, + "env" : "none" + } + } +}, { + "type" : "test_session_end", + "version" : 1, + "content" : { + "test_session_id" : ${content_test_session_id}, + "service" : "worker.org.gradle.process.internal.worker.gradleworkermain", + "name" : "junit.test_session", + "resource" : "spock-junit-5", + "start" : ${content_start_5}, + "duration" : ${content_duration_5}, + "error" : 0, + "metrics" : { + "process_id" : ${content_metrics_process_id}, + "test.itr.tests_skipping.count" : 2, + "_dd.profiling.enabled" : 0, + "_dd.trace_span_attribute_schema" : 0 + }, + "meta" : { + "os.architecture" : ${content_meta_os_architecture}, + "test.status" : "skip", + "_dd.ci.itr.tests_skipped" : "true", + "language" : "jvm", + "runtime.name" : ${content_meta_runtime_name}, + "os.platform" : ${content_meta_os_platform}, + "os.version" : ${content_meta_os_version}, + "library_version" : ${content_meta_library_version}, + "span.kind" : "test_session_end", + "runtime.version" : ${content_meta_runtime_version}, + "runtime-id" : ${content_meta_runtime_id}, + "test.itr.tests_skipping.enabled" : "true", + "test.type" : "test", + "runtime.vendor" : ${content_meta_runtime_vendor}, + "env" : "none", + "dummy_ci_tag" : "dummy_ci_tag_value", + "component" : "junit", + "_dd.profiling.ctx" : "test", + "test.itr.tests_skipping.type" : "test", + "test.command" : "spock-junit-5", + "test.framework_version" : ${content_meta_test_framework_version}, + "test.framework" : "spock" + } + } +}, { + "type" : "test_module_end", + "version" : 1, + "content" : { + "test_session_id" : ${content_test_session_id}, + "test_module_id" : ${content_test_module_id}, + "service" : "worker.org.gradle.process.internal.worker.gradleworkermain", + "name" : "junit.test_module", + "resource" : "spock-junit-5", + "start" : ${content_start_6}, + "duration" : ${content_duration_6}, + "error" : 0, + "metrics" : { + "test.itr.tests_skipping.count" : 2 + }, + "meta" : { + "test.type" : "test", + "os.architecture" : ${content_meta_os_architecture}, + "test.module" : "spock-junit-5", + "test.status" : "skip", + "_dd.ci.itr.tests_skipped" : "true", + "runtime.name" : ${content_meta_runtime_name}, + "runtime.vendor" : ${content_meta_runtime_vendor}, + "env" : "none", + "os.platform" : ${content_meta_os_platform}, + "dummy_ci_tag" : "dummy_ci_tag_value", + "os.version" : ${content_meta_os_version}, + "library_version" : ${content_meta_library_version}, + "component" : "junit", + "span.kind" : "test_module_end", + "test.itr.tests_skipping.type" : "test", + "runtime.version" : ${content_meta_runtime_version}, + "test.framework_version" : ${content_meta_test_framework_version}, + "test.framework" : "spock", + "test.itr.tests_skipping.enabled" : "true" + } + } +} ] \ No newline at end of file diff --git a/dd-java-agent/instrumentation/junit-5.3/spock-junit-5/src/test/resources/test-itr-skipping-spec-setup/coverages.ftl b/dd-java-agent/instrumentation/junit-5.3/spock-junit-5/src/test/resources/test-itr-skipping-spec-setup/coverages.ftl new file mode 100644 index 00000000000..8878e547a79 --- /dev/null +++ b/dd-java-agent/instrumentation/junit-5.3/spock-junit-5/src/test/resources/test-itr-skipping-spec-setup/coverages.ftl @@ -0,0 +1 @@ +[ ] \ No newline at end of file diff --git a/dd-java-agent/instrumentation/junit-5.3/spock-junit-5/src/test/resources/test-itr-skipping-spec-setup/events.ftl b/dd-java-agent/instrumentation/junit-5.3/spock-junit-5/src/test/resources/test-itr-skipping-spec-setup/events.ftl new file mode 100644 index 00000000000..41783104f48 --- /dev/null +++ b/dd-java-agent/instrumentation/junit-5.3/spock-junit-5/src/test/resources/test-itr-skipping-spec-setup/events.ftl @@ -0,0 +1,222 @@ +[ { + "type" : "test_suite_end", + "version" : 1, + "content" : { + "test_session_id" : ${content_test_session_id}, + "test_module_id" : ${content_test_module_id}, + "test_suite_id" : ${content_test_suite_id}, + "service" : "worker.org.gradle.process.internal.worker.gradleworkermain", + "name" : "junit.test_suite", + "resource" : "org.example.TestSucceedSetupSpecSpock", + "start" : ${content_start}, + "duration" : ${content_duration}, + "error" : 0, + "metrics" : { }, + "meta" : { + "test.type" : "test", + "os.architecture" : ${content_meta_os_architecture}, + "test.source.file" : "dummy_source_path", + "test.module" : "spock-junit-5", + "test.status" : "skip", + "test.skip_reason" : "Skipped by Datadog Intelligent Test Runner", + "runtime.name" : ${content_meta_runtime_name}, + "runtime.vendor" : ${content_meta_runtime_vendor}, + "env" : "none", + "os.platform" : ${content_meta_os_platform}, + "dummy_ci_tag" : "dummy_ci_tag_value", + "os.version" : ${content_meta_os_version}, + "library_version" : ${content_meta_library_version}, + "component" : "junit", + "span.kind" : "test_suite_end", + "test.suite" : "org.example.TestSucceedSetupSpecSpock", + "runtime.version" : ${content_meta_runtime_version}, + "test.framework_version" : ${content_meta_test_framework_version}, + "test.framework" : "spock" + } + } +}, { + "type" : "test", + "version" : 2, + "content" : { + "trace_id" : ${content_trace_id}, + "span_id" : ${content_span_id}, + "parent_id" : ${content_parent_id}, + "test_session_id" : ${content_test_session_id}, + "test_module_id" : ${content_test_module_id}, + "test_suite_id" : ${content_test_suite_id}, + "itr_correlation_id" : "itrCorrelationId", + "service" : "worker.org.gradle.process.internal.worker.gradleworkermain", + "name" : "junit.test", + "resource" : "org.example.TestSucceedSetupSpecSpock.test another success", + "start" : ${content_start_2}, + "duration" : ${content_duration_2}, + "error" : 0, + "metrics" : { + "process_id" : ${content_metrics_process_id}, + "_dd.profiling.enabled" : 0, + "_dd.trace_span_attribute_schema" : 0, + "test.source.end" : 18, + "test.source.start" : 12 + }, + "meta" : { + "os.architecture" : ${content_meta_os_architecture}, + "test.source.file" : "dummy_source_path", + "test.source.method" : "test another success()V", + "test.module" : "spock-junit-5", + "test.status" : "skip", + "language" : "jvm", + "runtime.name" : ${content_meta_runtime_name}, + "os.platform" : ${content_meta_os_platform}, + "test.codeowners" : "[\"owner1\",\"owner2\"]", + "os.version" : ${content_meta_os_version}, + "library_version" : ${content_meta_library_version}, + "test.name" : "test another success", + "span.kind" : "test", + "test.suite" : "org.example.TestSucceedSetupSpecSpock", + "runtime.version" : ${content_meta_runtime_version}, + "runtime-id" : ${content_meta_runtime_id}, + "test.type" : "test", + "test.skip_reason" : "Skipped by Datadog Intelligent Test Runner", + "runtime.vendor" : ${content_meta_runtime_vendor}, + "env" : "none", + "dummy_ci_tag" : "dummy_ci_tag_value", + "component" : "junit", + "_dd.profiling.ctx" : "test", + "test.skipped_by_itr" : "true", + "test.framework_version" : ${content_meta_test_framework_version}, + "test.framework" : "spock" + } + } +}, { + "type" : "test", + "version" : 2, + "content" : { + "trace_id" : ${content_trace_id_2}, + "span_id" : ${content_span_id_2}, + "parent_id" : ${content_parent_id}, + "test_session_id" : ${content_test_session_id}, + "test_module_id" : ${content_test_module_id}, + "test_suite_id" : ${content_test_suite_id}, + "itr_correlation_id" : "itrCorrelationId", + "service" : "worker.org.gradle.process.internal.worker.gradleworkermain", + "name" : "junit.test", + "resource" : "org.example.TestSucceedSetupSpecSpock.test success", + "start" : ${content_start_3}, + "duration" : ${content_duration_3}, + "error" : 0, + "metrics" : { + "process_id" : ${content_metrics_process_id}, + "_dd.profiling.enabled" : 0, + "_dd.trace_span_attribute_schema" : 0, + "test.source.end" : 18, + "test.source.start" : 12 + }, + "meta" : { + "os.architecture" : ${content_meta_os_architecture}, + "test.source.file" : "dummy_source_path", + "test.source.method" : "test success()V", + "test.module" : "spock-junit-5", + "test.status" : "skip", + "language" : "jvm", + "runtime.name" : ${content_meta_runtime_name}, + "os.platform" : ${content_meta_os_platform}, + "test.codeowners" : "[\"owner1\",\"owner2\"]", + "os.version" : ${content_meta_os_version}, + "library_version" : ${content_meta_library_version}, + "test.name" : "test success", + "span.kind" : "test", + "test.suite" : "org.example.TestSucceedSetupSpecSpock", + "runtime.version" : ${content_meta_runtime_version}, + "runtime-id" : ${content_meta_runtime_id}, + "test.type" : "test", + "test.skip_reason" : "Skipped by Datadog Intelligent Test Runner", + "runtime.vendor" : ${content_meta_runtime_vendor}, + "env" : "none", + "dummy_ci_tag" : "dummy_ci_tag_value", + "component" : "junit", + "_dd.profiling.ctx" : "test", + "test.skipped_by_itr" : "true", + "test.framework_version" : ${content_meta_test_framework_version}, + "test.framework" : "spock" + } + } +}, { + "type" : "test_session_end", + "version" : 1, + "content" : { + "test_session_id" : ${content_test_session_id}, + "service" : "worker.org.gradle.process.internal.worker.gradleworkermain", + "name" : "junit.test_session", + "resource" : "spock-junit-5", + "start" : ${content_start_4}, + "duration" : ${content_duration_4}, + "error" : 0, + "metrics" : { + "process_id" : ${content_metrics_process_id}, + "test.itr.tests_skipping.count" : 2, + "_dd.profiling.enabled" : 0, + "_dd.trace_span_attribute_schema" : 0 + }, + "meta" : { + "os.architecture" : ${content_meta_os_architecture}, + "test.status" : "skip", + "_dd.ci.itr.tests_skipped" : "true", + "language" : "jvm", + "runtime.name" : ${content_meta_runtime_name}, + "os.platform" : ${content_meta_os_platform}, + "os.version" : ${content_meta_os_version}, + "library_version" : ${content_meta_library_version}, + "span.kind" : "test_session_end", + "runtime.version" : ${content_meta_runtime_version}, + "runtime-id" : ${content_meta_runtime_id}, + "test.itr.tests_skipping.enabled" : "true", + "test.type" : "test", + "runtime.vendor" : ${content_meta_runtime_vendor}, + "env" : "none", + "dummy_ci_tag" : "dummy_ci_tag_value", + "component" : "junit", + "_dd.profiling.ctx" : "test", + "test.itr.tests_skipping.type" : "test", + "test.command" : "spock-junit-5", + "test.framework_version" : ${content_meta_test_framework_version}, + "test.framework" : "spock" + } + } +}, { + "type" : "test_module_end", + "version" : 1, + "content" : { + "test_session_id" : ${content_test_session_id}, + "test_module_id" : ${content_test_module_id}, + "service" : "worker.org.gradle.process.internal.worker.gradleworkermain", + "name" : "junit.test_module", + "resource" : "spock-junit-5", + "start" : ${content_start_5}, + "duration" : ${content_duration_5}, + "error" : 0, + "metrics" : { + "test.itr.tests_skipping.count" : 2 + }, + "meta" : { + "test.type" : "test", + "os.architecture" : ${content_meta_os_architecture}, + "test.module" : "spock-junit-5", + "test.status" : "skip", + "_dd.ci.itr.tests_skipped" : "true", + "runtime.name" : ${content_meta_runtime_name}, + "runtime.vendor" : ${content_meta_runtime_vendor}, + "env" : "none", + "os.platform" : ${content_meta_os_platform}, + "dummy_ci_tag" : "dummy_ci_tag_value", + "os.version" : ${content_meta_os_version}, + "library_version" : ${content_meta_library_version}, + "component" : "junit", + "span.kind" : "test_module_end", + "test.itr.tests_skipping.type" : "test", + "runtime.version" : ${content_meta_runtime_version}, + "test.framework_version" : ${content_meta_test_framework_version}, + "test.framework" : "spock", + "test.itr.tests_skipping.enabled" : "true" + } + } +} ] \ No newline at end of file diff --git a/internal-api/src/main/java/datadog/trace/api/civisibility/events/TestEventsHandler.java b/internal-api/src/main/java/datadog/trace/api/civisibility/events/TestEventsHandler.java index f2e5c7be2b0..2397112c8cd 100644 --- a/internal-api/src/main/java/datadog/trace/api/civisibility/events/TestEventsHandler.java +++ b/internal-api/src/main/java/datadog/trace/api/civisibility/events/TestEventsHandler.java @@ -85,6 +85,8 @@ void onTestIgnore( boolean skip(TestIdentifier test); + boolean isSkippable(TestIdentifier test); + @Nonnull TestRetryPolicy retryPolicy(TestIdentifier test);