diff --git a/.github/CODEOWNERS b/.github/CODEOWNERS
index cce00af1d0d..703cec827ac 100644
--- a/.github/CODEOWNERS
+++ b/.github/CODEOWNERS
@@ -110,7 +110,7 @@
/dd-java-agent/instrumentation/cucumber-5.4/ @DataDog/ci-app-libraries
/dd-java-agent/instrumentation/jacoco-0.8.9/ @DataDog/ci-app-libraries
/dd-java-agent/instrumentation/junit @DataDog/ci-app-libraries
-/dd-java-agent/instrumentation/karate-1.0/ @DataDog/ci-app-libraries
+/dd-java-agent/instrumentation/karate/ @DataDog/ci-app-libraries
/dd-java-agent/instrumentation/scalatest-3.0.8/ @DataDog/ci-app-libraries
/dd-java-agent/instrumentation/selenium-3.13/ @DataDog/ci-app-libraries
/dd-java-agent/instrumentation/testng/ @DataDog/ci-app-libraries
diff --git a/dd-java-agent/instrumentation/karate-1.0/build.gradle b/dd-java-agent/instrumentation/karate/karate-1.0/build.gradle
similarity index 100%
rename from dd-java-agent/instrumentation/karate-1.0/build.gradle
rename to dd-java-agent/instrumentation/karate/karate-1.0/build.gradle
diff --git a/dd-java-agent/instrumentation/karate-1.0/gradle.lockfile b/dd-java-agent/instrumentation/karate/karate-1.0/gradle.lockfile
similarity index 100%
rename from dd-java-agent/instrumentation/karate-1.0/gradle.lockfile
rename to dd-java-agent/instrumentation/karate/karate-1.0/gradle.lockfile
diff --git a/dd-java-agent/instrumentation/karate-1.0/src/main/java/datadog/trace/instrumentation/karate/ExecutionContext.java b/dd-java-agent/instrumentation/karate/karate-1.0/src/main/java/datadog/trace/instrumentation/karate/ExecutionContext.java
similarity index 100%
rename from dd-java-agent/instrumentation/karate-1.0/src/main/java/datadog/trace/instrumentation/karate/ExecutionContext.java
rename to dd-java-agent/instrumentation/karate/karate-1.0/src/main/java/datadog/trace/instrumentation/karate/ExecutionContext.java
diff --git a/dd-java-agent/instrumentation/karate-1.0/src/main/java/datadog/trace/instrumentation/karate/KarateExecutionInstrumentation.java b/dd-java-agent/instrumentation/karate/karate-1.0/src/main/java/datadog/trace/instrumentation/karate/KarateExecutionInstrumentation.java
similarity index 100%
rename from dd-java-agent/instrumentation/karate-1.0/src/main/java/datadog/trace/instrumentation/karate/KarateExecutionInstrumentation.java
rename to dd-java-agent/instrumentation/karate/karate-1.0/src/main/java/datadog/trace/instrumentation/karate/KarateExecutionInstrumentation.java
diff --git a/dd-java-agent/instrumentation/karate-1.0/src/main/java/datadog/trace/instrumentation/karate/KarateInstrumentation.java b/dd-java-agent/instrumentation/karate/karate-1.0/src/main/java/datadog/trace/instrumentation/karate/KarateInstrumentation.java
similarity index 100%
rename from dd-java-agent/instrumentation/karate-1.0/src/main/java/datadog/trace/instrumentation/karate/KarateInstrumentation.java
rename to dd-java-agent/instrumentation/karate/karate-1.0/src/main/java/datadog/trace/instrumentation/karate/KarateInstrumentation.java
diff --git a/dd-java-agent/instrumentation/karate-1.0/src/main/java/datadog/trace/instrumentation/karate/KarateTracingHook.java b/dd-java-agent/instrumentation/karate/karate-1.0/src/main/java/datadog/trace/instrumentation/karate/KarateTracingHook.java
similarity index 100%
rename from dd-java-agent/instrumentation/karate-1.0/src/main/java/datadog/trace/instrumentation/karate/KarateTracingHook.java
rename to dd-java-agent/instrumentation/karate/karate-1.0/src/main/java/datadog/trace/instrumentation/karate/KarateTracingHook.java
diff --git a/dd-java-agent/instrumentation/karate-1.0/src/main/java/datadog/trace/instrumentation/karate/KarateUtils.java b/dd-java-agent/instrumentation/karate/karate-1.0/src/main/java/datadog/trace/instrumentation/karate/KarateUtils.java
similarity index 100%
rename from dd-java-agent/instrumentation/karate-1.0/src/main/java/datadog/trace/instrumentation/karate/KarateUtils.java
rename to dd-java-agent/instrumentation/karate/karate-1.0/src/main/java/datadog/trace/instrumentation/karate/KarateUtils.java
diff --git a/dd-java-agent/instrumentation/karate-1.0/src/main/java/datadog/trace/instrumentation/karate/TestEventsHandlerHolder.java b/dd-java-agent/instrumentation/karate/karate-1.0/src/main/java/datadog/trace/instrumentation/karate/TestEventsHandlerHolder.java
similarity index 100%
rename from dd-java-agent/instrumentation/karate-1.0/src/main/java/datadog/trace/instrumentation/karate/TestEventsHandlerHolder.java
rename to dd-java-agent/instrumentation/karate/karate-1.0/src/main/java/datadog/trace/instrumentation/karate/TestEventsHandlerHolder.java
diff --git a/dd-java-agent/instrumentation/karate-1.0/src/test/groovy/KarateTest.groovy b/dd-java-agent/instrumentation/karate/karate-1.0/src/test/groovy/KarateTest.groovy
similarity index 100%
rename from dd-java-agent/instrumentation/karate-1.0/src/test/groovy/KarateTest.groovy
rename to dd-java-agent/instrumentation/karate/karate-1.0/src/test/groovy/KarateTest.groovy
diff --git a/dd-java-agent/instrumentation/karate-1.0/src/test/java/org/example/Flaky.java b/dd-java-agent/instrumentation/karate/karate-1.0/src/test/java/org/example/Flaky.java
similarity index 100%
rename from dd-java-agent/instrumentation/karate-1.0/src/test/java/org/example/Flaky.java
rename to dd-java-agent/instrumentation/karate/karate-1.0/src/test/java/org/example/Flaky.java
diff --git a/dd-java-agent/instrumentation/karate-1.0/src/test/java/org/example/Slow.java b/dd-java-agent/instrumentation/karate/karate-1.0/src/test/java/org/example/Slow.java
similarity index 100%
rename from dd-java-agent/instrumentation/karate-1.0/src/test/java/org/example/Slow.java
rename to dd-java-agent/instrumentation/karate/karate-1.0/src/test/java/org/example/Slow.java
diff --git a/dd-java-agent/instrumentation/karate-1.0/src/test/java/org/example/TestContinueOnStepFailureKarate.java b/dd-java-agent/instrumentation/karate/karate-1.0/src/test/java/org/example/TestContinueOnStepFailureKarate.java
similarity index 100%
rename from dd-java-agent/instrumentation/karate-1.0/src/test/java/org/example/TestContinueOnStepFailureKarate.java
rename to dd-java-agent/instrumentation/karate/karate-1.0/src/test/java/org/example/TestContinueOnStepFailureKarate.java
diff --git a/dd-java-agent/instrumentation/karate-1.0/src/test/java/org/example/TestFailedBuiltInRetryKarate.java b/dd-java-agent/instrumentation/karate/karate-1.0/src/test/java/org/example/TestFailedBuiltInRetryKarate.java
similarity index 100%
rename from dd-java-agent/instrumentation/karate-1.0/src/test/java/org/example/TestFailedBuiltInRetryKarate.java
rename to dd-java-agent/instrumentation/karate/karate-1.0/src/test/java/org/example/TestFailedBuiltInRetryKarate.java
diff --git a/dd-java-agent/instrumentation/karate-1.0/src/test/java/org/example/TestFailedKarate.java b/dd-java-agent/instrumentation/karate/karate-1.0/src/test/java/org/example/TestFailedKarate.java
similarity index 100%
rename from dd-java-agent/instrumentation/karate-1.0/src/test/java/org/example/TestFailedKarate.java
rename to dd-java-agent/instrumentation/karate/karate-1.0/src/test/java/org/example/TestFailedKarate.java
diff --git a/dd-java-agent/instrumentation/karate-1.0/src/test/java/org/example/TestFailedParameterizedKarate.java b/dd-java-agent/instrumentation/karate/karate-1.0/src/test/java/org/example/TestFailedParameterizedKarate.java
similarity index 100%
rename from dd-java-agent/instrumentation/karate-1.0/src/test/java/org/example/TestFailedParameterizedKarate.java
rename to dd-java-agent/instrumentation/karate/karate-1.0/src/test/java/org/example/TestFailedParameterizedKarate.java
diff --git a/dd-java-agent/instrumentation/karate-1.0/src/test/java/org/example/TestFailedThenSucceedKarate.java b/dd-java-agent/instrumentation/karate/karate-1.0/src/test/java/org/example/TestFailedThenSucceedKarate.java
similarity index 100%
rename from dd-java-agent/instrumentation/karate-1.0/src/test/java/org/example/TestFailedThenSucceedKarate.java
rename to dd-java-agent/instrumentation/karate/karate-1.0/src/test/java/org/example/TestFailedThenSucceedKarate.java
diff --git a/dd-java-agent/instrumentation/karate-1.0/src/test/java/org/example/TestParameterizedKarate.java b/dd-java-agent/instrumentation/karate/karate-1.0/src/test/java/org/example/TestParameterizedKarate.java
similarity index 100%
rename from dd-java-agent/instrumentation/karate-1.0/src/test/java/org/example/TestParameterizedKarate.java
rename to dd-java-agent/instrumentation/karate/karate-1.0/src/test/java/org/example/TestParameterizedKarate.java
diff --git a/dd-java-agent/instrumentation/karate-1.0/src/test/java/org/example/TestParameterizedMoreCasesKarate.java b/dd-java-agent/instrumentation/karate/karate-1.0/src/test/java/org/example/TestParameterizedMoreCasesKarate.java
similarity index 100%
rename from dd-java-agent/instrumentation/karate-1.0/src/test/java/org/example/TestParameterizedMoreCasesKarate.java
rename to dd-java-agent/instrumentation/karate/karate-1.0/src/test/java/org/example/TestParameterizedMoreCasesKarate.java
diff --git a/dd-java-agent/instrumentation/karate-1.0/src/test/java/org/example/TestSkippedFeatureKarate.java b/dd-java-agent/instrumentation/karate/karate-1.0/src/test/java/org/example/TestSkippedFeatureKarate.java
similarity index 100%
rename from dd-java-agent/instrumentation/karate-1.0/src/test/java/org/example/TestSkippedFeatureKarate.java
rename to dd-java-agent/instrumentation/karate/karate-1.0/src/test/java/org/example/TestSkippedFeatureKarate.java
diff --git a/dd-java-agent/instrumentation/karate-1.0/src/test/java/org/example/TestSucceedKarate.java b/dd-java-agent/instrumentation/karate/karate-1.0/src/test/java/org/example/TestSucceedKarate.java
similarity index 100%
rename from dd-java-agent/instrumentation/karate-1.0/src/test/java/org/example/TestSucceedKarate.java
rename to dd-java-agent/instrumentation/karate/karate-1.0/src/test/java/org/example/TestSucceedKarate.java
diff --git a/dd-java-agent/instrumentation/karate-1.0/src/test/java/org/example/TestSucceedKarateSkipEfd.java b/dd-java-agent/instrumentation/karate/karate-1.0/src/test/java/org/example/TestSucceedKarateSkipEfd.java
similarity index 100%
rename from dd-java-agent/instrumentation/karate-1.0/src/test/java/org/example/TestSucceedKarateSkipEfd.java
rename to dd-java-agent/instrumentation/karate/karate-1.0/src/test/java/org/example/TestSucceedKarateSkipEfd.java
diff --git a/dd-java-agent/instrumentation/karate-1.0/src/test/java/org/example/TestSucceedKarateSlow.java b/dd-java-agent/instrumentation/karate/karate-1.0/src/test/java/org/example/TestSucceedKarateSlow.java
similarity index 100%
rename from dd-java-agent/instrumentation/karate-1.0/src/test/java/org/example/TestSucceedKarateSlow.java
rename to dd-java-agent/instrumentation/karate/karate-1.0/src/test/java/org/example/TestSucceedKarateSlow.java
diff --git a/dd-java-agent/instrumentation/karate-1.0/src/test/java/org/example/TestSucceedOneCaseKarate.java b/dd-java-agent/instrumentation/karate/karate-1.0/src/test/java/org/example/TestSucceedOneCaseKarate.java
similarity index 100%
rename from dd-java-agent/instrumentation/karate-1.0/src/test/java/org/example/TestSucceedOneCaseKarate.java
rename to dd-java-agent/instrumentation/karate/karate-1.0/src/test/java/org/example/TestSucceedOneCaseKarate.java
diff --git a/dd-java-agent/instrumentation/karate-1.0/src/test/java/org/example/TestSucceedParallelKarate.java b/dd-java-agent/instrumentation/karate/karate-1.0/src/test/java/org/example/TestSucceedParallelKarate.java
similarity index 100%
rename from dd-java-agent/instrumentation/karate-1.0/src/test/java/org/example/TestSucceedParallelKarate.java
rename to dd-java-agent/instrumentation/karate/karate-1.0/src/test/java/org/example/TestSucceedParallelKarate.java
diff --git a/dd-java-agent/instrumentation/karate-1.0/src/test/java/org/example/TestUnskippableKarate.java b/dd-java-agent/instrumentation/karate/karate-1.0/src/test/java/org/example/TestUnskippableKarate.java
similarity index 100%
rename from dd-java-agent/instrumentation/karate-1.0/src/test/java/org/example/TestUnskippableKarate.java
rename to dd-java-agent/instrumentation/karate/karate-1.0/src/test/java/org/example/TestUnskippableKarate.java
diff --git a/dd-java-agent/instrumentation/karate-1.0/src/test/java/org/example/TestWithSetupKarate.java b/dd-java-agent/instrumentation/karate/karate-1.0/src/test/java/org/example/TestWithSetupKarate.java
similarity index 100%
rename from dd-java-agent/instrumentation/karate-1.0/src/test/java/org/example/TestWithSetupKarate.java
rename to dd-java-agent/instrumentation/karate/karate-1.0/src/test/java/org/example/TestWithSetupKarate.java
diff --git a/dd-java-agent/instrumentation/karate-1.0/src/test/java/org/example/karate-config.js b/dd-java-agent/instrumentation/karate/karate-1.0/src/test/java/org/example/karate-config.js
similarity index 100%
rename from dd-java-agent/instrumentation/karate-1.0/src/test/java/org/example/karate-config.js
rename to dd-java-agent/instrumentation/karate/karate-1.0/src/test/java/org/example/karate-config.js
diff --git a/dd-java-agent/instrumentation/karate-1.0/src/test/java/org/example/test_continue_on_step_failure.feature b/dd-java-agent/instrumentation/karate/karate-1.0/src/test/java/org/example/test_continue_on_step_failure.feature
similarity index 100%
rename from dd-java-agent/instrumentation/karate-1.0/src/test/java/org/example/test_continue_on_step_failure.feature
rename to dd-java-agent/instrumentation/karate/karate-1.0/src/test/java/org/example/test_continue_on_step_failure.feature
diff --git a/dd-java-agent/instrumentation/karate-1.0/src/test/java/org/example/test_failed.feature b/dd-java-agent/instrumentation/karate/karate-1.0/src/test/java/org/example/test_failed.feature
similarity index 100%
rename from dd-java-agent/instrumentation/karate-1.0/src/test/java/org/example/test_failed.feature
rename to dd-java-agent/instrumentation/karate/karate-1.0/src/test/java/org/example/test_failed.feature
diff --git a/dd-java-agent/instrumentation/karate-1.0/src/test/java/org/example/test_failed_parameterized.feature b/dd-java-agent/instrumentation/karate/karate-1.0/src/test/java/org/example/test_failed_parameterized.feature
similarity index 100%
rename from dd-java-agent/instrumentation/karate-1.0/src/test/java/org/example/test_failed_parameterized.feature
rename to dd-java-agent/instrumentation/karate/karate-1.0/src/test/java/org/example/test_failed_parameterized.feature
diff --git a/dd-java-agent/instrumentation/karate-1.0/src/test/java/org/example/test_failed_then_succeed.feature b/dd-java-agent/instrumentation/karate/karate-1.0/src/test/java/org/example/test_failed_then_succeed.feature
similarity index 100%
rename from dd-java-agent/instrumentation/karate-1.0/src/test/java/org/example/test_failed_then_succeed.feature
rename to dd-java-agent/instrumentation/karate/karate-1.0/src/test/java/org/example/test_failed_then_succeed.feature
diff --git a/dd-java-agent/instrumentation/karate-1.0/src/test/java/org/example/test_parameterized.feature b/dd-java-agent/instrumentation/karate/karate-1.0/src/test/java/org/example/test_parameterized.feature
similarity index 100%
rename from dd-java-agent/instrumentation/karate-1.0/src/test/java/org/example/test_parameterized.feature
rename to dd-java-agent/instrumentation/karate/karate-1.0/src/test/java/org/example/test_parameterized.feature
diff --git a/dd-java-agent/instrumentation/karate-1.0/src/test/java/org/example/test_parameterized_more_cases.feature b/dd-java-agent/instrumentation/karate/karate-1.0/src/test/java/org/example/test_parameterized_more_cases.feature
similarity index 100%
rename from dd-java-agent/instrumentation/karate-1.0/src/test/java/org/example/test_parameterized_more_cases.feature
rename to dd-java-agent/instrumentation/karate/karate-1.0/src/test/java/org/example/test_parameterized_more_cases.feature
diff --git a/dd-java-agent/instrumentation/karate-1.0/src/test/java/org/example/test_succeed.feature b/dd-java-agent/instrumentation/karate/karate-1.0/src/test/java/org/example/test_succeed.feature
similarity index 100%
rename from dd-java-agent/instrumentation/karate-1.0/src/test/java/org/example/test_succeed.feature
rename to dd-java-agent/instrumentation/karate/karate-1.0/src/test/java/org/example/test_succeed.feature
diff --git a/dd-java-agent/instrumentation/karate-1.0/src/test/java/org/example/test_succeed_one_case.feature b/dd-java-agent/instrumentation/karate/karate-1.0/src/test/java/org/example/test_succeed_one_case.feature
similarity index 100%
rename from dd-java-agent/instrumentation/karate-1.0/src/test/java/org/example/test_succeed_one_case.feature
rename to dd-java-agent/instrumentation/karate/karate-1.0/src/test/java/org/example/test_succeed_one_case.feature
diff --git a/dd-java-agent/instrumentation/karate-1.0/src/test/java/org/example/test_succeed_skip_efd.feature b/dd-java-agent/instrumentation/karate/karate-1.0/src/test/java/org/example/test_succeed_skip_efd.feature
similarity index 100%
rename from dd-java-agent/instrumentation/karate-1.0/src/test/java/org/example/test_succeed_skip_efd.feature
rename to dd-java-agent/instrumentation/karate/karate-1.0/src/test/java/org/example/test_succeed_skip_efd.feature
diff --git a/dd-java-agent/instrumentation/karate-1.0/src/test/java/org/example/test_succeed_slow.feature b/dd-java-agent/instrumentation/karate/karate-1.0/src/test/java/org/example/test_succeed_slow.feature
similarity index 100%
rename from dd-java-agent/instrumentation/karate-1.0/src/test/java/org/example/test_succeed_slow.feature
rename to dd-java-agent/instrumentation/karate/karate-1.0/src/test/java/org/example/test_succeed_slow.feature
diff --git a/dd-java-agent/instrumentation/karate-1.0/src/test/java/org/example/test_unskippable.feature b/dd-java-agent/instrumentation/karate/karate-1.0/src/test/java/org/example/test_unskippable.feature
similarity index 100%
rename from dd-java-agent/instrumentation/karate-1.0/src/test/java/org/example/test_unskippable.feature
rename to dd-java-agent/instrumentation/karate/karate-1.0/src/test/java/org/example/test_unskippable.feature
diff --git a/dd-java-agent/instrumentation/karate-1.0/src/test/java/org/example/test_with_setup.feature b/dd-java-agent/instrumentation/karate/karate-1.0/src/test/java/org/example/test_with_setup.feature
similarity index 100%
rename from dd-java-agent/instrumentation/karate-1.0/src/test/java/org/example/test_with_setup.feature
rename to dd-java-agent/instrumentation/karate/karate-1.0/src/test/java/org/example/test_with_setup.feature
diff --git a/dd-java-agent/instrumentation/karate-1.0/src/test/resources/test-attempt-to-fix-disabled-failed/coverages.ftl b/dd-java-agent/instrumentation/karate/karate-1.0/src/test/resources/test-attempt-to-fix-disabled-failed/coverages.ftl
similarity index 100%
rename from dd-java-agent/instrumentation/karate-1.0/src/test/resources/test-attempt-to-fix-disabled-failed/coverages.ftl
rename to dd-java-agent/instrumentation/karate/karate-1.0/src/test/resources/test-attempt-to-fix-disabled-failed/coverages.ftl
diff --git a/dd-java-agent/instrumentation/karate-1.0/src/test/resources/test-attempt-to-fix-disabled-failed/events.ftl b/dd-java-agent/instrumentation/karate/karate-1.0/src/test/resources/test-attempt-to-fix-disabled-failed/events.ftl
similarity index 100%
rename from dd-java-agent/instrumentation/karate-1.0/src/test/resources/test-attempt-to-fix-disabled-failed/events.ftl
rename to dd-java-agent/instrumentation/karate/karate-1.0/src/test/resources/test-attempt-to-fix-disabled-failed/events.ftl
diff --git a/dd-java-agent/instrumentation/karate-1.0/src/test/resources/test-attempt-to-fix-disabled-succeeded/coverages.ftl b/dd-java-agent/instrumentation/karate/karate-1.0/src/test/resources/test-attempt-to-fix-disabled-succeeded/coverages.ftl
similarity index 100%
rename from dd-java-agent/instrumentation/karate-1.0/src/test/resources/test-attempt-to-fix-disabled-succeeded/coverages.ftl
rename to dd-java-agent/instrumentation/karate/karate-1.0/src/test/resources/test-attempt-to-fix-disabled-succeeded/coverages.ftl
diff --git a/dd-java-agent/instrumentation/karate-1.0/src/test/resources/test-attempt-to-fix-disabled-succeeded/events.ftl b/dd-java-agent/instrumentation/karate/karate-1.0/src/test/resources/test-attempt-to-fix-disabled-succeeded/events.ftl
similarity index 100%
rename from dd-java-agent/instrumentation/karate-1.0/src/test/resources/test-attempt-to-fix-disabled-succeeded/events.ftl
rename to dd-java-agent/instrumentation/karate/karate-1.0/src/test/resources/test-attempt-to-fix-disabled-succeeded/events.ftl
diff --git a/dd-java-agent/instrumentation/karate-1.0/src/test/resources/test-attempt-to-fix-failed/coverages.ftl b/dd-java-agent/instrumentation/karate/karate-1.0/src/test/resources/test-attempt-to-fix-failed/coverages.ftl
similarity index 100%
rename from dd-java-agent/instrumentation/karate-1.0/src/test/resources/test-attempt-to-fix-failed/coverages.ftl
rename to dd-java-agent/instrumentation/karate/karate-1.0/src/test/resources/test-attempt-to-fix-failed/coverages.ftl
diff --git a/dd-java-agent/instrumentation/karate-1.0/src/test/resources/test-attempt-to-fix-failed/events.ftl b/dd-java-agent/instrumentation/karate/karate-1.0/src/test/resources/test-attempt-to-fix-failed/events.ftl
similarity index 100%
rename from dd-java-agent/instrumentation/karate-1.0/src/test/resources/test-attempt-to-fix-failed/events.ftl
rename to dd-java-agent/instrumentation/karate/karate-1.0/src/test/resources/test-attempt-to-fix-failed/events.ftl
diff --git a/dd-java-agent/instrumentation/karate-1.0/src/test/resources/test-attempt-to-fix-quarantined-failed/coverages.ftl b/dd-java-agent/instrumentation/karate/karate-1.0/src/test/resources/test-attempt-to-fix-quarantined-failed/coverages.ftl
similarity index 100%
rename from dd-java-agent/instrumentation/karate-1.0/src/test/resources/test-attempt-to-fix-quarantined-failed/coverages.ftl
rename to dd-java-agent/instrumentation/karate/karate-1.0/src/test/resources/test-attempt-to-fix-quarantined-failed/coverages.ftl
diff --git a/dd-java-agent/instrumentation/karate-1.0/src/test/resources/test-attempt-to-fix-quarantined-failed/events.ftl b/dd-java-agent/instrumentation/karate/karate-1.0/src/test/resources/test-attempt-to-fix-quarantined-failed/events.ftl
similarity index 100%
rename from dd-java-agent/instrumentation/karate-1.0/src/test/resources/test-attempt-to-fix-quarantined-failed/events.ftl
rename to dd-java-agent/instrumentation/karate/karate-1.0/src/test/resources/test-attempt-to-fix-quarantined-failed/events.ftl
diff --git a/dd-java-agent/instrumentation/karate-1.0/src/test/resources/test-attempt-to-fix-quarantined-succeeded/coverages.ftl b/dd-java-agent/instrumentation/karate/karate-1.0/src/test/resources/test-attempt-to-fix-quarantined-succeeded/coverages.ftl
similarity index 100%
rename from dd-java-agent/instrumentation/karate-1.0/src/test/resources/test-attempt-to-fix-quarantined-succeeded/coverages.ftl
rename to dd-java-agent/instrumentation/karate/karate-1.0/src/test/resources/test-attempt-to-fix-quarantined-succeeded/coverages.ftl
diff --git a/dd-java-agent/instrumentation/karate-1.0/src/test/resources/test-attempt-to-fix-quarantined-succeeded/events.ftl b/dd-java-agent/instrumentation/karate/karate-1.0/src/test/resources/test-attempt-to-fix-quarantined-succeeded/events.ftl
similarity index 100%
rename from dd-java-agent/instrumentation/karate-1.0/src/test/resources/test-attempt-to-fix-quarantined-succeeded/events.ftl
rename to dd-java-agent/instrumentation/karate/karate-1.0/src/test/resources/test-attempt-to-fix-quarantined-succeeded/events.ftl
diff --git a/dd-java-agent/instrumentation/karate-1.0/src/test/resources/test-attempt-to-fix-succeeded/coverages.ftl b/dd-java-agent/instrumentation/karate/karate-1.0/src/test/resources/test-attempt-to-fix-succeeded/coverages.ftl
similarity index 100%
rename from dd-java-agent/instrumentation/karate-1.0/src/test/resources/test-attempt-to-fix-succeeded/coverages.ftl
rename to dd-java-agent/instrumentation/karate/karate-1.0/src/test/resources/test-attempt-to-fix-succeeded/coverages.ftl
diff --git a/dd-java-agent/instrumentation/karate-1.0/src/test/resources/test-attempt-to-fix-succeeded/events.ftl b/dd-java-agent/instrumentation/karate/karate-1.0/src/test/resources/test-attempt-to-fix-succeeded/events.ftl
similarity index 100%
rename from dd-java-agent/instrumentation/karate-1.0/src/test/resources/test-attempt-to-fix-succeeded/events.ftl
rename to dd-java-agent/instrumentation/karate/karate-1.0/src/test/resources/test-attempt-to-fix-succeeded/events.ftl
diff --git a/dd-java-agent/instrumentation/karate-1.0/src/test/resources/test-built-in-retry/coverages.ftl b/dd-java-agent/instrumentation/karate/karate-1.0/src/test/resources/test-built-in-retry/coverages.ftl
similarity index 100%
rename from dd-java-agent/instrumentation/karate-1.0/src/test/resources/test-built-in-retry/coverages.ftl
rename to dd-java-agent/instrumentation/karate/karate-1.0/src/test/resources/test-built-in-retry/coverages.ftl
diff --git a/dd-java-agent/instrumentation/karate-1.0/src/test/resources/test-built-in-retry/events.ftl b/dd-java-agent/instrumentation/karate/karate-1.0/src/test/resources/test-built-in-retry/events.ftl
similarity index 100%
rename from dd-java-agent/instrumentation/karate-1.0/src/test/resources/test-built-in-retry/events.ftl
rename to dd-java-agent/instrumentation/karate/karate-1.0/src/test/resources/test-built-in-retry/events.ftl
diff --git a/dd-java-agent/instrumentation/karate-1.0/src/test/resources/test-disabled-failed/coverages.ftl b/dd-java-agent/instrumentation/karate/karate-1.0/src/test/resources/test-disabled-failed/coverages.ftl
similarity index 100%
rename from dd-java-agent/instrumentation/karate-1.0/src/test/resources/test-disabled-failed/coverages.ftl
rename to dd-java-agent/instrumentation/karate/karate-1.0/src/test/resources/test-disabled-failed/coverages.ftl
diff --git a/dd-java-agent/instrumentation/karate-1.0/src/test/resources/test-disabled-failed/events.ftl b/dd-java-agent/instrumentation/karate/karate-1.0/src/test/resources/test-disabled-failed/events.ftl
similarity index 100%
rename from dd-java-agent/instrumentation/karate-1.0/src/test/resources/test-disabled-failed/events.ftl
rename to dd-java-agent/instrumentation/karate/karate-1.0/src/test/resources/test-disabled-failed/events.ftl
diff --git a/dd-java-agent/instrumentation/karate-1.0/src/test/resources/test-efd-faulty-session-threshold/coverages.ftl b/dd-java-agent/instrumentation/karate/karate-1.0/src/test/resources/test-efd-faulty-session-threshold/coverages.ftl
similarity index 100%
rename from dd-java-agent/instrumentation/karate-1.0/src/test/resources/test-efd-faulty-session-threshold/coverages.ftl
rename to dd-java-agent/instrumentation/karate/karate-1.0/src/test/resources/test-efd-faulty-session-threshold/coverages.ftl
diff --git a/dd-java-agent/instrumentation/karate-1.0/src/test/resources/test-efd-faulty-session-threshold/events.ftl b/dd-java-agent/instrumentation/karate/karate-1.0/src/test/resources/test-efd-faulty-session-threshold/events.ftl
similarity index 100%
rename from dd-java-agent/instrumentation/karate-1.0/src/test/resources/test-efd-faulty-session-threshold/events.ftl
rename to dd-java-agent/instrumentation/karate/karate-1.0/src/test/resources/test-efd-faulty-session-threshold/events.ftl
diff --git a/dd-java-agent/instrumentation/karate-1.0/src/test/resources/test-efd-known-parameterized-test/coverages.ftl b/dd-java-agent/instrumentation/karate/karate-1.0/src/test/resources/test-efd-known-parameterized-test/coverages.ftl
similarity index 100%
rename from dd-java-agent/instrumentation/karate-1.0/src/test/resources/test-efd-known-parameterized-test/coverages.ftl
rename to dd-java-agent/instrumentation/karate/karate-1.0/src/test/resources/test-efd-known-parameterized-test/coverages.ftl
diff --git a/dd-java-agent/instrumentation/karate-1.0/src/test/resources/test-efd-known-parameterized-test/events.ftl b/dd-java-agent/instrumentation/karate/karate-1.0/src/test/resources/test-efd-known-parameterized-test/events.ftl
similarity index 100%
rename from dd-java-agent/instrumentation/karate-1.0/src/test/resources/test-efd-known-parameterized-test/events.ftl
rename to dd-java-agent/instrumentation/karate/karate-1.0/src/test/resources/test-efd-known-parameterized-test/events.ftl
diff --git a/dd-java-agent/instrumentation/karate-1.0/src/test/resources/test-efd-known-test/coverages.ftl b/dd-java-agent/instrumentation/karate/karate-1.0/src/test/resources/test-efd-known-test/coverages.ftl
similarity index 100%
rename from dd-java-agent/instrumentation/karate-1.0/src/test/resources/test-efd-known-test/coverages.ftl
rename to dd-java-agent/instrumentation/karate/karate-1.0/src/test/resources/test-efd-known-test/coverages.ftl
diff --git a/dd-java-agent/instrumentation/karate-1.0/src/test/resources/test-efd-known-test/events.ftl b/dd-java-agent/instrumentation/karate/karate-1.0/src/test/resources/test-efd-known-test/events.ftl
similarity index 100%
rename from dd-java-agent/instrumentation/karate-1.0/src/test/resources/test-efd-known-test/events.ftl
rename to dd-java-agent/instrumentation/karate/karate-1.0/src/test/resources/test-efd-known-test/events.ftl
diff --git a/dd-java-agent/instrumentation/karate-1.0/src/test/resources/test-efd-new-parameterized-test/coverages.ftl b/dd-java-agent/instrumentation/karate/karate-1.0/src/test/resources/test-efd-new-parameterized-test/coverages.ftl
similarity index 100%
rename from dd-java-agent/instrumentation/karate-1.0/src/test/resources/test-efd-new-parameterized-test/coverages.ftl
rename to dd-java-agent/instrumentation/karate/karate-1.0/src/test/resources/test-efd-new-parameterized-test/coverages.ftl
diff --git a/dd-java-agent/instrumentation/karate-1.0/src/test/resources/test-efd-new-parameterized-test/events.ftl b/dd-java-agent/instrumentation/karate/karate-1.0/src/test/resources/test-efd-new-parameterized-test/events.ftl
similarity index 100%
rename from dd-java-agent/instrumentation/karate-1.0/src/test/resources/test-efd-new-parameterized-test/events.ftl
rename to dd-java-agent/instrumentation/karate/karate-1.0/src/test/resources/test-efd-new-parameterized-test/events.ftl
diff --git a/dd-java-agent/instrumentation/karate-1.0/src/test/resources/test-efd-new-slow-test/coverages.ftl b/dd-java-agent/instrumentation/karate/karate-1.0/src/test/resources/test-efd-new-slow-test/coverages.ftl
similarity index 100%
rename from dd-java-agent/instrumentation/karate-1.0/src/test/resources/test-efd-new-slow-test/coverages.ftl
rename to dd-java-agent/instrumentation/karate/karate-1.0/src/test/resources/test-efd-new-slow-test/coverages.ftl
diff --git a/dd-java-agent/instrumentation/karate-1.0/src/test/resources/test-efd-new-slow-test/events.ftl b/dd-java-agent/instrumentation/karate/karate-1.0/src/test/resources/test-efd-new-slow-test/events.ftl
similarity index 100%
rename from dd-java-agent/instrumentation/karate-1.0/src/test/resources/test-efd-new-slow-test/events.ftl
rename to dd-java-agent/instrumentation/karate/karate-1.0/src/test/resources/test-efd-new-slow-test/events.ftl
diff --git a/dd-java-agent/instrumentation/karate-1.0/src/test/resources/test-efd-new-test/coverages.ftl b/dd-java-agent/instrumentation/karate/karate-1.0/src/test/resources/test-efd-new-test/coverages.ftl
similarity index 100%
rename from dd-java-agent/instrumentation/karate-1.0/src/test/resources/test-efd-new-test/coverages.ftl
rename to dd-java-agent/instrumentation/karate/karate-1.0/src/test/resources/test-efd-new-test/coverages.ftl
diff --git a/dd-java-agent/instrumentation/karate-1.0/src/test/resources/test-efd-new-test/events.ftl b/dd-java-agent/instrumentation/karate/karate-1.0/src/test/resources/test-efd-new-test/events.ftl
similarity index 100%
rename from dd-java-agent/instrumentation/karate-1.0/src/test/resources/test-efd-new-test/events.ftl
rename to dd-java-agent/instrumentation/karate/karate-1.0/src/test/resources/test-efd-new-test/events.ftl
diff --git a/dd-java-agent/instrumentation/karate-1.0/src/test/resources/test-efd-skip-new-test/coverages.ftl b/dd-java-agent/instrumentation/karate/karate-1.0/src/test/resources/test-efd-skip-new-test/coverages.ftl
similarity index 100%
rename from dd-java-agent/instrumentation/karate-1.0/src/test/resources/test-efd-skip-new-test/coverages.ftl
rename to dd-java-agent/instrumentation/karate/karate-1.0/src/test/resources/test-efd-skip-new-test/coverages.ftl
diff --git a/dd-java-agent/instrumentation/karate-1.0/src/test/resources/test-efd-skip-new-test/events.ftl b/dd-java-agent/instrumentation/karate/karate-1.0/src/test/resources/test-efd-skip-new-test/events.ftl
similarity index 100%
rename from dd-java-agent/instrumentation/karate-1.0/src/test/resources/test-efd-skip-new-test/events.ftl
rename to dd-java-agent/instrumentation/karate/karate-1.0/src/test/resources/test-efd-skip-new-test/events.ftl
diff --git a/dd-java-agent/instrumentation/karate-1.0/src/test/resources/test-failed-then-succeed/coverages.ftl b/dd-java-agent/instrumentation/karate/karate-1.0/src/test/resources/test-failed-then-succeed/coverages.ftl
similarity index 100%
rename from dd-java-agent/instrumentation/karate-1.0/src/test/resources/test-failed-then-succeed/coverages.ftl
rename to dd-java-agent/instrumentation/karate/karate-1.0/src/test/resources/test-failed-then-succeed/coverages.ftl
diff --git a/dd-java-agent/instrumentation/karate-1.0/src/test/resources/test-failed-then-succeed/events.ftl b/dd-java-agent/instrumentation/karate/karate-1.0/src/test/resources/test-failed-then-succeed/events.ftl
similarity index 100%
rename from dd-java-agent/instrumentation/karate-1.0/src/test/resources/test-failed-then-succeed/events.ftl
rename to dd-java-agent/instrumentation/karate/karate-1.0/src/test/resources/test-failed-then-succeed/events.ftl
diff --git a/dd-java-agent/instrumentation/karate-1.0/src/test/resources/test-failed/coverages.ftl b/dd-java-agent/instrumentation/karate/karate-1.0/src/test/resources/test-failed/coverages.ftl
similarity index 100%
rename from dd-java-agent/instrumentation/karate-1.0/src/test/resources/test-failed/coverages.ftl
rename to dd-java-agent/instrumentation/karate/karate-1.0/src/test/resources/test-failed/coverages.ftl
diff --git a/dd-java-agent/instrumentation/karate-1.0/src/test/resources/test-failed/events.ftl b/dd-java-agent/instrumentation/karate/karate-1.0/src/test/resources/test-failed/events.ftl
similarity index 100%
rename from dd-java-agent/instrumentation/karate-1.0/src/test/resources/test-failed/events.ftl
rename to dd-java-agent/instrumentation/karate/karate-1.0/src/test/resources/test-failed/events.ftl
diff --git a/dd-java-agent/instrumentation/karate-1.0/src/test/resources/test-itr-skipping-parameterized/coverages.ftl b/dd-java-agent/instrumentation/karate/karate-1.0/src/test/resources/test-itr-skipping-parameterized/coverages.ftl
similarity index 100%
rename from dd-java-agent/instrumentation/karate-1.0/src/test/resources/test-itr-skipping-parameterized/coverages.ftl
rename to dd-java-agent/instrumentation/karate/karate-1.0/src/test/resources/test-itr-skipping-parameterized/coverages.ftl
diff --git a/dd-java-agent/instrumentation/karate-1.0/src/test/resources/test-itr-skipping-parameterized/events.ftl b/dd-java-agent/instrumentation/karate/karate-1.0/src/test/resources/test-itr-skipping-parameterized/events.ftl
similarity index 100%
rename from dd-java-agent/instrumentation/karate-1.0/src/test/resources/test-itr-skipping-parameterized/events.ftl
rename to dd-java-agent/instrumentation/karate/karate-1.0/src/test/resources/test-itr-skipping-parameterized/events.ftl
diff --git a/dd-java-agent/instrumentation/karate-1.0/src/test/resources/test-itr-skipping/coverages.ftl b/dd-java-agent/instrumentation/karate/karate-1.0/src/test/resources/test-itr-skipping/coverages.ftl
similarity index 100%
rename from dd-java-agent/instrumentation/karate-1.0/src/test/resources/test-itr-skipping/coverages.ftl
rename to dd-java-agent/instrumentation/karate/karate-1.0/src/test/resources/test-itr-skipping/coverages.ftl
diff --git a/dd-java-agent/instrumentation/karate-1.0/src/test/resources/test-itr-skipping/events.ftl b/dd-java-agent/instrumentation/karate/karate-1.0/src/test/resources/test-itr-skipping/events.ftl
similarity index 100%
rename from dd-java-agent/instrumentation/karate-1.0/src/test/resources/test-itr-skipping/events.ftl
rename to dd-java-agent/instrumentation/karate/karate-1.0/src/test/resources/test-itr-skipping/events.ftl
diff --git a/dd-java-agent/instrumentation/karate-1.0/src/test/resources/test-itr-unskippable/coverages.ftl b/dd-java-agent/instrumentation/karate/karate-1.0/src/test/resources/test-itr-unskippable/coverages.ftl
similarity index 100%
rename from dd-java-agent/instrumentation/karate-1.0/src/test/resources/test-itr-unskippable/coverages.ftl
rename to dd-java-agent/instrumentation/karate/karate-1.0/src/test/resources/test-itr-unskippable/coverages.ftl
diff --git a/dd-java-agent/instrumentation/karate-1.0/src/test/resources/test-itr-unskippable/events.ftl b/dd-java-agent/instrumentation/karate/karate-1.0/src/test/resources/test-itr-unskippable/events.ftl
similarity index 100%
rename from dd-java-agent/instrumentation/karate-1.0/src/test/resources/test-itr-unskippable/events.ftl
rename to dd-java-agent/instrumentation/karate/karate-1.0/src/test/resources/test-itr-unskippable/events.ftl
diff --git a/dd-java-agent/instrumentation/karate-1.0/src/test/resources/test-parameterized/coverages.ftl b/dd-java-agent/instrumentation/karate/karate-1.0/src/test/resources/test-parameterized/coverages.ftl
similarity index 100%
rename from dd-java-agent/instrumentation/karate-1.0/src/test/resources/test-parameterized/coverages.ftl
rename to dd-java-agent/instrumentation/karate/karate-1.0/src/test/resources/test-parameterized/coverages.ftl
diff --git a/dd-java-agent/instrumentation/karate-1.0/src/test/resources/test-parameterized/events.ftl b/dd-java-agent/instrumentation/karate/karate-1.0/src/test/resources/test-parameterized/events.ftl
similarity index 100%
rename from dd-java-agent/instrumentation/karate-1.0/src/test/resources/test-parameterized/events.ftl
rename to dd-java-agent/instrumentation/karate/karate-1.0/src/test/resources/test-parameterized/events.ftl
diff --git a/dd-java-agent/instrumentation/karate-1.0/src/test/resources/test-quarantined-failed-atr/coverages.ftl b/dd-java-agent/instrumentation/karate/karate-1.0/src/test/resources/test-quarantined-failed-atr/coverages.ftl
similarity index 100%
rename from dd-java-agent/instrumentation/karate-1.0/src/test/resources/test-quarantined-failed-atr/coverages.ftl
rename to dd-java-agent/instrumentation/karate/karate-1.0/src/test/resources/test-quarantined-failed-atr/coverages.ftl
diff --git a/dd-java-agent/instrumentation/karate-1.0/src/test/resources/test-quarantined-failed-atr/events.ftl b/dd-java-agent/instrumentation/karate/karate-1.0/src/test/resources/test-quarantined-failed-atr/events.ftl
similarity index 100%
rename from dd-java-agent/instrumentation/karate-1.0/src/test/resources/test-quarantined-failed-atr/events.ftl
rename to dd-java-agent/instrumentation/karate/karate-1.0/src/test/resources/test-quarantined-failed-atr/events.ftl
diff --git a/dd-java-agent/instrumentation/karate-1.0/src/test/resources/test-quarantined-failed-efd/coverages.ftl b/dd-java-agent/instrumentation/karate/karate-1.0/src/test/resources/test-quarantined-failed-efd/coverages.ftl
similarity index 100%
rename from dd-java-agent/instrumentation/karate-1.0/src/test/resources/test-quarantined-failed-efd/coverages.ftl
rename to dd-java-agent/instrumentation/karate/karate-1.0/src/test/resources/test-quarantined-failed-efd/coverages.ftl
diff --git a/dd-java-agent/instrumentation/karate-1.0/src/test/resources/test-quarantined-failed-efd/events.ftl b/dd-java-agent/instrumentation/karate/karate-1.0/src/test/resources/test-quarantined-failed-efd/events.ftl
similarity index 100%
rename from dd-java-agent/instrumentation/karate-1.0/src/test/resources/test-quarantined-failed-efd/events.ftl
rename to dd-java-agent/instrumentation/karate/karate-1.0/src/test/resources/test-quarantined-failed-efd/events.ftl
diff --git a/dd-java-agent/instrumentation/karate-1.0/src/test/resources/test-quarantined-failed-known/coverages.ftl b/dd-java-agent/instrumentation/karate/karate-1.0/src/test/resources/test-quarantined-failed-known/coverages.ftl
similarity index 100%
rename from dd-java-agent/instrumentation/karate-1.0/src/test/resources/test-quarantined-failed-known/coverages.ftl
rename to dd-java-agent/instrumentation/karate/karate-1.0/src/test/resources/test-quarantined-failed-known/coverages.ftl
diff --git a/dd-java-agent/instrumentation/karate-1.0/src/test/resources/test-quarantined-failed-known/events.ftl b/dd-java-agent/instrumentation/karate/karate-1.0/src/test/resources/test-quarantined-failed-known/events.ftl
similarity index 100%
rename from dd-java-agent/instrumentation/karate-1.0/src/test/resources/test-quarantined-failed-known/events.ftl
rename to dd-java-agent/instrumentation/karate/karate-1.0/src/test/resources/test-quarantined-failed-known/events.ftl
diff --git a/dd-java-agent/instrumentation/karate-1.0/src/test/resources/test-quarantined-failed/coverages.ftl b/dd-java-agent/instrumentation/karate/karate-1.0/src/test/resources/test-quarantined-failed/coverages.ftl
similarity index 100%
rename from dd-java-agent/instrumentation/karate-1.0/src/test/resources/test-quarantined-failed/coverages.ftl
rename to dd-java-agent/instrumentation/karate/karate-1.0/src/test/resources/test-quarantined-failed/coverages.ftl
diff --git a/dd-java-agent/instrumentation/karate-1.0/src/test/resources/test-quarantined-failed/events.ftl b/dd-java-agent/instrumentation/karate/karate-1.0/src/test/resources/test-quarantined-failed/events.ftl
similarity index 100%
rename from dd-java-agent/instrumentation/karate-1.0/src/test/resources/test-quarantined-failed/events.ftl
rename to dd-java-agent/instrumentation/karate/karate-1.0/src/test/resources/test-quarantined-failed/events.ftl
diff --git a/dd-java-agent/instrumentation/karate-1.0/src/test/resources/test-retry-continue-on-step-failure/coverages.ftl b/dd-java-agent/instrumentation/karate/karate-1.0/src/test/resources/test-retry-continue-on-step-failure/coverages.ftl
similarity index 100%
rename from dd-java-agent/instrumentation/karate-1.0/src/test/resources/test-retry-continue-on-step-failure/coverages.ftl
rename to dd-java-agent/instrumentation/karate/karate-1.0/src/test/resources/test-retry-continue-on-step-failure/coverages.ftl
diff --git a/dd-java-agent/instrumentation/karate-1.0/src/test/resources/test-retry-continue-on-step-failure/events.ftl b/dd-java-agent/instrumentation/karate/karate-1.0/src/test/resources/test-retry-continue-on-step-failure/events.ftl
similarity index 100%
rename from dd-java-agent/instrumentation/karate-1.0/src/test/resources/test-retry-continue-on-step-failure/events.ftl
rename to dd-java-agent/instrumentation/karate/karate-1.0/src/test/resources/test-retry-continue-on-step-failure/events.ftl
diff --git a/dd-java-agent/instrumentation/karate-1.0/src/test/resources/test-retry-failed/coverages.ftl b/dd-java-agent/instrumentation/karate/karate-1.0/src/test/resources/test-retry-failed/coverages.ftl
similarity index 100%
rename from dd-java-agent/instrumentation/karate-1.0/src/test/resources/test-retry-failed/coverages.ftl
rename to dd-java-agent/instrumentation/karate/karate-1.0/src/test/resources/test-retry-failed/coverages.ftl
diff --git a/dd-java-agent/instrumentation/karate-1.0/src/test/resources/test-retry-failed/events.ftl b/dd-java-agent/instrumentation/karate/karate-1.0/src/test/resources/test-retry-failed/events.ftl
similarity index 100%
rename from dd-java-agent/instrumentation/karate-1.0/src/test/resources/test-retry-failed/events.ftl
rename to dd-java-agent/instrumentation/karate/karate-1.0/src/test/resources/test-retry-failed/events.ftl
diff --git a/dd-java-agent/instrumentation/karate-1.0/src/test/resources/test-retry-parameterized/coverages.ftl b/dd-java-agent/instrumentation/karate/karate-1.0/src/test/resources/test-retry-parameterized/coverages.ftl
similarity index 100%
rename from dd-java-agent/instrumentation/karate-1.0/src/test/resources/test-retry-parameterized/coverages.ftl
rename to dd-java-agent/instrumentation/karate/karate-1.0/src/test/resources/test-retry-parameterized/coverages.ftl
diff --git a/dd-java-agent/instrumentation/karate-1.0/src/test/resources/test-retry-parameterized/events.ftl b/dd-java-agent/instrumentation/karate/karate-1.0/src/test/resources/test-retry-parameterized/events.ftl
similarity index 100%
rename from dd-java-agent/instrumentation/karate-1.0/src/test/resources/test-retry-parameterized/events.ftl
rename to dd-java-agent/instrumentation/karate/karate-1.0/src/test/resources/test-retry-parameterized/events.ftl
diff --git a/dd-java-agent/instrumentation/karate-1.0/src/test/resources/test-skipped-feature/coverages.ftl b/dd-java-agent/instrumentation/karate/karate-1.0/src/test/resources/test-skipped-feature/coverages.ftl
similarity index 100%
rename from dd-java-agent/instrumentation/karate-1.0/src/test/resources/test-skipped-feature/coverages.ftl
rename to dd-java-agent/instrumentation/karate/karate-1.0/src/test/resources/test-skipped-feature/coverages.ftl
diff --git a/dd-java-agent/instrumentation/karate-1.0/src/test/resources/test-skipped-feature/events.ftl b/dd-java-agent/instrumentation/karate/karate-1.0/src/test/resources/test-skipped-feature/events.ftl
similarity index 100%
rename from dd-java-agent/instrumentation/karate-1.0/src/test/resources/test-skipped-feature/events.ftl
rename to dd-java-agent/instrumentation/karate/karate-1.0/src/test/resources/test-skipped-feature/events.ftl
diff --git a/dd-java-agent/instrumentation/karate-1.0/src/test/resources/test-succeed-parallel/coverages.ftl b/dd-java-agent/instrumentation/karate/karate-1.0/src/test/resources/test-succeed-parallel/coverages.ftl
similarity index 100%
rename from dd-java-agent/instrumentation/karate-1.0/src/test/resources/test-succeed-parallel/coverages.ftl
rename to dd-java-agent/instrumentation/karate/karate-1.0/src/test/resources/test-succeed-parallel/coverages.ftl
diff --git a/dd-java-agent/instrumentation/karate-1.0/src/test/resources/test-succeed-parallel/events.ftl b/dd-java-agent/instrumentation/karate/karate-1.0/src/test/resources/test-succeed-parallel/events.ftl
similarity index 100%
rename from dd-java-agent/instrumentation/karate-1.0/src/test/resources/test-succeed-parallel/events.ftl
rename to dd-java-agent/instrumentation/karate/karate-1.0/src/test/resources/test-succeed-parallel/events.ftl
diff --git a/dd-java-agent/instrumentation/karate-1.0/src/test/resources/test-succeed/coverages.ftl b/dd-java-agent/instrumentation/karate/karate-1.0/src/test/resources/test-succeed/coverages.ftl
similarity index 100%
rename from dd-java-agent/instrumentation/karate-1.0/src/test/resources/test-succeed/coverages.ftl
rename to dd-java-agent/instrumentation/karate/karate-1.0/src/test/resources/test-succeed/coverages.ftl
diff --git a/dd-java-agent/instrumentation/karate-1.0/src/test/resources/test-succeed/events.ftl b/dd-java-agent/instrumentation/karate/karate-1.0/src/test/resources/test-succeed/events.ftl
similarity index 100%
rename from dd-java-agent/instrumentation/karate-1.0/src/test/resources/test-succeed/events.ftl
rename to dd-java-agent/instrumentation/karate/karate-1.0/src/test/resources/test-succeed/events.ftl
diff --git a/dd-java-agent/instrumentation/karate-1.0/src/test/resources/test-with-setup/coverages.ftl b/dd-java-agent/instrumentation/karate/karate-1.0/src/test/resources/test-with-setup/coverages.ftl
similarity index 100%
rename from dd-java-agent/instrumentation/karate-1.0/src/test/resources/test-with-setup/coverages.ftl
rename to dd-java-agent/instrumentation/karate/karate-1.0/src/test/resources/test-with-setup/coverages.ftl
diff --git a/dd-java-agent/instrumentation/karate-1.0/src/test/resources/test-with-setup/events.ftl b/dd-java-agent/instrumentation/karate/karate-1.0/src/test/resources/test-with-setup/events.ftl
similarity index 100%
rename from dd-java-agent/instrumentation/karate-1.0/src/test/resources/test-with-setup/events.ftl
rename to dd-java-agent/instrumentation/karate/karate-1.0/src/test/resources/test-with-setup/events.ftl
diff --git a/dd-java-agent/instrumentation/karate/karate-2.0/build.gradle b/dd-java-agent/instrumentation/karate/karate-2.0/build.gradle
new file mode 100644
index 00000000000..d3f81242750
--- /dev/null
+++ b/dd-java-agent/instrumentation/karate/karate-2.0/build.gradle
@@ -0,0 +1,52 @@
+plugins {
+ id 'dd-trace-java.instrumentation.testing-framework-tests'
+}
+
+apply from: "$rootDir/gradle/java.gradle"
+
+// Karate 2.x is compiled with Java 21 (uses virtual threads for parallelism)
+tracerJava {
+ addSourceSetFor(JavaVersion.VERSION_21)
+}
+
+muzzle {
+ pass {
+ group = 'io.karatelabs'
+ module = 'karate-core'
+ versions = '[2.0.0,)'
+ javaVersion = '21'
+ }
+}
+
+["compileMain_java21Java", "compileTestJava"].each {
+ tasks.named(it, JavaCompile) {
+ configureCompiler(it, 21, JavaVersion.VERSION_21)
+ }
+}
+
+tasks.withType(GroovyCompile).configureEach {
+ configureCompiler(it, 21)
+}
+
+dependencies {
+ main_java21CompileOnly group: 'io.karatelabs', name: 'karate-core', version: '2.0.9'
+
+ testImplementation project(':dd-java-agent:agent-ci-visibility:civisibility-instrumentation-test-fixtures')
+ testImplementation group: 'org.junit.platform', name: 'junit-platform-launcher', version: libs.versions.junit.platform.get()
+ testImplementation group: 'org.junit.jupiter', name: 'junit-jupiter-engine', version: libs.versions.junit5.get()
+
+ testImplementation(group: 'io.karatelabs', name: 'karate-core', version: '2.0.9') {
+ // excluding logback to avoid conflicts with libs.bundles.test.logging
+ exclude group: 'ch.qos.logback', module: 'logback-classic'
+ }
+}
+
+// Using recommended Karate project layout where Karate feature files sit in same /test/java folders as their java counterparts
+sourceSets {
+ test {
+ resources {
+ srcDir file('src/test/java')
+ exclude '**/*.java'
+ }
+ }
+}
diff --git a/dd-java-agent/instrumentation/karate/karate-2.0/src/main/java/datadog/trace/instrumentation/karate2/KarateExecutionInstrumentation.java b/dd-java-agent/instrumentation/karate/karate-2.0/src/main/java/datadog/trace/instrumentation/karate2/KarateExecutionInstrumentation.java
new file mode 100644
index 00000000000..8b88bf2476e
--- /dev/null
+++ b/dd-java-agent/instrumentation/karate/karate-2.0/src/main/java/datadog/trace/instrumentation/karate2/KarateExecutionInstrumentation.java
@@ -0,0 +1,87 @@
+package datadog.trace.instrumentation.karate2;
+
+import static datadog.trace.agent.tooling.bytebuddy.matcher.NameMatchers.named;
+import static net.bytebuddy.matcher.ElementMatchers.isBridge;
+import static net.bytebuddy.matcher.ElementMatchers.not;
+import static net.bytebuddy.matcher.ElementMatchers.returns;
+import static net.bytebuddy.matcher.ElementMatchers.takesArgument;
+import static net.bytebuddy.matcher.ElementMatchers.takesArguments;
+import static net.bytebuddy.matcher.ElementMatchers.takesNoArguments;
+
+import com.google.auto.service.AutoService;
+import datadog.trace.agent.tooling.Instrumenter;
+import datadog.trace.agent.tooling.InstrumenterModule;
+import datadog.trace.api.Config;
+import java.util.Collections;
+import java.util.Map;
+
+/**
+ * Drives test-retry execution policies (ATR / EFD / attempt-to-fix) and failure suppression for
+ * Karate v2.
+ *
+ *
contextStore() {
+ return Collections.singletonMap(
+ "io.karatelabs.gherkin.Scenario", packageName + ".ExecutionContext");
+ }
+
+ @Override
+ public void methodAdvice(MethodTransformer transformer) {
+ // ScenarioRuntime#call() is the run()-equivalent; match the concrete ScenarioResult-returning
+ // method, not the synthetic Callable#call() bridge.
+ transformer.applyAdvice(
+ named("call")
+ .and(takesNoArguments())
+ .and(returns(named("io.karatelabs.core.ScenarioResult")))
+ .and(not(isBridge())),
+ packageName + ".KarateScenarioAdvice$RetryAdvice");
+
+ // ScenarioResult#addStepResult(StepResult)
+ transformer.applyAdvice(
+ named("addStepResult")
+ .and(takesArguments(1))
+ .and(takesArgument(0, named("io.karatelabs.core.StepResult"))),
+ packageName + ".KarateScenarioAdvice$SuppressErrorAdvice");
+ }
+}
diff --git a/dd-java-agent/instrumentation/karate/karate-2.0/src/main/java/datadog/trace/instrumentation/karate2/KarateInstrumentation.java b/dd-java-agent/instrumentation/karate/karate-2.0/src/main/java/datadog/trace/instrumentation/karate2/KarateInstrumentation.java
new file mode 100644
index 00000000000..522c8a464fc
--- /dev/null
+++ b/dd-java-agent/instrumentation/karate/karate-2.0/src/main/java/datadog/trace/instrumentation/karate2/KarateInstrumentation.java
@@ -0,0 +1,53 @@
+package datadog.trace.instrumentation.karate2;
+
+import static net.bytebuddy.matcher.ElementMatchers.isConstructor;
+
+import com.google.auto.service.AutoService;
+import datadog.trace.agent.tooling.Instrumenter;
+import datadog.trace.agent.tooling.InstrumenterModule;
+import java.util.Collections;
+import java.util.Map;
+
+/**
+ * Registers a {@code io.karatelabs.core.RunListener} on every {@code
+ * io.karatelabs.core.Runner.Builder}.
+ *
+ * This module is compiled for Java 8 so the agent can enumerate it on any JVM; the advice and
+ * helper classes that reference the Java 21 {@code io.karatelabs} API live in the {@code java21}
+ * source set and are referenced by name.
+ */
+@AutoService(InstrumenterModule.class)
+public class KarateInstrumentation extends InstrumenterModule.CiVisibility
+ implements Instrumenter.ForSingleType, Instrumenter.HasMethodAdvice {
+
+ public KarateInstrumentation() {
+ super("ci-visibility", "karate");
+ }
+
+ @Override
+ public String instrumentedType() {
+ return "io.karatelabs.core.Runner$Builder";
+ }
+
+ @Override
+ public String[] helperClassNames() {
+ return new String[] {
+ packageName + ".KarateUtils",
+ packageName + ".TestEventsHandlerHolder",
+ packageName + ".ExecutionContext",
+ packageName + ".KarateTracingListener",
+ packageName + ".KarateBuilderAdvice"
+ };
+ }
+
+ @Override
+ public Map contextStore() {
+ return Collections.singletonMap(
+ "io.karatelabs.gherkin.Scenario", packageName + ".ExecutionContext");
+ }
+
+ @Override
+ public void methodAdvice(MethodTransformer transformer) {
+ transformer.applyAdvice(isConstructor(), packageName + ".KarateBuilderAdvice");
+ }
+}
diff --git a/dd-java-agent/instrumentation/karate/karate-2.0/src/main/java21/datadog/trace/instrumentation/karate2/ExecutionContext.java b/dd-java-agent/instrumentation/karate/karate-2.0/src/main/java21/datadog/trace/instrumentation/karate2/ExecutionContext.java
new file mode 100644
index 00000000000..91e24c197fe
--- /dev/null
+++ b/dd-java-agent/instrumentation/karate/karate-2.0/src/main/java21/datadog/trace/instrumentation/karate2/ExecutionContext.java
@@ -0,0 +1,56 @@
+package datadog.trace.instrumentation.karate2;
+
+import datadog.trace.api.civisibility.config.TestIdentifier;
+import datadog.trace.api.civisibility.config.TestSourceData;
+import datadog.trace.api.civisibility.execution.TestExecutionPolicy;
+import io.karatelabs.gherkin.Scenario;
+import java.util.Collection;
+
+public class ExecutionContext {
+
+ private final TestExecutionPolicy executionPolicy;
+ private boolean suppressFailures;
+ private Throwable suppressedError;
+
+ public ExecutionContext(TestExecutionPolicy executionPolicy) {
+ this.executionPolicy = executionPolicy;
+ }
+
+ public void setSuppressFailures(boolean suppressFailures) {
+ this.suppressFailures = suppressFailures;
+ }
+
+ public boolean shouldSuppressFailures() {
+ return suppressFailures;
+ }
+
+ public TestExecutionPolicy getExecutionPolicy() {
+ return executionPolicy;
+ }
+
+ /**
+ * Karate v2 {@code StepResult} is immutable (no {@code setFailedReason}/{@code setErrorIgnored}),
+ * so a failure that was suppressed for retry purposes cannot be carried on the replacement step.
+ * We stash it here instead, so the tracing listener can still report the failure to CI
+ * Visibility.
+ */
+ public void setSuppressedError(Throwable suppressedError) {
+ if (this.suppressedError == null) {
+ this.suppressedError = suppressedError;
+ }
+ }
+
+ public Throwable getAndClearSuppressedError() {
+ Throwable suppressedError = this.suppressedError;
+ this.suppressedError = null;
+ return suppressedError;
+ }
+
+ public static ExecutionContext create(Scenario scenario) {
+ TestIdentifier testIdentifier = KarateUtils.toTestIdentifier(scenario);
+ Collection testTags = KarateUtils.getCategories(scenario.getTagsEffective());
+ return new ExecutionContext(
+ TestEventsHandlerHolder.TEST_EVENTS_HANDLER.executionPolicy(
+ testIdentifier, TestSourceData.UNKNOWN, testTags));
+ }
+}
diff --git a/dd-java-agent/instrumentation/karate/karate-2.0/src/main/java21/datadog/trace/instrumentation/karate2/KarateBuilderAdvice.java b/dd-java-agent/instrumentation/karate/karate-2.0/src/main/java21/datadog/trace/instrumentation/karate2/KarateBuilderAdvice.java
new file mode 100644
index 00000000000..54bda255b9c
--- /dev/null
+++ b/dd-java-agent/instrumentation/karate/karate-2.0/src/main/java21/datadog/trace/instrumentation/karate2/KarateBuilderAdvice.java
@@ -0,0 +1,25 @@
+package datadog.trace.instrumentation.karate2;
+
+import datadog.trace.bootstrap.ContextStore;
+import datadog.trace.bootstrap.InstrumentationContext;
+import io.karatelabs.core.RunEvent;
+import io.karatelabs.core.RunListener;
+import io.karatelabs.core.Runner;
+import io.karatelabs.gherkin.Scenario;
+import net.bytebuddy.asm.Advice;
+
+/** Advice for the {@code io.karatelabs.core.Runner.Builder} constructor. */
+public class KarateBuilderAdvice {
+
+ @Advice.OnMethodExit
+ public static void onRunnerBuilderConstructorExit(@Advice.This Runner.Builder builder) {
+ ContextStore scenarioContext =
+ InstrumentationContext.get(Scenario.class, ExecutionContext.class);
+ builder.listener(new KarateTracingListener(scenarioContext));
+ }
+
+ // Karate 2.0.0 and above
+ public static void muzzleCheck(RunListener runListener) {
+ runListener.onEvent((RunEvent) null);
+ }
+}
diff --git a/dd-java-agent/instrumentation/karate/karate-2.0/src/main/java21/datadog/trace/instrumentation/karate2/KarateScenarioAdvice.java b/dd-java-agent/instrumentation/karate/karate-2.0/src/main/java21/datadog/trace/instrumentation/karate2/KarateScenarioAdvice.java
new file mode 100644
index 00000000000..6b647b73c87
--- /dev/null
+++ b/dd-java-agent/instrumentation/karate/karate-2.0/src/main/java21/datadog/trace/instrumentation/karate2/KarateScenarioAdvice.java
@@ -0,0 +1,100 @@
+package datadog.trace.instrumentation.karate2;
+
+import datadog.trace.api.civisibility.execution.TestExecutionPolicy;
+import datadog.trace.bootstrap.CallDepthThreadLocalMap;
+import datadog.trace.bootstrap.InstrumentationContext;
+import io.karatelabs.core.RunEvent;
+import io.karatelabs.core.RunListener;
+import io.karatelabs.core.ScenarioResult;
+import io.karatelabs.core.ScenarioRuntime;
+import io.karatelabs.core.StepResult;
+import io.karatelabs.gherkin.Scenario;
+import net.bytebuddy.asm.Advice;
+
+/** Advice classes for {@code io.karatelabs.core.ScenarioRuntime}/{@code ScenarioResult}. */
+public class KarateScenarioAdvice {
+
+ public static class RetryAdvice {
+ @Advice.OnMethodEnter
+ public static void beforeExecute(@Advice.This ScenarioRuntime scenarioRuntime) {
+ ExecutionContext executionContext =
+ InstrumentationContext.get(Scenario.class, ExecutionContext.class)
+ .computeIfAbsent(scenarioRuntime.getScenario(), ExecutionContext::create);
+
+ // Indicate beforehand whether failures should be suppressed. This aligns the ordering with
+ // the rest of the frameworks.
+ TestExecutionPolicy executionPolicy = executionContext.getExecutionPolicy();
+ executionContext.setSuppressFailures(executionPolicy.suppressFailures());
+ }
+
+ @Advice.OnMethodExit
+ public static void afterExecute(
+ @Advice.This ScenarioRuntime scenarioRuntime,
+ @Advice.Return(readOnly = false) ScenarioResult result) {
+ if (CallDepthThreadLocalMap.incrementCallDepth(ScenarioRuntime.class) > 0) {
+ // nested call (a retry invoked below, or a called scenario)
+ return;
+ }
+
+ try {
+ Scenario scenario = scenarioRuntime.getScenario();
+ ExecutionContext context =
+ InstrumentationContext.get(Scenario.class, ExecutionContext.class).get(scenario);
+ if (context == null) {
+ return;
+ }
+
+ ScenarioResult finalResult = result;
+ TestExecutionPolicy executionPolicy = context.getExecutionPolicy();
+ while (executionPolicy.applicable()) {
+ ScenarioRuntime retry =
+ new ScenarioRuntime(scenarioRuntime.getFeatureRuntime(), scenario);
+ finalResult = retry.call();
+ }
+
+ // override the return value so the final attempt is the one recorded.
+ result = finalResult;
+ } finally {
+ CallDepthThreadLocalMap.reset(ScenarioRuntime.class);
+ }
+ }
+
+ // Karate 2.0.0 and above
+ public static void muzzleCheck(RunListener runListener) {
+ runListener.onEvent((RunEvent) null);
+ }
+ }
+
+ public static class SuppressErrorAdvice {
+ @Advice.OnMethodEnter
+ public static void onAddingStepResult(
+ @Advice.Argument(value = 0, readOnly = false) StepResult stepResult,
+ @Advice.FieldValue("scenario") Scenario scenario) {
+
+ if (stepResult.isFailed()) {
+ ExecutionContext executionContext =
+ InstrumentationContext.get(Scenario.class, ExecutionContext.class).get(scenario);
+ if (executionContext == null) {
+ return;
+ }
+
+ // Suppress every failing step of a to-be-retried attempt (not just the first): with
+ // continueOnStepFailure a single attempt can add multiple failing steps, and any leak
+ // would mark the retry attempt's result failed.
+ if (executionContext.shouldSuppressFailures()) {
+ // v2 StepResult is immutable: preserve the error out-of-band, then replace the failing
+ // step with a skipped one so the scenario no longer counts as failed.
+ executionContext.setSuppressedError(stepResult.getError());
+ stepResult = StepResult.skipped(stepResult.getStep(), stepResult.getStartTime());
+ }
+ }
+ }
+
+ // Karate 2.0.0 and above
+ public static void muzzleCheck(RunListener runListener) {
+ runListener.onEvent((RunEvent) null);
+ }
+ }
+
+ private KarateScenarioAdvice() {}
+}
diff --git a/dd-java-agent/instrumentation/karate/karate-2.0/src/main/java21/datadog/trace/instrumentation/karate2/KarateTracingListener.java b/dd-java-agent/instrumentation/karate/karate-2.0/src/main/java21/datadog/trace/instrumentation/karate2/KarateTracingListener.java
new file mode 100644
index 00000000000..ce37bdc0ffa
--- /dev/null
+++ b/dd-java-agent/instrumentation/karate/karate-2.0/src/main/java21/datadog/trace/instrumentation/karate2/KarateTracingListener.java
@@ -0,0 +1,258 @@
+package datadog.trace.instrumentation.karate2;
+
+import datadog.trace.api.Config;
+import datadog.trace.api.civisibility.CIConstants;
+import datadog.trace.api.civisibility.config.TestIdentifier;
+import datadog.trace.api.civisibility.config.TestSourceData;
+import datadog.trace.api.civisibility.events.TestDescriptor;
+import datadog.trace.api.civisibility.events.TestSuiteDescriptor;
+import datadog.trace.api.civisibility.execution.TestExecutionTracker;
+import datadog.trace.api.civisibility.telemetry.tag.SkipReason;
+import datadog.trace.api.civisibility.telemetry.tag.TestFrameworkInstrumentation;
+import datadog.trace.bootstrap.ContextStore;
+import datadog.trace.bootstrap.instrumentation.api.AgentSpan;
+import datadog.trace.bootstrap.instrumentation.api.AgentTracer;
+import datadog.trace.bootstrap.instrumentation.api.Tags;
+import io.karatelabs.core.FeatureResult;
+import io.karatelabs.core.FeatureRunEvent;
+import io.karatelabs.core.FeatureRuntime;
+import io.karatelabs.core.RunEvent;
+import io.karatelabs.core.RunEventType;
+import io.karatelabs.core.RunListener;
+import io.karatelabs.core.ScenarioResult;
+import io.karatelabs.core.ScenarioRunEvent;
+import io.karatelabs.core.ScenarioRuntime;
+import io.karatelabs.core.StepResult;
+import io.karatelabs.core.StepRunEvent;
+import io.karatelabs.gherkin.Feature;
+import io.karatelabs.gherkin.Scenario;
+import io.karatelabs.gherkin.Step;
+import java.util.Collection;
+import java.util.List;
+
+public class KarateTracingListener implements RunListener {
+
+ private static final String FRAMEWORK_NAME = "karate";
+ public static final String FRAMEWORK_VERSION = KarateUtils.getKarateVersion();
+ public static final String KARATE_STEP_SPAN_NAME = "karate.step";
+
+ private final ContextStore scenarioContext;
+
+ public KarateTracingListener(ContextStore scenarioContext) {
+ this.scenarioContext = scenarioContext;
+ }
+
+ @Override
+ public boolean onEvent(RunEvent event) {
+ RunEventType type = event.getType();
+ if (type == RunEventType.FEATURE_ENTER) {
+ return beforeFeature((FeatureRunEvent) event);
+ } else if (type == RunEventType.FEATURE_EXIT) {
+ afterFeature((FeatureRunEvent) event);
+ } else if (type == RunEventType.SCENARIO_ENTER) {
+ return beforeScenario((ScenarioRunEvent) event);
+ } else if (type == RunEventType.SCENARIO_EXIT) {
+ afterScenario((ScenarioRunEvent) event);
+ } else if (type == RunEventType.STEP_ENTER) {
+ beforeStep((StepRunEvent) event);
+ } else if (type == RunEventType.STEP_EXIT) {
+ afterStep((StepRunEvent) event);
+ }
+ return true;
+ }
+
+ private boolean beforeFeature(FeatureRunEvent event) {
+ FeatureRuntime fr = event.source();
+ if (skipTracking(fr)) {
+ return true;
+ }
+ TestSuiteDescriptor suiteDescriptor = KarateUtils.toSuiteDescriptor(fr);
+ Feature feature = fr.getFeature();
+ TestEventsHandlerHolder.TEST_EVENTS_HANDLER.onTestSuiteStart(
+ suiteDescriptor,
+ KarateUtils.getFeatureNameForReport(feature),
+ FRAMEWORK_NAME,
+ FRAMEWORK_VERSION,
+ null,
+ KarateUtils.getCategories(feature.getTags()),
+ isParallel(fr),
+ TestFrameworkInstrumentation.KARATE,
+ null);
+ return true;
+ }
+
+ private void afterFeature(FeatureRunEvent event) {
+ FeatureRuntime fr = event.source();
+ if (skipTracking(fr)) {
+ return;
+ }
+ TestSuiteDescriptor suiteDescriptor = KarateUtils.toSuiteDescriptor(fr);
+ FeatureResult result = event.result();
+ if (result != null && result.isFailed()) {
+ TestEventsHandlerHolder.TEST_EVENTS_HANDLER.onTestSuiteFailure(
+ suiteDescriptor, suiteThrowable(result));
+ } else if (result != null && result.isEmpty()) {
+ TestEventsHandlerHolder.TEST_EVENTS_HANDLER.onTestSuiteSkip(suiteDescriptor, null);
+ }
+ TestEventsHandlerHolder.TEST_EVENTS_HANDLER.onTestSuiteFinish(suiteDescriptor, null);
+ }
+
+ private boolean beforeScenario(ScenarioRunEvent event) {
+ ScenarioRuntime sr = event.source();
+ if (skipTracking(sr)) {
+ return true;
+ }
+ Scenario scenario = sr.getScenario();
+ TestSuiteDescriptor suiteDescriptor = KarateUtils.toSuiteDescriptor(sr.getFeatureRuntime());
+ TestDescriptor testDescriptor = KarateUtils.toTestDescriptor(sr);
+ String scenarioName = KarateUtils.getScenarioName(scenario);
+ String parameters = KarateUtils.getParameters(scenario);
+ Collection categories = KarateUtils.getCategories(scenario.getTagsEffective());
+
+ ExecutionContext context = scenarioContext.get(scenario);
+ TestExecutionTracker executionTracker = context != null ? context.getExecutionPolicy() : null;
+
+ if (Config.get().isCiVisibilityTestSkippingEnabled()
+ || Config.get().isCiVisibilityTestManagementEnabled()) {
+ TestIdentifier skippableTest = KarateUtils.toTestIdentifier(scenario);
+ SkipReason skipReason = TestEventsHandlerHolder.TEST_EVENTS_HANDLER.skipReason(skippableTest);
+
+ if (skipReason != null
+ && !(skipReason == SkipReason.ITR
+ && categories.contains(CIConstants.Tags.ITR_UNSKIPPABLE_TAG))) {
+ TestEventsHandlerHolder.TEST_EVENTS_HANDLER.onTestIgnore(
+ suiteDescriptor,
+ testDescriptor,
+ scenarioName,
+ FRAMEWORK_NAME,
+ FRAMEWORK_VERSION,
+ parameters,
+ categories,
+ TestSourceData.UNKNOWN,
+ skipReason.getDescription(),
+ executionTracker);
+ return false;
+ }
+ }
+
+ TestEventsHandlerHolder.TEST_EVENTS_HANDLER.onTestStart(
+ suiteDescriptor,
+ testDescriptor,
+ scenarioName,
+ FRAMEWORK_NAME,
+ FRAMEWORK_VERSION,
+ parameters,
+ categories,
+ TestSourceData.UNKNOWN,
+ null,
+ executionTracker);
+ return true;
+ }
+
+ private void afterScenario(ScenarioRunEvent event) {
+ ScenarioRuntime sr = event.source();
+ if (skipTracking(sr)) {
+ return;
+ }
+ Scenario scenario = sr.getScenario();
+ ScenarioResult result = event.result();
+ TestDescriptor testDescriptor = KarateUtils.toTestDescriptor(sr);
+
+ ExecutionContext context = scenarioContext.get(scenario);
+ Throwable suppressedError = context != null ? context.getAndClearSuppressedError() : null;
+ Throwable failedReason = getFailedReason(result, suppressedError);
+
+ if ((result != null && result.isFailed()) || failedReason != null) {
+ TestEventsHandlerHolder.TEST_EVENTS_HANDLER.onTestFailure(testDescriptor, failedReason);
+ } else if (result == null || result.getStepResults().isEmpty()) {
+ TestEventsHandlerHolder.TEST_EVENTS_HANDLER.onTestSkip(testDescriptor, null);
+ }
+
+ TestExecutionTracker executionTracker = context != null ? context.getExecutionPolicy() : null;
+ TestEventsHandlerHolder.TEST_EVENTS_HANDLER.onTestFinish(
+ testDescriptor, null, executionTracker);
+ }
+
+ private void beforeStep(StepRunEvent event) {
+ Step step = event.step();
+ if (skipTracking(step)) {
+ return;
+ }
+ AgentSpan span = AgentTracer.startSpan("karate", KARATE_STEP_SPAN_NAME);
+ AgentTracer.activateSpanWithoutScope(span);
+ String stepName = step.getPrefix() + " " + step.getText();
+ span.setResourceName(stepName);
+ span.setTag(Tags.COMPONENT, "karate");
+ span.spanContext().setIntegrationName("karate");
+ span.setTag("step.name", stepName);
+ span.setTag("step.startLine", step.getLine());
+ span.setTag("step.endLine", step.getEndLine());
+ span.setTag("step.docString", step.getDocString());
+ }
+
+ private void afterStep(StepRunEvent event) {
+ if (skipTracking(event.step())) {
+ return;
+ }
+
+ AgentSpan span = AgentTracer.activeSpan();
+ if (span == null) {
+ return;
+ }
+
+ AgentTracer.closeActive();
+ span.finish();
+ }
+
+ private static Throwable getFailedReason(ScenarioResult result, Throwable suppressedError) {
+ if (result != null) {
+ Throwable error = result.getError();
+ if (error != null) {
+ return error;
+ }
+ for (StepResult stepResult : result.getStepResults()) {
+ if (stepResult.getError() != null) {
+ return stepResult.getError();
+ }
+ }
+ }
+ // a failure that was suppressed by the retry logic (the failing step was replaced with a
+ // skipped one) is carried out-of-band on the ExecutionContext
+ return suppressedError;
+ }
+
+ private static Throwable suiteThrowable(FeatureResult result) {
+ List scenarioResults = result.getScenarioResults();
+ if (scenarioResults != null) {
+ for (ScenarioResult scenarioResult : scenarioResults) {
+ Throwable error = scenarioResult.getError();
+ if (error != null) {
+ return error;
+ }
+ }
+ }
+ return new RuntimeException(result.getFailureMessage());
+ }
+
+ private static boolean isParallel(FeatureRuntime fr) {
+ return fr.getSuite() != null && fr.getSuite().parallel;
+ }
+
+ private static boolean skipTracking(FeatureRuntime fr) {
+ // do not track nested (called) feature runs
+ return fr.getCaller() != null;
+ }
+
+ private static boolean skipTracking(ScenarioRuntime sr) {
+ // do not track nested (called) scenario runs and setup scenarios
+ return sr.getFeatureRuntime().getCaller() != null || sr.getScenario().isSetup();
+ }
+
+ private static boolean skipTracking(Step step) {
+ // do not track steps that are not children of a tracked scenario or another tracked step
+ AgentSpan activeSpan = AgentTracer.activeSpan();
+ return activeSpan == null
+ || (!KARATE_STEP_SPAN_NAME.contentEquals(activeSpan.getSpanName())
+ && !Tags.SPAN_KIND_TEST.contentEquals(activeSpan.getSpanType()));
+ }
+}
diff --git a/dd-java-agent/instrumentation/karate/karate-2.0/src/main/java21/datadog/trace/instrumentation/karate2/KarateUtils.java b/dd-java-agent/instrumentation/karate/karate-2.0/src/main/java21/datadog/trace/instrumentation/karate2/KarateUtils.java
new file mode 100644
index 00000000000..7a8b4bb4e7c
--- /dev/null
+++ b/dd-java-agent/instrumentation/karate/karate-2.0/src/main/java21/datadog/trace/instrumentation/karate2/KarateUtils.java
@@ -0,0 +1,178 @@
+package datadog.trace.instrumentation.karate2;
+
+import static datadog.json.JsonMapper.toJson;
+
+import datadog.trace.api.civisibility.config.LibraryCapability;
+import datadog.trace.api.civisibility.config.TestIdentifier;
+import datadog.trace.api.civisibility.events.TestDescriptor;
+import datadog.trace.api.civisibility.events.TestSuiteDescriptor;
+import datadog.trace.util.Strings;
+import io.karatelabs.core.FeatureRuntime;
+import io.karatelabs.core.Globals;
+import io.karatelabs.core.ScenarioRuntime;
+import io.karatelabs.gherkin.Feature;
+import io.karatelabs.gherkin.Scenario;
+import io.karatelabs.gherkin.Tag;
+import java.net.URI;
+import java.net.URL;
+import java.nio.file.Path;
+import java.nio.file.Paths;
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.List;
+import java.util.concurrent.ConcurrentHashMap;
+
+public abstract class KarateUtils {
+
+ private KarateUtils() {}
+
+ public static final List CAPABILITIES = Collections.emptyList();
+
+ private static final ConcurrentHashMap CLASSPATH_NAME_CACHE =
+ new ConcurrentHashMap<>();
+
+ public static Feature getFeature(FeatureRuntime featureRuntime) {
+ return featureRuntime.getFeature();
+ }
+
+ /**
+ * Produces the karate-1.0-compatible suite identifier {@code "[]
+ * "} (e.g. {@code "[org/example/test_succeed] test succeed"}).
+ *
+ * We can't use v2's {@code Feature.getNameForReport()} directly: it derives the path from
+ * {@code Resource.getRelativePath()}, which v2 relativizes against the JVM working directory and
+ * falls back to the absolute path when the file is outside it.
+ *
+ *
We recover that form by asking the classloader to resolve progressively longer suffixes of
+ * the feature's path; the shortest suffix that resolves back to the same file is the
+ * classpath-relative name. Falls back to Karate's working-directory-relative path if nothing
+ * resolves.
+ */
+ public static String getFeatureNameForReport(Feature feature) {
+ if (feature == null) {
+ return null;
+ }
+ String classpathPath = resolveClasspathRelativeName(feature);
+ String name = feature.getName();
+ if (name == null || name.isEmpty()) {
+ return "[" + classpathPath + "]";
+ }
+ return "[" + classpathPath + "] " + name;
+ }
+
+ private static String resolveClasspathRelativeName(Feature feature) {
+ URI uri = feature.getResource() != null ? feature.getResource().getUri() : null;
+ // use Karate's own relative path as fallback for anything the classloader can't resolve
+ String fallback = resourceRelativeName(feature);
+ if (uri == null) {
+ return fallback;
+ }
+ return CLASSPATH_NAME_CACHE.computeIfAbsent(
+ uri, u -> computeClasspathRelativeName(u, fallback));
+ }
+
+ private static String resourceRelativeName(Feature feature) {
+ String relativePath =
+ feature.getResource() != null ? feature.getResource().getRelativePath() : null;
+ if (relativePath != null && !relativePath.isEmpty()) {
+ return stripFeatureExtension(relativePath);
+ }
+ return feature.getName() != null ? feature.getName() : "";
+ }
+
+ private static String computeClasspathRelativeName(URI uri, String fallback) {
+ Path path;
+ try {
+ path = Paths.get(uri);
+ } catch (Exception e) {
+ // non-file URI (e.g. a feature packaged inside a jar): can't walk filesystem segments
+ return fallback;
+ }
+ ClassLoader cl = Thread.currentThread().getContextClassLoader();
+ if (cl == null) {
+ cl = Feature.class.getClassLoader();
+ }
+ int segments = path.getNameCount();
+ for (int start = segments - 1; start >= 0; start--) {
+ StringBuilder candidate = new StringBuilder();
+ for (int i = start; i < segments; i++) {
+ if (i > start) {
+ candidate.append('/');
+ }
+ candidate.append(path.getName(i).toString());
+ }
+ URL resolved = cl.getResource(candidate.toString());
+ if (resolved != null) {
+ try {
+ if (Paths.get(resolved.toURI()).equals(path)) {
+ return stripFeatureExtension(candidate.toString());
+ }
+ } catch (Exception ignored) {
+ // continue searching
+ }
+ }
+ }
+ return fallback;
+ }
+
+ private static String stripFeatureExtension(String path) {
+ return path.endsWith(".feature")
+ ? path.substring(0, path.length() - ".feature".length())
+ : path;
+ }
+
+ public static String getScenarioName(Scenario scenario) {
+ String scenarioName = scenario.getName();
+ if (Strings.isNotBlank(scenarioName)) {
+ return scenarioName;
+ } else {
+ return scenario.getRefId();
+ }
+ }
+
+ public static List getCategories(List tags) {
+ if (tags == null) {
+ return Collections.emptyList();
+ }
+
+ List categories = new ArrayList<>(tags.size());
+ for (Tag tag : tags) {
+ categories.add(tag.getName());
+ }
+ return categories;
+ }
+
+ public static String getParameters(Scenario scenario) {
+ return scenario.getExampleData() != null ? toJson(scenario.getExampleData()) : null;
+ }
+
+ public static TestIdentifier toTestIdentifier(Scenario scenario) {
+ Feature feature = scenario.getFeature();
+ String featureName = getFeatureNameForReport(feature);
+ String scenarioName = getScenarioName(scenario);
+ String parameters = getParameters(scenario);
+ return new TestIdentifier(featureName, scenarioName, parameters);
+ }
+
+ public static TestDescriptor toTestDescriptor(ScenarioRuntime scenarioRuntime) {
+ Scenario scenario = scenarioRuntime.getScenario();
+ Feature feature = scenario.getFeature();
+ String featureName = getFeatureNameForReport(feature);
+ String scenarioName = getScenarioName(scenario);
+ String parameters = getParameters(scenario);
+ return new TestDescriptor(featureName, null, scenarioName, parameters, scenarioRuntime);
+ }
+
+ public static TestSuiteDescriptor toSuiteDescriptor(FeatureRuntime featureRuntime) {
+ String featureName = getFeatureNameForReport(featureRuntime.getFeature());
+ return new TestSuiteDescriptor(featureName, null);
+ }
+
+ public static String getKarateVersion() {
+ return Globals.KARATE_VERSION;
+ }
+
+ public static List capabilities() {
+ return CAPABILITIES;
+ }
+}
diff --git a/dd-java-agent/instrumentation/karate/karate-2.0/src/main/java21/datadog/trace/instrumentation/karate2/TestEventsHandlerHolder.java b/dd-java-agent/instrumentation/karate/karate-2.0/src/main/java21/datadog/trace/instrumentation/karate2/TestEventsHandlerHolder.java
new file mode 100644
index 00000000000..d2c4c495cab
--- /dev/null
+++ b/dd-java-agent/instrumentation/karate/karate-2.0/src/main/java21/datadog/trace/instrumentation/karate2/TestEventsHandlerHolder.java
@@ -0,0 +1,32 @@
+package datadog.trace.instrumentation.karate2;
+
+import datadog.trace.api.civisibility.InstrumentationBridge;
+import datadog.trace.api.civisibility.events.TestDescriptor;
+import datadog.trace.api.civisibility.events.TestEventsHandler;
+import datadog.trace.api.civisibility.events.TestSuiteDescriptor;
+import datadog.trace.api.internal.VisibleForTesting;
+
+public abstract class TestEventsHandlerHolder {
+
+ public static volatile TestEventsHandler TEST_EVENTS_HANDLER;
+
+ static {
+ start();
+ }
+
+ public static void start() {
+ TEST_EVENTS_HANDLER =
+ InstrumentationBridge.createTestEventsHandler(
+ "karate", null, null, KarateUtils.capabilities());
+ }
+
+ @VisibleForTesting
+ public static void stop() {
+ if (TEST_EVENTS_HANDLER != null) {
+ TEST_EVENTS_HANDLER.close();
+ TEST_EVENTS_HANDLER = null;
+ }
+ }
+
+ private TestEventsHandlerHolder() {}
+}
diff --git a/dd-java-agent/instrumentation/karate/karate-2.0/src/test/groovy/KarateV2Test.groovy b/dd-java-agent/instrumentation/karate/karate-2.0/src/test/groovy/KarateV2Test.groovy
new file mode 100644
index 00000000000..84d52bbf87f
--- /dev/null
+++ b/dd-java-agent/instrumentation/karate/karate-2.0/src/test/groovy/KarateV2Test.groovy
@@ -0,0 +1,228 @@
+import datadog.trace.api.DisableTestTrace
+import datadog.trace.api.civisibility.config.TestFQN
+import datadog.trace.api.civisibility.config.TestIdentifier
+import datadog.trace.civisibility.CiVisibilityInstrumentationTest
+import datadog.trace.instrumentation.karate2.KarateUtils
+import datadog.trace.instrumentation.karate2.TestEventsHandlerHolder
+import org.example.*
+import org.junit.jupiter.engine.JupiterTestEngine
+import org.junit.platform.engine.DiscoverySelector
+import org.junit.platform.engine.TestExecutionResult
+import org.junit.platform.launcher.TestExecutionListener
+import org.junit.platform.launcher.core.LauncherConfig
+import org.junit.platform.launcher.core.LauncherDiscoveryRequestBuilder
+import org.junit.platform.launcher.core.LauncherFactory
+
+import java.util.concurrent.ConcurrentHashMap
+import java.util.concurrent.CopyOnWriteArrayList
+
+import static org.junit.platform.engine.discovery.DiscoverySelectors.selectClass
+
+@DisableTestTrace(reason = "avoid self-tracing")
+class KarateV2Test extends CiVisibilityInstrumentationTest {
+
+ def "test #testcaseName"() {
+ runTests(tests, success)
+
+ assertSpansData(testcaseName)
+
+ where:
+ testcaseName | success | tests
+ "test-succeed" | true | [TestSucceedKarate]
+ "test-succeed-parallel" | true | [TestSucceedParallelKarate]
+ "test-with-setup" | true | [TestWithSetupKarate]
+ "test-parameterized" | true | [TestParameterizedKarate]
+ "test-failed" | false | [TestFailedKarate]
+ "test-skipped-feature" | true | [TestSkippedFeatureKarate]
+ }
+
+ def "test ITR #testcaseName"() {
+ givenSkippableTests(skippedTests)
+
+ runTests(tests)
+
+ assertSpansData(testcaseName)
+
+ where:
+ testcaseName | tests | skippedTests
+ "test-itr-skipping" | [TestSucceedKarate] | [new TestIdentifier("[org/example/test_succeed] test succeed", "first scenario", null)]
+ "test-itr-skipping-parameterized" | [TestParameterizedKarate] | [
+ new TestIdentifier("[org/example/test_parameterized] test parameterized", "first scenario as an outline", '{"param":"\'a\'","value":"aa"}')
+ ]
+ "test-itr-unskippable" | [TestUnskippableKarate] | [
+ new TestIdentifier("[org/example/test_unskippable] test unskippable", "first scenario", null)
+ ]
+ }
+
+ def "test flaky retries #testcaseName"() {
+ givenFlakyRetryEnabled(true)
+ givenFlakyTests(retriedTests)
+
+ runTests(tests, success)
+
+ assertSpansData(testcaseName)
+
+ where:
+ testcaseName | success | tests | retriedTests
+ "test-failed" | false | [TestFailedKarate] | []
+ "test-retry-failed" | false | [TestFailedKarate] | [new TestFQN("[org/example/test_failed] test failed", "second scenario")]
+ "test-failed-then-succeed" | true | [TestFailedThenSucceedKarate] | [new TestFQN("[org/example/test_failed_then_succeed] test failed", "flaky scenario")]
+ "test-retry-parameterized" | false | [TestFailedParameterizedKarate] | [
+ new TestFQN("[org/example/test_failed_parameterized] test parameterized", "first scenario as an outline")
+ ]
+ }
+
+ def "test early flakiness detection #testcaseName"() {
+ givenEarlyFlakinessDetectionEnabled(true)
+ givenKnownTests(knownTestsList)
+
+ runTests(tests)
+
+ assertSpansData(testcaseName)
+
+ where:
+ testcaseName | tests | knownTestsList
+ "test-efd-known-test" | [TestSucceedOneCaseKarate] | [new TestFQN("[org/example/test_succeed_one_case] test succeed", "first scenario")]
+ "test-efd-known-parameterized-test" | [TestParameterizedKarate] | [
+ new TestFQN("[org/example/test_parameterized] test parameterized", "first scenario as an outline")
+ ]
+ "test-efd-new-test" | [TestSucceedOneCaseKarate] | []
+ "test-efd-new-parameterized-test" | [TestParameterizedKarate] | []
+ "test-efd-new-slow-test" | [TestSucceedKarateSlow] | [] // is executed only twice
+ "test-efd-faulty-session-threshold" | [TestParameterizedMoreCasesKarate] | []
+ "test-efd-skip-new-test" | [TestSucceedKarateSkipEfd] | []
+ }
+
+ def "test quarantined #testcaseName"() {
+ givenQuarantinedTests(quarantined)
+
+ runTests(tests, true)
+
+ assertSpansData(testcaseName)
+
+ where:
+ testcaseName | tests | quarantined
+ "test-quarantined-failed" | [TestFailedKarate] | [new TestFQN("[org/example/test_failed] test failed", "second scenario")]
+ }
+
+ def "test quarantined auto-retries #testcaseName"() {
+ givenQuarantinedTests(quarantined)
+
+ givenFlakyRetryEnabled(true)
+ givenFlakyTests(retried)
+
+ // every test retry fails, but the build status is successful
+ runTests(tests, true)
+
+ assertSpansData(testcaseName)
+
+ where:
+ testcaseName | tests | quarantined | retried
+ "test-quarantined-failed-atr" | [TestFailedKarate] | [new TestFQN("[org/example/test_failed] test failed", "second scenario")] | [new TestFQN("[org/example/test_failed] test failed", "second scenario")]
+ }
+
+ def "test quarantined early flakiness detection #testcaseName"() {
+ givenQuarantinedTests(quarantined)
+
+ givenEarlyFlakinessDetectionEnabled(true)
+ givenKnownTests(known)
+
+ // every test retry fails, but the build status is successful
+ runTests(tests, true)
+
+ assertSpansData(testcaseName)
+
+ where:
+ testcaseName | tests | quarantined | known
+ "test-quarantined-failed-known" | [TestFailedKarate] | [new TestFQN("[org/example/test_failed] test failed", "second scenario")] | [new TestFQN("[org/example/test_failed] test failed", "second scenario")]
+ "test-quarantined-failed-efd" | [TestFailedKarate] | [new TestFQN("[org/example/test_failed] test failed", "second scenario")] | []
+ }
+
+ def "test disabled #testcaseName"() {
+ givenDisabledTests(disabled)
+
+ runTests(tests, true)
+
+ assertSpansData(testcaseName)
+
+ where:
+ testcaseName | tests | disabled
+ "test-disabled-failed" | [TestFailedKarate] | [new TestFQN("[org/example/test_failed] test failed", "second scenario")]
+ }
+
+ def "test attempt to fix #testcaseName"() {
+ givenQuarantinedTests(quarantined)
+ givenDisabledTests(disabled)
+ givenAttemptToFixTests(attemptToFix)
+
+ runTests(tests, success)
+
+ assertSpansData(testcaseName)
+
+ where:
+ testcaseName | success | tests | attemptToFix | quarantined | disabled
+ "test-attempt-to-fix-failed" | false | [TestFailedKarate] | [new TestFQN("[org/example/test_failed] test failed", "second scenario")] | [] | []
+ "test-attempt-to-fix-succeeded" | true | [TestSucceedKarate] | [new TestFQN("[org/example/test_succeed] test succeed", "first scenario")] | [] | []
+ "test-attempt-to-fix-quarantined-failed" | false | [TestFailedKarate] | [new TestFQN("[org/example/test_failed] test failed", "second scenario")] | [new TestFQN("[org/example/test_failed] test failed", "second scenario")] | []
+ "test-attempt-to-fix-quarantined-succeeded" | true | [TestSucceedKarate] | [new TestFQN("[org/example/test_succeed] test succeed", "first scenario")] | [new TestFQN("[org/example/test_succeed] test succeed", "first scenario")] | []
+ "test-attempt-to-fix-disabled-failed" | false | [TestFailedKarate] | [new TestFQN("[org/example/test_failed] test failed", "second scenario")] | [] | [new TestFQN("[org/example/test_failed] test failed", "second scenario")]
+ "test-attempt-to-fix-disabled-succeeded" | true | [TestSucceedKarate] | [new TestFQN("[org/example/test_succeed] test succeed", "first scenario")] | [] | [new TestFQN("[org/example/test_succeed] test succeed", "first scenario")]
+ }
+
+ private void runTests(List> tests, boolean expectSuccess = true) {
+ TestEventsHandlerHolder.start()
+
+ DiscoverySelector[] selectors = new DiscoverySelector[tests.size()]
+ for (i in 0..> testsByStatus = new ConcurrentHashMap<>()
+
+ void executionFinished(org.junit.platform.launcher.TestIdentifier testIdentifier, TestExecutionResult testExecutionResult) {
+ testsByStatus.computeIfAbsent(testExecutionResult.status, k -> new CopyOnWriteArrayList<>()).add(testIdentifier)
+ }
+ }
+}
diff --git a/dd-java-agent/instrumentation/karate/karate-2.0/src/test/java/org/example/Flaky.java b/dd-java-agent/instrumentation/karate/karate-2.0/src/test/java/org/example/Flaky.java
new file mode 100644
index 00000000000..59b938aaf57
--- /dev/null
+++ b/dd-java-agent/instrumentation/karate/karate-2.0/src/test/java/org/example/Flaky.java
@@ -0,0 +1,12 @@
+package org.example;
+
+import static org.junit.jupiter.api.Assertions.assertTrue;
+
+public class Flaky {
+
+ private static int counter = 0;
+
+ public static void flake() {
+ assertTrue(++counter >= 3);
+ }
+}
diff --git a/dd-java-agent/instrumentation/karate/karate-2.0/src/test/java/org/example/Slow.java b/dd-java-agent/instrumentation/karate/karate-2.0/src/test/java/org/example/Slow.java
new file mode 100644
index 00000000000..23a8bcd6d7e
--- /dev/null
+++ b/dd-java-agent/instrumentation/karate/karate-2.0/src/test/java/org/example/Slow.java
@@ -0,0 +1,12 @@
+package org.example;
+
+public class Slow {
+
+ public static void stall() {
+ try {
+ Thread.sleep(1100);
+ } catch (InterruptedException e) {
+ throw new RuntimeException(e);
+ }
+ }
+}
diff --git a/dd-java-agent/instrumentation/karate/karate-2.0/src/test/java/org/example/TestFailedKarate.java b/dd-java-agent/instrumentation/karate/karate-2.0/src/test/java/org/example/TestFailedKarate.java
new file mode 100644
index 00000000000..0aa667d0a7d
--- /dev/null
+++ b/dd-java-agent/instrumentation/karate/karate-2.0/src/test/java/org/example/TestFailedKarate.java
@@ -0,0 +1,16 @@
+package org.example;
+
+import static org.junit.jupiter.api.Assertions.assertEquals;
+
+import com.intuit.karate.Results;
+import com.intuit.karate.Runner;
+import org.junit.jupiter.api.Test;
+
+public class TestFailedKarate {
+
+ @Test
+ public void test() {
+ Results results = Runner.path("classpath:org/example/test_failed.feature").parallel(1);
+ assertEquals(0, results.getFailCount(), results.getErrorMessages());
+ }
+}
diff --git a/dd-java-agent/instrumentation/karate/karate-2.0/src/test/java/org/example/TestFailedParameterizedKarate.java b/dd-java-agent/instrumentation/karate/karate-2.0/src/test/java/org/example/TestFailedParameterizedKarate.java
new file mode 100644
index 00000000000..026f47875ed
--- /dev/null
+++ b/dd-java-agent/instrumentation/karate/karate-2.0/src/test/java/org/example/TestFailedParameterizedKarate.java
@@ -0,0 +1,17 @@
+package org.example;
+
+import static org.junit.jupiter.api.Assertions.assertEquals;
+
+import com.intuit.karate.Results;
+import com.intuit.karate.Runner;
+import org.junit.jupiter.api.Test;
+
+public class TestFailedParameterizedKarate {
+
+ @Test
+ public void test() {
+ Results results =
+ Runner.path("classpath:org/example/test_failed_parameterized.feature").parallel(1);
+ assertEquals(0, results.getFailCount(), results.getErrorMessages());
+ }
+}
diff --git a/dd-java-agent/instrumentation/karate/karate-2.0/src/test/java/org/example/TestFailedThenSucceedKarate.java b/dd-java-agent/instrumentation/karate/karate-2.0/src/test/java/org/example/TestFailedThenSucceedKarate.java
new file mode 100644
index 00000000000..9ce500bd482
--- /dev/null
+++ b/dd-java-agent/instrumentation/karate/karate-2.0/src/test/java/org/example/TestFailedThenSucceedKarate.java
@@ -0,0 +1,17 @@
+package org.example;
+
+import static org.junit.jupiter.api.Assertions.assertEquals;
+
+import com.intuit.karate.Results;
+import com.intuit.karate.Runner;
+import org.junit.jupiter.api.Test;
+
+public class TestFailedThenSucceedKarate {
+
+ @Test
+ public void test() {
+ Results results =
+ Runner.path("classpath:org/example/test_failed_then_succeed.feature").parallel(1);
+ assertEquals(0, results.getFailCount(), results.getErrorMessages());
+ }
+}
diff --git a/dd-java-agent/instrumentation/karate/karate-2.0/src/test/java/org/example/TestParameterizedKarate.java b/dd-java-agent/instrumentation/karate/karate-2.0/src/test/java/org/example/TestParameterizedKarate.java
new file mode 100644
index 00000000000..3d849359504
--- /dev/null
+++ b/dd-java-agent/instrumentation/karate/karate-2.0/src/test/java/org/example/TestParameterizedKarate.java
@@ -0,0 +1,16 @@
+package org.example;
+
+import static org.junit.jupiter.api.Assertions.assertEquals;
+
+import com.intuit.karate.Results;
+import com.intuit.karate.Runner;
+import org.junit.jupiter.api.Test;
+
+public class TestParameterizedKarate {
+
+ @Test
+ public void test() {
+ Results results = Runner.path("classpath:org/example/test_parameterized.feature").parallel(1);
+ assertEquals(0, results.getFailCount(), results.getErrorMessages());
+ }
+}
diff --git a/dd-java-agent/instrumentation/karate/karate-2.0/src/test/java/org/example/TestParameterizedMoreCasesKarate.java b/dd-java-agent/instrumentation/karate/karate-2.0/src/test/java/org/example/TestParameterizedMoreCasesKarate.java
new file mode 100644
index 00000000000..7a0a9af41a4
--- /dev/null
+++ b/dd-java-agent/instrumentation/karate/karate-2.0/src/test/java/org/example/TestParameterizedMoreCasesKarate.java
@@ -0,0 +1,17 @@
+package org.example;
+
+import static org.junit.jupiter.api.Assertions.assertEquals;
+
+import com.intuit.karate.Results;
+import com.intuit.karate.Runner;
+import org.junit.jupiter.api.Test;
+
+public class TestParameterizedMoreCasesKarate {
+
+ @Test
+ public void test() {
+ Results results =
+ Runner.path("classpath:org/example/test_parameterized_more_cases.feature").parallel(1);
+ assertEquals(0, results.getFailCount(), results.getErrorMessages());
+ }
+}
diff --git a/dd-java-agent/instrumentation/karate/karate-2.0/src/test/java/org/example/TestSkippedFeatureKarate.java b/dd-java-agent/instrumentation/karate/karate-2.0/src/test/java/org/example/TestSkippedFeatureKarate.java
new file mode 100644
index 00000000000..74d246bd98f
--- /dev/null
+++ b/dd-java-agent/instrumentation/karate/karate-2.0/src/test/java/org/example/TestSkippedFeatureKarate.java
@@ -0,0 +1,19 @@
+package org.example;
+
+import static org.junit.jupiter.api.Assertions.assertEquals;
+
+import com.intuit.karate.Results;
+import com.intuit.karate.Runner;
+import org.junit.jupiter.api.Test;
+
+public class TestSkippedFeatureKarate {
+
+ @Test
+ void testParallel() {
+ Results results =
+ Runner.path("classpath:org/example/test_succeed.feature")
+ .systemProperty("karate.options", "--tags ~@foo")
+ .parallel(1);
+ assertEquals(0, results.getFailCount(), results.getErrorMessages());
+ }
+}
diff --git a/dd-java-agent/instrumentation/karate/karate-2.0/src/test/java/org/example/TestSucceedKarate.java b/dd-java-agent/instrumentation/karate/karate-2.0/src/test/java/org/example/TestSucceedKarate.java
new file mode 100644
index 00000000000..3c3ae82182d
--- /dev/null
+++ b/dd-java-agent/instrumentation/karate/karate-2.0/src/test/java/org/example/TestSucceedKarate.java
@@ -0,0 +1,16 @@
+package org.example;
+
+import static org.junit.jupiter.api.Assertions.assertEquals;
+
+import com.intuit.karate.Results;
+import com.intuit.karate.Runner;
+import org.junit.jupiter.api.Test;
+
+public class TestSucceedKarate {
+
+ @Test
+ public void test() {
+ Results results = Runner.path("classpath:org/example/test_succeed.feature").parallel(1);
+ assertEquals(0, results.getFailCount(), results.getErrorMessages());
+ }
+}
diff --git a/dd-java-agent/instrumentation/karate/karate-2.0/src/test/java/org/example/TestSucceedKarateSkipEfd.java b/dd-java-agent/instrumentation/karate/karate-2.0/src/test/java/org/example/TestSucceedKarateSkipEfd.java
new file mode 100644
index 00000000000..c13e94725c9
--- /dev/null
+++ b/dd-java-agent/instrumentation/karate/karate-2.0/src/test/java/org/example/TestSucceedKarateSkipEfd.java
@@ -0,0 +1,17 @@
+package org.example;
+
+import static org.junit.jupiter.api.Assertions.assertEquals;
+
+import com.intuit.karate.Results;
+import com.intuit.karate.Runner;
+import org.junit.jupiter.api.Test;
+
+public class TestSucceedKarateSkipEfd {
+
+ @Test
+ public void test() {
+ Results results =
+ Runner.path("classpath:org/example/test_succeed_skip_efd.feature").parallel(1);
+ assertEquals(0, results.getFailCount(), results.getErrorMessages());
+ }
+}
diff --git a/dd-java-agent/instrumentation/karate/karate-2.0/src/test/java/org/example/TestSucceedKarateSlow.java b/dd-java-agent/instrumentation/karate/karate-2.0/src/test/java/org/example/TestSucceedKarateSlow.java
new file mode 100644
index 00000000000..b5b41c94657
--- /dev/null
+++ b/dd-java-agent/instrumentation/karate/karate-2.0/src/test/java/org/example/TestSucceedKarateSlow.java
@@ -0,0 +1,16 @@
+package org.example;
+
+import static org.junit.jupiter.api.Assertions.assertEquals;
+
+import com.intuit.karate.Results;
+import com.intuit.karate.Runner;
+import org.junit.jupiter.api.Test;
+
+public class TestSucceedKarateSlow {
+
+ @Test
+ public void test() {
+ Results results = Runner.path("classpath:org/example/test_succeed_slow.feature").parallel(1);
+ assertEquals(0, results.getFailCount(), results.getErrorMessages());
+ }
+}
diff --git a/dd-java-agent/instrumentation/karate/karate-2.0/src/test/java/org/example/TestSucceedOneCaseKarate.java b/dd-java-agent/instrumentation/karate/karate-2.0/src/test/java/org/example/TestSucceedOneCaseKarate.java
new file mode 100644
index 00000000000..2158105d49e
--- /dev/null
+++ b/dd-java-agent/instrumentation/karate/karate-2.0/src/test/java/org/example/TestSucceedOneCaseKarate.java
@@ -0,0 +1,17 @@
+package org.example;
+
+import static org.junit.jupiter.api.Assertions.assertEquals;
+
+import com.intuit.karate.Results;
+import com.intuit.karate.Runner;
+import org.junit.jupiter.api.Test;
+
+public class TestSucceedOneCaseKarate {
+
+ @Test
+ public void test() {
+ Results results =
+ Runner.path("classpath:org/example/test_succeed_one_case.feature").parallel(1);
+ assertEquals(0, results.getFailCount(), results.getErrorMessages());
+ }
+}
diff --git a/dd-java-agent/instrumentation/karate/karate-2.0/src/test/java/org/example/TestSucceedParallelKarate.java b/dd-java-agent/instrumentation/karate/karate-2.0/src/test/java/org/example/TestSucceedParallelKarate.java
new file mode 100644
index 00000000000..f180ca3ba02
--- /dev/null
+++ b/dd-java-agent/instrumentation/karate/karate-2.0/src/test/java/org/example/TestSucceedParallelKarate.java
@@ -0,0 +1,16 @@
+package org.example;
+
+import static org.junit.jupiter.api.Assertions.assertEquals;
+
+import com.intuit.karate.Results;
+import com.intuit.karate.Runner;
+import org.junit.jupiter.api.Test;
+
+public class TestSucceedParallelKarate {
+
+ @Test
+ public void testSucceed() {
+ Results results = Runner.path("classpath:org/example/test_succeed.feature").parallel(4);
+ assertEquals(0, results.getFailCount(), results.getErrorMessages());
+ }
+}
diff --git a/dd-java-agent/instrumentation/karate/karate-2.0/src/test/java/org/example/TestUnskippableKarate.java b/dd-java-agent/instrumentation/karate/karate-2.0/src/test/java/org/example/TestUnskippableKarate.java
new file mode 100644
index 00000000000..fd82915bc7b
--- /dev/null
+++ b/dd-java-agent/instrumentation/karate/karate-2.0/src/test/java/org/example/TestUnskippableKarate.java
@@ -0,0 +1,16 @@
+package org.example;
+
+import static org.junit.jupiter.api.Assertions.assertEquals;
+
+import com.intuit.karate.Results;
+import com.intuit.karate.Runner;
+import org.junit.jupiter.api.Test;
+
+public class TestUnskippableKarate {
+
+ @Test
+ public void test() {
+ Results results = Runner.path("classpath:org/example/test_unskippable.feature").parallel(1);
+ assertEquals(0, results.getFailCount(), results.getErrorMessages());
+ }
+}
diff --git a/dd-java-agent/instrumentation/karate/karate-2.0/src/test/java/org/example/TestWithSetupKarate.java b/dd-java-agent/instrumentation/karate/karate-2.0/src/test/java/org/example/TestWithSetupKarate.java
new file mode 100644
index 00000000000..86a5d703884
--- /dev/null
+++ b/dd-java-agent/instrumentation/karate/karate-2.0/src/test/java/org/example/TestWithSetupKarate.java
@@ -0,0 +1,16 @@
+package org.example;
+
+import static org.junit.jupiter.api.Assertions.assertEquals;
+
+import com.intuit.karate.Results;
+import com.intuit.karate.Runner;
+import org.junit.jupiter.api.Test;
+
+public class TestWithSetupKarate {
+
+ @Test
+ public void test() {
+ Results results = Runner.path("classpath:org/example/test_with_setup.feature").parallel(1);
+ assertEquals(0, results.getFailCount(), results.getErrorMessages());
+ }
+}
diff --git a/dd-java-agent/instrumentation/karate/karate-2.0/src/test/java/org/example/karate-config.js b/dd-java-agent/instrumentation/karate/karate-2.0/src/test/java/org/example/karate-config.js
new file mode 100644
index 00000000000..7e70e8ac51b
--- /dev/null
+++ b/dd-java-agent/instrumentation/karate/karate-2.0/src/test/java/org/example/karate-config.js
@@ -0,0 +1,2 @@
+function fn() {
+}
diff --git a/dd-java-agent/instrumentation/karate/karate-2.0/src/test/java/org/example/test_failed.feature b/dd-java-agent/instrumentation/karate/karate-2.0/src/test/java/org/example/test_failed.feature
new file mode 100644
index 00000000000..534144ae715
--- /dev/null
+++ b/dd-java-agent/instrumentation/karate/karate-2.0/src/test/java/org/example/test_failed.feature
@@ -0,0 +1,7 @@
+Feature: test failed
+
+ Scenario: first scenario
+ * print 'first'
+
+ Scenario: second scenario
+ * assert false
diff --git a/dd-java-agent/instrumentation/karate/karate-2.0/src/test/java/org/example/test_failed_parameterized.feature b/dd-java-agent/instrumentation/karate/karate-2.0/src/test/java/org/example/test_failed_parameterized.feature
new file mode 100644
index 00000000000..5728f8d7df2
--- /dev/null
+++ b/dd-java-agent/instrumentation/karate/karate-2.0/src/test/java/org/example/test_failed_parameterized.feature
@@ -0,0 +1,13 @@
+Feature: test parameterized
+
+ Scenario Outline: first scenario as an outline
+ (to prevent a particular bug from re-appearing)
+
+ Given def p =
+ When def response = p + p
+ Then match response == value
+
+ Examples:
+ | param | value |
+ | 'a' | aaa |
+ | 'b' | bb |
diff --git a/dd-java-agent/instrumentation/karate/karate-2.0/src/test/java/org/example/test_failed_then_succeed.feature b/dd-java-agent/instrumentation/karate/karate-2.0/src/test/java/org/example/test_failed_then_succeed.feature
new file mode 100644
index 00000000000..31fe2d52422
--- /dev/null
+++ b/dd-java-agent/instrumentation/karate/karate-2.0/src/test/java/org/example/test_failed_then_succeed.feature
@@ -0,0 +1,4 @@
+Feature: test failed
+
+ Scenario: flaky scenario
+ * Java.type('org.example.Flaky').flake()
diff --git a/dd-java-agent/instrumentation/karate/karate-2.0/src/test/java/org/example/test_parameterized.feature b/dd-java-agent/instrumentation/karate/karate-2.0/src/test/java/org/example/test_parameterized.feature
new file mode 100644
index 00000000000..62beb7ae198
--- /dev/null
+++ b/dd-java-agent/instrumentation/karate/karate-2.0/src/test/java/org/example/test_parameterized.feature
@@ -0,0 +1,13 @@
+Feature: test parameterized
+
+ Scenario Outline: first scenario as an outline
+ (to prevent a particular bug from re-appearing)
+
+ Given def p =
+ When def response = p + p
+ Then match response == value
+
+ Examples:
+ | param | value |
+ | 'a' | aa |
+ | 'b' | bb |
diff --git a/dd-java-agent/instrumentation/karate/karate-2.0/src/test/java/org/example/test_parameterized_more_cases.feature b/dd-java-agent/instrumentation/karate/karate-2.0/src/test/java/org/example/test_parameterized_more_cases.feature
new file mode 100644
index 00000000000..9ed0d225025
--- /dev/null
+++ b/dd-java-agent/instrumentation/karate/karate-2.0/src/test/java/org/example/test_parameterized_more_cases.feature
@@ -0,0 +1,14 @@
+Feature: test parameterized
+
+ Scenario Outline: first scenario as an outline
+ (to prevent a particular bug from re-appearing)
+
+ Given def p =
+ When def response = p + p
+ Then match response == value
+
+ Examples:
+ | param | value |
+ | 'a' | aa |
+ | 'b' | bb |
+ | 'c' | cc |
diff --git a/dd-java-agent/instrumentation/karate/karate-2.0/src/test/java/org/example/test_succeed.feature b/dd-java-agent/instrumentation/karate/karate-2.0/src/test/java/org/example/test_succeed.feature
new file mode 100644
index 00000000000..a82428ed0c6
--- /dev/null
+++ b/dd-java-agent/instrumentation/karate/karate-2.0/src/test/java/org/example/test_succeed.feature
@@ -0,0 +1,9 @@
+@foo
+Feature: test succeed
+
+ @bar
+ Scenario: first scenario
+ * print 'first'
+
+ Scenario: second scenario
+ * print 'second'
diff --git a/dd-java-agent/instrumentation/karate/karate-2.0/src/test/java/org/example/test_succeed_one_case.feature b/dd-java-agent/instrumentation/karate/karate-2.0/src/test/java/org/example/test_succeed_one_case.feature
new file mode 100644
index 00000000000..162d2af3b42
--- /dev/null
+++ b/dd-java-agent/instrumentation/karate/karate-2.0/src/test/java/org/example/test_succeed_one_case.feature
@@ -0,0 +1,6 @@
+@foo
+Feature: test succeed
+
+ @bar
+ Scenario: first scenario
+ * print 'first'
diff --git a/dd-java-agent/instrumentation/karate/karate-2.0/src/test/java/org/example/test_succeed_skip_efd.feature b/dd-java-agent/instrumentation/karate/karate-2.0/src/test/java/org/example/test_succeed_skip_efd.feature
new file mode 100644
index 00000000000..1b2325b1880
--- /dev/null
+++ b/dd-java-agent/instrumentation/karate/karate-2.0/src/test/java/org/example/test_succeed_skip_efd.feature
@@ -0,0 +1,6 @@
+@foo
+Feature: test succeed
+
+ @datadog_efd_disable
+ Scenario: first scenario
+ * print 'first'
diff --git a/dd-java-agent/instrumentation/karate/karate-2.0/src/test/java/org/example/test_succeed_slow.feature b/dd-java-agent/instrumentation/karate/karate-2.0/src/test/java/org/example/test_succeed_slow.feature
new file mode 100644
index 00000000000..1e32a10962e
--- /dev/null
+++ b/dd-java-agent/instrumentation/karate/karate-2.0/src/test/java/org/example/test_succeed_slow.feature
@@ -0,0 +1,6 @@
+@foo
+Feature: test succeed
+
+ @bar
+ Scenario: first scenario
+ * Java.type('org.example.Slow').stall()
diff --git a/dd-java-agent/instrumentation/karate/karate-2.0/src/test/java/org/example/test_unskippable.feature b/dd-java-agent/instrumentation/karate/karate-2.0/src/test/java/org/example/test_unskippable.feature
new file mode 100644
index 00000000000..25142d2a161
--- /dev/null
+++ b/dd-java-agent/instrumentation/karate/karate-2.0/src/test/java/org/example/test_unskippable.feature
@@ -0,0 +1,10 @@
+@foo
+Feature: test unskippable
+
+ @bar
+ @datadog_itr_unskippable
+ Scenario: first scenario
+ * print 'first'
+
+ Scenario: second scenario
+ * print 'second'
diff --git a/dd-java-agent/instrumentation/karate/karate-2.0/src/test/java/org/example/test_with_setup.feature b/dd-java-agent/instrumentation/karate/karate-2.0/src/test/java/org/example/test_with_setup.feature
new file mode 100644
index 00000000000..a2e7535b031
--- /dev/null
+++ b/dd-java-agent/instrumentation/karate/karate-2.0/src/test/java/org/example/test_with_setup.feature
@@ -0,0 +1,20 @@
+Feature: test with setup
+
+ @setup
+ Scenario: setup scenario
+ * def data =
+ """
+ [
+ {foo: "bar"}
+ ]
+ """
+
+ Scenario Outline: first scenario
+ * print foo
+ Examples:
+ | karate.setup().data |
+
+ Scenario Outline: second scenario
+ * print foo
+ Examples:
+ | karate.setupOnce().data |
diff --git a/dd-java-agent/instrumentation/karate/karate-2.0/src/test/resources/test-attempt-to-fix-disabled-failed/coverages.ftl b/dd-java-agent/instrumentation/karate/karate-2.0/src/test/resources/test-attempt-to-fix-disabled-failed/coverages.ftl
new file mode 100644
index 00000000000..8878e547a79
--- /dev/null
+++ b/dd-java-agent/instrumentation/karate/karate-2.0/src/test/resources/test-attempt-to-fix-disabled-failed/coverages.ftl
@@ -0,0 +1 @@
+[ ]
\ No newline at end of file
diff --git a/dd-java-agent/instrumentation/karate/karate-2.0/src/test/resources/test-attempt-to-fix-disabled-failed/events.ftl b/dd-java-agent/instrumentation/karate/karate-2.0/src/test/resources/test-attempt-to-fix-disabled-failed/events.ftl
new file mode 100644
index 00000000000..16339cefc58
--- /dev/null
+++ b/dd-java-agent/instrumentation/karate/karate-2.0/src/test/resources/test-attempt-to-fix-disabled-failed/events.ftl
@@ -0,0 +1,244 @@
+[ {
+ "content" : {
+ "duration" : ${content_duration},
+ "error" : 0,
+ "meta" : {
+ "component" : "karate",
+ "env" : "none",
+ "library_version" : ${content_meta_library_version},
+ "step.name" : "* 'first'"
+ },
+ "metrics" : {
+ "step.endLine" : 4,
+ "step.startLine" : 4
+ },
+ "name" : "karate.step",
+ "parent_id" : ${content_parent_id},
+ "resource" : "* 'first'",
+ "service" : "worker.org.gradle.process.internal.worker.gradleworkermain",
+ "span_id" : ${content_span_id},
+ "start" : ${content_start},
+ "trace_id" : ${content_trace_id}
+ },
+ "type" : "span",
+ "version" : 1
+}, {
+ "content" : {
+ "duration" : ${content_duration_2},
+ "error" : 0,
+ "meta" : {
+ "component" : "karate",
+ "env" : "none",
+ "library_version" : ${content_meta_library_version},
+ "step.name" : "* false"
+ },
+ "metrics" : {
+ "step.endLine" : 7,
+ "step.startLine" : 7
+ },
+ "name" : "karate.step",
+ "parent_id" : ${content_parent_id_2},
+ "resource" : "* false",
+ "service" : "worker.org.gradle.process.internal.worker.gradleworkermain",
+ "span_id" : ${content_span_id_2},
+ "start" : ${content_start_2},
+ "trace_id" : ${content_trace_id_2}
+ },
+ "type" : "span",
+ "version" : 1
+}, {
+ "content" : {
+ "duration" : ${content_duration_3},
+ "error" : 1,
+ "meta" : {
+ "_dd.p.tid" : ${content_meta__dd_p_tid},
+ "component" : "karate",
+ "dummy_ci_tag" : "dummy_ci_tag_value",
+ "env" : "none",
+ "error.message" : ${content_meta_error_message},
+ "error.stack" : ${content_meta_error_stack},
+ "error.type" : "java.lang.AssertionError",
+ "library_version" : ${content_meta_library_version},
+ "span.kind" : "test_suite_end",
+ "test.framework" : "karate",
+ "test.framework_version" : ${content_meta_test_framework_version},
+ "test.module" : "karate-2.0",
+ "test.status" : "fail",
+ "test.suite" : "[org/example/test_failed] test failed",
+ "test.type" : "test",
+ "test_session.name" : "session-name"
+ },
+ "metrics" : {
+ "_dd.host.vcpu_count" : ${content_metrics__dd_host_vcpu_count}
+ },
+ "name" : "karate.test_suite",
+ "resource" : "[org/example/test_failed] test failed",
+ "service" : "worker.org.gradle.process.internal.worker.gradleworkermain",
+ "start" : ${content_start_3},
+ "test_module_id" : ${content_test_module_id},
+ "test_session_id" : ${content_test_session_id},
+ "test_suite_id" : ${content_test_suite_id}
+ },
+ "type" : "test_suite_end",
+ "version" : 1
+}, {
+ "content" : {
+ "duration" : ${content_duration_4},
+ "error" : 0,
+ "meta" : {
+ "_dd.profiling.ctx" : "test",
+ "_dd.tracer_host" : ${content_meta__dd_tracer_host},
+ "component" : "karate",
+ "dummy_ci_tag" : "dummy_ci_tag_value",
+ "env" : "none",
+ "language" : "jvm",
+ "library_version" : ${content_meta_library_version},
+ "runtime-id" : ${content_meta_runtime_id},
+ "span.kind" : "test",
+ "test.final_status" : "pass",
+ "test.framework" : "karate",
+ "test.framework_version" : ${content_meta_test_framework_version},
+ "test.module" : "karate-2.0",
+ "test.name" : "first scenario",
+ "test.status" : "pass",
+ "test.suite" : "[org/example/test_failed] test failed",
+ "test.type" : "test",
+ "test_session.name" : "session-name"
+ },
+ "metrics" : {
+ "_dd.host.vcpu_count" : ${content_metrics__dd_host_vcpu_count_2},
+ "_dd.profiling.enabled" : 0,
+ "_dd.trace_span_attribute_schema" : 0,
+ "process_id" : ${content_metrics_process_id}
+ },
+ "name" : "karate.test",
+ "parent_id" : ${content_parent_id_3},
+ "resource" : "[org/example/test_failed] test failed.first scenario",
+ "service" : "worker.org.gradle.process.internal.worker.gradleworkermain",
+ "span_id" : ${content_parent_id},
+ "start" : ${content_start_4},
+ "test_module_id" : ${content_test_module_id},
+ "test_session_id" : ${content_test_session_id},
+ "test_suite_id" : ${content_test_suite_id},
+ "trace_id" : ${content_trace_id}
+ },
+ "type" : "test",
+ "version" : 2
+}, {
+ "content" : {
+ "duration" : ${content_duration_5},
+ "error" : 1,
+ "meta" : {
+ "_dd.profiling.ctx" : "test",
+ "_dd.tracer_host" : ${content_meta__dd_tracer_host},
+ "component" : "karate",
+ "dummy_ci_tag" : "dummy_ci_tag_value",
+ "env" : "none",
+ "error.message" : ${content_meta_error_message},
+ "error.stack" : ${content_meta_error_stack_2},
+ "error.type" : "java.lang.AssertionError",
+ "language" : "jvm",
+ "library_version" : ${content_meta_library_version},
+ "runtime-id" : ${content_meta_runtime_id},
+ "span.kind" : "test",
+ "test.final_status" : "fail",
+ "test.framework" : "karate",
+ "test.framework_version" : ${content_meta_test_framework_version},
+ "test.module" : "karate-2.0",
+ "test.name" : "second scenario",
+ "test.status" : "fail",
+ "test.suite" : "[org/example/test_failed] test failed",
+ "test.test_management.attempt_to_fix_passed" : "false",
+ "test.test_management.is_attempt_to_fix" : "true",
+ "test.test_management.is_test_disabled" : "true",
+ "test.type" : "test",
+ "test_session.name" : "session-name"
+ },
+ "metrics" : {
+ "_dd.host.vcpu_count" : ${content_metrics__dd_host_vcpu_count_3},
+ "_dd.profiling.enabled" : 0,
+ "_dd.trace_span_attribute_schema" : 0,
+ "process_id" : ${content_metrics_process_id}
+ },
+ "name" : "karate.test",
+ "parent_id" : ${content_parent_id_3},
+ "resource" : "[org/example/test_failed] test failed.second scenario",
+ "service" : "worker.org.gradle.process.internal.worker.gradleworkermain",
+ "span_id" : ${content_parent_id_2},
+ "start" : ${content_start_5},
+ "test_module_id" : ${content_test_module_id},
+ "test_session_id" : ${content_test_session_id},
+ "test_suite_id" : ${content_test_suite_id},
+ "trace_id" : ${content_trace_id_2}
+ },
+ "type" : "test",
+ "version" : 2
+}, {
+ "content" : {
+ "duration" : ${content_duration_6},
+ "error" : 0,
+ "meta" : {
+ "_dd.p.tid" : ${content_meta__dd_p_tid_2},
+ "_dd.profiling.ctx" : "test",
+ "_dd.tracer_host" : ${content_meta__dd_tracer_host},
+ "component" : "karate",
+ "dummy_ci_tag" : "dummy_ci_tag_value",
+ "env" : "none",
+ "language" : "jvm",
+ "library_version" : ${content_meta_library_version},
+ "runtime-id" : ${content_meta_runtime_id},
+ "span.kind" : "test_session_end",
+ "test.command" : "karate-2.0",
+ "test.framework" : "karate",
+ "test.framework_version" : ${content_meta_test_framework_version},
+ "test.status" : "fail",
+ "test.test_management.enabled" : "true",
+ "test.type" : "test",
+ "test_session.name" : "session-name"
+ },
+ "metrics" : {
+ "_dd.host.vcpu_count" : ${content_metrics__dd_host_vcpu_count_4},
+ "_dd.profiling.enabled" : 0,
+ "_dd.trace_span_attribute_schema" : 0,
+ "process_id" : ${content_metrics_process_id}
+ },
+ "name" : "karate.test_session",
+ "resource" : "karate-2.0",
+ "service" : "worker.org.gradle.process.internal.worker.gradleworkermain",
+ "start" : ${content_start_6},
+ "test_session_id" : ${content_test_session_id}
+ },
+ "type" : "test_session_end",
+ "version" : 1
+}, {
+ "content" : {
+ "duration" : ${content_duration_7},
+ "error" : 0,
+ "meta" : {
+ "_dd.p.tid" : ${content_meta__dd_p_tid_3},
+ "component" : "karate",
+ "dummy_ci_tag" : "dummy_ci_tag_value",
+ "env" : "none",
+ "library_version" : ${content_meta_library_version},
+ "span.kind" : "test_module_end",
+ "test.framework" : "karate",
+ "test.framework_version" : ${content_meta_test_framework_version},
+ "test.module" : "karate-2.0",
+ "test.status" : "fail",
+ "test.test_management.enabled" : "true",
+ "test.type" : "test",
+ "test_session.name" : "session-name"
+ },
+ "metrics" : {
+ "_dd.host.vcpu_count" : ${content_metrics__dd_host_vcpu_count_5}
+ },
+ "name" : "karate.test_module",
+ "resource" : "karate-2.0",
+ "service" : "worker.org.gradle.process.internal.worker.gradleworkermain",
+ "start" : ${content_start_7},
+ "test_module_id" : ${content_test_module_id},
+ "test_session_id" : ${content_test_session_id}
+ },
+ "type" : "test_module_end",
+ "version" : 1
+} ]
\ No newline at end of file
diff --git a/dd-java-agent/instrumentation/karate/karate-2.0/src/test/resources/test-attempt-to-fix-disabled-succeeded/coverages.ftl b/dd-java-agent/instrumentation/karate/karate-2.0/src/test/resources/test-attempt-to-fix-disabled-succeeded/coverages.ftl
new file mode 100644
index 00000000000..8878e547a79
--- /dev/null
+++ b/dd-java-agent/instrumentation/karate/karate-2.0/src/test/resources/test-attempt-to-fix-disabled-succeeded/coverages.ftl
@@ -0,0 +1 @@
+[ ]
\ No newline at end of file
diff --git a/dd-java-agent/instrumentation/karate/karate-2.0/src/test/resources/test-attempt-to-fix-disabled-succeeded/events.ftl b/dd-java-agent/instrumentation/karate/karate-2.0/src/test/resources/test-attempt-to-fix-disabled-succeeded/events.ftl
new file mode 100644
index 00000000000..92b7cb61f6a
--- /dev/null
+++ b/dd-java-agent/instrumentation/karate/karate-2.0/src/test/resources/test-attempt-to-fix-disabled-succeeded/events.ftl
@@ -0,0 +1,525 @@
+[ {
+ "content" : {
+ "duration" : ${content_duration},
+ "error" : 0,
+ "meta" : {
+ "component" : "karate",
+ "env" : "none",
+ "library_version" : ${content_meta_library_version},
+ "step.name" : "* 'first'"
+ },
+ "metrics" : {
+ "step.endLine" : 6,
+ "step.startLine" : 6
+ },
+ "name" : "karate.step",
+ "parent_id" : ${content_parent_id},
+ "resource" : "* 'first'",
+ "service" : "worker.org.gradle.process.internal.worker.gradleworkermain",
+ "span_id" : ${content_span_id},
+ "start" : ${content_start},
+ "trace_id" : ${content_trace_id}
+ },
+ "type" : "span",
+ "version" : 1
+}, {
+ "content" : {
+ "duration" : ${content_duration_2},
+ "error" : 0,
+ "meta" : {
+ "component" : "karate",
+ "env" : "none",
+ "library_version" : ${content_meta_library_version},
+ "step.name" : "* 'first'"
+ },
+ "metrics" : {
+ "step.endLine" : 6,
+ "step.startLine" : 6
+ },
+ "name" : "karate.step",
+ "parent_id" : ${content_parent_id_2},
+ "resource" : "* 'first'",
+ "service" : "worker.org.gradle.process.internal.worker.gradleworkermain",
+ "span_id" : ${content_span_id_2},
+ "start" : ${content_start_2},
+ "trace_id" : ${content_trace_id_2}
+ },
+ "type" : "span",
+ "version" : 1
+}, {
+ "content" : {
+ "duration" : ${content_duration_3},
+ "error" : 0,
+ "meta" : {
+ "component" : "karate",
+ "env" : "none",
+ "library_version" : ${content_meta_library_version},
+ "step.name" : "* 'first'"
+ },
+ "metrics" : {
+ "step.endLine" : 6,
+ "step.startLine" : 6
+ },
+ "name" : "karate.step",
+ "parent_id" : ${content_parent_id_3},
+ "resource" : "* 'first'",
+ "service" : "worker.org.gradle.process.internal.worker.gradleworkermain",
+ "span_id" : ${content_span_id_3},
+ "start" : ${content_start_3},
+ "trace_id" : ${content_trace_id_3}
+ },
+ "type" : "span",
+ "version" : 1
+}, {
+ "content" : {
+ "duration" : ${content_duration_4},
+ "error" : 0,
+ "meta" : {
+ "component" : "karate",
+ "env" : "none",
+ "library_version" : ${content_meta_library_version},
+ "step.name" : "* 'first'"
+ },
+ "metrics" : {
+ "step.endLine" : 6,
+ "step.startLine" : 6
+ },
+ "name" : "karate.step",
+ "parent_id" : ${content_parent_id_4},
+ "resource" : "* 'first'",
+ "service" : "worker.org.gradle.process.internal.worker.gradleworkermain",
+ "span_id" : ${content_span_id_4},
+ "start" : ${content_start_4},
+ "trace_id" : ${content_trace_id_4}
+ },
+ "type" : "span",
+ "version" : 1
+}, {
+ "content" : {
+ "duration" : ${content_duration_5},
+ "error" : 0,
+ "meta" : {
+ "component" : "karate",
+ "env" : "none",
+ "library_version" : ${content_meta_library_version},
+ "step.name" : "* 'first'"
+ },
+ "metrics" : {
+ "step.endLine" : 6,
+ "step.startLine" : 6
+ },
+ "name" : "karate.step",
+ "parent_id" : ${content_parent_id_5},
+ "resource" : "* 'first'",
+ "service" : "worker.org.gradle.process.internal.worker.gradleworkermain",
+ "span_id" : ${content_span_id_5},
+ "start" : ${content_start_5},
+ "trace_id" : ${content_trace_id_5}
+ },
+ "type" : "span",
+ "version" : 1
+}, {
+ "content" : {
+ "duration" : ${content_duration_6},
+ "error" : 0,
+ "meta" : {
+ "component" : "karate",
+ "env" : "none",
+ "library_version" : ${content_meta_library_version},
+ "step.name" : "* 'second'"
+ },
+ "metrics" : {
+ "step.endLine" : 9,
+ "step.startLine" : 9
+ },
+ "name" : "karate.step",
+ "parent_id" : ${content_parent_id_6},
+ "resource" : "* 'second'",
+ "service" : "worker.org.gradle.process.internal.worker.gradleworkermain",
+ "span_id" : ${content_span_id_6},
+ "start" : ${content_start_6},
+ "trace_id" : ${content_trace_id_6}
+ },
+ "type" : "span",
+ "version" : 1
+}, {
+ "content" : {
+ "duration" : ${content_duration_7},
+ "error" : 0,
+ "meta" : {
+ "_dd.p.tid" : ${content_meta__dd_p_tid},
+ "component" : "karate",
+ "dummy_ci_tag" : "dummy_ci_tag_value",
+ "env" : "none",
+ "library_version" : ${content_meta_library_version},
+ "span.kind" : "test_suite_end",
+ "test.framework" : "karate",
+ "test.framework_version" : ${content_meta_test_framework_version},
+ "test.module" : "karate-2.0",
+ "test.status" : "pass",
+ "test.suite" : "[org/example/test_succeed] test succeed",
+ "test.traits" : "{\"category\":[\"foo\"]}",
+ "test.type" : "test",
+ "test_session.name" : "session-name"
+ },
+ "metrics" : {
+ "_dd.host.vcpu_count" : ${content_metrics__dd_host_vcpu_count}
+ },
+ "name" : "karate.test_suite",
+ "resource" : "[org/example/test_succeed] test succeed",
+ "service" : "worker.org.gradle.process.internal.worker.gradleworkermain",
+ "start" : ${content_start_7},
+ "test_module_id" : ${content_test_module_id},
+ "test_session_id" : ${content_test_session_id},
+ "test_suite_id" : ${content_test_suite_id}
+ },
+ "type" : "test_suite_end",
+ "version" : 1
+}, {
+ "content" : {
+ "duration" : ${content_duration_8},
+ "error" : 0,
+ "meta" : {
+ "_dd.profiling.ctx" : "test",
+ "_dd.tracer_host" : ${content_meta__dd_tracer_host},
+ "component" : "karate",
+ "dummy_ci_tag" : "dummy_ci_tag_value",
+ "env" : "none",
+ "language" : "jvm",
+ "library_version" : ${content_meta_library_version},
+ "runtime-id" : ${content_meta_runtime_id},
+ "span.kind" : "test",
+ "test.framework" : "karate",
+ "test.framework_version" : ${content_meta_test_framework_version},
+ "test.module" : "karate-2.0",
+ "test.name" : "first scenario",
+ "test.status" : "pass",
+ "test.suite" : "[org/example/test_succeed] test succeed",
+ "test.test_management.is_attempt_to_fix" : "true",
+ "test.test_management.is_test_disabled" : "true",
+ "test.traits" : "{\"category\":[\"foo\",\"bar\"]}",
+ "test.type" : "test",
+ "test_session.name" : "session-name"
+ },
+ "metrics" : {
+ "_dd.host.vcpu_count" : ${content_metrics__dd_host_vcpu_count_2},
+ "_dd.profiling.enabled" : 0,
+ "_dd.trace_span_attribute_schema" : 0,
+ "process_id" : ${content_metrics_process_id}
+ },
+ "name" : "karate.test",
+ "parent_id" : ${content_parent_id_7},
+ "resource" : "[org/example/test_succeed] test succeed.first scenario",
+ "service" : "worker.org.gradle.process.internal.worker.gradleworkermain",
+ "span_id" : ${content_parent_id},
+ "start" : ${content_start_8},
+ "test_module_id" : ${content_test_module_id},
+ "test_session_id" : ${content_test_session_id},
+ "test_suite_id" : ${content_test_suite_id},
+ "trace_id" : ${content_trace_id}
+ },
+ "type" : "test",
+ "version" : 2
+}, {
+ "content" : {
+ "duration" : ${content_duration_9},
+ "error" : 0,
+ "meta" : {
+ "_dd.profiling.ctx" : "test",
+ "_dd.tracer_host" : ${content_meta__dd_tracer_host},
+ "component" : "karate",
+ "dummy_ci_tag" : "dummy_ci_tag_value",
+ "env" : "none",
+ "language" : "jvm",
+ "library_version" : ${content_meta_library_version},
+ "runtime-id" : ${content_meta_runtime_id},
+ "span.kind" : "test",
+ "test.framework" : "karate",
+ "test.framework_version" : ${content_meta_test_framework_version},
+ "test.is_retry" : "true",
+ "test.module" : "karate-2.0",
+ "test.name" : "first scenario",
+ "test.retry_reason" : "attempt_to_fix",
+ "test.status" : "pass",
+ "test.suite" : "[org/example/test_succeed] test succeed",
+ "test.test_management.is_attempt_to_fix" : "true",
+ "test.test_management.is_test_disabled" : "true",
+ "test.traits" : "{\"category\":[\"foo\",\"bar\"]}",
+ "test.type" : "test",
+ "test_session.name" : "session-name"
+ },
+ "metrics" : {
+ "_dd.host.vcpu_count" : ${content_metrics__dd_host_vcpu_count_3},
+ "_dd.profiling.enabled" : 0,
+ "_dd.trace_span_attribute_schema" : 0,
+ "process_id" : ${content_metrics_process_id}
+ },
+ "name" : "karate.test",
+ "parent_id" : ${content_parent_id_7},
+ "resource" : "[org/example/test_succeed] test succeed.first scenario",
+ "service" : "worker.org.gradle.process.internal.worker.gradleworkermain",
+ "span_id" : ${content_parent_id_2},
+ "start" : ${content_start_9},
+ "test_module_id" : ${content_test_module_id},
+ "test_session_id" : ${content_test_session_id},
+ "test_suite_id" : ${content_test_suite_id},
+ "trace_id" : ${content_trace_id_2}
+ },
+ "type" : "test",
+ "version" : 2
+}, {
+ "content" : {
+ "duration" : ${content_duration_10},
+ "error" : 0,
+ "meta" : {
+ "_dd.profiling.ctx" : "test",
+ "_dd.tracer_host" : ${content_meta__dd_tracer_host},
+ "component" : "karate",
+ "dummy_ci_tag" : "dummy_ci_tag_value",
+ "env" : "none",
+ "language" : "jvm",
+ "library_version" : ${content_meta_library_version},
+ "runtime-id" : ${content_meta_runtime_id},
+ "span.kind" : "test",
+ "test.framework" : "karate",
+ "test.framework_version" : ${content_meta_test_framework_version},
+ "test.is_retry" : "true",
+ "test.module" : "karate-2.0",
+ "test.name" : "first scenario",
+ "test.retry_reason" : "attempt_to_fix",
+ "test.status" : "pass",
+ "test.suite" : "[org/example/test_succeed] test succeed",
+ "test.test_management.is_attempt_to_fix" : "true",
+ "test.test_management.is_test_disabled" : "true",
+ "test.traits" : "{\"category\":[\"foo\",\"bar\"]}",
+ "test.type" : "test",
+ "test_session.name" : "session-name"
+ },
+ "metrics" : {
+ "_dd.host.vcpu_count" : ${content_metrics__dd_host_vcpu_count_4},
+ "_dd.profiling.enabled" : 0,
+ "_dd.trace_span_attribute_schema" : 0,
+ "process_id" : ${content_metrics_process_id}
+ },
+ "name" : "karate.test",
+ "parent_id" : ${content_parent_id_7},
+ "resource" : "[org/example/test_succeed] test succeed.first scenario",
+ "service" : "worker.org.gradle.process.internal.worker.gradleworkermain",
+ "span_id" : ${content_parent_id_3},
+ "start" : ${content_start_10},
+ "test_module_id" : ${content_test_module_id},
+ "test_session_id" : ${content_test_session_id},
+ "test_suite_id" : ${content_test_suite_id},
+ "trace_id" : ${content_trace_id_3}
+ },
+ "type" : "test",
+ "version" : 2
+}, {
+ "content" : {
+ "duration" : ${content_duration_11},
+ "error" : 0,
+ "meta" : {
+ "_dd.profiling.ctx" : "test",
+ "_dd.tracer_host" : ${content_meta__dd_tracer_host},
+ "component" : "karate",
+ "dummy_ci_tag" : "dummy_ci_tag_value",
+ "env" : "none",
+ "language" : "jvm",
+ "library_version" : ${content_meta_library_version},
+ "runtime-id" : ${content_meta_runtime_id},
+ "span.kind" : "test",
+ "test.framework" : "karate",
+ "test.framework_version" : ${content_meta_test_framework_version},
+ "test.is_retry" : "true",
+ "test.module" : "karate-2.0",
+ "test.name" : "first scenario",
+ "test.retry_reason" : "attempt_to_fix",
+ "test.status" : "pass",
+ "test.suite" : "[org/example/test_succeed] test succeed",
+ "test.test_management.is_attempt_to_fix" : "true",
+ "test.test_management.is_test_disabled" : "true",
+ "test.traits" : "{\"category\":[\"foo\",\"bar\"]}",
+ "test.type" : "test",
+ "test_session.name" : "session-name"
+ },
+ "metrics" : {
+ "_dd.host.vcpu_count" : ${content_metrics__dd_host_vcpu_count_5},
+ "_dd.profiling.enabled" : 0,
+ "_dd.trace_span_attribute_schema" : 0,
+ "process_id" : ${content_metrics_process_id}
+ },
+ "name" : "karate.test",
+ "parent_id" : ${content_parent_id_7},
+ "resource" : "[org/example/test_succeed] test succeed.first scenario",
+ "service" : "worker.org.gradle.process.internal.worker.gradleworkermain",
+ "span_id" : ${content_parent_id_4},
+ "start" : ${content_start_11},
+ "test_module_id" : ${content_test_module_id},
+ "test_session_id" : ${content_test_session_id},
+ "test_suite_id" : ${content_test_suite_id},
+ "trace_id" : ${content_trace_id_4}
+ },
+ "type" : "test",
+ "version" : 2
+}, {
+ "content" : {
+ "duration" : ${content_duration_12},
+ "error" : 0,
+ "meta" : {
+ "_dd.profiling.ctx" : "test",
+ "_dd.tracer_host" : ${content_meta__dd_tracer_host},
+ "component" : "karate",
+ "dummy_ci_tag" : "dummy_ci_tag_value",
+ "env" : "none",
+ "language" : "jvm",
+ "library_version" : ${content_meta_library_version},
+ "runtime-id" : ${content_meta_runtime_id},
+ "span.kind" : "test",
+ "test.final_status" : "pass",
+ "test.framework" : "karate",
+ "test.framework_version" : ${content_meta_test_framework_version},
+ "test.is_retry" : "true",
+ "test.module" : "karate-2.0",
+ "test.name" : "first scenario",
+ "test.retry_reason" : "attempt_to_fix",
+ "test.status" : "pass",
+ "test.suite" : "[org/example/test_succeed] test succeed",
+ "test.test_management.attempt_to_fix_passed" : "true",
+ "test.test_management.is_attempt_to_fix" : "true",
+ "test.test_management.is_test_disabled" : "true",
+ "test.traits" : "{\"category\":[\"foo\",\"bar\"]}",
+ "test.type" : "test",
+ "test_session.name" : "session-name"
+ },
+ "metrics" : {
+ "_dd.host.vcpu_count" : ${content_metrics__dd_host_vcpu_count_6},
+ "_dd.profiling.enabled" : 0,
+ "_dd.trace_span_attribute_schema" : 0,
+ "process_id" : ${content_metrics_process_id}
+ },
+ "name" : "karate.test",
+ "parent_id" : ${content_parent_id_7},
+ "resource" : "[org/example/test_succeed] test succeed.first scenario",
+ "service" : "worker.org.gradle.process.internal.worker.gradleworkermain",
+ "span_id" : ${content_parent_id_5},
+ "start" : ${content_start_12},
+ "test_module_id" : ${content_test_module_id},
+ "test_session_id" : ${content_test_session_id},
+ "test_suite_id" : ${content_test_suite_id},
+ "trace_id" : ${content_trace_id_5}
+ },
+ "type" : "test",
+ "version" : 2
+}, {
+ "content" : {
+ "duration" : ${content_duration_13},
+ "error" : 0,
+ "meta" : {
+ "_dd.profiling.ctx" : "test",
+ "_dd.tracer_host" : ${content_meta__dd_tracer_host},
+ "component" : "karate",
+ "dummy_ci_tag" : "dummy_ci_tag_value",
+ "env" : "none",
+ "language" : "jvm",
+ "library_version" : ${content_meta_library_version},
+ "runtime-id" : ${content_meta_runtime_id},
+ "span.kind" : "test",
+ "test.final_status" : "pass",
+ "test.framework" : "karate",
+ "test.framework_version" : ${content_meta_test_framework_version},
+ "test.module" : "karate-2.0",
+ "test.name" : "second scenario",
+ "test.status" : "pass",
+ "test.suite" : "[org/example/test_succeed] test succeed",
+ "test.traits" : "{\"category\":[\"foo\"]}",
+ "test.type" : "test",
+ "test_session.name" : "session-name"
+ },
+ "metrics" : {
+ "_dd.host.vcpu_count" : ${content_metrics__dd_host_vcpu_count_7},
+ "_dd.profiling.enabled" : 0,
+ "_dd.trace_span_attribute_schema" : 0,
+ "process_id" : ${content_metrics_process_id}
+ },
+ "name" : "karate.test",
+ "parent_id" : ${content_parent_id_7},
+ "resource" : "[org/example/test_succeed] test succeed.second scenario",
+ "service" : "worker.org.gradle.process.internal.worker.gradleworkermain",
+ "span_id" : ${content_parent_id_6},
+ "start" : ${content_start_13},
+ "test_module_id" : ${content_test_module_id},
+ "test_session_id" : ${content_test_session_id},
+ "test_suite_id" : ${content_test_suite_id},
+ "trace_id" : ${content_trace_id_6}
+ },
+ "type" : "test",
+ "version" : 2
+}, {
+ "content" : {
+ "duration" : ${content_duration_14},
+ "error" : 0,
+ "meta" : {
+ "_dd.p.tid" : ${content_meta__dd_p_tid_2},
+ "_dd.profiling.ctx" : "test",
+ "_dd.tracer_host" : ${content_meta__dd_tracer_host},
+ "component" : "karate",
+ "dummy_ci_tag" : "dummy_ci_tag_value",
+ "env" : "none",
+ "language" : "jvm",
+ "library_version" : ${content_meta_library_version},
+ "runtime-id" : ${content_meta_runtime_id},
+ "span.kind" : "test_session_end",
+ "test.command" : "karate-2.0",
+ "test.framework" : "karate",
+ "test.framework_version" : ${content_meta_test_framework_version},
+ "test.status" : "pass",
+ "test.test_management.enabled" : "true",
+ "test.type" : "test",
+ "test_session.name" : "session-name"
+ },
+ "metrics" : {
+ "_dd.host.vcpu_count" : ${content_metrics__dd_host_vcpu_count_8},
+ "_dd.profiling.enabled" : 0,
+ "_dd.trace_span_attribute_schema" : 0,
+ "process_id" : ${content_metrics_process_id}
+ },
+ "name" : "karate.test_session",
+ "resource" : "karate-2.0",
+ "service" : "worker.org.gradle.process.internal.worker.gradleworkermain",
+ "start" : ${content_start_14},
+ "test_session_id" : ${content_test_session_id}
+ },
+ "type" : "test_session_end",
+ "version" : 1
+}, {
+ "content" : {
+ "duration" : ${content_duration_15},
+ "error" : 0,
+ "meta" : {
+ "_dd.p.tid" : ${content_meta__dd_p_tid_3},
+ "component" : "karate",
+ "dummy_ci_tag" : "dummy_ci_tag_value",
+ "env" : "none",
+ "library_version" : ${content_meta_library_version},
+ "span.kind" : "test_module_end",
+ "test.framework" : "karate",
+ "test.framework_version" : ${content_meta_test_framework_version},
+ "test.module" : "karate-2.0",
+ "test.status" : "pass",
+ "test.test_management.enabled" : "true",
+ "test.type" : "test",
+ "test_session.name" : "session-name"
+ },
+ "metrics" : {
+ "_dd.host.vcpu_count" : ${content_metrics__dd_host_vcpu_count_9}
+ },
+ "name" : "karate.test_module",
+ "resource" : "karate-2.0",
+ "service" : "worker.org.gradle.process.internal.worker.gradleworkermain",
+ "start" : ${content_start_15},
+ "test_module_id" : ${content_test_module_id},
+ "test_session_id" : ${content_test_session_id}
+ },
+ "type" : "test_module_end",
+ "version" : 1
+} ]
\ No newline at end of file
diff --git a/dd-java-agent/instrumentation/karate/karate-2.0/src/test/resources/test-attempt-to-fix-failed/coverages.ftl b/dd-java-agent/instrumentation/karate/karate-2.0/src/test/resources/test-attempt-to-fix-failed/coverages.ftl
new file mode 100644
index 00000000000..8878e547a79
--- /dev/null
+++ b/dd-java-agent/instrumentation/karate/karate-2.0/src/test/resources/test-attempt-to-fix-failed/coverages.ftl
@@ -0,0 +1 @@
+[ ]
\ No newline at end of file
diff --git a/dd-java-agent/instrumentation/karate/karate-2.0/src/test/resources/test-attempt-to-fix-failed/events.ftl b/dd-java-agent/instrumentation/karate/karate-2.0/src/test/resources/test-attempt-to-fix-failed/events.ftl
new file mode 100644
index 00000000000..8283cde93b2
--- /dev/null
+++ b/dd-java-agent/instrumentation/karate/karate-2.0/src/test/resources/test-attempt-to-fix-failed/events.ftl
@@ -0,0 +1,243 @@
+[ {
+ "content" : {
+ "duration" : ${content_duration},
+ "error" : 0,
+ "meta" : {
+ "component" : "karate",
+ "env" : "none",
+ "library_version" : ${content_meta_library_version},
+ "step.name" : "* 'first'"
+ },
+ "metrics" : {
+ "step.endLine" : 4,
+ "step.startLine" : 4
+ },
+ "name" : "karate.step",
+ "parent_id" : ${content_parent_id},
+ "resource" : "* 'first'",
+ "service" : "worker.org.gradle.process.internal.worker.gradleworkermain",
+ "span_id" : ${content_span_id},
+ "start" : ${content_start},
+ "trace_id" : ${content_trace_id}
+ },
+ "type" : "span",
+ "version" : 1
+}, {
+ "content" : {
+ "duration" : ${content_duration_2},
+ "error" : 0,
+ "meta" : {
+ "component" : "karate",
+ "env" : "none",
+ "library_version" : ${content_meta_library_version},
+ "step.name" : "* false"
+ },
+ "metrics" : {
+ "step.endLine" : 7,
+ "step.startLine" : 7
+ },
+ "name" : "karate.step",
+ "parent_id" : ${content_parent_id_2},
+ "resource" : "* false",
+ "service" : "worker.org.gradle.process.internal.worker.gradleworkermain",
+ "span_id" : ${content_span_id_2},
+ "start" : ${content_start_2},
+ "trace_id" : ${content_trace_id_2}
+ },
+ "type" : "span",
+ "version" : 1
+}, {
+ "content" : {
+ "duration" : ${content_duration_3},
+ "error" : 1,
+ "meta" : {
+ "_dd.p.tid" : ${content_meta__dd_p_tid},
+ "component" : "karate",
+ "dummy_ci_tag" : "dummy_ci_tag_value",
+ "env" : "none",
+ "error.message" : ${content_meta_error_message},
+ "error.stack" : ${content_meta_error_stack},
+ "error.type" : "java.lang.AssertionError",
+ "library_version" : ${content_meta_library_version},
+ "span.kind" : "test_suite_end",
+ "test.framework" : "karate",
+ "test.framework_version" : ${content_meta_test_framework_version},
+ "test.module" : "karate-2.0",
+ "test.status" : "fail",
+ "test.suite" : "[org/example/test_failed] test failed",
+ "test.type" : "test",
+ "test_session.name" : "session-name"
+ },
+ "metrics" : {
+ "_dd.host.vcpu_count" : ${content_metrics__dd_host_vcpu_count}
+ },
+ "name" : "karate.test_suite",
+ "resource" : "[org/example/test_failed] test failed",
+ "service" : "worker.org.gradle.process.internal.worker.gradleworkermain",
+ "start" : ${content_start_3},
+ "test_module_id" : ${content_test_module_id},
+ "test_session_id" : ${content_test_session_id},
+ "test_suite_id" : ${content_test_suite_id}
+ },
+ "type" : "test_suite_end",
+ "version" : 1
+}, {
+ "content" : {
+ "duration" : ${content_duration_4},
+ "error" : 0,
+ "meta" : {
+ "_dd.profiling.ctx" : "test",
+ "_dd.tracer_host" : ${content_meta__dd_tracer_host},
+ "component" : "karate",
+ "dummy_ci_tag" : "dummy_ci_tag_value",
+ "env" : "none",
+ "language" : "jvm",
+ "library_version" : ${content_meta_library_version},
+ "runtime-id" : ${content_meta_runtime_id},
+ "span.kind" : "test",
+ "test.final_status" : "pass",
+ "test.framework" : "karate",
+ "test.framework_version" : ${content_meta_test_framework_version},
+ "test.module" : "karate-2.0",
+ "test.name" : "first scenario",
+ "test.status" : "pass",
+ "test.suite" : "[org/example/test_failed] test failed",
+ "test.type" : "test",
+ "test_session.name" : "session-name"
+ },
+ "metrics" : {
+ "_dd.host.vcpu_count" : ${content_metrics__dd_host_vcpu_count_2},
+ "_dd.profiling.enabled" : 0,
+ "_dd.trace_span_attribute_schema" : 0,
+ "process_id" : ${content_metrics_process_id}
+ },
+ "name" : "karate.test",
+ "parent_id" : ${content_parent_id_3},
+ "resource" : "[org/example/test_failed] test failed.first scenario",
+ "service" : "worker.org.gradle.process.internal.worker.gradleworkermain",
+ "span_id" : ${content_parent_id},
+ "start" : ${content_start_4},
+ "test_module_id" : ${content_test_module_id},
+ "test_session_id" : ${content_test_session_id},
+ "test_suite_id" : ${content_test_suite_id},
+ "trace_id" : ${content_trace_id}
+ },
+ "type" : "test",
+ "version" : 2
+}, {
+ "content" : {
+ "duration" : ${content_duration_5},
+ "error" : 1,
+ "meta" : {
+ "_dd.profiling.ctx" : "test",
+ "_dd.tracer_host" : ${content_meta__dd_tracer_host},
+ "component" : "karate",
+ "dummy_ci_tag" : "dummy_ci_tag_value",
+ "env" : "none",
+ "error.message" : ${content_meta_error_message},
+ "error.stack" : ${content_meta_error_stack_2},
+ "error.type" : "java.lang.AssertionError",
+ "language" : "jvm",
+ "library_version" : ${content_meta_library_version},
+ "runtime-id" : ${content_meta_runtime_id},
+ "span.kind" : "test",
+ "test.final_status" : "fail",
+ "test.framework" : "karate",
+ "test.framework_version" : ${content_meta_test_framework_version},
+ "test.module" : "karate-2.0",
+ "test.name" : "second scenario",
+ "test.status" : "fail",
+ "test.suite" : "[org/example/test_failed] test failed",
+ "test.test_management.attempt_to_fix_passed" : "false",
+ "test.test_management.is_attempt_to_fix" : "true",
+ "test.type" : "test",
+ "test_session.name" : "session-name"
+ },
+ "metrics" : {
+ "_dd.host.vcpu_count" : ${content_metrics__dd_host_vcpu_count_3},
+ "_dd.profiling.enabled" : 0,
+ "_dd.trace_span_attribute_schema" : 0,
+ "process_id" : ${content_metrics_process_id}
+ },
+ "name" : "karate.test",
+ "parent_id" : ${content_parent_id_3},
+ "resource" : "[org/example/test_failed] test failed.second scenario",
+ "service" : "worker.org.gradle.process.internal.worker.gradleworkermain",
+ "span_id" : ${content_parent_id_2},
+ "start" : ${content_start_5},
+ "test_module_id" : ${content_test_module_id},
+ "test_session_id" : ${content_test_session_id},
+ "test_suite_id" : ${content_test_suite_id},
+ "trace_id" : ${content_trace_id_2}
+ },
+ "type" : "test",
+ "version" : 2
+}, {
+ "content" : {
+ "duration" : ${content_duration_6},
+ "error" : 0,
+ "meta" : {
+ "_dd.p.tid" : ${content_meta__dd_p_tid_2},
+ "_dd.profiling.ctx" : "test",
+ "_dd.tracer_host" : ${content_meta__dd_tracer_host},
+ "component" : "karate",
+ "dummy_ci_tag" : "dummy_ci_tag_value",
+ "env" : "none",
+ "language" : "jvm",
+ "library_version" : ${content_meta_library_version},
+ "runtime-id" : ${content_meta_runtime_id},
+ "span.kind" : "test_session_end",
+ "test.command" : "karate-2.0",
+ "test.framework" : "karate",
+ "test.framework_version" : ${content_meta_test_framework_version},
+ "test.status" : "fail",
+ "test.test_management.enabled" : "true",
+ "test.type" : "test",
+ "test_session.name" : "session-name"
+ },
+ "metrics" : {
+ "_dd.host.vcpu_count" : ${content_metrics__dd_host_vcpu_count_4},
+ "_dd.profiling.enabled" : 0,
+ "_dd.trace_span_attribute_schema" : 0,
+ "process_id" : ${content_metrics_process_id}
+ },
+ "name" : "karate.test_session",
+ "resource" : "karate-2.0",
+ "service" : "worker.org.gradle.process.internal.worker.gradleworkermain",
+ "start" : ${content_start_6},
+ "test_session_id" : ${content_test_session_id}
+ },
+ "type" : "test_session_end",
+ "version" : 1
+}, {
+ "content" : {
+ "duration" : ${content_duration_7},
+ "error" : 0,
+ "meta" : {
+ "_dd.p.tid" : ${content_meta__dd_p_tid_3},
+ "component" : "karate",
+ "dummy_ci_tag" : "dummy_ci_tag_value",
+ "env" : "none",
+ "library_version" : ${content_meta_library_version},
+ "span.kind" : "test_module_end",
+ "test.framework" : "karate",
+ "test.framework_version" : ${content_meta_test_framework_version},
+ "test.module" : "karate-2.0",
+ "test.status" : "fail",
+ "test.test_management.enabled" : "true",
+ "test.type" : "test",
+ "test_session.name" : "session-name"
+ },
+ "metrics" : {
+ "_dd.host.vcpu_count" : ${content_metrics__dd_host_vcpu_count_5}
+ },
+ "name" : "karate.test_module",
+ "resource" : "karate-2.0",
+ "service" : "worker.org.gradle.process.internal.worker.gradleworkermain",
+ "start" : ${content_start_7},
+ "test_module_id" : ${content_test_module_id},
+ "test_session_id" : ${content_test_session_id}
+ },
+ "type" : "test_module_end",
+ "version" : 1
+} ]
\ No newline at end of file
diff --git a/dd-java-agent/instrumentation/karate/karate-2.0/src/test/resources/test-attempt-to-fix-quarantined-failed/coverages.ftl b/dd-java-agent/instrumentation/karate/karate-2.0/src/test/resources/test-attempt-to-fix-quarantined-failed/coverages.ftl
new file mode 100644
index 00000000000..8878e547a79
--- /dev/null
+++ b/dd-java-agent/instrumentation/karate/karate-2.0/src/test/resources/test-attempt-to-fix-quarantined-failed/coverages.ftl
@@ -0,0 +1 @@
+[ ]
\ No newline at end of file
diff --git a/dd-java-agent/instrumentation/karate/karate-2.0/src/test/resources/test-attempt-to-fix-quarantined-failed/events.ftl b/dd-java-agent/instrumentation/karate/karate-2.0/src/test/resources/test-attempt-to-fix-quarantined-failed/events.ftl
new file mode 100644
index 00000000000..a2e55ac59cc
--- /dev/null
+++ b/dd-java-agent/instrumentation/karate/karate-2.0/src/test/resources/test-attempt-to-fix-quarantined-failed/events.ftl
@@ -0,0 +1,244 @@
+[ {
+ "content" : {
+ "duration" : ${content_duration},
+ "error" : 0,
+ "meta" : {
+ "component" : "karate",
+ "env" : "none",
+ "library_version" : ${content_meta_library_version},
+ "step.name" : "* 'first'"
+ },
+ "metrics" : {
+ "step.endLine" : 4,
+ "step.startLine" : 4
+ },
+ "name" : "karate.step",
+ "parent_id" : ${content_parent_id},
+ "resource" : "* 'first'",
+ "service" : "worker.org.gradle.process.internal.worker.gradleworkermain",
+ "span_id" : ${content_span_id},
+ "start" : ${content_start},
+ "trace_id" : ${content_trace_id}
+ },
+ "type" : "span",
+ "version" : 1
+}, {
+ "content" : {
+ "duration" : ${content_duration_2},
+ "error" : 0,
+ "meta" : {
+ "component" : "karate",
+ "env" : "none",
+ "library_version" : ${content_meta_library_version},
+ "step.name" : "* false"
+ },
+ "metrics" : {
+ "step.endLine" : 7,
+ "step.startLine" : 7
+ },
+ "name" : "karate.step",
+ "parent_id" : ${content_parent_id_2},
+ "resource" : "* false",
+ "service" : "worker.org.gradle.process.internal.worker.gradleworkermain",
+ "span_id" : ${content_span_id_2},
+ "start" : ${content_start_2},
+ "trace_id" : ${content_trace_id_2}
+ },
+ "type" : "span",
+ "version" : 1
+}, {
+ "content" : {
+ "duration" : ${content_duration_3},
+ "error" : 1,
+ "meta" : {
+ "_dd.p.tid" : ${content_meta__dd_p_tid},
+ "component" : "karate",
+ "dummy_ci_tag" : "dummy_ci_tag_value",
+ "env" : "none",
+ "error.message" : ${content_meta_error_message},
+ "error.stack" : ${content_meta_error_stack},
+ "error.type" : "java.lang.AssertionError",
+ "library_version" : ${content_meta_library_version},
+ "span.kind" : "test_suite_end",
+ "test.framework" : "karate",
+ "test.framework_version" : ${content_meta_test_framework_version},
+ "test.module" : "karate-2.0",
+ "test.status" : "fail",
+ "test.suite" : "[org/example/test_failed] test failed",
+ "test.type" : "test",
+ "test_session.name" : "session-name"
+ },
+ "metrics" : {
+ "_dd.host.vcpu_count" : ${content_metrics__dd_host_vcpu_count}
+ },
+ "name" : "karate.test_suite",
+ "resource" : "[org/example/test_failed] test failed",
+ "service" : "worker.org.gradle.process.internal.worker.gradleworkermain",
+ "start" : ${content_start_3},
+ "test_module_id" : ${content_test_module_id},
+ "test_session_id" : ${content_test_session_id},
+ "test_suite_id" : ${content_test_suite_id}
+ },
+ "type" : "test_suite_end",
+ "version" : 1
+}, {
+ "content" : {
+ "duration" : ${content_duration_4},
+ "error" : 0,
+ "meta" : {
+ "_dd.profiling.ctx" : "test",
+ "_dd.tracer_host" : ${content_meta__dd_tracer_host},
+ "component" : "karate",
+ "dummy_ci_tag" : "dummy_ci_tag_value",
+ "env" : "none",
+ "language" : "jvm",
+ "library_version" : ${content_meta_library_version},
+ "runtime-id" : ${content_meta_runtime_id},
+ "span.kind" : "test",
+ "test.final_status" : "pass",
+ "test.framework" : "karate",
+ "test.framework_version" : ${content_meta_test_framework_version},
+ "test.module" : "karate-2.0",
+ "test.name" : "first scenario",
+ "test.status" : "pass",
+ "test.suite" : "[org/example/test_failed] test failed",
+ "test.type" : "test",
+ "test_session.name" : "session-name"
+ },
+ "metrics" : {
+ "_dd.host.vcpu_count" : ${content_metrics__dd_host_vcpu_count_2},
+ "_dd.profiling.enabled" : 0,
+ "_dd.trace_span_attribute_schema" : 0,
+ "process_id" : ${content_metrics_process_id}
+ },
+ "name" : "karate.test",
+ "parent_id" : ${content_parent_id_3},
+ "resource" : "[org/example/test_failed] test failed.first scenario",
+ "service" : "worker.org.gradle.process.internal.worker.gradleworkermain",
+ "span_id" : ${content_parent_id},
+ "start" : ${content_start_4},
+ "test_module_id" : ${content_test_module_id},
+ "test_session_id" : ${content_test_session_id},
+ "test_suite_id" : ${content_test_suite_id},
+ "trace_id" : ${content_trace_id}
+ },
+ "type" : "test",
+ "version" : 2
+}, {
+ "content" : {
+ "duration" : ${content_duration_5},
+ "error" : 1,
+ "meta" : {
+ "_dd.profiling.ctx" : "test",
+ "_dd.tracer_host" : ${content_meta__dd_tracer_host},
+ "component" : "karate",
+ "dummy_ci_tag" : "dummy_ci_tag_value",
+ "env" : "none",
+ "error.message" : ${content_meta_error_message},
+ "error.stack" : ${content_meta_error_stack_2},
+ "error.type" : "java.lang.AssertionError",
+ "language" : "jvm",
+ "library_version" : ${content_meta_library_version},
+ "runtime-id" : ${content_meta_runtime_id},
+ "span.kind" : "test",
+ "test.final_status" : "fail",
+ "test.framework" : "karate",
+ "test.framework_version" : ${content_meta_test_framework_version},
+ "test.module" : "karate-2.0",
+ "test.name" : "second scenario",
+ "test.status" : "fail",
+ "test.suite" : "[org/example/test_failed] test failed",
+ "test.test_management.attempt_to_fix_passed" : "false",
+ "test.test_management.is_attempt_to_fix" : "true",
+ "test.test_management.is_quarantined" : "true",
+ "test.type" : "test",
+ "test_session.name" : "session-name"
+ },
+ "metrics" : {
+ "_dd.host.vcpu_count" : ${content_metrics__dd_host_vcpu_count_3},
+ "_dd.profiling.enabled" : 0,
+ "_dd.trace_span_attribute_schema" : 0,
+ "process_id" : ${content_metrics_process_id}
+ },
+ "name" : "karate.test",
+ "parent_id" : ${content_parent_id_3},
+ "resource" : "[org/example/test_failed] test failed.second scenario",
+ "service" : "worker.org.gradle.process.internal.worker.gradleworkermain",
+ "span_id" : ${content_parent_id_2},
+ "start" : ${content_start_5},
+ "test_module_id" : ${content_test_module_id},
+ "test_session_id" : ${content_test_session_id},
+ "test_suite_id" : ${content_test_suite_id},
+ "trace_id" : ${content_trace_id_2}
+ },
+ "type" : "test",
+ "version" : 2
+}, {
+ "content" : {
+ "duration" : ${content_duration_6},
+ "error" : 0,
+ "meta" : {
+ "_dd.p.tid" : ${content_meta__dd_p_tid_2},
+ "_dd.profiling.ctx" : "test",
+ "_dd.tracer_host" : ${content_meta__dd_tracer_host},
+ "component" : "karate",
+ "dummy_ci_tag" : "dummy_ci_tag_value",
+ "env" : "none",
+ "language" : "jvm",
+ "library_version" : ${content_meta_library_version},
+ "runtime-id" : ${content_meta_runtime_id},
+ "span.kind" : "test_session_end",
+ "test.command" : "karate-2.0",
+ "test.framework" : "karate",
+ "test.framework_version" : ${content_meta_test_framework_version},
+ "test.status" : "fail",
+ "test.test_management.enabled" : "true",
+ "test.type" : "test",
+ "test_session.name" : "session-name"
+ },
+ "metrics" : {
+ "_dd.host.vcpu_count" : ${content_metrics__dd_host_vcpu_count_4},
+ "_dd.profiling.enabled" : 0,
+ "_dd.trace_span_attribute_schema" : 0,
+ "process_id" : ${content_metrics_process_id}
+ },
+ "name" : "karate.test_session",
+ "resource" : "karate-2.0",
+ "service" : "worker.org.gradle.process.internal.worker.gradleworkermain",
+ "start" : ${content_start_6},
+ "test_session_id" : ${content_test_session_id}
+ },
+ "type" : "test_session_end",
+ "version" : 1
+}, {
+ "content" : {
+ "duration" : ${content_duration_7},
+ "error" : 0,
+ "meta" : {
+ "_dd.p.tid" : ${content_meta__dd_p_tid_3},
+ "component" : "karate",
+ "dummy_ci_tag" : "dummy_ci_tag_value",
+ "env" : "none",
+ "library_version" : ${content_meta_library_version},
+ "span.kind" : "test_module_end",
+ "test.framework" : "karate",
+ "test.framework_version" : ${content_meta_test_framework_version},
+ "test.module" : "karate-2.0",
+ "test.status" : "fail",
+ "test.test_management.enabled" : "true",
+ "test.type" : "test",
+ "test_session.name" : "session-name"
+ },
+ "metrics" : {
+ "_dd.host.vcpu_count" : ${content_metrics__dd_host_vcpu_count_5}
+ },
+ "name" : "karate.test_module",
+ "resource" : "karate-2.0",
+ "service" : "worker.org.gradle.process.internal.worker.gradleworkermain",
+ "start" : ${content_start_7},
+ "test_module_id" : ${content_test_module_id},
+ "test_session_id" : ${content_test_session_id}
+ },
+ "type" : "test_module_end",
+ "version" : 1
+} ]
\ No newline at end of file
diff --git a/dd-java-agent/instrumentation/karate/karate-2.0/src/test/resources/test-attempt-to-fix-quarantined-succeeded/coverages.ftl b/dd-java-agent/instrumentation/karate/karate-2.0/src/test/resources/test-attempt-to-fix-quarantined-succeeded/coverages.ftl
new file mode 100644
index 00000000000..8878e547a79
--- /dev/null
+++ b/dd-java-agent/instrumentation/karate/karate-2.0/src/test/resources/test-attempt-to-fix-quarantined-succeeded/coverages.ftl
@@ -0,0 +1 @@
+[ ]
\ No newline at end of file
diff --git a/dd-java-agent/instrumentation/karate/karate-2.0/src/test/resources/test-attempt-to-fix-quarantined-succeeded/events.ftl b/dd-java-agent/instrumentation/karate/karate-2.0/src/test/resources/test-attempt-to-fix-quarantined-succeeded/events.ftl
new file mode 100644
index 00000000000..6ae123bab0a
--- /dev/null
+++ b/dd-java-agent/instrumentation/karate/karate-2.0/src/test/resources/test-attempt-to-fix-quarantined-succeeded/events.ftl
@@ -0,0 +1,525 @@
+[ {
+ "content" : {
+ "duration" : ${content_duration},
+ "error" : 0,
+ "meta" : {
+ "component" : "karate",
+ "env" : "none",
+ "library_version" : ${content_meta_library_version},
+ "step.name" : "* 'first'"
+ },
+ "metrics" : {
+ "step.endLine" : 6,
+ "step.startLine" : 6
+ },
+ "name" : "karate.step",
+ "parent_id" : ${content_parent_id},
+ "resource" : "* 'first'",
+ "service" : "worker.org.gradle.process.internal.worker.gradleworkermain",
+ "span_id" : ${content_span_id},
+ "start" : ${content_start},
+ "trace_id" : ${content_trace_id}
+ },
+ "type" : "span",
+ "version" : 1
+}, {
+ "content" : {
+ "duration" : ${content_duration_2},
+ "error" : 0,
+ "meta" : {
+ "component" : "karate",
+ "env" : "none",
+ "library_version" : ${content_meta_library_version},
+ "step.name" : "* 'first'"
+ },
+ "metrics" : {
+ "step.endLine" : 6,
+ "step.startLine" : 6
+ },
+ "name" : "karate.step",
+ "parent_id" : ${content_parent_id_2},
+ "resource" : "* 'first'",
+ "service" : "worker.org.gradle.process.internal.worker.gradleworkermain",
+ "span_id" : ${content_span_id_2},
+ "start" : ${content_start_2},
+ "trace_id" : ${content_trace_id_2}
+ },
+ "type" : "span",
+ "version" : 1
+}, {
+ "content" : {
+ "duration" : ${content_duration_3},
+ "error" : 0,
+ "meta" : {
+ "component" : "karate",
+ "env" : "none",
+ "library_version" : ${content_meta_library_version},
+ "step.name" : "* 'first'"
+ },
+ "metrics" : {
+ "step.endLine" : 6,
+ "step.startLine" : 6
+ },
+ "name" : "karate.step",
+ "parent_id" : ${content_parent_id_3},
+ "resource" : "* 'first'",
+ "service" : "worker.org.gradle.process.internal.worker.gradleworkermain",
+ "span_id" : ${content_span_id_3},
+ "start" : ${content_start_3},
+ "trace_id" : ${content_trace_id_3}
+ },
+ "type" : "span",
+ "version" : 1
+}, {
+ "content" : {
+ "duration" : ${content_duration_4},
+ "error" : 0,
+ "meta" : {
+ "component" : "karate",
+ "env" : "none",
+ "library_version" : ${content_meta_library_version},
+ "step.name" : "* 'first'"
+ },
+ "metrics" : {
+ "step.endLine" : 6,
+ "step.startLine" : 6
+ },
+ "name" : "karate.step",
+ "parent_id" : ${content_parent_id_4},
+ "resource" : "* 'first'",
+ "service" : "worker.org.gradle.process.internal.worker.gradleworkermain",
+ "span_id" : ${content_span_id_4},
+ "start" : ${content_start_4},
+ "trace_id" : ${content_trace_id_4}
+ },
+ "type" : "span",
+ "version" : 1
+}, {
+ "content" : {
+ "duration" : ${content_duration_5},
+ "error" : 0,
+ "meta" : {
+ "component" : "karate",
+ "env" : "none",
+ "library_version" : ${content_meta_library_version},
+ "step.name" : "* 'first'"
+ },
+ "metrics" : {
+ "step.endLine" : 6,
+ "step.startLine" : 6
+ },
+ "name" : "karate.step",
+ "parent_id" : ${content_parent_id_5},
+ "resource" : "* 'first'",
+ "service" : "worker.org.gradle.process.internal.worker.gradleworkermain",
+ "span_id" : ${content_span_id_5},
+ "start" : ${content_start_5},
+ "trace_id" : ${content_trace_id_5}
+ },
+ "type" : "span",
+ "version" : 1
+}, {
+ "content" : {
+ "duration" : ${content_duration_6},
+ "error" : 0,
+ "meta" : {
+ "component" : "karate",
+ "env" : "none",
+ "library_version" : ${content_meta_library_version},
+ "step.name" : "* 'second'"
+ },
+ "metrics" : {
+ "step.endLine" : 9,
+ "step.startLine" : 9
+ },
+ "name" : "karate.step",
+ "parent_id" : ${content_parent_id_6},
+ "resource" : "* 'second'",
+ "service" : "worker.org.gradle.process.internal.worker.gradleworkermain",
+ "span_id" : ${content_span_id_6},
+ "start" : ${content_start_6},
+ "trace_id" : ${content_trace_id_6}
+ },
+ "type" : "span",
+ "version" : 1
+}, {
+ "content" : {
+ "duration" : ${content_duration_7},
+ "error" : 0,
+ "meta" : {
+ "_dd.p.tid" : ${content_meta__dd_p_tid},
+ "component" : "karate",
+ "dummy_ci_tag" : "dummy_ci_tag_value",
+ "env" : "none",
+ "library_version" : ${content_meta_library_version},
+ "span.kind" : "test_suite_end",
+ "test.framework" : "karate",
+ "test.framework_version" : ${content_meta_test_framework_version},
+ "test.module" : "karate-2.0",
+ "test.status" : "pass",
+ "test.suite" : "[org/example/test_succeed] test succeed",
+ "test.traits" : "{\"category\":[\"foo\"]}",
+ "test.type" : "test",
+ "test_session.name" : "session-name"
+ },
+ "metrics" : {
+ "_dd.host.vcpu_count" : ${content_metrics__dd_host_vcpu_count}
+ },
+ "name" : "karate.test_suite",
+ "resource" : "[org/example/test_succeed] test succeed",
+ "service" : "worker.org.gradle.process.internal.worker.gradleworkermain",
+ "start" : ${content_start_7},
+ "test_module_id" : ${content_test_module_id},
+ "test_session_id" : ${content_test_session_id},
+ "test_suite_id" : ${content_test_suite_id}
+ },
+ "type" : "test_suite_end",
+ "version" : 1
+}, {
+ "content" : {
+ "duration" : ${content_duration_8},
+ "error" : 0,
+ "meta" : {
+ "_dd.profiling.ctx" : "test",
+ "_dd.tracer_host" : ${content_meta__dd_tracer_host},
+ "component" : "karate",
+ "dummy_ci_tag" : "dummy_ci_tag_value",
+ "env" : "none",
+ "language" : "jvm",
+ "library_version" : ${content_meta_library_version},
+ "runtime-id" : ${content_meta_runtime_id},
+ "span.kind" : "test",
+ "test.framework" : "karate",
+ "test.framework_version" : ${content_meta_test_framework_version},
+ "test.module" : "karate-2.0",
+ "test.name" : "first scenario",
+ "test.status" : "pass",
+ "test.suite" : "[org/example/test_succeed] test succeed",
+ "test.test_management.is_attempt_to_fix" : "true",
+ "test.test_management.is_quarantined" : "true",
+ "test.traits" : "{\"category\":[\"foo\",\"bar\"]}",
+ "test.type" : "test",
+ "test_session.name" : "session-name"
+ },
+ "metrics" : {
+ "_dd.host.vcpu_count" : ${content_metrics__dd_host_vcpu_count_2},
+ "_dd.profiling.enabled" : 0,
+ "_dd.trace_span_attribute_schema" : 0,
+ "process_id" : ${content_metrics_process_id}
+ },
+ "name" : "karate.test",
+ "parent_id" : ${content_parent_id_7},
+ "resource" : "[org/example/test_succeed] test succeed.first scenario",
+ "service" : "worker.org.gradle.process.internal.worker.gradleworkermain",
+ "span_id" : ${content_parent_id},
+ "start" : ${content_start_8},
+ "test_module_id" : ${content_test_module_id},
+ "test_session_id" : ${content_test_session_id},
+ "test_suite_id" : ${content_test_suite_id},
+ "trace_id" : ${content_trace_id}
+ },
+ "type" : "test",
+ "version" : 2
+}, {
+ "content" : {
+ "duration" : ${content_duration_9},
+ "error" : 0,
+ "meta" : {
+ "_dd.profiling.ctx" : "test",
+ "_dd.tracer_host" : ${content_meta__dd_tracer_host},
+ "component" : "karate",
+ "dummy_ci_tag" : "dummy_ci_tag_value",
+ "env" : "none",
+ "language" : "jvm",
+ "library_version" : ${content_meta_library_version},
+ "runtime-id" : ${content_meta_runtime_id},
+ "span.kind" : "test",
+ "test.framework" : "karate",
+ "test.framework_version" : ${content_meta_test_framework_version},
+ "test.is_retry" : "true",
+ "test.module" : "karate-2.0",
+ "test.name" : "first scenario",
+ "test.retry_reason" : "attempt_to_fix",
+ "test.status" : "pass",
+ "test.suite" : "[org/example/test_succeed] test succeed",
+ "test.test_management.is_attempt_to_fix" : "true",
+ "test.test_management.is_quarantined" : "true",
+ "test.traits" : "{\"category\":[\"foo\",\"bar\"]}",
+ "test.type" : "test",
+ "test_session.name" : "session-name"
+ },
+ "metrics" : {
+ "_dd.host.vcpu_count" : ${content_metrics__dd_host_vcpu_count_3},
+ "_dd.profiling.enabled" : 0,
+ "_dd.trace_span_attribute_schema" : 0,
+ "process_id" : ${content_metrics_process_id}
+ },
+ "name" : "karate.test",
+ "parent_id" : ${content_parent_id_7},
+ "resource" : "[org/example/test_succeed] test succeed.first scenario",
+ "service" : "worker.org.gradle.process.internal.worker.gradleworkermain",
+ "span_id" : ${content_parent_id_2},
+ "start" : ${content_start_9},
+ "test_module_id" : ${content_test_module_id},
+ "test_session_id" : ${content_test_session_id},
+ "test_suite_id" : ${content_test_suite_id},
+ "trace_id" : ${content_trace_id_2}
+ },
+ "type" : "test",
+ "version" : 2
+}, {
+ "content" : {
+ "duration" : ${content_duration_10},
+ "error" : 0,
+ "meta" : {
+ "_dd.profiling.ctx" : "test",
+ "_dd.tracer_host" : ${content_meta__dd_tracer_host},
+ "component" : "karate",
+ "dummy_ci_tag" : "dummy_ci_tag_value",
+ "env" : "none",
+ "language" : "jvm",
+ "library_version" : ${content_meta_library_version},
+ "runtime-id" : ${content_meta_runtime_id},
+ "span.kind" : "test",
+ "test.framework" : "karate",
+ "test.framework_version" : ${content_meta_test_framework_version},
+ "test.is_retry" : "true",
+ "test.module" : "karate-2.0",
+ "test.name" : "first scenario",
+ "test.retry_reason" : "attempt_to_fix",
+ "test.status" : "pass",
+ "test.suite" : "[org/example/test_succeed] test succeed",
+ "test.test_management.is_attempt_to_fix" : "true",
+ "test.test_management.is_quarantined" : "true",
+ "test.traits" : "{\"category\":[\"foo\",\"bar\"]}",
+ "test.type" : "test",
+ "test_session.name" : "session-name"
+ },
+ "metrics" : {
+ "_dd.host.vcpu_count" : ${content_metrics__dd_host_vcpu_count_4},
+ "_dd.profiling.enabled" : 0,
+ "_dd.trace_span_attribute_schema" : 0,
+ "process_id" : ${content_metrics_process_id}
+ },
+ "name" : "karate.test",
+ "parent_id" : ${content_parent_id_7},
+ "resource" : "[org/example/test_succeed] test succeed.first scenario",
+ "service" : "worker.org.gradle.process.internal.worker.gradleworkermain",
+ "span_id" : ${content_parent_id_3},
+ "start" : ${content_start_10},
+ "test_module_id" : ${content_test_module_id},
+ "test_session_id" : ${content_test_session_id},
+ "test_suite_id" : ${content_test_suite_id},
+ "trace_id" : ${content_trace_id_3}
+ },
+ "type" : "test",
+ "version" : 2
+}, {
+ "content" : {
+ "duration" : ${content_duration_11},
+ "error" : 0,
+ "meta" : {
+ "_dd.profiling.ctx" : "test",
+ "_dd.tracer_host" : ${content_meta__dd_tracer_host},
+ "component" : "karate",
+ "dummy_ci_tag" : "dummy_ci_tag_value",
+ "env" : "none",
+ "language" : "jvm",
+ "library_version" : ${content_meta_library_version},
+ "runtime-id" : ${content_meta_runtime_id},
+ "span.kind" : "test",
+ "test.framework" : "karate",
+ "test.framework_version" : ${content_meta_test_framework_version},
+ "test.is_retry" : "true",
+ "test.module" : "karate-2.0",
+ "test.name" : "first scenario",
+ "test.retry_reason" : "attempt_to_fix",
+ "test.status" : "pass",
+ "test.suite" : "[org/example/test_succeed] test succeed",
+ "test.test_management.is_attempt_to_fix" : "true",
+ "test.test_management.is_quarantined" : "true",
+ "test.traits" : "{\"category\":[\"foo\",\"bar\"]}",
+ "test.type" : "test",
+ "test_session.name" : "session-name"
+ },
+ "metrics" : {
+ "_dd.host.vcpu_count" : ${content_metrics__dd_host_vcpu_count_5},
+ "_dd.profiling.enabled" : 0,
+ "_dd.trace_span_attribute_schema" : 0,
+ "process_id" : ${content_metrics_process_id}
+ },
+ "name" : "karate.test",
+ "parent_id" : ${content_parent_id_7},
+ "resource" : "[org/example/test_succeed] test succeed.first scenario",
+ "service" : "worker.org.gradle.process.internal.worker.gradleworkermain",
+ "span_id" : ${content_parent_id_4},
+ "start" : ${content_start_11},
+ "test_module_id" : ${content_test_module_id},
+ "test_session_id" : ${content_test_session_id},
+ "test_suite_id" : ${content_test_suite_id},
+ "trace_id" : ${content_trace_id_4}
+ },
+ "type" : "test",
+ "version" : 2
+}, {
+ "content" : {
+ "duration" : ${content_duration_12},
+ "error" : 0,
+ "meta" : {
+ "_dd.profiling.ctx" : "test",
+ "_dd.tracer_host" : ${content_meta__dd_tracer_host},
+ "component" : "karate",
+ "dummy_ci_tag" : "dummy_ci_tag_value",
+ "env" : "none",
+ "language" : "jvm",
+ "library_version" : ${content_meta_library_version},
+ "runtime-id" : ${content_meta_runtime_id},
+ "span.kind" : "test",
+ "test.final_status" : "pass",
+ "test.framework" : "karate",
+ "test.framework_version" : ${content_meta_test_framework_version},
+ "test.is_retry" : "true",
+ "test.module" : "karate-2.0",
+ "test.name" : "first scenario",
+ "test.retry_reason" : "attempt_to_fix",
+ "test.status" : "pass",
+ "test.suite" : "[org/example/test_succeed] test succeed",
+ "test.test_management.attempt_to_fix_passed" : "true",
+ "test.test_management.is_attempt_to_fix" : "true",
+ "test.test_management.is_quarantined" : "true",
+ "test.traits" : "{\"category\":[\"foo\",\"bar\"]}",
+ "test.type" : "test",
+ "test_session.name" : "session-name"
+ },
+ "metrics" : {
+ "_dd.host.vcpu_count" : ${content_metrics__dd_host_vcpu_count_6},
+ "_dd.profiling.enabled" : 0,
+ "_dd.trace_span_attribute_schema" : 0,
+ "process_id" : ${content_metrics_process_id}
+ },
+ "name" : "karate.test",
+ "parent_id" : ${content_parent_id_7},
+ "resource" : "[org/example/test_succeed] test succeed.first scenario",
+ "service" : "worker.org.gradle.process.internal.worker.gradleworkermain",
+ "span_id" : ${content_parent_id_5},
+ "start" : ${content_start_12},
+ "test_module_id" : ${content_test_module_id},
+ "test_session_id" : ${content_test_session_id},
+ "test_suite_id" : ${content_test_suite_id},
+ "trace_id" : ${content_trace_id_5}
+ },
+ "type" : "test",
+ "version" : 2
+}, {
+ "content" : {
+ "duration" : ${content_duration_13},
+ "error" : 0,
+ "meta" : {
+ "_dd.profiling.ctx" : "test",
+ "_dd.tracer_host" : ${content_meta__dd_tracer_host},
+ "component" : "karate",
+ "dummy_ci_tag" : "dummy_ci_tag_value",
+ "env" : "none",
+ "language" : "jvm",
+ "library_version" : ${content_meta_library_version},
+ "runtime-id" : ${content_meta_runtime_id},
+ "span.kind" : "test",
+ "test.final_status" : "pass",
+ "test.framework" : "karate",
+ "test.framework_version" : ${content_meta_test_framework_version},
+ "test.module" : "karate-2.0",
+ "test.name" : "second scenario",
+ "test.status" : "pass",
+ "test.suite" : "[org/example/test_succeed] test succeed",
+ "test.traits" : "{\"category\":[\"foo\"]}",
+ "test.type" : "test",
+ "test_session.name" : "session-name"
+ },
+ "metrics" : {
+ "_dd.host.vcpu_count" : ${content_metrics__dd_host_vcpu_count_7},
+ "_dd.profiling.enabled" : 0,
+ "_dd.trace_span_attribute_schema" : 0,
+ "process_id" : ${content_metrics_process_id}
+ },
+ "name" : "karate.test",
+ "parent_id" : ${content_parent_id_7},
+ "resource" : "[org/example/test_succeed] test succeed.second scenario",
+ "service" : "worker.org.gradle.process.internal.worker.gradleworkermain",
+ "span_id" : ${content_parent_id_6},
+ "start" : ${content_start_13},
+ "test_module_id" : ${content_test_module_id},
+ "test_session_id" : ${content_test_session_id},
+ "test_suite_id" : ${content_test_suite_id},
+ "trace_id" : ${content_trace_id_6}
+ },
+ "type" : "test",
+ "version" : 2
+}, {
+ "content" : {
+ "duration" : ${content_duration_14},
+ "error" : 0,
+ "meta" : {
+ "_dd.p.tid" : ${content_meta__dd_p_tid_2},
+ "_dd.profiling.ctx" : "test",
+ "_dd.tracer_host" : ${content_meta__dd_tracer_host},
+ "component" : "karate",
+ "dummy_ci_tag" : "dummy_ci_tag_value",
+ "env" : "none",
+ "language" : "jvm",
+ "library_version" : ${content_meta_library_version},
+ "runtime-id" : ${content_meta_runtime_id},
+ "span.kind" : "test_session_end",
+ "test.command" : "karate-2.0",
+ "test.framework" : "karate",
+ "test.framework_version" : ${content_meta_test_framework_version},
+ "test.status" : "pass",
+ "test.test_management.enabled" : "true",
+ "test.type" : "test",
+ "test_session.name" : "session-name"
+ },
+ "metrics" : {
+ "_dd.host.vcpu_count" : ${content_metrics__dd_host_vcpu_count_8},
+ "_dd.profiling.enabled" : 0,
+ "_dd.trace_span_attribute_schema" : 0,
+ "process_id" : ${content_metrics_process_id}
+ },
+ "name" : "karate.test_session",
+ "resource" : "karate-2.0",
+ "service" : "worker.org.gradle.process.internal.worker.gradleworkermain",
+ "start" : ${content_start_14},
+ "test_session_id" : ${content_test_session_id}
+ },
+ "type" : "test_session_end",
+ "version" : 1
+}, {
+ "content" : {
+ "duration" : ${content_duration_15},
+ "error" : 0,
+ "meta" : {
+ "_dd.p.tid" : ${content_meta__dd_p_tid_3},
+ "component" : "karate",
+ "dummy_ci_tag" : "dummy_ci_tag_value",
+ "env" : "none",
+ "library_version" : ${content_meta_library_version},
+ "span.kind" : "test_module_end",
+ "test.framework" : "karate",
+ "test.framework_version" : ${content_meta_test_framework_version},
+ "test.module" : "karate-2.0",
+ "test.status" : "pass",
+ "test.test_management.enabled" : "true",
+ "test.type" : "test",
+ "test_session.name" : "session-name"
+ },
+ "metrics" : {
+ "_dd.host.vcpu_count" : ${content_metrics__dd_host_vcpu_count_9}
+ },
+ "name" : "karate.test_module",
+ "resource" : "karate-2.0",
+ "service" : "worker.org.gradle.process.internal.worker.gradleworkermain",
+ "start" : ${content_start_15},
+ "test_module_id" : ${content_test_module_id},
+ "test_session_id" : ${content_test_session_id}
+ },
+ "type" : "test_module_end",
+ "version" : 1
+} ]
\ No newline at end of file
diff --git a/dd-java-agent/instrumentation/karate/karate-2.0/src/test/resources/test-attempt-to-fix-succeeded/coverages.ftl b/dd-java-agent/instrumentation/karate/karate-2.0/src/test/resources/test-attempt-to-fix-succeeded/coverages.ftl
new file mode 100644
index 00000000000..8878e547a79
--- /dev/null
+++ b/dd-java-agent/instrumentation/karate/karate-2.0/src/test/resources/test-attempt-to-fix-succeeded/coverages.ftl
@@ -0,0 +1 @@
+[ ]
\ No newline at end of file
diff --git a/dd-java-agent/instrumentation/karate/karate-2.0/src/test/resources/test-attempt-to-fix-succeeded/events.ftl b/dd-java-agent/instrumentation/karate/karate-2.0/src/test/resources/test-attempt-to-fix-succeeded/events.ftl
new file mode 100644
index 00000000000..2854fab44a6
--- /dev/null
+++ b/dd-java-agent/instrumentation/karate/karate-2.0/src/test/resources/test-attempt-to-fix-succeeded/events.ftl
@@ -0,0 +1,520 @@
+[ {
+ "content" : {
+ "duration" : ${content_duration},
+ "error" : 0,
+ "meta" : {
+ "component" : "karate",
+ "env" : "none",
+ "library_version" : ${content_meta_library_version},
+ "step.name" : "* 'first'"
+ },
+ "metrics" : {
+ "step.endLine" : 6,
+ "step.startLine" : 6
+ },
+ "name" : "karate.step",
+ "parent_id" : ${content_parent_id},
+ "resource" : "* 'first'",
+ "service" : "worker.org.gradle.process.internal.worker.gradleworkermain",
+ "span_id" : ${content_span_id},
+ "start" : ${content_start},
+ "trace_id" : ${content_trace_id}
+ },
+ "type" : "span",
+ "version" : 1
+}, {
+ "content" : {
+ "duration" : ${content_duration_2},
+ "error" : 0,
+ "meta" : {
+ "component" : "karate",
+ "env" : "none",
+ "library_version" : ${content_meta_library_version},
+ "step.name" : "* 'first'"
+ },
+ "metrics" : {
+ "step.endLine" : 6,
+ "step.startLine" : 6
+ },
+ "name" : "karate.step",
+ "parent_id" : ${content_parent_id_2},
+ "resource" : "* 'first'",
+ "service" : "worker.org.gradle.process.internal.worker.gradleworkermain",
+ "span_id" : ${content_span_id_2},
+ "start" : ${content_start_2},
+ "trace_id" : ${content_trace_id_2}
+ },
+ "type" : "span",
+ "version" : 1
+}, {
+ "content" : {
+ "duration" : ${content_duration_3},
+ "error" : 0,
+ "meta" : {
+ "component" : "karate",
+ "env" : "none",
+ "library_version" : ${content_meta_library_version},
+ "step.name" : "* 'first'"
+ },
+ "metrics" : {
+ "step.endLine" : 6,
+ "step.startLine" : 6
+ },
+ "name" : "karate.step",
+ "parent_id" : ${content_parent_id_3},
+ "resource" : "* 'first'",
+ "service" : "worker.org.gradle.process.internal.worker.gradleworkermain",
+ "span_id" : ${content_span_id_3},
+ "start" : ${content_start_3},
+ "trace_id" : ${content_trace_id_3}
+ },
+ "type" : "span",
+ "version" : 1
+}, {
+ "content" : {
+ "duration" : ${content_duration_4},
+ "error" : 0,
+ "meta" : {
+ "component" : "karate",
+ "env" : "none",
+ "library_version" : ${content_meta_library_version},
+ "step.name" : "* 'first'"
+ },
+ "metrics" : {
+ "step.endLine" : 6,
+ "step.startLine" : 6
+ },
+ "name" : "karate.step",
+ "parent_id" : ${content_parent_id_4},
+ "resource" : "* 'first'",
+ "service" : "worker.org.gradle.process.internal.worker.gradleworkermain",
+ "span_id" : ${content_span_id_4},
+ "start" : ${content_start_4},
+ "trace_id" : ${content_trace_id_4}
+ },
+ "type" : "span",
+ "version" : 1
+}, {
+ "content" : {
+ "duration" : ${content_duration_5},
+ "error" : 0,
+ "meta" : {
+ "component" : "karate",
+ "env" : "none",
+ "library_version" : ${content_meta_library_version},
+ "step.name" : "* 'first'"
+ },
+ "metrics" : {
+ "step.endLine" : 6,
+ "step.startLine" : 6
+ },
+ "name" : "karate.step",
+ "parent_id" : ${content_parent_id_5},
+ "resource" : "* 'first'",
+ "service" : "worker.org.gradle.process.internal.worker.gradleworkermain",
+ "span_id" : ${content_span_id_5},
+ "start" : ${content_start_5},
+ "trace_id" : ${content_trace_id_5}
+ },
+ "type" : "span",
+ "version" : 1
+}, {
+ "content" : {
+ "duration" : ${content_duration_6},
+ "error" : 0,
+ "meta" : {
+ "component" : "karate",
+ "env" : "none",
+ "library_version" : ${content_meta_library_version},
+ "step.name" : "* 'second'"
+ },
+ "metrics" : {
+ "step.endLine" : 9,
+ "step.startLine" : 9
+ },
+ "name" : "karate.step",
+ "parent_id" : ${content_parent_id_6},
+ "resource" : "* 'second'",
+ "service" : "worker.org.gradle.process.internal.worker.gradleworkermain",
+ "span_id" : ${content_span_id_6},
+ "start" : ${content_start_6},
+ "trace_id" : ${content_trace_id_6}
+ },
+ "type" : "span",
+ "version" : 1
+}, {
+ "content" : {
+ "duration" : ${content_duration_7},
+ "error" : 0,
+ "meta" : {
+ "_dd.p.tid" : ${content_meta__dd_p_tid},
+ "component" : "karate",
+ "dummy_ci_tag" : "dummy_ci_tag_value",
+ "env" : "none",
+ "library_version" : ${content_meta_library_version},
+ "span.kind" : "test_suite_end",
+ "test.framework" : "karate",
+ "test.framework_version" : ${content_meta_test_framework_version},
+ "test.module" : "karate-2.0",
+ "test.status" : "pass",
+ "test.suite" : "[org/example/test_succeed] test succeed",
+ "test.traits" : "{\"category\":[\"foo\"]}",
+ "test.type" : "test",
+ "test_session.name" : "session-name"
+ },
+ "metrics" : {
+ "_dd.host.vcpu_count" : ${content_metrics__dd_host_vcpu_count}
+ },
+ "name" : "karate.test_suite",
+ "resource" : "[org/example/test_succeed] test succeed",
+ "service" : "worker.org.gradle.process.internal.worker.gradleworkermain",
+ "start" : ${content_start_7},
+ "test_module_id" : ${content_test_module_id},
+ "test_session_id" : ${content_test_session_id},
+ "test_suite_id" : ${content_test_suite_id}
+ },
+ "type" : "test_suite_end",
+ "version" : 1
+}, {
+ "content" : {
+ "duration" : ${content_duration_8},
+ "error" : 0,
+ "meta" : {
+ "_dd.profiling.ctx" : "test",
+ "_dd.tracer_host" : ${content_meta__dd_tracer_host},
+ "component" : "karate",
+ "dummy_ci_tag" : "dummy_ci_tag_value",
+ "env" : "none",
+ "language" : "jvm",
+ "library_version" : ${content_meta_library_version},
+ "runtime-id" : ${content_meta_runtime_id},
+ "span.kind" : "test",
+ "test.framework" : "karate",
+ "test.framework_version" : ${content_meta_test_framework_version},
+ "test.module" : "karate-2.0",
+ "test.name" : "first scenario",
+ "test.status" : "pass",
+ "test.suite" : "[org/example/test_succeed] test succeed",
+ "test.test_management.is_attempt_to_fix" : "true",
+ "test.traits" : "{\"category\":[\"foo\",\"bar\"]}",
+ "test.type" : "test",
+ "test_session.name" : "session-name"
+ },
+ "metrics" : {
+ "_dd.host.vcpu_count" : ${content_metrics__dd_host_vcpu_count_2},
+ "_dd.profiling.enabled" : 0,
+ "_dd.trace_span_attribute_schema" : 0,
+ "process_id" : ${content_metrics_process_id}
+ },
+ "name" : "karate.test",
+ "parent_id" : ${content_parent_id_7},
+ "resource" : "[org/example/test_succeed] test succeed.first scenario",
+ "service" : "worker.org.gradle.process.internal.worker.gradleworkermain",
+ "span_id" : ${content_parent_id},
+ "start" : ${content_start_8},
+ "test_module_id" : ${content_test_module_id},
+ "test_session_id" : ${content_test_session_id},
+ "test_suite_id" : ${content_test_suite_id},
+ "trace_id" : ${content_trace_id}
+ },
+ "type" : "test",
+ "version" : 2
+}, {
+ "content" : {
+ "duration" : ${content_duration_9},
+ "error" : 0,
+ "meta" : {
+ "_dd.profiling.ctx" : "test",
+ "_dd.tracer_host" : ${content_meta__dd_tracer_host},
+ "component" : "karate",
+ "dummy_ci_tag" : "dummy_ci_tag_value",
+ "env" : "none",
+ "language" : "jvm",
+ "library_version" : ${content_meta_library_version},
+ "runtime-id" : ${content_meta_runtime_id},
+ "span.kind" : "test",
+ "test.framework" : "karate",
+ "test.framework_version" : ${content_meta_test_framework_version},
+ "test.is_retry" : "true",
+ "test.module" : "karate-2.0",
+ "test.name" : "first scenario",
+ "test.retry_reason" : "attempt_to_fix",
+ "test.status" : "pass",
+ "test.suite" : "[org/example/test_succeed] test succeed",
+ "test.test_management.is_attempt_to_fix" : "true",
+ "test.traits" : "{\"category\":[\"foo\",\"bar\"]}",
+ "test.type" : "test",
+ "test_session.name" : "session-name"
+ },
+ "metrics" : {
+ "_dd.host.vcpu_count" : ${content_metrics__dd_host_vcpu_count_3},
+ "_dd.profiling.enabled" : 0,
+ "_dd.trace_span_attribute_schema" : 0,
+ "process_id" : ${content_metrics_process_id}
+ },
+ "name" : "karate.test",
+ "parent_id" : ${content_parent_id_7},
+ "resource" : "[org/example/test_succeed] test succeed.first scenario",
+ "service" : "worker.org.gradle.process.internal.worker.gradleworkermain",
+ "span_id" : ${content_parent_id_2},
+ "start" : ${content_start_9},
+ "test_module_id" : ${content_test_module_id},
+ "test_session_id" : ${content_test_session_id},
+ "test_suite_id" : ${content_test_suite_id},
+ "trace_id" : ${content_trace_id_2}
+ },
+ "type" : "test",
+ "version" : 2
+}, {
+ "content" : {
+ "duration" : ${content_duration_10},
+ "error" : 0,
+ "meta" : {
+ "_dd.profiling.ctx" : "test",
+ "_dd.tracer_host" : ${content_meta__dd_tracer_host},
+ "component" : "karate",
+ "dummy_ci_tag" : "dummy_ci_tag_value",
+ "env" : "none",
+ "language" : "jvm",
+ "library_version" : ${content_meta_library_version},
+ "runtime-id" : ${content_meta_runtime_id},
+ "span.kind" : "test",
+ "test.framework" : "karate",
+ "test.framework_version" : ${content_meta_test_framework_version},
+ "test.is_retry" : "true",
+ "test.module" : "karate-2.0",
+ "test.name" : "first scenario",
+ "test.retry_reason" : "attempt_to_fix",
+ "test.status" : "pass",
+ "test.suite" : "[org/example/test_succeed] test succeed",
+ "test.test_management.is_attempt_to_fix" : "true",
+ "test.traits" : "{\"category\":[\"foo\",\"bar\"]}",
+ "test.type" : "test",
+ "test_session.name" : "session-name"
+ },
+ "metrics" : {
+ "_dd.host.vcpu_count" : ${content_metrics__dd_host_vcpu_count_4},
+ "_dd.profiling.enabled" : 0,
+ "_dd.trace_span_attribute_schema" : 0,
+ "process_id" : ${content_metrics_process_id}
+ },
+ "name" : "karate.test",
+ "parent_id" : ${content_parent_id_7},
+ "resource" : "[org/example/test_succeed] test succeed.first scenario",
+ "service" : "worker.org.gradle.process.internal.worker.gradleworkermain",
+ "span_id" : ${content_parent_id_3},
+ "start" : ${content_start_10},
+ "test_module_id" : ${content_test_module_id},
+ "test_session_id" : ${content_test_session_id},
+ "test_suite_id" : ${content_test_suite_id},
+ "trace_id" : ${content_trace_id_3}
+ },
+ "type" : "test",
+ "version" : 2
+}, {
+ "content" : {
+ "duration" : ${content_duration_11},
+ "error" : 0,
+ "meta" : {
+ "_dd.profiling.ctx" : "test",
+ "_dd.tracer_host" : ${content_meta__dd_tracer_host},
+ "component" : "karate",
+ "dummy_ci_tag" : "dummy_ci_tag_value",
+ "env" : "none",
+ "language" : "jvm",
+ "library_version" : ${content_meta_library_version},
+ "runtime-id" : ${content_meta_runtime_id},
+ "span.kind" : "test",
+ "test.framework" : "karate",
+ "test.framework_version" : ${content_meta_test_framework_version},
+ "test.is_retry" : "true",
+ "test.module" : "karate-2.0",
+ "test.name" : "first scenario",
+ "test.retry_reason" : "attempt_to_fix",
+ "test.status" : "pass",
+ "test.suite" : "[org/example/test_succeed] test succeed",
+ "test.test_management.is_attempt_to_fix" : "true",
+ "test.traits" : "{\"category\":[\"foo\",\"bar\"]}",
+ "test.type" : "test",
+ "test_session.name" : "session-name"
+ },
+ "metrics" : {
+ "_dd.host.vcpu_count" : ${content_metrics__dd_host_vcpu_count_5},
+ "_dd.profiling.enabled" : 0,
+ "_dd.trace_span_attribute_schema" : 0,
+ "process_id" : ${content_metrics_process_id}
+ },
+ "name" : "karate.test",
+ "parent_id" : ${content_parent_id_7},
+ "resource" : "[org/example/test_succeed] test succeed.first scenario",
+ "service" : "worker.org.gradle.process.internal.worker.gradleworkermain",
+ "span_id" : ${content_parent_id_4},
+ "start" : ${content_start_11},
+ "test_module_id" : ${content_test_module_id},
+ "test_session_id" : ${content_test_session_id},
+ "test_suite_id" : ${content_test_suite_id},
+ "trace_id" : ${content_trace_id_4}
+ },
+ "type" : "test",
+ "version" : 2
+}, {
+ "content" : {
+ "duration" : ${content_duration_12},
+ "error" : 0,
+ "meta" : {
+ "_dd.profiling.ctx" : "test",
+ "_dd.tracer_host" : ${content_meta__dd_tracer_host},
+ "component" : "karate",
+ "dummy_ci_tag" : "dummy_ci_tag_value",
+ "env" : "none",
+ "language" : "jvm",
+ "library_version" : ${content_meta_library_version},
+ "runtime-id" : ${content_meta_runtime_id},
+ "span.kind" : "test",
+ "test.final_status" : "pass",
+ "test.framework" : "karate",
+ "test.framework_version" : ${content_meta_test_framework_version},
+ "test.is_retry" : "true",
+ "test.module" : "karate-2.0",
+ "test.name" : "first scenario",
+ "test.retry_reason" : "attempt_to_fix",
+ "test.status" : "pass",
+ "test.suite" : "[org/example/test_succeed] test succeed",
+ "test.test_management.attempt_to_fix_passed" : "true",
+ "test.test_management.is_attempt_to_fix" : "true",
+ "test.traits" : "{\"category\":[\"foo\",\"bar\"]}",
+ "test.type" : "test",
+ "test_session.name" : "session-name"
+ },
+ "metrics" : {
+ "_dd.host.vcpu_count" : ${content_metrics__dd_host_vcpu_count_6},
+ "_dd.profiling.enabled" : 0,
+ "_dd.trace_span_attribute_schema" : 0,
+ "process_id" : ${content_metrics_process_id}
+ },
+ "name" : "karate.test",
+ "parent_id" : ${content_parent_id_7},
+ "resource" : "[org/example/test_succeed] test succeed.first scenario",
+ "service" : "worker.org.gradle.process.internal.worker.gradleworkermain",
+ "span_id" : ${content_parent_id_5},
+ "start" : ${content_start_12},
+ "test_module_id" : ${content_test_module_id},
+ "test_session_id" : ${content_test_session_id},
+ "test_suite_id" : ${content_test_suite_id},
+ "trace_id" : ${content_trace_id_5}
+ },
+ "type" : "test",
+ "version" : 2
+}, {
+ "content" : {
+ "duration" : ${content_duration_13},
+ "error" : 0,
+ "meta" : {
+ "_dd.profiling.ctx" : "test",
+ "_dd.tracer_host" : ${content_meta__dd_tracer_host},
+ "component" : "karate",
+ "dummy_ci_tag" : "dummy_ci_tag_value",
+ "env" : "none",
+ "language" : "jvm",
+ "library_version" : ${content_meta_library_version},
+ "runtime-id" : ${content_meta_runtime_id},
+ "span.kind" : "test",
+ "test.final_status" : "pass",
+ "test.framework" : "karate",
+ "test.framework_version" : ${content_meta_test_framework_version},
+ "test.module" : "karate-2.0",
+ "test.name" : "second scenario",
+ "test.status" : "pass",
+ "test.suite" : "[org/example/test_succeed] test succeed",
+ "test.traits" : "{\"category\":[\"foo\"]}",
+ "test.type" : "test",
+ "test_session.name" : "session-name"
+ },
+ "metrics" : {
+ "_dd.host.vcpu_count" : ${content_metrics__dd_host_vcpu_count_7},
+ "_dd.profiling.enabled" : 0,
+ "_dd.trace_span_attribute_schema" : 0,
+ "process_id" : ${content_metrics_process_id}
+ },
+ "name" : "karate.test",
+ "parent_id" : ${content_parent_id_7},
+ "resource" : "[org/example/test_succeed] test succeed.second scenario",
+ "service" : "worker.org.gradle.process.internal.worker.gradleworkermain",
+ "span_id" : ${content_parent_id_6},
+ "start" : ${content_start_13},
+ "test_module_id" : ${content_test_module_id},
+ "test_session_id" : ${content_test_session_id},
+ "test_suite_id" : ${content_test_suite_id},
+ "trace_id" : ${content_trace_id_6}
+ },
+ "type" : "test",
+ "version" : 2
+}, {
+ "content" : {
+ "duration" : ${content_duration_14},
+ "error" : 0,
+ "meta" : {
+ "_dd.p.tid" : ${content_meta__dd_p_tid_2},
+ "_dd.profiling.ctx" : "test",
+ "_dd.tracer_host" : ${content_meta__dd_tracer_host},
+ "component" : "karate",
+ "dummy_ci_tag" : "dummy_ci_tag_value",
+ "env" : "none",
+ "language" : "jvm",
+ "library_version" : ${content_meta_library_version},
+ "runtime-id" : ${content_meta_runtime_id},
+ "span.kind" : "test_session_end",
+ "test.command" : "karate-2.0",
+ "test.framework" : "karate",
+ "test.framework_version" : ${content_meta_test_framework_version},
+ "test.status" : "pass",
+ "test.test_management.enabled" : "true",
+ "test.type" : "test",
+ "test_session.name" : "session-name"
+ },
+ "metrics" : {
+ "_dd.host.vcpu_count" : ${content_metrics__dd_host_vcpu_count_8},
+ "_dd.profiling.enabled" : 0,
+ "_dd.trace_span_attribute_schema" : 0,
+ "process_id" : ${content_metrics_process_id}
+ },
+ "name" : "karate.test_session",
+ "resource" : "karate-2.0",
+ "service" : "worker.org.gradle.process.internal.worker.gradleworkermain",
+ "start" : ${content_start_14},
+ "test_session_id" : ${content_test_session_id}
+ },
+ "type" : "test_session_end",
+ "version" : 1
+}, {
+ "content" : {
+ "duration" : ${content_duration_15},
+ "error" : 0,
+ "meta" : {
+ "_dd.p.tid" : ${content_meta__dd_p_tid_3},
+ "component" : "karate",
+ "dummy_ci_tag" : "dummy_ci_tag_value",
+ "env" : "none",
+ "library_version" : ${content_meta_library_version},
+ "span.kind" : "test_module_end",
+ "test.framework" : "karate",
+ "test.framework_version" : ${content_meta_test_framework_version},
+ "test.module" : "karate-2.0",
+ "test.status" : "pass",
+ "test.test_management.enabled" : "true",
+ "test.type" : "test",
+ "test_session.name" : "session-name"
+ },
+ "metrics" : {
+ "_dd.host.vcpu_count" : ${content_metrics__dd_host_vcpu_count_9}
+ },
+ "name" : "karate.test_module",
+ "resource" : "karate-2.0",
+ "service" : "worker.org.gradle.process.internal.worker.gradleworkermain",
+ "start" : ${content_start_15},
+ "test_module_id" : ${content_test_module_id},
+ "test_session_id" : ${content_test_session_id}
+ },
+ "type" : "test_module_end",
+ "version" : 1
+} ]
\ No newline at end of file
diff --git a/dd-java-agent/instrumentation/karate/karate-2.0/src/test/resources/test-disabled-failed/coverages.ftl b/dd-java-agent/instrumentation/karate/karate-2.0/src/test/resources/test-disabled-failed/coverages.ftl
new file mode 100644
index 00000000000..8878e547a79
--- /dev/null
+++ b/dd-java-agent/instrumentation/karate/karate-2.0/src/test/resources/test-disabled-failed/coverages.ftl
@@ -0,0 +1 @@
+[ ]
\ No newline at end of file
diff --git a/dd-java-agent/instrumentation/karate/karate-2.0/src/test/resources/test-disabled-failed/events.ftl b/dd-java-agent/instrumentation/karate/karate-2.0/src/test/resources/test-disabled-failed/events.ftl
new file mode 100644
index 00000000000..8ec4e8fa639
--- /dev/null
+++ b/dd-java-agent/instrumentation/karate/karate-2.0/src/test/resources/test-disabled-failed/events.ftl
@@ -0,0 +1,213 @@
+[ {
+ "content" : {
+ "duration" : ${content_duration},
+ "error" : 0,
+ "meta" : {
+ "component" : "karate",
+ "env" : "none",
+ "library_version" : ${content_meta_library_version},
+ "step.name" : "* 'first'"
+ },
+ "metrics" : {
+ "step.endLine" : 4,
+ "step.startLine" : 4
+ },
+ "name" : "karate.step",
+ "parent_id" : ${content_parent_id},
+ "resource" : "* 'first'",
+ "service" : "worker.org.gradle.process.internal.worker.gradleworkermain",
+ "span_id" : ${content_span_id},
+ "start" : ${content_start},
+ "trace_id" : ${content_trace_id}
+ },
+ "type" : "span",
+ "version" : 1
+}, {
+ "content" : {
+ "duration" : ${content_duration_2},
+ "error" : 0,
+ "meta" : {
+ "_dd.p.tid" : ${content_meta__dd_p_tid},
+ "component" : "karate",
+ "dummy_ci_tag" : "dummy_ci_tag_value",
+ "env" : "none",
+ "library_version" : ${content_meta_library_version},
+ "span.kind" : "test_suite_end",
+ "test.framework" : "karate",
+ "test.framework_version" : ${content_meta_test_framework_version},
+ "test.module" : "karate-2.0",
+ "test.status" : "pass",
+ "test.suite" : "[org/example/test_failed] test failed",
+ "test.type" : "test",
+ "test_session.name" : "session-name"
+ },
+ "metrics" : {
+ "_dd.host.vcpu_count" : ${content_metrics__dd_host_vcpu_count}
+ },
+ "name" : "karate.test_suite",
+ "resource" : "[org/example/test_failed] test failed",
+ "service" : "worker.org.gradle.process.internal.worker.gradleworkermain",
+ "start" : ${content_start_2},
+ "test_module_id" : ${content_test_module_id},
+ "test_session_id" : ${content_test_session_id},
+ "test_suite_id" : ${content_test_suite_id}
+ },
+ "type" : "test_suite_end",
+ "version" : 1
+}, {
+ "content" : {
+ "duration" : ${content_duration_3},
+ "error" : 0,
+ "meta" : {
+ "_dd.profiling.ctx" : "test",
+ "_dd.tracer_host" : ${content_meta__dd_tracer_host},
+ "component" : "karate",
+ "dummy_ci_tag" : "dummy_ci_tag_value",
+ "env" : "none",
+ "language" : "jvm",
+ "library_version" : ${content_meta_library_version},
+ "runtime-id" : ${content_meta_runtime_id},
+ "span.kind" : "test",
+ "test.final_status" : "pass",
+ "test.framework" : "karate",
+ "test.framework_version" : ${content_meta_test_framework_version},
+ "test.module" : "karate-2.0",
+ "test.name" : "first scenario",
+ "test.status" : "pass",
+ "test.suite" : "[org/example/test_failed] test failed",
+ "test.type" : "test",
+ "test_session.name" : "session-name"
+ },
+ "metrics" : {
+ "_dd.host.vcpu_count" : ${content_metrics__dd_host_vcpu_count_2},
+ "_dd.profiling.enabled" : 0,
+ "_dd.trace_span_attribute_schema" : 0,
+ "process_id" : ${content_metrics_process_id}
+ },
+ "name" : "karate.test",
+ "parent_id" : ${content_parent_id_2},
+ "resource" : "[org/example/test_failed] test failed.first scenario",
+ "service" : "worker.org.gradle.process.internal.worker.gradleworkermain",
+ "span_id" : ${content_parent_id},
+ "start" : ${content_start_3},
+ "test_module_id" : ${content_test_module_id},
+ "test_session_id" : ${content_test_session_id},
+ "test_suite_id" : ${content_test_suite_id},
+ "trace_id" : ${content_trace_id}
+ },
+ "type" : "test",
+ "version" : 2
+}, {
+ "content" : {
+ "duration" : ${content_duration_4},
+ "error" : 0,
+ "meta" : {
+ "_dd.profiling.ctx" : "test",
+ "_dd.tracer_host" : ${content_meta__dd_tracer_host},
+ "component" : "karate",
+ "dummy_ci_tag" : "dummy_ci_tag_value",
+ "env" : "none",
+ "language" : "jvm",
+ "library_version" : ${content_meta_library_version},
+ "runtime-id" : ${content_meta_runtime_id},
+ "span.kind" : "test",
+ "test.final_status" : "skip",
+ "test.framework" : "karate",
+ "test.framework_version" : ${content_meta_test_framework_version},
+ "test.module" : "karate-2.0",
+ "test.name" : "second scenario",
+ "test.skip_reason" : "Flaky test is disabled by Datadog",
+ "test.status" : "skip",
+ "test.suite" : "[org/example/test_failed] test failed",
+ "test.test_management.is_test_disabled" : "true",
+ "test.type" : "test",
+ "test_session.name" : "session-name"
+ },
+ "metrics" : {
+ "_dd.host.vcpu_count" : ${content_metrics__dd_host_vcpu_count_3},
+ "_dd.profiling.enabled" : 0,
+ "_dd.trace_span_attribute_schema" : 0,
+ "process_id" : ${content_metrics_process_id}
+ },
+ "name" : "karate.test",
+ "parent_id" : ${content_parent_id_2},
+ "resource" : "[org/example/test_failed] test failed.second scenario",
+ "service" : "worker.org.gradle.process.internal.worker.gradleworkermain",
+ "span_id" : ${content_span_id_2},
+ "start" : ${content_start_4},
+ "test_module_id" : ${content_test_module_id},
+ "test_session_id" : ${content_test_session_id},
+ "test_suite_id" : ${content_test_suite_id},
+ "trace_id" : ${content_trace_id_2}
+ },
+ "type" : "test",
+ "version" : 2
+}, {
+ "content" : {
+ "duration" : ${content_duration_5},
+ "error" : 0,
+ "meta" : {
+ "_dd.p.tid" : ${content_meta__dd_p_tid_2},
+ "_dd.profiling.ctx" : "test",
+ "_dd.tracer_host" : ${content_meta__dd_tracer_host},
+ "component" : "karate",
+ "dummy_ci_tag" : "dummy_ci_tag_value",
+ "env" : "none",
+ "language" : "jvm",
+ "library_version" : ${content_meta_library_version},
+ "runtime-id" : ${content_meta_runtime_id},
+ "span.kind" : "test_session_end",
+ "test.command" : "karate-2.0",
+ "test.framework" : "karate",
+ "test.framework_version" : ${content_meta_test_framework_version},
+ "test.status" : "pass",
+ "test.test_management.enabled" : "true",
+ "test.type" : "test",
+ "test_session.name" : "session-name"
+ },
+ "metrics" : {
+ "_dd.host.vcpu_count" : ${content_metrics__dd_host_vcpu_count_4},
+ "_dd.profiling.enabled" : 0,
+ "_dd.trace_span_attribute_schema" : 0,
+ "process_id" : ${content_metrics_process_id}
+ },
+ "name" : "karate.test_session",
+ "resource" : "karate-2.0",
+ "service" : "worker.org.gradle.process.internal.worker.gradleworkermain",
+ "start" : ${content_start_5},
+ "test_session_id" : ${content_test_session_id}
+ },
+ "type" : "test_session_end",
+ "version" : 1
+}, {
+ "content" : {
+ "duration" : ${content_duration_6},
+ "error" : 0,
+ "meta" : {
+ "_dd.p.tid" : ${content_meta__dd_p_tid_3},
+ "component" : "karate",
+ "dummy_ci_tag" : "dummy_ci_tag_value",
+ "env" : "none",
+ "library_version" : ${content_meta_library_version},
+ "span.kind" : "test_module_end",
+ "test.framework" : "karate",
+ "test.framework_version" : ${content_meta_test_framework_version},
+ "test.module" : "karate-2.0",
+ "test.status" : "pass",
+ "test.test_management.enabled" : "true",
+ "test.type" : "test",
+ "test_session.name" : "session-name"
+ },
+ "metrics" : {
+ "_dd.host.vcpu_count" : ${content_metrics__dd_host_vcpu_count_5}
+ },
+ "name" : "karate.test_module",
+ "resource" : "karate-2.0",
+ "service" : "worker.org.gradle.process.internal.worker.gradleworkermain",
+ "start" : ${content_start_6},
+ "test_module_id" : ${content_test_module_id},
+ "test_session_id" : ${content_test_session_id}
+ },
+ "type" : "test_module_end",
+ "version" : 1
+} ]
\ No newline at end of file
diff --git a/dd-java-agent/instrumentation/karate/karate-2.0/src/test/resources/test-efd-faulty-session-threshold/coverages.ftl b/dd-java-agent/instrumentation/karate/karate-2.0/src/test/resources/test-efd-faulty-session-threshold/coverages.ftl
new file mode 100644
index 00000000000..8878e547a79
--- /dev/null
+++ b/dd-java-agent/instrumentation/karate/karate-2.0/src/test/resources/test-efd-faulty-session-threshold/coverages.ftl
@@ -0,0 +1 @@
+[ ]
\ No newline at end of file
diff --git a/dd-java-agent/instrumentation/karate/karate-2.0/src/test/resources/test-efd-faulty-session-threshold/events.ftl b/dd-java-agent/instrumentation/karate/karate-2.0/src/test/resources/test-efd-faulty-session-threshold/events.ftl
new file mode 100644
index 00000000000..831f14555c6
--- /dev/null
+++ b/dd-java-agent/instrumentation/karate/karate-2.0/src/test/resources/test-efd-faulty-session-threshold/events.ftl
@@ -0,0 +1,926 @@
+[ {
+ "content" : {
+ "duration" : ${content_duration},
+ "error" : 0,
+ "meta" : {
+ "component" : "karate",
+ "env" : "none",
+ "library_version" : ${content_meta_library_version},
+ "step.name" : "Given p = 'a'"
+ },
+ "metrics" : {
+ "step.endLine" : 6,
+ "step.startLine" : 6
+ },
+ "name" : "karate.step",
+ "parent_id" : ${content_parent_id},
+ "resource" : "Given p = 'a'",
+ "service" : "worker.org.gradle.process.internal.worker.gradleworkermain",
+ "span_id" : ${content_span_id},
+ "start" : ${content_start},
+ "trace_id" : ${content_trace_id}
+ },
+ "type" : "span",
+ "version" : 1
+}, {
+ "content" : {
+ "duration" : ${content_duration_2},
+ "error" : 0,
+ "meta" : {
+ "component" : "karate",
+ "env" : "none",
+ "library_version" : ${content_meta_library_version},
+ "step.name" : "Given p = 'a'"
+ },
+ "metrics" : {
+ "step.endLine" : 6,
+ "step.startLine" : 6
+ },
+ "name" : "karate.step",
+ "parent_id" : ${content_parent_id_2},
+ "resource" : "Given p = 'a'",
+ "service" : "worker.org.gradle.process.internal.worker.gradleworkermain",
+ "span_id" : ${content_span_id_2},
+ "start" : ${content_start_2},
+ "trace_id" : ${content_trace_id_2}
+ },
+ "type" : "span",
+ "version" : 1
+}, {
+ "content" : {
+ "duration" : ${content_duration_3},
+ "error" : 0,
+ "meta" : {
+ "component" : "karate",
+ "env" : "none",
+ "library_version" : ${content_meta_library_version},
+ "step.name" : "Given p = 'a'"
+ },
+ "metrics" : {
+ "step.endLine" : 6,
+ "step.startLine" : 6
+ },
+ "name" : "karate.step",
+ "parent_id" : ${content_parent_id_3},
+ "resource" : "Given p = 'a'",
+ "service" : "worker.org.gradle.process.internal.worker.gradleworkermain",
+ "span_id" : ${content_span_id_3},
+ "start" : ${content_start_3},
+ "trace_id" : ${content_trace_id_3}
+ },
+ "type" : "span",
+ "version" : 1
+}, {
+ "content" : {
+ "duration" : ${content_duration_4},
+ "error" : 0,
+ "meta" : {
+ "component" : "karate",
+ "env" : "none",
+ "library_version" : ${content_meta_library_version},
+ "step.name" : "Given p = 'b'"
+ },
+ "metrics" : {
+ "step.endLine" : 6,
+ "step.startLine" : 6
+ },
+ "name" : "karate.step",
+ "parent_id" : ${content_parent_id_4},
+ "resource" : "Given p = 'b'",
+ "service" : "worker.org.gradle.process.internal.worker.gradleworkermain",
+ "span_id" : ${content_span_id_4},
+ "start" : ${content_start_4},
+ "trace_id" : ${content_trace_id_4}
+ },
+ "type" : "span",
+ "version" : 1
+}, {
+ "content" : {
+ "duration" : ${content_duration_5},
+ "error" : 0,
+ "meta" : {
+ "component" : "karate",
+ "env" : "none",
+ "library_version" : ${content_meta_library_version},
+ "step.name" : "Given p = 'b'"
+ },
+ "metrics" : {
+ "step.endLine" : 6,
+ "step.startLine" : 6
+ },
+ "name" : "karate.step",
+ "parent_id" : ${content_parent_id_5},
+ "resource" : "Given p = 'b'",
+ "service" : "worker.org.gradle.process.internal.worker.gradleworkermain",
+ "span_id" : ${content_span_id_5},
+ "start" : ${content_start_5},
+ "trace_id" : ${content_trace_id_5}
+ },
+ "type" : "span",
+ "version" : 1
+}, {
+ "content" : {
+ "duration" : ${content_duration_6},
+ "error" : 0,
+ "meta" : {
+ "component" : "karate",
+ "env" : "none",
+ "library_version" : ${content_meta_library_version},
+ "step.name" : "Given p = 'b'"
+ },
+ "metrics" : {
+ "step.endLine" : 6,
+ "step.startLine" : 6
+ },
+ "name" : "karate.step",
+ "parent_id" : ${content_parent_id_6},
+ "resource" : "Given p = 'b'",
+ "service" : "worker.org.gradle.process.internal.worker.gradleworkermain",
+ "span_id" : ${content_span_id_6},
+ "start" : ${content_start_6},
+ "trace_id" : ${content_trace_id_6}
+ },
+ "type" : "span",
+ "version" : 1
+}, {
+ "content" : {
+ "duration" : ${content_duration_7},
+ "error" : 0,
+ "meta" : {
+ "component" : "karate",
+ "env" : "none",
+ "library_version" : ${content_meta_library_version},
+ "step.name" : "Given p = 'c'"
+ },
+ "metrics" : {
+ "step.endLine" : 6,
+ "step.startLine" : 6
+ },
+ "name" : "karate.step",
+ "parent_id" : ${content_parent_id_7},
+ "resource" : "Given p = 'c'",
+ "service" : "worker.org.gradle.process.internal.worker.gradleworkermain",
+ "span_id" : ${content_span_id_7},
+ "start" : ${content_start_7},
+ "trace_id" : ${content_trace_id_7}
+ },
+ "type" : "span",
+ "version" : 1
+}, {
+ "content" : {
+ "duration" : ${content_duration_8},
+ "error" : 0,
+ "meta" : {
+ "component" : "karate",
+ "env" : "none",
+ "library_version" : ${content_meta_library_version},
+ "step.name" : "Then response == value"
+ },
+ "metrics" : {
+ "step.endLine" : 8,
+ "step.startLine" : 8
+ },
+ "name" : "karate.step",
+ "parent_id" : ${content_parent_id},
+ "resource" : "Then response == value",
+ "service" : "worker.org.gradle.process.internal.worker.gradleworkermain",
+ "span_id" : ${content_span_id_8},
+ "start" : ${content_start_8},
+ "trace_id" : ${content_trace_id}
+ },
+ "type" : "span",
+ "version" : 1
+}, {
+ "content" : {
+ "duration" : ${content_duration_9},
+ "error" : 0,
+ "meta" : {
+ "component" : "karate",
+ "env" : "none",
+ "library_version" : ${content_meta_library_version},
+ "step.name" : "Then response == value"
+ },
+ "metrics" : {
+ "step.endLine" : 8,
+ "step.startLine" : 8
+ },
+ "name" : "karate.step",
+ "parent_id" : ${content_parent_id_2},
+ "resource" : "Then response == value",
+ "service" : "worker.org.gradle.process.internal.worker.gradleworkermain",
+ "span_id" : ${content_span_id_9},
+ "start" : ${content_start_9},
+ "trace_id" : ${content_trace_id_2}
+ },
+ "type" : "span",
+ "version" : 1
+}, {
+ "content" : {
+ "duration" : ${content_duration_10},
+ "error" : 0,
+ "meta" : {
+ "component" : "karate",
+ "env" : "none",
+ "library_version" : ${content_meta_library_version},
+ "step.name" : "Then response == value"
+ },
+ "metrics" : {
+ "step.endLine" : 8,
+ "step.startLine" : 8
+ },
+ "name" : "karate.step",
+ "parent_id" : ${content_parent_id_3},
+ "resource" : "Then response == value",
+ "service" : "worker.org.gradle.process.internal.worker.gradleworkermain",
+ "span_id" : ${content_span_id_10},
+ "start" : ${content_start_10},
+ "trace_id" : ${content_trace_id_3}
+ },
+ "type" : "span",
+ "version" : 1
+}, {
+ "content" : {
+ "duration" : ${content_duration_11},
+ "error" : 0,
+ "meta" : {
+ "component" : "karate",
+ "env" : "none",
+ "library_version" : ${content_meta_library_version},
+ "step.name" : "Then response == value"
+ },
+ "metrics" : {
+ "step.endLine" : 8,
+ "step.startLine" : 8
+ },
+ "name" : "karate.step",
+ "parent_id" : ${content_parent_id_4},
+ "resource" : "Then response == value",
+ "service" : "worker.org.gradle.process.internal.worker.gradleworkermain",
+ "span_id" : ${content_span_id_11},
+ "start" : ${content_start_11},
+ "trace_id" : ${content_trace_id_4}
+ },
+ "type" : "span",
+ "version" : 1
+}, {
+ "content" : {
+ "duration" : ${content_duration_12},
+ "error" : 0,
+ "meta" : {
+ "component" : "karate",
+ "env" : "none",
+ "library_version" : ${content_meta_library_version},
+ "step.name" : "Then response == value"
+ },
+ "metrics" : {
+ "step.endLine" : 8,
+ "step.startLine" : 8
+ },
+ "name" : "karate.step",
+ "parent_id" : ${content_parent_id_5},
+ "resource" : "Then response == value",
+ "service" : "worker.org.gradle.process.internal.worker.gradleworkermain",
+ "span_id" : ${content_span_id_12},
+ "start" : ${content_start_12},
+ "trace_id" : ${content_trace_id_5}
+ },
+ "type" : "span",
+ "version" : 1
+}, {
+ "content" : {
+ "duration" : ${content_duration_13},
+ "error" : 0,
+ "meta" : {
+ "component" : "karate",
+ "env" : "none",
+ "library_version" : ${content_meta_library_version},
+ "step.name" : "Then response == value"
+ },
+ "metrics" : {
+ "step.endLine" : 8,
+ "step.startLine" : 8
+ },
+ "name" : "karate.step",
+ "parent_id" : ${content_parent_id_6},
+ "resource" : "Then response == value",
+ "service" : "worker.org.gradle.process.internal.worker.gradleworkermain",
+ "span_id" : ${content_span_id_13},
+ "start" : ${content_start_13},
+ "trace_id" : ${content_trace_id_6}
+ },
+ "type" : "span",
+ "version" : 1
+}, {
+ "content" : {
+ "duration" : ${content_duration_14},
+ "error" : 0,
+ "meta" : {
+ "component" : "karate",
+ "env" : "none",
+ "library_version" : ${content_meta_library_version},
+ "step.name" : "Then response == value"
+ },
+ "metrics" : {
+ "step.endLine" : 8,
+ "step.startLine" : 8
+ },
+ "name" : "karate.step",
+ "parent_id" : ${content_parent_id_7},
+ "resource" : "Then response == value",
+ "service" : "worker.org.gradle.process.internal.worker.gradleworkermain",
+ "span_id" : ${content_span_id_14},
+ "start" : ${content_start_14},
+ "trace_id" : ${content_trace_id_7}
+ },
+ "type" : "span",
+ "version" : 1
+}, {
+ "content" : {
+ "duration" : ${content_duration_15},
+ "error" : 0,
+ "meta" : {
+ "component" : "karate",
+ "env" : "none",
+ "library_version" : ${content_meta_library_version},
+ "step.name" : "When response = p + p"
+ },
+ "metrics" : {
+ "step.endLine" : 7,
+ "step.startLine" : 7
+ },
+ "name" : "karate.step",
+ "parent_id" : ${content_parent_id},
+ "resource" : "When response = p + p",
+ "service" : "worker.org.gradle.process.internal.worker.gradleworkermain",
+ "span_id" : ${content_span_id_15},
+ "start" : ${content_start_15},
+ "trace_id" : ${content_trace_id}
+ },
+ "type" : "span",
+ "version" : 1
+}, {
+ "content" : {
+ "duration" : ${content_duration_16},
+ "error" : 0,
+ "meta" : {
+ "component" : "karate",
+ "env" : "none",
+ "library_version" : ${content_meta_library_version},
+ "step.name" : "When response = p + p"
+ },
+ "metrics" : {
+ "step.endLine" : 7,
+ "step.startLine" : 7
+ },
+ "name" : "karate.step",
+ "parent_id" : ${content_parent_id_2},
+ "resource" : "When response = p + p",
+ "service" : "worker.org.gradle.process.internal.worker.gradleworkermain",
+ "span_id" : ${content_span_id_16},
+ "start" : ${content_start_16},
+ "trace_id" : ${content_trace_id_2}
+ },
+ "type" : "span",
+ "version" : 1
+}, {
+ "content" : {
+ "duration" : ${content_duration_17},
+ "error" : 0,
+ "meta" : {
+ "component" : "karate",
+ "env" : "none",
+ "library_version" : ${content_meta_library_version},
+ "step.name" : "When response = p + p"
+ },
+ "metrics" : {
+ "step.endLine" : 7,
+ "step.startLine" : 7
+ },
+ "name" : "karate.step",
+ "parent_id" : ${content_parent_id_3},
+ "resource" : "When response = p + p",
+ "service" : "worker.org.gradle.process.internal.worker.gradleworkermain",
+ "span_id" : ${content_span_id_17},
+ "start" : ${content_start_17},
+ "trace_id" : ${content_trace_id_3}
+ },
+ "type" : "span",
+ "version" : 1
+}, {
+ "content" : {
+ "duration" : ${content_duration_18},
+ "error" : 0,
+ "meta" : {
+ "component" : "karate",
+ "env" : "none",
+ "library_version" : ${content_meta_library_version},
+ "step.name" : "When response = p + p"
+ },
+ "metrics" : {
+ "step.endLine" : 7,
+ "step.startLine" : 7
+ },
+ "name" : "karate.step",
+ "parent_id" : ${content_parent_id_4},
+ "resource" : "When response = p + p",
+ "service" : "worker.org.gradle.process.internal.worker.gradleworkermain",
+ "span_id" : ${content_span_id_18},
+ "start" : ${content_start_18},
+ "trace_id" : ${content_trace_id_4}
+ },
+ "type" : "span",
+ "version" : 1
+}, {
+ "content" : {
+ "duration" : ${content_duration_19},
+ "error" : 0,
+ "meta" : {
+ "component" : "karate",
+ "env" : "none",
+ "library_version" : ${content_meta_library_version},
+ "step.name" : "When response = p + p"
+ },
+ "metrics" : {
+ "step.endLine" : 7,
+ "step.startLine" : 7
+ },
+ "name" : "karate.step",
+ "parent_id" : ${content_parent_id_5},
+ "resource" : "When response = p + p",
+ "service" : "worker.org.gradle.process.internal.worker.gradleworkermain",
+ "span_id" : ${content_span_id_19},
+ "start" : ${content_start_19},
+ "trace_id" : ${content_trace_id_5}
+ },
+ "type" : "span",
+ "version" : 1
+}, {
+ "content" : {
+ "duration" : ${content_duration_20},
+ "error" : 0,
+ "meta" : {
+ "component" : "karate",
+ "env" : "none",
+ "library_version" : ${content_meta_library_version},
+ "step.name" : "When response = p + p"
+ },
+ "metrics" : {
+ "step.endLine" : 7,
+ "step.startLine" : 7
+ },
+ "name" : "karate.step",
+ "parent_id" : ${content_parent_id_6},
+ "resource" : "When response = p + p",
+ "service" : "worker.org.gradle.process.internal.worker.gradleworkermain",
+ "span_id" : ${content_span_id_20},
+ "start" : ${content_start_20},
+ "trace_id" : ${content_trace_id_6}
+ },
+ "type" : "span",
+ "version" : 1
+}, {
+ "content" : {
+ "duration" : ${content_duration_21},
+ "error" : 0,
+ "meta" : {
+ "component" : "karate",
+ "env" : "none",
+ "library_version" : ${content_meta_library_version},
+ "step.name" : "When response = p + p"
+ },
+ "metrics" : {
+ "step.endLine" : 7,
+ "step.startLine" : 7
+ },
+ "name" : "karate.step",
+ "parent_id" : ${content_parent_id_7},
+ "resource" : "When response = p + p",
+ "service" : "worker.org.gradle.process.internal.worker.gradleworkermain",
+ "span_id" : ${content_span_id_21},
+ "start" : ${content_start_21},
+ "trace_id" : ${content_trace_id_7}
+ },
+ "type" : "span",
+ "version" : 1
+}, {
+ "content" : {
+ "duration" : ${content_duration_22},
+ "error" : 0,
+ "meta" : {
+ "_dd.p.tid" : ${content_meta__dd_p_tid},
+ "component" : "karate",
+ "dummy_ci_tag" : "dummy_ci_tag_value",
+ "env" : "none",
+ "library_version" : ${content_meta_library_version},
+ "span.kind" : "test_suite_end",
+ "test.framework" : "karate",
+ "test.framework_version" : ${content_meta_test_framework_version},
+ "test.module" : "karate-2.0",
+ "test.status" : "pass",
+ "test.suite" : "[org/example/test_parameterized_more_cases] test parameterized",
+ "test.type" : "test",
+ "test_session.name" : "session-name"
+ },
+ "metrics" : {
+ "_dd.host.vcpu_count" : ${content_metrics__dd_host_vcpu_count}
+ },
+ "name" : "karate.test_suite",
+ "resource" : "[org/example/test_parameterized_more_cases] test parameterized",
+ "service" : "worker.org.gradle.process.internal.worker.gradleworkermain",
+ "start" : ${content_start_22},
+ "test_module_id" : ${content_test_module_id},
+ "test_session_id" : ${content_test_session_id},
+ "test_suite_id" : ${content_test_suite_id}
+ },
+ "type" : "test_suite_end",
+ "version" : 1
+}, {
+ "content" : {
+ "duration" : ${content_duration_23},
+ "error" : 0,
+ "meta" : {
+ "_dd.profiling.ctx" : "test",
+ "_dd.tracer_host" : ${content_meta__dd_tracer_host},
+ "component" : "karate",
+ "dummy_ci_tag" : "dummy_ci_tag_value",
+ "env" : "none",
+ "language" : "jvm",
+ "library_version" : ${content_meta_library_version},
+ "runtime-id" : ${content_meta_runtime_id},
+ "span.kind" : "test",
+ "test.framework" : "karate",
+ "test.framework_version" : ${content_meta_test_framework_version},
+ "test.is_new" : "true",
+ "test.module" : "karate-2.0",
+ "test.name" : "first scenario as an outline",
+ "test.parameters" : "{\"param\":\"'a'\",\"value\":\"aa\"}",
+ "test.status" : "pass",
+ "test.suite" : "[org/example/test_parameterized_more_cases] test parameterized",
+ "test.type" : "test",
+ "test_session.name" : "session-name"
+ },
+ "metrics" : {
+ "_dd.host.vcpu_count" : ${content_metrics__dd_host_vcpu_count_2},
+ "_dd.profiling.enabled" : 0,
+ "_dd.trace_span_attribute_schema" : 0,
+ "process_id" : ${content_metrics_process_id}
+ },
+ "name" : "karate.test",
+ "parent_id" : ${content_parent_id_8},
+ "resource" : "[org/example/test_parameterized_more_cases] test parameterized.first scenario as an outline",
+ "service" : "worker.org.gradle.process.internal.worker.gradleworkermain",
+ "span_id" : ${content_parent_id},
+ "start" : ${content_start_23},
+ "test_module_id" : ${content_test_module_id},
+ "test_session_id" : ${content_test_session_id},
+ "test_suite_id" : ${content_test_suite_id},
+ "trace_id" : ${content_trace_id}
+ },
+ "type" : "test",
+ "version" : 2
+}, {
+ "content" : {
+ "duration" : ${content_duration_24},
+ "error" : 0,
+ "meta" : {
+ "_dd.profiling.ctx" : "test",
+ "_dd.tracer_host" : ${content_meta__dd_tracer_host},
+ "component" : "karate",
+ "dummy_ci_tag" : "dummy_ci_tag_value",
+ "env" : "none",
+ "language" : "jvm",
+ "library_version" : ${content_meta_library_version},
+ "runtime-id" : ${content_meta_runtime_id},
+ "span.kind" : "test",
+ "test.framework" : "karate",
+ "test.framework_version" : ${content_meta_test_framework_version},
+ "test.is_new" : "true",
+ "test.is_retry" : "true",
+ "test.module" : "karate-2.0",
+ "test.name" : "first scenario as an outline",
+ "test.parameters" : "{\"param\":\"'a'\",\"value\":\"aa\"}",
+ "test.retry_reason" : "early_flake_detection",
+ "test.status" : "pass",
+ "test.suite" : "[org/example/test_parameterized_more_cases] test parameterized",
+ "test.type" : "test",
+ "test_session.name" : "session-name"
+ },
+ "metrics" : {
+ "_dd.host.vcpu_count" : ${content_metrics__dd_host_vcpu_count_3},
+ "_dd.profiling.enabled" : 0,
+ "_dd.trace_span_attribute_schema" : 0,
+ "process_id" : ${content_metrics_process_id}
+ },
+ "name" : "karate.test",
+ "parent_id" : ${content_parent_id_8},
+ "resource" : "[org/example/test_parameterized_more_cases] test parameterized.first scenario as an outline",
+ "service" : "worker.org.gradle.process.internal.worker.gradleworkermain",
+ "span_id" : ${content_parent_id_2},
+ "start" : ${content_start_24},
+ "test_module_id" : ${content_test_module_id},
+ "test_session_id" : ${content_test_session_id},
+ "test_suite_id" : ${content_test_suite_id},
+ "trace_id" : ${content_trace_id_2}
+ },
+ "type" : "test",
+ "version" : 2
+}, {
+ "content" : {
+ "duration" : ${content_duration_25},
+ "error" : 0,
+ "meta" : {
+ "_dd.profiling.ctx" : "test",
+ "_dd.tracer_host" : ${content_meta__dd_tracer_host},
+ "component" : "karate",
+ "dummy_ci_tag" : "dummy_ci_tag_value",
+ "env" : "none",
+ "language" : "jvm",
+ "library_version" : ${content_meta_library_version},
+ "runtime-id" : ${content_meta_runtime_id},
+ "span.kind" : "test",
+ "test.final_status" : "pass",
+ "test.framework" : "karate",
+ "test.framework_version" : ${content_meta_test_framework_version},
+ "test.is_new" : "true",
+ "test.is_retry" : "true",
+ "test.module" : "karate-2.0",
+ "test.name" : "first scenario as an outline",
+ "test.parameters" : "{\"param\":\"'a'\",\"value\":\"aa\"}",
+ "test.retry_reason" : "early_flake_detection",
+ "test.status" : "pass",
+ "test.suite" : "[org/example/test_parameterized_more_cases] test parameterized",
+ "test.type" : "test",
+ "test_session.name" : "session-name"
+ },
+ "metrics" : {
+ "_dd.host.vcpu_count" : ${content_metrics__dd_host_vcpu_count_4},
+ "_dd.profiling.enabled" : 0,
+ "_dd.trace_span_attribute_schema" : 0,
+ "process_id" : ${content_metrics_process_id}
+ },
+ "name" : "karate.test",
+ "parent_id" : ${content_parent_id_8},
+ "resource" : "[org/example/test_parameterized_more_cases] test parameterized.first scenario as an outline",
+ "service" : "worker.org.gradle.process.internal.worker.gradleworkermain",
+ "span_id" : ${content_parent_id_3},
+ "start" : ${content_start_25},
+ "test_module_id" : ${content_test_module_id},
+ "test_session_id" : ${content_test_session_id},
+ "test_suite_id" : ${content_test_suite_id},
+ "trace_id" : ${content_trace_id_3}
+ },
+ "type" : "test",
+ "version" : 2
+}, {
+ "content" : {
+ "duration" : ${content_duration_26},
+ "error" : 0,
+ "meta" : {
+ "_dd.profiling.ctx" : "test",
+ "_dd.tracer_host" : ${content_meta__dd_tracer_host},
+ "component" : "karate",
+ "dummy_ci_tag" : "dummy_ci_tag_value",
+ "env" : "none",
+ "language" : "jvm",
+ "library_version" : ${content_meta_library_version},
+ "runtime-id" : ${content_meta_runtime_id},
+ "span.kind" : "test",
+ "test.framework" : "karate",
+ "test.framework_version" : ${content_meta_test_framework_version},
+ "test.is_new" : "true",
+ "test.module" : "karate-2.0",
+ "test.name" : "first scenario as an outline",
+ "test.parameters" : "{\"param\":\"'b'\",\"value\":\"bb\"}",
+ "test.status" : "pass",
+ "test.suite" : "[org/example/test_parameterized_more_cases] test parameterized",
+ "test.type" : "test",
+ "test_session.name" : "session-name"
+ },
+ "metrics" : {
+ "_dd.host.vcpu_count" : ${content_metrics__dd_host_vcpu_count_5},
+ "_dd.profiling.enabled" : 0,
+ "_dd.trace_span_attribute_schema" : 0,
+ "process_id" : ${content_metrics_process_id}
+ },
+ "name" : "karate.test",
+ "parent_id" : ${content_parent_id_8},
+ "resource" : "[org/example/test_parameterized_more_cases] test parameterized.first scenario as an outline",
+ "service" : "worker.org.gradle.process.internal.worker.gradleworkermain",
+ "span_id" : ${content_parent_id_4},
+ "start" : ${content_start_26},
+ "test_module_id" : ${content_test_module_id},
+ "test_session_id" : ${content_test_session_id},
+ "test_suite_id" : ${content_test_suite_id},
+ "trace_id" : ${content_trace_id_4}
+ },
+ "type" : "test",
+ "version" : 2
+}, {
+ "content" : {
+ "duration" : ${content_duration_27},
+ "error" : 0,
+ "meta" : {
+ "_dd.profiling.ctx" : "test",
+ "_dd.tracer_host" : ${content_meta__dd_tracer_host},
+ "component" : "karate",
+ "dummy_ci_tag" : "dummy_ci_tag_value",
+ "env" : "none",
+ "language" : "jvm",
+ "library_version" : ${content_meta_library_version},
+ "runtime-id" : ${content_meta_runtime_id},
+ "span.kind" : "test",
+ "test.framework" : "karate",
+ "test.framework_version" : ${content_meta_test_framework_version},
+ "test.is_new" : "true",
+ "test.is_retry" : "true",
+ "test.module" : "karate-2.0",
+ "test.name" : "first scenario as an outline",
+ "test.parameters" : "{\"param\":\"'b'\",\"value\":\"bb\"}",
+ "test.retry_reason" : "early_flake_detection",
+ "test.status" : "pass",
+ "test.suite" : "[org/example/test_parameterized_more_cases] test parameterized",
+ "test.type" : "test",
+ "test_session.name" : "session-name"
+ },
+ "metrics" : {
+ "_dd.host.vcpu_count" : ${content_metrics__dd_host_vcpu_count_6},
+ "_dd.profiling.enabled" : 0,
+ "_dd.trace_span_attribute_schema" : 0,
+ "process_id" : ${content_metrics_process_id}
+ },
+ "name" : "karate.test",
+ "parent_id" : ${content_parent_id_8},
+ "resource" : "[org/example/test_parameterized_more_cases] test parameterized.first scenario as an outline",
+ "service" : "worker.org.gradle.process.internal.worker.gradleworkermain",
+ "span_id" : ${content_parent_id_5},
+ "start" : ${content_start_27},
+ "test_module_id" : ${content_test_module_id},
+ "test_session_id" : ${content_test_session_id},
+ "test_suite_id" : ${content_test_suite_id},
+ "trace_id" : ${content_trace_id_5}
+ },
+ "type" : "test",
+ "version" : 2
+}, {
+ "content" : {
+ "duration" : ${content_duration_28},
+ "error" : 0,
+ "meta" : {
+ "_dd.profiling.ctx" : "test",
+ "_dd.tracer_host" : ${content_meta__dd_tracer_host},
+ "component" : "karate",
+ "dummy_ci_tag" : "dummy_ci_tag_value",
+ "env" : "none",
+ "language" : "jvm",
+ "library_version" : ${content_meta_library_version},
+ "runtime-id" : ${content_meta_runtime_id},
+ "span.kind" : "test",
+ "test.final_status" : "pass",
+ "test.framework" : "karate",
+ "test.framework_version" : ${content_meta_test_framework_version},
+ "test.is_new" : "true",
+ "test.is_retry" : "true",
+ "test.module" : "karate-2.0",
+ "test.name" : "first scenario as an outline",
+ "test.parameters" : "{\"param\":\"'b'\",\"value\":\"bb\"}",
+ "test.retry_reason" : "early_flake_detection",
+ "test.status" : "pass",
+ "test.suite" : "[org/example/test_parameterized_more_cases] test parameterized",
+ "test.type" : "test",
+ "test_session.name" : "session-name"
+ },
+ "metrics" : {
+ "_dd.host.vcpu_count" : ${content_metrics__dd_host_vcpu_count_7},
+ "_dd.profiling.enabled" : 0,
+ "_dd.trace_span_attribute_schema" : 0,
+ "process_id" : ${content_metrics_process_id}
+ },
+ "name" : "karate.test",
+ "parent_id" : ${content_parent_id_8},
+ "resource" : "[org/example/test_parameterized_more_cases] test parameterized.first scenario as an outline",
+ "service" : "worker.org.gradle.process.internal.worker.gradleworkermain",
+ "span_id" : ${content_parent_id_6},
+ "start" : ${content_start_28},
+ "test_module_id" : ${content_test_module_id},
+ "test_session_id" : ${content_test_session_id},
+ "test_suite_id" : ${content_test_suite_id},
+ "trace_id" : ${content_trace_id_6}
+ },
+ "type" : "test",
+ "version" : 2
+}, {
+ "content" : {
+ "duration" : ${content_duration_29},
+ "error" : 0,
+ "meta" : {
+ "_dd.profiling.ctx" : "test",
+ "_dd.tracer_host" : ${content_meta__dd_tracer_host},
+ "component" : "karate",
+ "dummy_ci_tag" : "dummy_ci_tag_value",
+ "env" : "none",
+ "language" : "jvm",
+ "library_version" : ${content_meta_library_version},
+ "runtime-id" : ${content_meta_runtime_id},
+ "span.kind" : "test",
+ "test.final_status" : "pass",
+ "test.framework" : "karate",
+ "test.framework_version" : ${content_meta_test_framework_version},
+ "test.is_new" : "true",
+ "test.module" : "karate-2.0",
+ "test.name" : "first scenario as an outline",
+ "test.parameters" : "{\"param\":\"'c'\",\"value\":\"cc\"}",
+ "test.status" : "pass",
+ "test.suite" : "[org/example/test_parameterized_more_cases] test parameterized",
+ "test.type" : "test",
+ "test_session.name" : "session-name"
+ },
+ "metrics" : {
+ "_dd.host.vcpu_count" : ${content_metrics__dd_host_vcpu_count_8},
+ "_dd.profiling.enabled" : 0,
+ "_dd.trace_span_attribute_schema" : 0,
+ "process_id" : ${content_metrics_process_id}
+ },
+ "name" : "karate.test",
+ "parent_id" : ${content_parent_id_8},
+ "resource" : "[org/example/test_parameterized_more_cases] test parameterized.first scenario as an outline",
+ "service" : "worker.org.gradle.process.internal.worker.gradleworkermain",
+ "span_id" : ${content_parent_id_7},
+ "start" : ${content_start_29},
+ "test_module_id" : ${content_test_module_id},
+ "test_session_id" : ${content_test_session_id},
+ "test_suite_id" : ${content_test_suite_id},
+ "trace_id" : ${content_trace_id_7}
+ },
+ "type" : "test",
+ "version" : 2
+}, {
+ "content" : {
+ "duration" : ${content_duration_30},
+ "error" : 0,
+ "meta" : {
+ "_dd.p.tid" : ${content_meta__dd_p_tid_2},
+ "_dd.profiling.ctx" : "test",
+ "_dd.tracer_host" : ${content_meta__dd_tracer_host},
+ "component" : "karate",
+ "dummy_ci_tag" : "dummy_ci_tag_value",
+ "env" : "none",
+ "language" : "jvm",
+ "library_version" : ${content_meta_library_version},
+ "runtime-id" : ${content_meta_runtime_id},
+ "span.kind" : "test_session_end",
+ "test.command" : "karate-2.0",
+ "test.early_flake.abort_reason" : "faulty",
+ "test.early_flake.enabled" : "true",
+ "test.framework" : "karate",
+ "test.framework_version" : ${content_meta_test_framework_version},
+ "test.status" : "pass",
+ "test.type" : "test",
+ "test_session.name" : "session-name"
+ },
+ "metrics" : {
+ "_dd.host.vcpu_count" : ${content_metrics__dd_host_vcpu_count_9},
+ "_dd.profiling.enabled" : 0,
+ "_dd.trace_span_attribute_schema" : 0,
+ "process_id" : ${content_metrics_process_id}
+ },
+ "name" : "karate.test_session",
+ "resource" : "karate-2.0",
+ "service" : "worker.org.gradle.process.internal.worker.gradleworkermain",
+ "start" : ${content_start_30},
+ "test_session_id" : ${content_test_session_id}
+ },
+ "type" : "test_session_end",
+ "version" : 1
+}, {
+ "content" : {
+ "duration" : ${content_duration_31},
+ "error" : 0,
+ "meta" : {
+ "_dd.p.tid" : ${content_meta__dd_p_tid_3},
+ "component" : "karate",
+ "dummy_ci_tag" : "dummy_ci_tag_value",
+ "env" : "none",
+ "library_version" : ${content_meta_library_version},
+ "span.kind" : "test_module_end",
+ "test.early_flake.abort_reason" : "faulty",
+ "test.early_flake.enabled" : "true",
+ "test.framework" : "karate",
+ "test.framework_version" : ${content_meta_test_framework_version},
+ "test.module" : "karate-2.0",
+ "test.status" : "pass",
+ "test.type" : "test",
+ "test_session.name" : "session-name"
+ },
+ "metrics" : {
+ "_dd.host.vcpu_count" : ${content_metrics__dd_host_vcpu_count_10}
+ },
+ "name" : "karate.test_module",
+ "resource" : "karate-2.0",
+ "service" : "worker.org.gradle.process.internal.worker.gradleworkermain",
+ "start" : ${content_start_31},
+ "test_module_id" : ${content_test_module_id},
+ "test_session_id" : ${content_test_session_id}
+ },
+ "type" : "test_module_end",
+ "version" : 1
+} ]
\ No newline at end of file
diff --git a/dd-java-agent/instrumentation/karate/karate-2.0/src/test/resources/test-efd-known-parameterized-test/coverages.ftl b/dd-java-agent/instrumentation/karate/karate-2.0/src/test/resources/test-efd-known-parameterized-test/coverages.ftl
new file mode 100644
index 00000000000..8878e547a79
--- /dev/null
+++ b/dd-java-agent/instrumentation/karate/karate-2.0/src/test/resources/test-efd-known-parameterized-test/coverages.ftl
@@ -0,0 +1 @@
+[ ]
\ No newline at end of file
diff --git a/dd-java-agent/instrumentation/karate/karate-2.0/src/test/resources/test-efd-known-parameterized-test/events.ftl b/dd-java-agent/instrumentation/karate/karate-2.0/src/test/resources/test-efd-known-parameterized-test/events.ftl
new file mode 100644
index 00000000000..e932f698ef1
--- /dev/null
+++ b/dd-java-agent/instrumentation/karate/karate-2.0/src/test/resources/test-efd-known-parameterized-test/events.ftl
@@ -0,0 +1,333 @@
+[ {
+ "content" : {
+ "duration" : ${content_duration},
+ "error" : 0,
+ "meta" : {
+ "component" : "karate",
+ "env" : "none",
+ "library_version" : ${content_meta_library_version},
+ "step.name" : "Given p = 'a'"
+ },
+ "metrics" : {
+ "step.endLine" : 6,
+ "step.startLine" : 6
+ },
+ "name" : "karate.step",
+ "parent_id" : ${content_parent_id},
+ "resource" : "Given p = 'a'",
+ "service" : "worker.org.gradle.process.internal.worker.gradleworkermain",
+ "span_id" : ${content_span_id},
+ "start" : ${content_start},
+ "trace_id" : ${content_trace_id}
+ },
+ "type" : "span",
+ "version" : 1
+}, {
+ "content" : {
+ "duration" : ${content_duration_2},
+ "error" : 0,
+ "meta" : {
+ "component" : "karate",
+ "env" : "none",
+ "library_version" : ${content_meta_library_version},
+ "step.name" : "Given p = 'b'"
+ },
+ "metrics" : {
+ "step.endLine" : 6,
+ "step.startLine" : 6
+ },
+ "name" : "karate.step",
+ "parent_id" : ${content_parent_id_2},
+ "resource" : "Given p = 'b'",
+ "service" : "worker.org.gradle.process.internal.worker.gradleworkermain",
+ "span_id" : ${content_span_id_2},
+ "start" : ${content_start_2},
+ "trace_id" : ${content_trace_id_2}
+ },
+ "type" : "span",
+ "version" : 1
+}, {
+ "content" : {
+ "duration" : ${content_duration_3},
+ "error" : 0,
+ "meta" : {
+ "component" : "karate",
+ "env" : "none",
+ "library_version" : ${content_meta_library_version},
+ "step.name" : "Then response == value"
+ },
+ "metrics" : {
+ "step.endLine" : 8,
+ "step.startLine" : 8
+ },
+ "name" : "karate.step",
+ "parent_id" : ${content_parent_id},
+ "resource" : "Then response == value",
+ "service" : "worker.org.gradle.process.internal.worker.gradleworkermain",
+ "span_id" : ${content_span_id_3},
+ "start" : ${content_start_3},
+ "trace_id" : ${content_trace_id}
+ },
+ "type" : "span",
+ "version" : 1
+}, {
+ "content" : {
+ "duration" : ${content_duration_4},
+ "error" : 0,
+ "meta" : {
+ "component" : "karate",
+ "env" : "none",
+ "library_version" : ${content_meta_library_version},
+ "step.name" : "Then response == value"
+ },
+ "metrics" : {
+ "step.endLine" : 8,
+ "step.startLine" : 8
+ },
+ "name" : "karate.step",
+ "parent_id" : ${content_parent_id_2},
+ "resource" : "Then response == value",
+ "service" : "worker.org.gradle.process.internal.worker.gradleworkermain",
+ "span_id" : ${content_span_id_4},
+ "start" : ${content_start_4},
+ "trace_id" : ${content_trace_id_2}
+ },
+ "type" : "span",
+ "version" : 1
+}, {
+ "content" : {
+ "duration" : ${content_duration_5},
+ "error" : 0,
+ "meta" : {
+ "component" : "karate",
+ "env" : "none",
+ "library_version" : ${content_meta_library_version},
+ "step.name" : "When response = p + p"
+ },
+ "metrics" : {
+ "step.endLine" : 7,
+ "step.startLine" : 7
+ },
+ "name" : "karate.step",
+ "parent_id" : ${content_parent_id},
+ "resource" : "When response = p + p",
+ "service" : "worker.org.gradle.process.internal.worker.gradleworkermain",
+ "span_id" : ${content_span_id_5},
+ "start" : ${content_start_5},
+ "trace_id" : ${content_trace_id}
+ },
+ "type" : "span",
+ "version" : 1
+}, {
+ "content" : {
+ "duration" : ${content_duration_6},
+ "error" : 0,
+ "meta" : {
+ "component" : "karate",
+ "env" : "none",
+ "library_version" : ${content_meta_library_version},
+ "step.name" : "When response = p + p"
+ },
+ "metrics" : {
+ "step.endLine" : 7,
+ "step.startLine" : 7
+ },
+ "name" : "karate.step",
+ "parent_id" : ${content_parent_id_2},
+ "resource" : "When response = p + p",
+ "service" : "worker.org.gradle.process.internal.worker.gradleworkermain",
+ "span_id" : ${content_span_id_6},
+ "start" : ${content_start_6},
+ "trace_id" : ${content_trace_id_2}
+ },
+ "type" : "span",
+ "version" : 1
+}, {
+ "content" : {
+ "duration" : ${content_duration_7},
+ "error" : 0,
+ "meta" : {
+ "_dd.p.tid" : ${content_meta__dd_p_tid},
+ "component" : "karate",
+ "dummy_ci_tag" : "dummy_ci_tag_value",
+ "env" : "none",
+ "library_version" : ${content_meta_library_version},
+ "span.kind" : "test_suite_end",
+ "test.framework" : "karate",
+ "test.framework_version" : ${content_meta_test_framework_version},
+ "test.module" : "karate-2.0",
+ "test.status" : "pass",
+ "test.suite" : "[org/example/test_parameterized] test parameterized",
+ "test.type" : "test",
+ "test_session.name" : "session-name"
+ },
+ "metrics" : {
+ "_dd.host.vcpu_count" : ${content_metrics__dd_host_vcpu_count}
+ },
+ "name" : "karate.test_suite",
+ "resource" : "[org/example/test_parameterized] test parameterized",
+ "service" : "worker.org.gradle.process.internal.worker.gradleworkermain",
+ "start" : ${content_start_7},
+ "test_module_id" : ${content_test_module_id},
+ "test_session_id" : ${content_test_session_id},
+ "test_suite_id" : ${content_test_suite_id}
+ },
+ "type" : "test_suite_end",
+ "version" : 1
+}, {
+ "content" : {
+ "duration" : ${content_duration_8},
+ "error" : 0,
+ "meta" : {
+ "_dd.profiling.ctx" : "test",
+ "_dd.tracer_host" : ${content_meta__dd_tracer_host},
+ "component" : "karate",
+ "dummy_ci_tag" : "dummy_ci_tag_value",
+ "env" : "none",
+ "language" : "jvm",
+ "library_version" : ${content_meta_library_version},
+ "runtime-id" : ${content_meta_runtime_id},
+ "span.kind" : "test",
+ "test.final_status" : "pass",
+ "test.framework" : "karate",
+ "test.framework_version" : ${content_meta_test_framework_version},
+ "test.module" : "karate-2.0",
+ "test.name" : "first scenario as an outline",
+ "test.parameters" : "{\"param\":\"'a'\",\"value\":\"aa\"}",
+ "test.status" : "pass",
+ "test.suite" : "[org/example/test_parameterized] test parameterized",
+ "test.type" : "test",
+ "test_session.name" : "session-name"
+ },
+ "metrics" : {
+ "_dd.host.vcpu_count" : ${content_metrics__dd_host_vcpu_count_2},
+ "_dd.profiling.enabled" : 0,
+ "_dd.trace_span_attribute_schema" : 0,
+ "process_id" : ${content_metrics_process_id}
+ },
+ "name" : "karate.test",
+ "parent_id" : ${content_parent_id_3},
+ "resource" : "[org/example/test_parameterized] test parameterized.first scenario as an outline",
+ "service" : "worker.org.gradle.process.internal.worker.gradleworkermain",
+ "span_id" : ${content_parent_id},
+ "start" : ${content_start_8},
+ "test_module_id" : ${content_test_module_id},
+ "test_session_id" : ${content_test_session_id},
+ "test_suite_id" : ${content_test_suite_id},
+ "trace_id" : ${content_trace_id}
+ },
+ "type" : "test",
+ "version" : 2
+}, {
+ "content" : {
+ "duration" : ${content_duration_9},
+ "error" : 0,
+ "meta" : {
+ "_dd.profiling.ctx" : "test",
+ "_dd.tracer_host" : ${content_meta__dd_tracer_host},
+ "component" : "karate",
+ "dummy_ci_tag" : "dummy_ci_tag_value",
+ "env" : "none",
+ "language" : "jvm",
+ "library_version" : ${content_meta_library_version},
+ "runtime-id" : ${content_meta_runtime_id},
+ "span.kind" : "test",
+ "test.final_status" : "pass",
+ "test.framework" : "karate",
+ "test.framework_version" : ${content_meta_test_framework_version},
+ "test.module" : "karate-2.0",
+ "test.name" : "first scenario as an outline",
+ "test.parameters" : "{\"param\":\"'b'\",\"value\":\"bb\"}",
+ "test.status" : "pass",
+ "test.suite" : "[org/example/test_parameterized] test parameterized",
+ "test.type" : "test",
+ "test_session.name" : "session-name"
+ },
+ "metrics" : {
+ "_dd.host.vcpu_count" : ${content_metrics__dd_host_vcpu_count_3},
+ "_dd.profiling.enabled" : 0,
+ "_dd.trace_span_attribute_schema" : 0,
+ "process_id" : ${content_metrics_process_id}
+ },
+ "name" : "karate.test",
+ "parent_id" : ${content_parent_id_3},
+ "resource" : "[org/example/test_parameterized] test parameterized.first scenario as an outline",
+ "service" : "worker.org.gradle.process.internal.worker.gradleworkermain",
+ "span_id" : ${content_parent_id_2},
+ "start" : ${content_start_9},
+ "test_module_id" : ${content_test_module_id},
+ "test_session_id" : ${content_test_session_id},
+ "test_suite_id" : ${content_test_suite_id},
+ "trace_id" : ${content_trace_id_2}
+ },
+ "type" : "test",
+ "version" : 2
+}, {
+ "content" : {
+ "duration" : ${content_duration_10},
+ "error" : 0,
+ "meta" : {
+ "_dd.p.tid" : ${content_meta__dd_p_tid_2},
+ "_dd.profiling.ctx" : "test",
+ "_dd.tracer_host" : ${content_meta__dd_tracer_host},
+ "component" : "karate",
+ "dummy_ci_tag" : "dummy_ci_tag_value",
+ "env" : "none",
+ "language" : "jvm",
+ "library_version" : ${content_meta_library_version},
+ "runtime-id" : ${content_meta_runtime_id},
+ "span.kind" : "test_session_end",
+ "test.command" : "karate-2.0",
+ "test.early_flake.enabled" : "true",
+ "test.framework" : "karate",
+ "test.framework_version" : ${content_meta_test_framework_version},
+ "test.status" : "pass",
+ "test.type" : "test",
+ "test_session.name" : "session-name"
+ },
+ "metrics" : {
+ "_dd.host.vcpu_count" : ${content_metrics__dd_host_vcpu_count_4},
+ "_dd.profiling.enabled" : 0,
+ "_dd.trace_span_attribute_schema" : 0,
+ "process_id" : ${content_metrics_process_id}
+ },
+ "name" : "karate.test_session",
+ "resource" : "karate-2.0",
+ "service" : "worker.org.gradle.process.internal.worker.gradleworkermain",
+ "start" : ${content_start_10},
+ "test_session_id" : ${content_test_session_id}
+ },
+ "type" : "test_session_end",
+ "version" : 1
+}, {
+ "content" : {
+ "duration" : ${content_duration_11},
+ "error" : 0,
+ "meta" : {
+ "_dd.p.tid" : ${content_meta__dd_p_tid_3},
+ "component" : "karate",
+ "dummy_ci_tag" : "dummy_ci_tag_value",
+ "env" : "none",
+ "library_version" : ${content_meta_library_version},
+ "span.kind" : "test_module_end",
+ "test.early_flake.enabled" : "true",
+ "test.framework" : "karate",
+ "test.framework_version" : ${content_meta_test_framework_version},
+ "test.module" : "karate-2.0",
+ "test.status" : "pass",
+ "test.type" : "test",
+ "test_session.name" : "session-name"
+ },
+ "metrics" : {
+ "_dd.host.vcpu_count" : ${content_metrics__dd_host_vcpu_count_5}
+ },
+ "name" : "karate.test_module",
+ "resource" : "karate-2.0",
+ "service" : "worker.org.gradle.process.internal.worker.gradleworkermain",
+ "start" : ${content_start_11},
+ "test_module_id" : ${content_test_module_id},
+ "test_session_id" : ${content_test_session_id}
+ },
+ "type" : "test_module_end",
+ "version" : 1
+} ]
\ No newline at end of file
diff --git a/dd-java-agent/instrumentation/karate/karate-2.0/src/test/resources/test-efd-known-test/coverages.ftl b/dd-java-agent/instrumentation/karate/karate-2.0/src/test/resources/test-efd-known-test/coverages.ftl
new file mode 100644
index 00000000000..8878e547a79
--- /dev/null
+++ b/dd-java-agent/instrumentation/karate/karate-2.0/src/test/resources/test-efd-known-test/coverages.ftl
@@ -0,0 +1 @@
+[ ]
\ No newline at end of file
diff --git a/dd-java-agent/instrumentation/karate/karate-2.0/src/test/resources/test-efd-known-test/events.ftl b/dd-java-agent/instrumentation/karate/karate-2.0/src/test/resources/test-efd-known-test/events.ftl
new file mode 100644
index 00000000000..9a7f0fe3d8c
--- /dev/null
+++ b/dd-java-agent/instrumentation/karate/karate-2.0/src/test/resources/test-efd-known-test/events.ftl
@@ -0,0 +1,170 @@
+[ {
+ "content" : {
+ "duration" : ${content_duration},
+ "error" : 0,
+ "meta" : {
+ "component" : "karate",
+ "env" : "none",
+ "library_version" : ${content_meta_library_version},
+ "step.name" : "* 'first'"
+ },
+ "metrics" : {
+ "step.endLine" : 6,
+ "step.startLine" : 6
+ },
+ "name" : "karate.step",
+ "parent_id" : ${content_parent_id},
+ "resource" : "* 'first'",
+ "service" : "worker.org.gradle.process.internal.worker.gradleworkermain",
+ "span_id" : ${content_span_id},
+ "start" : ${content_start},
+ "trace_id" : ${content_trace_id}
+ },
+ "type" : "span",
+ "version" : 1
+}, {
+ "content" : {
+ "duration" : ${content_duration_2},
+ "error" : 0,
+ "meta" : {
+ "_dd.p.tid" : ${content_meta__dd_p_tid},
+ "component" : "karate",
+ "dummy_ci_tag" : "dummy_ci_tag_value",
+ "env" : "none",
+ "library_version" : ${content_meta_library_version},
+ "span.kind" : "test_suite_end",
+ "test.framework" : "karate",
+ "test.framework_version" : ${content_meta_test_framework_version},
+ "test.module" : "karate-2.0",
+ "test.status" : "pass",
+ "test.suite" : "[org/example/test_succeed_one_case] test succeed",
+ "test.traits" : "{\"category\":[\"foo\"]}",
+ "test.type" : "test",
+ "test_session.name" : "session-name"
+ },
+ "metrics" : {
+ "_dd.host.vcpu_count" : ${content_metrics__dd_host_vcpu_count}
+ },
+ "name" : "karate.test_suite",
+ "resource" : "[org/example/test_succeed_one_case] test succeed",
+ "service" : "worker.org.gradle.process.internal.worker.gradleworkermain",
+ "start" : ${content_start_2},
+ "test_module_id" : ${content_test_module_id},
+ "test_session_id" : ${content_test_session_id},
+ "test_suite_id" : ${content_test_suite_id}
+ },
+ "type" : "test_suite_end",
+ "version" : 1
+}, {
+ "content" : {
+ "duration" : ${content_duration_3},
+ "error" : 0,
+ "meta" : {
+ "_dd.profiling.ctx" : "test",
+ "_dd.tracer_host" : ${content_meta__dd_tracer_host},
+ "component" : "karate",
+ "dummy_ci_tag" : "dummy_ci_tag_value",
+ "env" : "none",
+ "language" : "jvm",
+ "library_version" : ${content_meta_library_version},
+ "runtime-id" : ${content_meta_runtime_id},
+ "span.kind" : "test",
+ "test.final_status" : "pass",
+ "test.framework" : "karate",
+ "test.framework_version" : ${content_meta_test_framework_version},
+ "test.module" : "karate-2.0",
+ "test.name" : "first scenario",
+ "test.status" : "pass",
+ "test.suite" : "[org/example/test_succeed_one_case] test succeed",
+ "test.traits" : "{\"category\":[\"foo\",\"bar\"]}",
+ "test.type" : "test",
+ "test_session.name" : "session-name"
+ },
+ "metrics" : {
+ "_dd.host.vcpu_count" : ${content_metrics__dd_host_vcpu_count_2},
+ "_dd.profiling.enabled" : 0,
+ "_dd.trace_span_attribute_schema" : 0,
+ "process_id" : ${content_metrics_process_id}
+ },
+ "name" : "karate.test",
+ "parent_id" : ${content_parent_id_2},
+ "resource" : "[org/example/test_succeed_one_case] test succeed.first scenario",
+ "service" : "worker.org.gradle.process.internal.worker.gradleworkermain",
+ "span_id" : ${content_parent_id},
+ "start" : ${content_start_3},
+ "test_module_id" : ${content_test_module_id},
+ "test_session_id" : ${content_test_session_id},
+ "test_suite_id" : ${content_test_suite_id},
+ "trace_id" : ${content_trace_id}
+ },
+ "type" : "test",
+ "version" : 2
+}, {
+ "content" : {
+ "duration" : ${content_duration_4},
+ "error" : 0,
+ "meta" : {
+ "_dd.p.tid" : ${content_meta__dd_p_tid_2},
+ "_dd.profiling.ctx" : "test",
+ "_dd.tracer_host" : ${content_meta__dd_tracer_host},
+ "component" : "karate",
+ "dummy_ci_tag" : "dummy_ci_tag_value",
+ "env" : "none",
+ "language" : "jvm",
+ "library_version" : ${content_meta_library_version},
+ "runtime-id" : ${content_meta_runtime_id},
+ "span.kind" : "test_session_end",
+ "test.command" : "karate-2.0",
+ "test.early_flake.enabled" : "true",
+ "test.framework" : "karate",
+ "test.framework_version" : ${content_meta_test_framework_version},
+ "test.status" : "pass",
+ "test.type" : "test",
+ "test_session.name" : "session-name"
+ },
+ "metrics" : {
+ "_dd.host.vcpu_count" : ${content_metrics__dd_host_vcpu_count_3},
+ "_dd.profiling.enabled" : 0,
+ "_dd.trace_span_attribute_schema" : 0,
+ "process_id" : ${content_metrics_process_id}
+ },
+ "name" : "karate.test_session",
+ "resource" : "karate-2.0",
+ "service" : "worker.org.gradle.process.internal.worker.gradleworkermain",
+ "start" : ${content_start_4},
+ "test_session_id" : ${content_test_session_id}
+ },
+ "type" : "test_session_end",
+ "version" : 1
+}, {
+ "content" : {
+ "duration" : ${content_duration_5},
+ "error" : 0,
+ "meta" : {
+ "_dd.p.tid" : ${content_meta__dd_p_tid_3},
+ "component" : "karate",
+ "dummy_ci_tag" : "dummy_ci_tag_value",
+ "env" : "none",
+ "library_version" : ${content_meta_library_version},
+ "span.kind" : "test_module_end",
+ "test.early_flake.enabled" : "true",
+ "test.framework" : "karate",
+ "test.framework_version" : ${content_meta_test_framework_version},
+ "test.module" : "karate-2.0",
+ "test.status" : "pass",
+ "test.type" : "test",
+ "test_session.name" : "session-name"
+ },
+ "metrics" : {
+ "_dd.host.vcpu_count" : ${content_metrics__dd_host_vcpu_count_4}
+ },
+ "name" : "karate.test_module",
+ "resource" : "karate-2.0",
+ "service" : "worker.org.gradle.process.internal.worker.gradleworkermain",
+ "start" : ${content_start_5},
+ "test_module_id" : ${content_test_module_id},
+ "test_session_id" : ${content_test_session_id}
+ },
+ "type" : "test_module_end",
+ "version" : 1
+} ]
\ No newline at end of file
diff --git a/dd-java-agent/instrumentation/karate/karate-2.0/src/test/resources/test-efd-new-parameterized-test/coverages.ftl b/dd-java-agent/instrumentation/karate/karate-2.0/src/test/resources/test-efd-new-parameterized-test/coverages.ftl
new file mode 100644
index 00000000000..8878e547a79
--- /dev/null
+++ b/dd-java-agent/instrumentation/karate/karate-2.0/src/test/resources/test-efd-new-parameterized-test/coverages.ftl
@@ -0,0 +1 @@
+[ ]
\ No newline at end of file
diff --git a/dd-java-agent/instrumentation/karate/karate-2.0/src/test/resources/test-efd-new-parameterized-test/events.ftl b/dd-java-agent/instrumentation/karate/karate-2.0/src/test/resources/test-efd-new-parameterized-test/events.ftl
new file mode 100644
index 00000000000..d9413043788
--- /dev/null
+++ b/dd-java-agent/instrumentation/karate/karate-2.0/src/test/resources/test-efd-new-parameterized-test/events.ftl
@@ -0,0 +1,809 @@
+[ {
+ "content" : {
+ "duration" : ${content_duration},
+ "error" : 0,
+ "meta" : {
+ "component" : "karate",
+ "env" : "none",
+ "library_version" : ${content_meta_library_version},
+ "step.name" : "Given p = 'a'"
+ },
+ "metrics" : {
+ "step.endLine" : 6,
+ "step.startLine" : 6
+ },
+ "name" : "karate.step",
+ "parent_id" : ${content_parent_id},
+ "resource" : "Given p = 'a'",
+ "service" : "worker.org.gradle.process.internal.worker.gradleworkermain",
+ "span_id" : ${content_span_id},
+ "start" : ${content_start},
+ "trace_id" : ${content_trace_id}
+ },
+ "type" : "span",
+ "version" : 1
+}, {
+ "content" : {
+ "duration" : ${content_duration_2},
+ "error" : 0,
+ "meta" : {
+ "component" : "karate",
+ "env" : "none",
+ "library_version" : ${content_meta_library_version},
+ "step.name" : "Given p = 'a'"
+ },
+ "metrics" : {
+ "step.endLine" : 6,
+ "step.startLine" : 6
+ },
+ "name" : "karate.step",
+ "parent_id" : ${content_parent_id_2},
+ "resource" : "Given p = 'a'",
+ "service" : "worker.org.gradle.process.internal.worker.gradleworkermain",
+ "span_id" : ${content_span_id_2},
+ "start" : ${content_start_2},
+ "trace_id" : ${content_trace_id_2}
+ },
+ "type" : "span",
+ "version" : 1
+}, {
+ "content" : {
+ "duration" : ${content_duration_3},
+ "error" : 0,
+ "meta" : {
+ "component" : "karate",
+ "env" : "none",
+ "library_version" : ${content_meta_library_version},
+ "step.name" : "Given p = 'a'"
+ },
+ "metrics" : {
+ "step.endLine" : 6,
+ "step.startLine" : 6
+ },
+ "name" : "karate.step",
+ "parent_id" : ${content_parent_id_3},
+ "resource" : "Given p = 'a'",
+ "service" : "worker.org.gradle.process.internal.worker.gradleworkermain",
+ "span_id" : ${content_span_id_3},
+ "start" : ${content_start_3},
+ "trace_id" : ${content_trace_id_3}
+ },
+ "type" : "span",
+ "version" : 1
+}, {
+ "content" : {
+ "duration" : ${content_duration_4},
+ "error" : 0,
+ "meta" : {
+ "component" : "karate",
+ "env" : "none",
+ "library_version" : ${content_meta_library_version},
+ "step.name" : "Given p = 'b'"
+ },
+ "metrics" : {
+ "step.endLine" : 6,
+ "step.startLine" : 6
+ },
+ "name" : "karate.step",
+ "parent_id" : ${content_parent_id_4},
+ "resource" : "Given p = 'b'",
+ "service" : "worker.org.gradle.process.internal.worker.gradleworkermain",
+ "span_id" : ${content_span_id_4},
+ "start" : ${content_start_4},
+ "trace_id" : ${content_trace_id_4}
+ },
+ "type" : "span",
+ "version" : 1
+}, {
+ "content" : {
+ "duration" : ${content_duration_5},
+ "error" : 0,
+ "meta" : {
+ "component" : "karate",
+ "env" : "none",
+ "library_version" : ${content_meta_library_version},
+ "step.name" : "Given p = 'b'"
+ },
+ "metrics" : {
+ "step.endLine" : 6,
+ "step.startLine" : 6
+ },
+ "name" : "karate.step",
+ "parent_id" : ${content_parent_id_5},
+ "resource" : "Given p = 'b'",
+ "service" : "worker.org.gradle.process.internal.worker.gradleworkermain",
+ "span_id" : ${content_span_id_5},
+ "start" : ${content_start_5},
+ "trace_id" : ${content_trace_id_5}
+ },
+ "type" : "span",
+ "version" : 1
+}, {
+ "content" : {
+ "duration" : ${content_duration_6},
+ "error" : 0,
+ "meta" : {
+ "component" : "karate",
+ "env" : "none",
+ "library_version" : ${content_meta_library_version},
+ "step.name" : "Given p = 'b'"
+ },
+ "metrics" : {
+ "step.endLine" : 6,
+ "step.startLine" : 6
+ },
+ "name" : "karate.step",
+ "parent_id" : ${content_parent_id_6},
+ "resource" : "Given p = 'b'",
+ "service" : "worker.org.gradle.process.internal.worker.gradleworkermain",
+ "span_id" : ${content_span_id_6},
+ "start" : ${content_start_6},
+ "trace_id" : ${content_trace_id_6}
+ },
+ "type" : "span",
+ "version" : 1
+}, {
+ "content" : {
+ "duration" : ${content_duration_7},
+ "error" : 0,
+ "meta" : {
+ "component" : "karate",
+ "env" : "none",
+ "library_version" : ${content_meta_library_version},
+ "step.name" : "Then response == value"
+ },
+ "metrics" : {
+ "step.endLine" : 8,
+ "step.startLine" : 8
+ },
+ "name" : "karate.step",
+ "parent_id" : ${content_parent_id},
+ "resource" : "Then response == value",
+ "service" : "worker.org.gradle.process.internal.worker.gradleworkermain",
+ "span_id" : ${content_span_id_7},
+ "start" : ${content_start_7},
+ "trace_id" : ${content_trace_id}
+ },
+ "type" : "span",
+ "version" : 1
+}, {
+ "content" : {
+ "duration" : ${content_duration_8},
+ "error" : 0,
+ "meta" : {
+ "component" : "karate",
+ "env" : "none",
+ "library_version" : ${content_meta_library_version},
+ "step.name" : "Then response == value"
+ },
+ "metrics" : {
+ "step.endLine" : 8,
+ "step.startLine" : 8
+ },
+ "name" : "karate.step",
+ "parent_id" : ${content_parent_id_2},
+ "resource" : "Then response == value",
+ "service" : "worker.org.gradle.process.internal.worker.gradleworkermain",
+ "span_id" : ${content_span_id_8},
+ "start" : ${content_start_8},
+ "trace_id" : ${content_trace_id_2}
+ },
+ "type" : "span",
+ "version" : 1
+}, {
+ "content" : {
+ "duration" : ${content_duration_9},
+ "error" : 0,
+ "meta" : {
+ "component" : "karate",
+ "env" : "none",
+ "library_version" : ${content_meta_library_version},
+ "step.name" : "Then response == value"
+ },
+ "metrics" : {
+ "step.endLine" : 8,
+ "step.startLine" : 8
+ },
+ "name" : "karate.step",
+ "parent_id" : ${content_parent_id_3},
+ "resource" : "Then response == value",
+ "service" : "worker.org.gradle.process.internal.worker.gradleworkermain",
+ "span_id" : ${content_span_id_9},
+ "start" : ${content_start_9},
+ "trace_id" : ${content_trace_id_3}
+ },
+ "type" : "span",
+ "version" : 1
+}, {
+ "content" : {
+ "duration" : ${content_duration_10},
+ "error" : 0,
+ "meta" : {
+ "component" : "karate",
+ "env" : "none",
+ "library_version" : ${content_meta_library_version},
+ "step.name" : "Then response == value"
+ },
+ "metrics" : {
+ "step.endLine" : 8,
+ "step.startLine" : 8
+ },
+ "name" : "karate.step",
+ "parent_id" : ${content_parent_id_4},
+ "resource" : "Then response == value",
+ "service" : "worker.org.gradle.process.internal.worker.gradleworkermain",
+ "span_id" : ${content_span_id_10},
+ "start" : ${content_start_10},
+ "trace_id" : ${content_trace_id_4}
+ },
+ "type" : "span",
+ "version" : 1
+}, {
+ "content" : {
+ "duration" : ${content_duration_11},
+ "error" : 0,
+ "meta" : {
+ "component" : "karate",
+ "env" : "none",
+ "library_version" : ${content_meta_library_version},
+ "step.name" : "Then response == value"
+ },
+ "metrics" : {
+ "step.endLine" : 8,
+ "step.startLine" : 8
+ },
+ "name" : "karate.step",
+ "parent_id" : ${content_parent_id_5},
+ "resource" : "Then response == value",
+ "service" : "worker.org.gradle.process.internal.worker.gradleworkermain",
+ "span_id" : ${content_span_id_11},
+ "start" : ${content_start_11},
+ "trace_id" : ${content_trace_id_5}
+ },
+ "type" : "span",
+ "version" : 1
+}, {
+ "content" : {
+ "duration" : ${content_duration_12},
+ "error" : 0,
+ "meta" : {
+ "component" : "karate",
+ "env" : "none",
+ "library_version" : ${content_meta_library_version},
+ "step.name" : "Then response == value"
+ },
+ "metrics" : {
+ "step.endLine" : 8,
+ "step.startLine" : 8
+ },
+ "name" : "karate.step",
+ "parent_id" : ${content_parent_id_6},
+ "resource" : "Then response == value",
+ "service" : "worker.org.gradle.process.internal.worker.gradleworkermain",
+ "span_id" : ${content_span_id_12},
+ "start" : ${content_start_12},
+ "trace_id" : ${content_trace_id_6}
+ },
+ "type" : "span",
+ "version" : 1
+}, {
+ "content" : {
+ "duration" : ${content_duration_13},
+ "error" : 0,
+ "meta" : {
+ "component" : "karate",
+ "env" : "none",
+ "library_version" : ${content_meta_library_version},
+ "step.name" : "When response = p + p"
+ },
+ "metrics" : {
+ "step.endLine" : 7,
+ "step.startLine" : 7
+ },
+ "name" : "karate.step",
+ "parent_id" : ${content_parent_id},
+ "resource" : "When response = p + p",
+ "service" : "worker.org.gradle.process.internal.worker.gradleworkermain",
+ "span_id" : ${content_span_id_13},
+ "start" : ${content_start_13},
+ "trace_id" : ${content_trace_id}
+ },
+ "type" : "span",
+ "version" : 1
+}, {
+ "content" : {
+ "duration" : ${content_duration_14},
+ "error" : 0,
+ "meta" : {
+ "component" : "karate",
+ "env" : "none",
+ "library_version" : ${content_meta_library_version},
+ "step.name" : "When response = p + p"
+ },
+ "metrics" : {
+ "step.endLine" : 7,
+ "step.startLine" : 7
+ },
+ "name" : "karate.step",
+ "parent_id" : ${content_parent_id_2},
+ "resource" : "When response = p + p",
+ "service" : "worker.org.gradle.process.internal.worker.gradleworkermain",
+ "span_id" : ${content_span_id_14},
+ "start" : ${content_start_14},
+ "trace_id" : ${content_trace_id_2}
+ },
+ "type" : "span",
+ "version" : 1
+}, {
+ "content" : {
+ "duration" : ${content_duration_15},
+ "error" : 0,
+ "meta" : {
+ "component" : "karate",
+ "env" : "none",
+ "library_version" : ${content_meta_library_version},
+ "step.name" : "When response = p + p"
+ },
+ "metrics" : {
+ "step.endLine" : 7,
+ "step.startLine" : 7
+ },
+ "name" : "karate.step",
+ "parent_id" : ${content_parent_id_3},
+ "resource" : "When response = p + p",
+ "service" : "worker.org.gradle.process.internal.worker.gradleworkermain",
+ "span_id" : ${content_span_id_15},
+ "start" : ${content_start_15},
+ "trace_id" : ${content_trace_id_3}
+ },
+ "type" : "span",
+ "version" : 1
+}, {
+ "content" : {
+ "duration" : ${content_duration_16},
+ "error" : 0,
+ "meta" : {
+ "component" : "karate",
+ "env" : "none",
+ "library_version" : ${content_meta_library_version},
+ "step.name" : "When response = p + p"
+ },
+ "metrics" : {
+ "step.endLine" : 7,
+ "step.startLine" : 7
+ },
+ "name" : "karate.step",
+ "parent_id" : ${content_parent_id_4},
+ "resource" : "When response = p + p",
+ "service" : "worker.org.gradle.process.internal.worker.gradleworkermain",
+ "span_id" : ${content_span_id_16},
+ "start" : ${content_start_16},
+ "trace_id" : ${content_trace_id_4}
+ },
+ "type" : "span",
+ "version" : 1
+}, {
+ "content" : {
+ "duration" : ${content_duration_17},
+ "error" : 0,
+ "meta" : {
+ "component" : "karate",
+ "env" : "none",
+ "library_version" : ${content_meta_library_version},
+ "step.name" : "When response = p + p"
+ },
+ "metrics" : {
+ "step.endLine" : 7,
+ "step.startLine" : 7
+ },
+ "name" : "karate.step",
+ "parent_id" : ${content_parent_id_5},
+ "resource" : "When response = p + p",
+ "service" : "worker.org.gradle.process.internal.worker.gradleworkermain",
+ "span_id" : ${content_span_id_17},
+ "start" : ${content_start_17},
+ "trace_id" : ${content_trace_id_5}
+ },
+ "type" : "span",
+ "version" : 1
+}, {
+ "content" : {
+ "duration" : ${content_duration_18},
+ "error" : 0,
+ "meta" : {
+ "component" : "karate",
+ "env" : "none",
+ "library_version" : ${content_meta_library_version},
+ "step.name" : "When response = p + p"
+ },
+ "metrics" : {
+ "step.endLine" : 7,
+ "step.startLine" : 7
+ },
+ "name" : "karate.step",
+ "parent_id" : ${content_parent_id_6},
+ "resource" : "When response = p + p",
+ "service" : "worker.org.gradle.process.internal.worker.gradleworkermain",
+ "span_id" : ${content_span_id_18},
+ "start" : ${content_start_18},
+ "trace_id" : ${content_trace_id_6}
+ },
+ "type" : "span",
+ "version" : 1
+}, {
+ "content" : {
+ "duration" : ${content_duration_19},
+ "error" : 0,
+ "meta" : {
+ "_dd.p.tid" : ${content_meta__dd_p_tid},
+ "component" : "karate",
+ "dummy_ci_tag" : "dummy_ci_tag_value",
+ "env" : "none",
+ "library_version" : ${content_meta_library_version},
+ "span.kind" : "test_suite_end",
+ "test.framework" : "karate",
+ "test.framework_version" : ${content_meta_test_framework_version},
+ "test.module" : "karate-2.0",
+ "test.status" : "pass",
+ "test.suite" : "[org/example/test_parameterized] test parameterized",
+ "test.type" : "test",
+ "test_session.name" : "session-name"
+ },
+ "metrics" : {
+ "_dd.host.vcpu_count" : ${content_metrics__dd_host_vcpu_count}
+ },
+ "name" : "karate.test_suite",
+ "resource" : "[org/example/test_parameterized] test parameterized",
+ "service" : "worker.org.gradle.process.internal.worker.gradleworkermain",
+ "start" : ${content_start_19},
+ "test_module_id" : ${content_test_module_id},
+ "test_session_id" : ${content_test_session_id},
+ "test_suite_id" : ${content_test_suite_id}
+ },
+ "type" : "test_suite_end",
+ "version" : 1
+}, {
+ "content" : {
+ "duration" : ${content_duration_20},
+ "error" : 0,
+ "meta" : {
+ "_dd.profiling.ctx" : "test",
+ "_dd.tracer_host" : ${content_meta__dd_tracer_host},
+ "component" : "karate",
+ "dummy_ci_tag" : "dummy_ci_tag_value",
+ "env" : "none",
+ "language" : "jvm",
+ "library_version" : ${content_meta_library_version},
+ "runtime-id" : ${content_meta_runtime_id},
+ "span.kind" : "test",
+ "test.framework" : "karate",
+ "test.framework_version" : ${content_meta_test_framework_version},
+ "test.is_new" : "true",
+ "test.module" : "karate-2.0",
+ "test.name" : "first scenario as an outline",
+ "test.parameters" : "{\"param\":\"'a'\",\"value\":\"aa\"}",
+ "test.status" : "pass",
+ "test.suite" : "[org/example/test_parameterized] test parameterized",
+ "test.type" : "test",
+ "test_session.name" : "session-name"
+ },
+ "metrics" : {
+ "_dd.host.vcpu_count" : ${content_metrics__dd_host_vcpu_count_2},
+ "_dd.profiling.enabled" : 0,
+ "_dd.trace_span_attribute_schema" : 0,
+ "process_id" : ${content_metrics_process_id}
+ },
+ "name" : "karate.test",
+ "parent_id" : ${content_parent_id_7},
+ "resource" : "[org/example/test_parameterized] test parameterized.first scenario as an outline",
+ "service" : "worker.org.gradle.process.internal.worker.gradleworkermain",
+ "span_id" : ${content_parent_id},
+ "start" : ${content_start_20},
+ "test_module_id" : ${content_test_module_id},
+ "test_session_id" : ${content_test_session_id},
+ "test_suite_id" : ${content_test_suite_id},
+ "trace_id" : ${content_trace_id}
+ },
+ "type" : "test",
+ "version" : 2
+}, {
+ "content" : {
+ "duration" : ${content_duration_21},
+ "error" : 0,
+ "meta" : {
+ "_dd.profiling.ctx" : "test",
+ "_dd.tracer_host" : ${content_meta__dd_tracer_host},
+ "component" : "karate",
+ "dummy_ci_tag" : "dummy_ci_tag_value",
+ "env" : "none",
+ "language" : "jvm",
+ "library_version" : ${content_meta_library_version},
+ "runtime-id" : ${content_meta_runtime_id},
+ "span.kind" : "test",
+ "test.framework" : "karate",
+ "test.framework_version" : ${content_meta_test_framework_version},
+ "test.is_new" : "true",
+ "test.is_retry" : "true",
+ "test.module" : "karate-2.0",
+ "test.name" : "first scenario as an outline",
+ "test.parameters" : "{\"param\":\"'a'\",\"value\":\"aa\"}",
+ "test.retry_reason" : "early_flake_detection",
+ "test.status" : "pass",
+ "test.suite" : "[org/example/test_parameterized] test parameterized",
+ "test.type" : "test",
+ "test_session.name" : "session-name"
+ },
+ "metrics" : {
+ "_dd.host.vcpu_count" : ${content_metrics__dd_host_vcpu_count_3},
+ "_dd.profiling.enabled" : 0,
+ "_dd.trace_span_attribute_schema" : 0,
+ "process_id" : ${content_metrics_process_id}
+ },
+ "name" : "karate.test",
+ "parent_id" : ${content_parent_id_7},
+ "resource" : "[org/example/test_parameterized] test parameterized.first scenario as an outline",
+ "service" : "worker.org.gradle.process.internal.worker.gradleworkermain",
+ "span_id" : ${content_parent_id_2},
+ "start" : ${content_start_21},
+ "test_module_id" : ${content_test_module_id},
+ "test_session_id" : ${content_test_session_id},
+ "test_suite_id" : ${content_test_suite_id},
+ "trace_id" : ${content_trace_id_2}
+ },
+ "type" : "test",
+ "version" : 2
+}, {
+ "content" : {
+ "duration" : ${content_duration_22},
+ "error" : 0,
+ "meta" : {
+ "_dd.profiling.ctx" : "test",
+ "_dd.tracer_host" : ${content_meta__dd_tracer_host},
+ "component" : "karate",
+ "dummy_ci_tag" : "dummy_ci_tag_value",
+ "env" : "none",
+ "language" : "jvm",
+ "library_version" : ${content_meta_library_version},
+ "runtime-id" : ${content_meta_runtime_id},
+ "span.kind" : "test",
+ "test.final_status" : "pass",
+ "test.framework" : "karate",
+ "test.framework_version" : ${content_meta_test_framework_version},
+ "test.is_new" : "true",
+ "test.is_retry" : "true",
+ "test.module" : "karate-2.0",
+ "test.name" : "first scenario as an outline",
+ "test.parameters" : "{\"param\":\"'a'\",\"value\":\"aa\"}",
+ "test.retry_reason" : "early_flake_detection",
+ "test.status" : "pass",
+ "test.suite" : "[org/example/test_parameterized] test parameterized",
+ "test.type" : "test",
+ "test_session.name" : "session-name"
+ },
+ "metrics" : {
+ "_dd.host.vcpu_count" : ${content_metrics__dd_host_vcpu_count_4},
+ "_dd.profiling.enabled" : 0,
+ "_dd.trace_span_attribute_schema" : 0,
+ "process_id" : ${content_metrics_process_id}
+ },
+ "name" : "karate.test",
+ "parent_id" : ${content_parent_id_7},
+ "resource" : "[org/example/test_parameterized] test parameterized.first scenario as an outline",
+ "service" : "worker.org.gradle.process.internal.worker.gradleworkermain",
+ "span_id" : ${content_parent_id_3},
+ "start" : ${content_start_22},
+ "test_module_id" : ${content_test_module_id},
+ "test_session_id" : ${content_test_session_id},
+ "test_suite_id" : ${content_test_suite_id},
+ "trace_id" : ${content_trace_id_3}
+ },
+ "type" : "test",
+ "version" : 2
+}, {
+ "content" : {
+ "duration" : ${content_duration_23},
+ "error" : 0,
+ "meta" : {
+ "_dd.profiling.ctx" : "test",
+ "_dd.tracer_host" : ${content_meta__dd_tracer_host},
+ "component" : "karate",
+ "dummy_ci_tag" : "dummy_ci_tag_value",
+ "env" : "none",
+ "language" : "jvm",
+ "library_version" : ${content_meta_library_version},
+ "runtime-id" : ${content_meta_runtime_id},
+ "span.kind" : "test",
+ "test.framework" : "karate",
+ "test.framework_version" : ${content_meta_test_framework_version},
+ "test.is_new" : "true",
+ "test.module" : "karate-2.0",
+ "test.name" : "first scenario as an outline",
+ "test.parameters" : "{\"param\":\"'b'\",\"value\":\"bb\"}",
+ "test.status" : "pass",
+ "test.suite" : "[org/example/test_parameterized] test parameterized",
+ "test.type" : "test",
+ "test_session.name" : "session-name"
+ },
+ "metrics" : {
+ "_dd.host.vcpu_count" : ${content_metrics__dd_host_vcpu_count_5},
+ "_dd.profiling.enabled" : 0,
+ "_dd.trace_span_attribute_schema" : 0,
+ "process_id" : ${content_metrics_process_id}
+ },
+ "name" : "karate.test",
+ "parent_id" : ${content_parent_id_7},
+ "resource" : "[org/example/test_parameterized] test parameterized.first scenario as an outline",
+ "service" : "worker.org.gradle.process.internal.worker.gradleworkermain",
+ "span_id" : ${content_parent_id_4},
+ "start" : ${content_start_23},
+ "test_module_id" : ${content_test_module_id},
+ "test_session_id" : ${content_test_session_id},
+ "test_suite_id" : ${content_test_suite_id},
+ "trace_id" : ${content_trace_id_4}
+ },
+ "type" : "test",
+ "version" : 2
+}, {
+ "content" : {
+ "duration" : ${content_duration_24},
+ "error" : 0,
+ "meta" : {
+ "_dd.profiling.ctx" : "test",
+ "_dd.tracer_host" : ${content_meta__dd_tracer_host},
+ "component" : "karate",
+ "dummy_ci_tag" : "dummy_ci_tag_value",
+ "env" : "none",
+ "language" : "jvm",
+ "library_version" : ${content_meta_library_version},
+ "runtime-id" : ${content_meta_runtime_id},
+ "span.kind" : "test",
+ "test.framework" : "karate",
+ "test.framework_version" : ${content_meta_test_framework_version},
+ "test.is_new" : "true",
+ "test.is_retry" : "true",
+ "test.module" : "karate-2.0",
+ "test.name" : "first scenario as an outline",
+ "test.parameters" : "{\"param\":\"'b'\",\"value\":\"bb\"}",
+ "test.retry_reason" : "early_flake_detection",
+ "test.status" : "pass",
+ "test.suite" : "[org/example/test_parameterized] test parameterized",
+ "test.type" : "test",
+ "test_session.name" : "session-name"
+ },
+ "metrics" : {
+ "_dd.host.vcpu_count" : ${content_metrics__dd_host_vcpu_count_6},
+ "_dd.profiling.enabled" : 0,
+ "_dd.trace_span_attribute_schema" : 0,
+ "process_id" : ${content_metrics_process_id}
+ },
+ "name" : "karate.test",
+ "parent_id" : ${content_parent_id_7},
+ "resource" : "[org/example/test_parameterized] test parameterized.first scenario as an outline",
+ "service" : "worker.org.gradle.process.internal.worker.gradleworkermain",
+ "span_id" : ${content_parent_id_5},
+ "start" : ${content_start_24},
+ "test_module_id" : ${content_test_module_id},
+ "test_session_id" : ${content_test_session_id},
+ "test_suite_id" : ${content_test_suite_id},
+ "trace_id" : ${content_trace_id_5}
+ },
+ "type" : "test",
+ "version" : 2
+}, {
+ "content" : {
+ "duration" : ${content_duration_25},
+ "error" : 0,
+ "meta" : {
+ "_dd.profiling.ctx" : "test",
+ "_dd.tracer_host" : ${content_meta__dd_tracer_host},
+ "component" : "karate",
+ "dummy_ci_tag" : "dummy_ci_tag_value",
+ "env" : "none",
+ "language" : "jvm",
+ "library_version" : ${content_meta_library_version},
+ "runtime-id" : ${content_meta_runtime_id},
+ "span.kind" : "test",
+ "test.final_status" : "pass",
+ "test.framework" : "karate",
+ "test.framework_version" : ${content_meta_test_framework_version},
+ "test.is_new" : "true",
+ "test.is_retry" : "true",
+ "test.module" : "karate-2.0",
+ "test.name" : "first scenario as an outline",
+ "test.parameters" : "{\"param\":\"'b'\",\"value\":\"bb\"}",
+ "test.retry_reason" : "early_flake_detection",
+ "test.status" : "pass",
+ "test.suite" : "[org/example/test_parameterized] test parameterized",
+ "test.type" : "test",
+ "test_session.name" : "session-name"
+ },
+ "metrics" : {
+ "_dd.host.vcpu_count" : ${content_metrics__dd_host_vcpu_count_7},
+ "_dd.profiling.enabled" : 0,
+ "_dd.trace_span_attribute_schema" : 0,
+ "process_id" : ${content_metrics_process_id}
+ },
+ "name" : "karate.test",
+ "parent_id" : ${content_parent_id_7},
+ "resource" : "[org/example/test_parameterized] test parameterized.first scenario as an outline",
+ "service" : "worker.org.gradle.process.internal.worker.gradleworkermain",
+ "span_id" : ${content_parent_id_6},
+ "start" : ${content_start_25},
+ "test_module_id" : ${content_test_module_id},
+ "test_session_id" : ${content_test_session_id},
+ "test_suite_id" : ${content_test_suite_id},
+ "trace_id" : ${content_trace_id_6}
+ },
+ "type" : "test",
+ "version" : 2
+}, {
+ "content" : {
+ "duration" : ${content_duration_26},
+ "error" : 0,
+ "meta" : {
+ "_dd.p.tid" : ${content_meta__dd_p_tid_2},
+ "_dd.profiling.ctx" : "test",
+ "_dd.tracer_host" : ${content_meta__dd_tracer_host},
+ "component" : "karate",
+ "dummy_ci_tag" : "dummy_ci_tag_value",
+ "env" : "none",
+ "language" : "jvm",
+ "library_version" : ${content_meta_library_version},
+ "runtime-id" : ${content_meta_runtime_id},
+ "span.kind" : "test_session_end",
+ "test.command" : "karate-2.0",
+ "test.early_flake.abort_reason" : "faulty",
+ "test.early_flake.enabled" : "true",
+ "test.framework" : "karate",
+ "test.framework_version" : ${content_meta_test_framework_version},
+ "test.status" : "pass",
+ "test.type" : "test",
+ "test_session.name" : "session-name"
+ },
+ "metrics" : {
+ "_dd.host.vcpu_count" : ${content_metrics__dd_host_vcpu_count_8},
+ "_dd.profiling.enabled" : 0,
+ "_dd.trace_span_attribute_schema" : 0,
+ "process_id" : ${content_metrics_process_id}
+ },
+ "name" : "karate.test_session",
+ "resource" : "karate-2.0",
+ "service" : "worker.org.gradle.process.internal.worker.gradleworkermain",
+ "start" : ${content_start_26},
+ "test_session_id" : ${content_test_session_id}
+ },
+ "type" : "test_session_end",
+ "version" : 1
+}, {
+ "content" : {
+ "duration" : ${content_duration_27},
+ "error" : 0,
+ "meta" : {
+ "_dd.p.tid" : ${content_meta__dd_p_tid_3},
+ "component" : "karate",
+ "dummy_ci_tag" : "dummy_ci_tag_value",
+ "env" : "none",
+ "library_version" : ${content_meta_library_version},
+ "span.kind" : "test_module_end",
+ "test.early_flake.abort_reason" : "faulty",
+ "test.early_flake.enabled" : "true",
+ "test.framework" : "karate",
+ "test.framework_version" : ${content_meta_test_framework_version},
+ "test.module" : "karate-2.0",
+ "test.status" : "pass",
+ "test.type" : "test",
+ "test_session.name" : "session-name"
+ },
+ "metrics" : {
+ "_dd.host.vcpu_count" : ${content_metrics__dd_host_vcpu_count_9}
+ },
+ "name" : "karate.test_module",
+ "resource" : "karate-2.0",
+ "service" : "worker.org.gradle.process.internal.worker.gradleworkermain",
+ "start" : ${content_start_27},
+ "test_module_id" : ${content_test_module_id},
+ "test_session_id" : ${content_test_session_id}
+ },
+ "type" : "test_module_end",
+ "version" : 1
+} ]
\ No newline at end of file
diff --git a/dd-java-agent/instrumentation/karate/karate-2.0/src/test/resources/test-efd-new-slow-test/coverages.ftl b/dd-java-agent/instrumentation/karate/karate-2.0/src/test/resources/test-efd-new-slow-test/coverages.ftl
new file mode 100644
index 00000000000..8878e547a79
--- /dev/null
+++ b/dd-java-agent/instrumentation/karate/karate-2.0/src/test/resources/test-efd-new-slow-test/coverages.ftl
@@ -0,0 +1 @@
+[ ]
\ No newline at end of file
diff --git a/dd-java-agent/instrumentation/karate/karate-2.0/src/test/resources/test-efd-new-slow-test/events.ftl b/dd-java-agent/instrumentation/karate/karate-2.0/src/test/resources/test-efd-new-slow-test/events.ftl
new file mode 100644
index 00000000000..648c137f7f9
--- /dev/null
+++ b/dd-java-agent/instrumentation/karate/karate-2.0/src/test/resources/test-efd-new-slow-test/events.ftl
@@ -0,0 +1,241 @@
+[ {
+ "content" : {
+ "duration" : ${content_duration},
+ "error" : 0,
+ "meta" : {
+ "component" : "karate",
+ "env" : "none",
+ "library_version" : ${content_meta_library_version},
+ "step.name" : "* Java.type('org.example.Slow').stall()"
+ },
+ "metrics" : {
+ "step.endLine" : 6,
+ "step.startLine" : 6
+ },
+ "name" : "karate.step",
+ "parent_id" : ${content_parent_id},
+ "resource" : "* Java.type('org.example.Slow').stall()",
+ "service" : "worker.org.gradle.process.internal.worker.gradleworkermain",
+ "span_id" : ${content_span_id},
+ "start" : ${content_start},
+ "trace_id" : ${content_trace_id}
+ },
+ "type" : "span",
+ "version" : 1
+}, {
+ "content" : {
+ "duration" : ${content_duration_2},
+ "error" : 0,
+ "meta" : {
+ "component" : "karate",
+ "env" : "none",
+ "library_version" : ${content_meta_library_version},
+ "step.name" : "* Java.type('org.example.Slow').stall()"
+ },
+ "metrics" : {
+ "step.endLine" : 6,
+ "step.startLine" : 6
+ },
+ "name" : "karate.step",
+ "parent_id" : ${content_parent_id_2},
+ "resource" : "* Java.type('org.example.Slow').stall()",
+ "service" : "worker.org.gradle.process.internal.worker.gradleworkermain",
+ "span_id" : ${content_span_id_2},
+ "start" : ${content_start_2},
+ "trace_id" : ${content_trace_id_2}
+ },
+ "type" : "span",
+ "version" : 1
+}, {
+ "content" : {
+ "duration" : ${content_duration_3},
+ "error" : 0,
+ "meta" : {
+ "_dd.p.tid" : ${content_meta__dd_p_tid},
+ "component" : "karate",
+ "dummy_ci_tag" : "dummy_ci_tag_value",
+ "env" : "none",
+ "library_version" : ${content_meta_library_version},
+ "span.kind" : "test_suite_end",
+ "test.framework" : "karate",
+ "test.framework_version" : ${content_meta_test_framework_version},
+ "test.module" : "karate-2.0",
+ "test.status" : "pass",
+ "test.suite" : "[org/example/test_succeed_slow] test succeed",
+ "test.traits" : "{\"category\":[\"foo\"]}",
+ "test.type" : "test",
+ "test_session.name" : "session-name"
+ },
+ "metrics" : {
+ "_dd.host.vcpu_count" : ${content_metrics__dd_host_vcpu_count}
+ },
+ "name" : "karate.test_suite",
+ "resource" : "[org/example/test_succeed_slow] test succeed",
+ "service" : "worker.org.gradle.process.internal.worker.gradleworkermain",
+ "start" : ${content_start_3},
+ "test_module_id" : ${content_test_module_id},
+ "test_session_id" : ${content_test_session_id},
+ "test_suite_id" : ${content_test_suite_id}
+ },
+ "type" : "test_suite_end",
+ "version" : 1
+}, {
+ "content" : {
+ "duration" : ${content_duration_4},
+ "error" : 0,
+ "meta" : {
+ "_dd.profiling.ctx" : "test",
+ "_dd.tracer_host" : ${content_meta__dd_tracer_host},
+ "component" : "karate",
+ "dummy_ci_tag" : "dummy_ci_tag_value",
+ "env" : "none",
+ "language" : "jvm",
+ "library_version" : ${content_meta_library_version},
+ "runtime-id" : ${content_meta_runtime_id},
+ "span.kind" : "test",
+ "test.framework" : "karate",
+ "test.framework_version" : ${content_meta_test_framework_version},
+ "test.is_new" : "true",
+ "test.module" : "karate-2.0",
+ "test.name" : "first scenario",
+ "test.status" : "pass",
+ "test.suite" : "[org/example/test_succeed_slow] test succeed",
+ "test.traits" : "{\"category\":[\"foo\",\"bar\"]}",
+ "test.type" : "test",
+ "test_session.name" : "session-name"
+ },
+ "metrics" : {
+ "_dd.host.vcpu_count" : ${content_metrics__dd_host_vcpu_count_2},
+ "_dd.profiling.enabled" : 0,
+ "_dd.trace_span_attribute_schema" : 0,
+ "process_id" : ${content_metrics_process_id}
+ },
+ "name" : "karate.test",
+ "parent_id" : ${content_parent_id_3},
+ "resource" : "[org/example/test_succeed_slow] test succeed.first scenario",
+ "service" : "worker.org.gradle.process.internal.worker.gradleworkermain",
+ "span_id" : ${content_parent_id},
+ "start" : ${content_start_4},
+ "test_module_id" : ${content_test_module_id},
+ "test_session_id" : ${content_test_session_id},
+ "test_suite_id" : ${content_test_suite_id},
+ "trace_id" : ${content_trace_id}
+ },
+ "type" : "test",
+ "version" : 2
+}, {
+ "content" : {
+ "duration" : ${content_duration_5},
+ "error" : 0,
+ "meta" : {
+ "_dd.profiling.ctx" : "test",
+ "_dd.tracer_host" : ${content_meta__dd_tracer_host},
+ "component" : "karate",
+ "dummy_ci_tag" : "dummy_ci_tag_value",
+ "env" : "none",
+ "language" : "jvm",
+ "library_version" : ${content_meta_library_version},
+ "runtime-id" : ${content_meta_runtime_id},
+ "span.kind" : "test",
+ "test.final_status" : "pass",
+ "test.framework" : "karate",
+ "test.framework_version" : ${content_meta_test_framework_version},
+ "test.is_new" : "true",
+ "test.is_retry" : "true",
+ "test.module" : "karate-2.0",
+ "test.name" : "first scenario",
+ "test.retry_reason" : "early_flake_detection",
+ "test.status" : "pass",
+ "test.suite" : "[org/example/test_succeed_slow] test succeed",
+ "test.traits" : "{\"category\":[\"foo\",\"bar\"]}",
+ "test.type" : "test",
+ "test_session.name" : "session-name"
+ },
+ "metrics" : {
+ "_dd.host.vcpu_count" : ${content_metrics__dd_host_vcpu_count_3},
+ "_dd.profiling.enabled" : 0,
+ "_dd.trace_span_attribute_schema" : 0,
+ "process_id" : ${content_metrics_process_id}
+ },
+ "name" : "karate.test",
+ "parent_id" : ${content_parent_id_3},
+ "resource" : "[org/example/test_succeed_slow] test succeed.first scenario",
+ "service" : "worker.org.gradle.process.internal.worker.gradleworkermain",
+ "span_id" : ${content_parent_id_2},
+ "start" : ${content_start_5},
+ "test_module_id" : ${content_test_module_id},
+ "test_session_id" : ${content_test_session_id},
+ "test_suite_id" : ${content_test_suite_id},
+ "trace_id" : ${content_trace_id_2}
+ },
+ "type" : "test",
+ "version" : 2
+}, {
+ "content" : {
+ "duration" : ${content_duration_6},
+ "error" : 0,
+ "meta" : {
+ "_dd.p.tid" : ${content_meta__dd_p_tid_2},
+ "_dd.profiling.ctx" : "test",
+ "_dd.tracer_host" : ${content_meta__dd_tracer_host},
+ "component" : "karate",
+ "dummy_ci_tag" : "dummy_ci_tag_value",
+ "env" : "none",
+ "language" : "jvm",
+ "library_version" : ${content_meta_library_version},
+ "runtime-id" : ${content_meta_runtime_id},
+ "span.kind" : "test_session_end",
+ "test.command" : "karate-2.0",
+ "test.early_flake.enabled" : "true",
+ "test.framework" : "karate",
+ "test.framework_version" : ${content_meta_test_framework_version},
+ "test.status" : "pass",
+ "test.type" : "test",
+ "test_session.name" : "session-name"
+ },
+ "metrics" : {
+ "_dd.host.vcpu_count" : ${content_metrics__dd_host_vcpu_count_4},
+ "_dd.profiling.enabled" : 0,
+ "_dd.trace_span_attribute_schema" : 0,
+ "process_id" : ${content_metrics_process_id}
+ },
+ "name" : "karate.test_session",
+ "resource" : "karate-2.0",
+ "service" : "worker.org.gradle.process.internal.worker.gradleworkermain",
+ "start" : ${content_start_6},
+ "test_session_id" : ${content_test_session_id}
+ },
+ "type" : "test_session_end",
+ "version" : 1
+}, {
+ "content" : {
+ "duration" : ${content_duration_7},
+ "error" : 0,
+ "meta" : {
+ "_dd.p.tid" : ${content_meta__dd_p_tid_3},
+ "component" : "karate",
+ "dummy_ci_tag" : "dummy_ci_tag_value",
+ "env" : "none",
+ "library_version" : ${content_meta_library_version},
+ "span.kind" : "test_module_end",
+ "test.early_flake.enabled" : "true",
+ "test.framework" : "karate",
+ "test.framework_version" : ${content_meta_test_framework_version},
+ "test.module" : "karate-2.0",
+ "test.status" : "pass",
+ "test.type" : "test",
+ "test_session.name" : "session-name"
+ },
+ "metrics" : {
+ "_dd.host.vcpu_count" : ${content_metrics__dd_host_vcpu_count_5}
+ },
+ "name" : "karate.test_module",
+ "resource" : "karate-2.0",
+ "service" : "worker.org.gradle.process.internal.worker.gradleworkermain",
+ "start" : ${content_start_7},
+ "test_module_id" : ${content_test_module_id},
+ "test_session_id" : ${content_test_session_id}
+ },
+ "type" : "test_module_end",
+ "version" : 1
+} ]
\ No newline at end of file
diff --git a/dd-java-agent/instrumentation/karate/karate-2.0/src/test/resources/test-efd-new-test/coverages.ftl b/dd-java-agent/instrumentation/karate/karate-2.0/src/test/resources/test-efd-new-test/coverages.ftl
new file mode 100644
index 00000000000..8878e547a79
--- /dev/null
+++ b/dd-java-agent/instrumentation/karate/karate-2.0/src/test/resources/test-efd-new-test/coverages.ftl
@@ -0,0 +1 @@
+[ ]
\ No newline at end of file
diff --git a/dd-java-agent/instrumentation/karate/karate-2.0/src/test/resources/test-efd-new-test/events.ftl b/dd-java-agent/instrumentation/karate/karate-2.0/src/test/resources/test-efd-new-test/events.ftl
new file mode 100644
index 00000000000..c6f9d72364e
--- /dev/null
+++ b/dd-java-agent/instrumentation/karate/karate-2.0/src/test/resources/test-efd-new-test/events.ftl
@@ -0,0 +1,311 @@
+[ {
+ "content" : {
+ "duration" : ${content_duration},
+ "error" : 0,
+ "meta" : {
+ "component" : "karate",
+ "env" : "none",
+ "library_version" : ${content_meta_library_version},
+ "step.name" : "* 'first'"
+ },
+ "metrics" : {
+ "step.endLine" : 6,
+ "step.startLine" : 6
+ },
+ "name" : "karate.step",
+ "parent_id" : ${content_parent_id},
+ "resource" : "* 'first'",
+ "service" : "worker.org.gradle.process.internal.worker.gradleworkermain",
+ "span_id" : ${content_span_id},
+ "start" : ${content_start},
+ "trace_id" : ${content_trace_id}
+ },
+ "type" : "span",
+ "version" : 1
+}, {
+ "content" : {
+ "duration" : ${content_duration_2},
+ "error" : 0,
+ "meta" : {
+ "component" : "karate",
+ "env" : "none",
+ "library_version" : ${content_meta_library_version},
+ "step.name" : "* 'first'"
+ },
+ "metrics" : {
+ "step.endLine" : 6,
+ "step.startLine" : 6
+ },
+ "name" : "karate.step",
+ "parent_id" : ${content_parent_id_2},
+ "resource" : "* 'first'",
+ "service" : "worker.org.gradle.process.internal.worker.gradleworkermain",
+ "span_id" : ${content_span_id_2},
+ "start" : ${content_start_2},
+ "trace_id" : ${content_trace_id_2}
+ },
+ "type" : "span",
+ "version" : 1
+}, {
+ "content" : {
+ "duration" : ${content_duration_3},
+ "error" : 0,
+ "meta" : {
+ "component" : "karate",
+ "env" : "none",
+ "library_version" : ${content_meta_library_version},
+ "step.name" : "* 'first'"
+ },
+ "metrics" : {
+ "step.endLine" : 6,
+ "step.startLine" : 6
+ },
+ "name" : "karate.step",
+ "parent_id" : ${content_parent_id_3},
+ "resource" : "* 'first'",
+ "service" : "worker.org.gradle.process.internal.worker.gradleworkermain",
+ "span_id" : ${content_span_id_3},
+ "start" : ${content_start_3},
+ "trace_id" : ${content_trace_id_3}
+ },
+ "type" : "span",
+ "version" : 1
+}, {
+ "content" : {
+ "duration" : ${content_duration_4},
+ "error" : 0,
+ "meta" : {
+ "_dd.p.tid" : ${content_meta__dd_p_tid},
+ "component" : "karate",
+ "dummy_ci_tag" : "dummy_ci_tag_value",
+ "env" : "none",
+ "library_version" : ${content_meta_library_version},
+ "span.kind" : "test_suite_end",
+ "test.framework" : "karate",
+ "test.framework_version" : ${content_meta_test_framework_version},
+ "test.module" : "karate-2.0",
+ "test.status" : "pass",
+ "test.suite" : "[org/example/test_succeed_one_case] test succeed",
+ "test.traits" : "{\"category\":[\"foo\"]}",
+ "test.type" : "test",
+ "test_session.name" : "session-name"
+ },
+ "metrics" : {
+ "_dd.host.vcpu_count" : ${content_metrics__dd_host_vcpu_count}
+ },
+ "name" : "karate.test_suite",
+ "resource" : "[org/example/test_succeed_one_case] test succeed",
+ "service" : "worker.org.gradle.process.internal.worker.gradleworkermain",
+ "start" : ${content_start_4},
+ "test_module_id" : ${content_test_module_id},
+ "test_session_id" : ${content_test_session_id},
+ "test_suite_id" : ${content_test_suite_id}
+ },
+ "type" : "test_suite_end",
+ "version" : 1
+}, {
+ "content" : {
+ "duration" : ${content_duration_5},
+ "error" : 0,
+ "meta" : {
+ "_dd.profiling.ctx" : "test",
+ "_dd.tracer_host" : ${content_meta__dd_tracer_host},
+ "component" : "karate",
+ "dummy_ci_tag" : "dummy_ci_tag_value",
+ "env" : "none",
+ "language" : "jvm",
+ "library_version" : ${content_meta_library_version},
+ "runtime-id" : ${content_meta_runtime_id},
+ "span.kind" : "test",
+ "test.framework" : "karate",
+ "test.framework_version" : ${content_meta_test_framework_version},
+ "test.is_new" : "true",
+ "test.module" : "karate-2.0",
+ "test.name" : "first scenario",
+ "test.status" : "pass",
+ "test.suite" : "[org/example/test_succeed_one_case] test succeed",
+ "test.traits" : "{\"category\":[\"foo\",\"bar\"]}",
+ "test.type" : "test",
+ "test_session.name" : "session-name"
+ },
+ "metrics" : {
+ "_dd.host.vcpu_count" : ${content_metrics__dd_host_vcpu_count_2},
+ "_dd.profiling.enabled" : 0,
+ "_dd.trace_span_attribute_schema" : 0,
+ "process_id" : ${content_metrics_process_id}
+ },
+ "name" : "karate.test",
+ "parent_id" : ${content_parent_id_4},
+ "resource" : "[org/example/test_succeed_one_case] test succeed.first scenario",
+ "service" : "worker.org.gradle.process.internal.worker.gradleworkermain",
+ "span_id" : ${content_parent_id},
+ "start" : ${content_start_5},
+ "test_module_id" : ${content_test_module_id},
+ "test_session_id" : ${content_test_session_id},
+ "test_suite_id" : ${content_test_suite_id},
+ "trace_id" : ${content_trace_id}
+ },
+ "type" : "test",
+ "version" : 2
+}, {
+ "content" : {
+ "duration" : ${content_duration_6},
+ "error" : 0,
+ "meta" : {
+ "_dd.profiling.ctx" : "test",
+ "_dd.tracer_host" : ${content_meta__dd_tracer_host},
+ "component" : "karate",
+ "dummy_ci_tag" : "dummy_ci_tag_value",
+ "env" : "none",
+ "language" : "jvm",
+ "library_version" : ${content_meta_library_version},
+ "runtime-id" : ${content_meta_runtime_id},
+ "span.kind" : "test",
+ "test.framework" : "karate",
+ "test.framework_version" : ${content_meta_test_framework_version},
+ "test.is_new" : "true",
+ "test.is_retry" : "true",
+ "test.module" : "karate-2.0",
+ "test.name" : "first scenario",
+ "test.retry_reason" : "early_flake_detection",
+ "test.status" : "pass",
+ "test.suite" : "[org/example/test_succeed_one_case] test succeed",
+ "test.traits" : "{\"category\":[\"foo\",\"bar\"]}",
+ "test.type" : "test",
+ "test_session.name" : "session-name"
+ },
+ "metrics" : {
+ "_dd.host.vcpu_count" : ${content_metrics__dd_host_vcpu_count_3},
+ "_dd.profiling.enabled" : 0,
+ "_dd.trace_span_attribute_schema" : 0,
+ "process_id" : ${content_metrics_process_id}
+ },
+ "name" : "karate.test",
+ "parent_id" : ${content_parent_id_4},
+ "resource" : "[org/example/test_succeed_one_case] test succeed.first scenario",
+ "service" : "worker.org.gradle.process.internal.worker.gradleworkermain",
+ "span_id" : ${content_parent_id_2},
+ "start" : ${content_start_6},
+ "test_module_id" : ${content_test_module_id},
+ "test_session_id" : ${content_test_session_id},
+ "test_suite_id" : ${content_test_suite_id},
+ "trace_id" : ${content_trace_id_2}
+ },
+ "type" : "test",
+ "version" : 2
+}, {
+ "content" : {
+ "duration" : ${content_duration_7},
+ "error" : 0,
+ "meta" : {
+ "_dd.profiling.ctx" : "test",
+ "_dd.tracer_host" : ${content_meta__dd_tracer_host},
+ "component" : "karate",
+ "dummy_ci_tag" : "dummy_ci_tag_value",
+ "env" : "none",
+ "language" : "jvm",
+ "library_version" : ${content_meta_library_version},
+ "runtime-id" : ${content_meta_runtime_id},
+ "span.kind" : "test",
+ "test.final_status" : "pass",
+ "test.framework" : "karate",
+ "test.framework_version" : ${content_meta_test_framework_version},
+ "test.is_new" : "true",
+ "test.is_retry" : "true",
+ "test.module" : "karate-2.0",
+ "test.name" : "first scenario",
+ "test.retry_reason" : "early_flake_detection",
+ "test.status" : "pass",
+ "test.suite" : "[org/example/test_succeed_one_case] test succeed",
+ "test.traits" : "{\"category\":[\"foo\",\"bar\"]}",
+ "test.type" : "test",
+ "test_session.name" : "session-name"
+ },
+ "metrics" : {
+ "_dd.host.vcpu_count" : ${content_metrics__dd_host_vcpu_count_4},
+ "_dd.profiling.enabled" : 0,
+ "_dd.trace_span_attribute_schema" : 0,
+ "process_id" : ${content_metrics_process_id}
+ },
+ "name" : "karate.test",
+ "parent_id" : ${content_parent_id_4},
+ "resource" : "[org/example/test_succeed_one_case] test succeed.first scenario",
+ "service" : "worker.org.gradle.process.internal.worker.gradleworkermain",
+ "span_id" : ${content_parent_id_3},
+ "start" : ${content_start_7},
+ "test_module_id" : ${content_test_module_id},
+ "test_session_id" : ${content_test_session_id},
+ "test_suite_id" : ${content_test_suite_id},
+ "trace_id" : ${content_trace_id_3}
+ },
+ "type" : "test",
+ "version" : 2
+}, {
+ "content" : {
+ "duration" : ${content_duration_8},
+ "error" : 0,
+ "meta" : {
+ "_dd.p.tid" : ${content_meta__dd_p_tid_2},
+ "_dd.profiling.ctx" : "test",
+ "_dd.tracer_host" : ${content_meta__dd_tracer_host},
+ "component" : "karate",
+ "dummy_ci_tag" : "dummy_ci_tag_value",
+ "env" : "none",
+ "language" : "jvm",
+ "library_version" : ${content_meta_library_version},
+ "runtime-id" : ${content_meta_runtime_id},
+ "span.kind" : "test_session_end",
+ "test.command" : "karate-2.0",
+ "test.early_flake.enabled" : "true",
+ "test.framework" : "karate",
+ "test.framework_version" : ${content_meta_test_framework_version},
+ "test.status" : "pass",
+ "test.type" : "test",
+ "test_session.name" : "session-name"
+ },
+ "metrics" : {
+ "_dd.host.vcpu_count" : ${content_metrics__dd_host_vcpu_count_5},
+ "_dd.profiling.enabled" : 0,
+ "_dd.trace_span_attribute_schema" : 0,
+ "process_id" : ${content_metrics_process_id}
+ },
+ "name" : "karate.test_session",
+ "resource" : "karate-2.0",
+ "service" : "worker.org.gradle.process.internal.worker.gradleworkermain",
+ "start" : ${content_start_8},
+ "test_session_id" : ${content_test_session_id}
+ },
+ "type" : "test_session_end",
+ "version" : 1
+}, {
+ "content" : {
+ "duration" : ${content_duration_9},
+ "error" : 0,
+ "meta" : {
+ "_dd.p.tid" : ${content_meta__dd_p_tid_3},
+ "component" : "karate",
+ "dummy_ci_tag" : "dummy_ci_tag_value",
+ "env" : "none",
+ "library_version" : ${content_meta_library_version},
+ "span.kind" : "test_module_end",
+ "test.early_flake.enabled" : "true",
+ "test.framework" : "karate",
+ "test.framework_version" : ${content_meta_test_framework_version},
+ "test.module" : "karate-2.0",
+ "test.status" : "pass",
+ "test.type" : "test",
+ "test_session.name" : "session-name"
+ },
+ "metrics" : {
+ "_dd.host.vcpu_count" : ${content_metrics__dd_host_vcpu_count_6}
+ },
+ "name" : "karate.test_module",
+ "resource" : "karate-2.0",
+ "service" : "worker.org.gradle.process.internal.worker.gradleworkermain",
+ "start" : ${content_start_9},
+ "test_module_id" : ${content_test_module_id},
+ "test_session_id" : ${content_test_session_id}
+ },
+ "type" : "test_module_end",
+ "version" : 1
+} ]
\ No newline at end of file
diff --git a/dd-java-agent/instrumentation/karate/karate-2.0/src/test/resources/test-efd-skip-new-test/coverages.ftl b/dd-java-agent/instrumentation/karate/karate-2.0/src/test/resources/test-efd-skip-new-test/coverages.ftl
new file mode 100644
index 00000000000..8878e547a79
--- /dev/null
+++ b/dd-java-agent/instrumentation/karate/karate-2.0/src/test/resources/test-efd-skip-new-test/coverages.ftl
@@ -0,0 +1 @@
+[ ]
\ No newline at end of file
diff --git a/dd-java-agent/instrumentation/karate/karate-2.0/src/test/resources/test-efd-skip-new-test/events.ftl b/dd-java-agent/instrumentation/karate/karate-2.0/src/test/resources/test-efd-skip-new-test/events.ftl
new file mode 100644
index 00000000000..f80d4f4ad7d
--- /dev/null
+++ b/dd-java-agent/instrumentation/karate/karate-2.0/src/test/resources/test-efd-skip-new-test/events.ftl
@@ -0,0 +1,171 @@
+[ {
+ "content" : {
+ "duration" : ${content_duration},
+ "error" : 0,
+ "meta" : {
+ "component" : "karate",
+ "env" : "none",
+ "library_version" : ${content_meta_library_version},
+ "step.name" : "* 'first'"
+ },
+ "metrics" : {
+ "step.endLine" : 6,
+ "step.startLine" : 6
+ },
+ "name" : "karate.step",
+ "parent_id" : ${content_parent_id},
+ "resource" : "* 'first'",
+ "service" : "worker.org.gradle.process.internal.worker.gradleworkermain",
+ "span_id" : ${content_span_id},
+ "start" : ${content_start},
+ "trace_id" : ${content_trace_id}
+ },
+ "type" : "span",
+ "version" : 1
+}, {
+ "content" : {
+ "duration" : ${content_duration_2},
+ "error" : 0,
+ "meta" : {
+ "_dd.p.tid" : ${content_meta__dd_p_tid},
+ "component" : "karate",
+ "dummy_ci_tag" : "dummy_ci_tag_value",
+ "env" : "none",
+ "library_version" : ${content_meta_library_version},
+ "span.kind" : "test_suite_end",
+ "test.framework" : "karate",
+ "test.framework_version" : ${content_meta_test_framework_version},
+ "test.module" : "karate-2.0",
+ "test.status" : "pass",
+ "test.suite" : "[org/example/test_succeed_skip_efd] test succeed",
+ "test.traits" : "{\"category\":[\"foo\"]}",
+ "test.type" : "test",
+ "test_session.name" : "session-name"
+ },
+ "metrics" : {
+ "_dd.host.vcpu_count" : ${content_metrics__dd_host_vcpu_count}
+ },
+ "name" : "karate.test_suite",
+ "resource" : "[org/example/test_succeed_skip_efd] test succeed",
+ "service" : "worker.org.gradle.process.internal.worker.gradleworkermain",
+ "start" : ${content_start_2},
+ "test_module_id" : ${content_test_module_id},
+ "test_session_id" : ${content_test_session_id},
+ "test_suite_id" : ${content_test_suite_id}
+ },
+ "type" : "test_suite_end",
+ "version" : 1
+}, {
+ "content" : {
+ "duration" : ${content_duration_3},
+ "error" : 0,
+ "meta" : {
+ "_dd.profiling.ctx" : "test",
+ "_dd.tracer_host" : ${content_meta__dd_tracer_host},
+ "component" : "karate",
+ "dummy_ci_tag" : "dummy_ci_tag_value",
+ "env" : "none",
+ "language" : "jvm",
+ "library_version" : ${content_meta_library_version},
+ "runtime-id" : ${content_meta_runtime_id},
+ "span.kind" : "test",
+ "test.final_status" : "pass",
+ "test.framework" : "karate",
+ "test.framework_version" : ${content_meta_test_framework_version},
+ "test.is_new" : "true",
+ "test.module" : "karate-2.0",
+ "test.name" : "first scenario",
+ "test.status" : "pass",
+ "test.suite" : "[org/example/test_succeed_skip_efd] test succeed",
+ "test.traits" : "{\"category\":[\"foo\",\"datadog_efd_disable\"]}",
+ "test.type" : "test",
+ "test_session.name" : "session-name"
+ },
+ "metrics" : {
+ "_dd.host.vcpu_count" : ${content_metrics__dd_host_vcpu_count_2},
+ "_dd.profiling.enabled" : 0,
+ "_dd.trace_span_attribute_schema" : 0,
+ "process_id" : ${content_metrics_process_id}
+ },
+ "name" : "karate.test",
+ "parent_id" : ${content_parent_id_2},
+ "resource" : "[org/example/test_succeed_skip_efd] test succeed.first scenario",
+ "service" : "worker.org.gradle.process.internal.worker.gradleworkermain",
+ "span_id" : ${content_parent_id},
+ "start" : ${content_start_3},
+ "test_module_id" : ${content_test_module_id},
+ "test_session_id" : ${content_test_session_id},
+ "test_suite_id" : ${content_test_suite_id},
+ "trace_id" : ${content_trace_id}
+ },
+ "type" : "test",
+ "version" : 2
+}, {
+ "content" : {
+ "duration" : ${content_duration_4},
+ "error" : 0,
+ "meta" : {
+ "_dd.p.tid" : ${content_meta__dd_p_tid_2},
+ "_dd.profiling.ctx" : "test",
+ "_dd.tracer_host" : ${content_meta__dd_tracer_host},
+ "component" : "karate",
+ "dummy_ci_tag" : "dummy_ci_tag_value",
+ "env" : "none",
+ "language" : "jvm",
+ "library_version" : ${content_meta_library_version},
+ "runtime-id" : ${content_meta_runtime_id},
+ "span.kind" : "test_session_end",
+ "test.command" : "karate-2.0",
+ "test.early_flake.enabled" : "true",
+ "test.framework" : "karate",
+ "test.framework_version" : ${content_meta_test_framework_version},
+ "test.status" : "pass",
+ "test.type" : "test",
+ "test_session.name" : "session-name"
+ },
+ "metrics" : {
+ "_dd.host.vcpu_count" : ${content_metrics__dd_host_vcpu_count_3},
+ "_dd.profiling.enabled" : 0,
+ "_dd.trace_span_attribute_schema" : 0,
+ "process_id" : ${content_metrics_process_id}
+ },
+ "name" : "karate.test_session",
+ "resource" : "karate-2.0",
+ "service" : "worker.org.gradle.process.internal.worker.gradleworkermain",
+ "start" : ${content_start_4},
+ "test_session_id" : ${content_test_session_id}
+ },
+ "type" : "test_session_end",
+ "version" : 1
+}, {
+ "content" : {
+ "duration" : ${content_duration_5},
+ "error" : 0,
+ "meta" : {
+ "_dd.p.tid" : ${content_meta__dd_p_tid_3},
+ "component" : "karate",
+ "dummy_ci_tag" : "dummy_ci_tag_value",
+ "env" : "none",
+ "library_version" : ${content_meta_library_version},
+ "span.kind" : "test_module_end",
+ "test.early_flake.enabled" : "true",
+ "test.framework" : "karate",
+ "test.framework_version" : ${content_meta_test_framework_version},
+ "test.module" : "karate-2.0",
+ "test.status" : "pass",
+ "test.type" : "test",
+ "test_session.name" : "session-name"
+ },
+ "metrics" : {
+ "_dd.host.vcpu_count" : ${content_metrics__dd_host_vcpu_count_4}
+ },
+ "name" : "karate.test_module",
+ "resource" : "karate-2.0",
+ "service" : "worker.org.gradle.process.internal.worker.gradleworkermain",
+ "start" : ${content_start_5},
+ "test_module_id" : ${content_test_module_id},
+ "test_session_id" : ${content_test_session_id}
+ },
+ "type" : "test_module_end",
+ "version" : 1
+} ]
\ No newline at end of file
diff --git a/dd-java-agent/instrumentation/karate/karate-2.0/src/test/resources/test-failed-then-succeed/coverages.ftl b/dd-java-agent/instrumentation/karate/karate-2.0/src/test/resources/test-failed-then-succeed/coverages.ftl
new file mode 100644
index 00000000000..8878e547a79
--- /dev/null
+++ b/dd-java-agent/instrumentation/karate/karate-2.0/src/test/resources/test-failed-then-succeed/coverages.ftl
@@ -0,0 +1 @@
+[ ]
\ No newline at end of file
diff --git a/dd-java-agent/instrumentation/karate/karate-2.0/src/test/resources/test-failed-then-succeed/events.ftl b/dd-java-agent/instrumentation/karate/karate-2.0/src/test/resources/test-failed-then-succeed/events.ftl
new file mode 100644
index 00000000000..250a3344bc2
--- /dev/null
+++ b/dd-java-agent/instrumentation/karate/karate-2.0/src/test/resources/test-failed-then-succeed/events.ftl
@@ -0,0 +1,310 @@
+[ {
+ "content" : {
+ "duration" : ${content_duration},
+ "error" : 0,
+ "meta" : {
+ "component" : "karate",
+ "env" : "none",
+ "library_version" : ${content_meta_library_version},
+ "step.name" : "* Java.type('org.example.Flaky').flake()"
+ },
+ "metrics" : {
+ "step.endLine" : 4,
+ "step.startLine" : 4
+ },
+ "name" : "karate.step",
+ "parent_id" : ${content_parent_id},
+ "resource" : "* Java.type('org.example.Flaky').flake()",
+ "service" : "worker.org.gradle.process.internal.worker.gradleworkermain",
+ "span_id" : ${content_span_id},
+ "start" : ${content_start},
+ "trace_id" : ${content_trace_id}
+ },
+ "type" : "span",
+ "version" : 1
+}, {
+ "content" : {
+ "duration" : ${content_duration_2},
+ "error" : 0,
+ "meta" : {
+ "component" : "karate",
+ "env" : "none",
+ "library_version" : ${content_meta_library_version},
+ "step.name" : "* Java.type('org.example.Flaky').flake()"
+ },
+ "metrics" : {
+ "step.endLine" : 4,
+ "step.startLine" : 4
+ },
+ "name" : "karate.step",
+ "parent_id" : ${content_parent_id_2},
+ "resource" : "* Java.type('org.example.Flaky').flake()",
+ "service" : "worker.org.gradle.process.internal.worker.gradleworkermain",
+ "span_id" : ${content_span_id_2},
+ "start" : ${content_start_2},
+ "trace_id" : ${content_trace_id_2}
+ },
+ "type" : "span",
+ "version" : 1
+}, {
+ "content" : {
+ "duration" : ${content_duration_3},
+ "error" : 0,
+ "meta" : {
+ "component" : "karate",
+ "env" : "none",
+ "library_version" : ${content_meta_library_version},
+ "step.name" : "* Java.type('org.example.Flaky').flake()"
+ },
+ "metrics" : {
+ "step.endLine" : 4,
+ "step.startLine" : 4
+ },
+ "name" : "karate.step",
+ "parent_id" : ${content_parent_id_3},
+ "resource" : "* Java.type('org.example.Flaky').flake()",
+ "service" : "worker.org.gradle.process.internal.worker.gradleworkermain",
+ "span_id" : ${content_span_id_3},
+ "start" : ${content_start_3},
+ "trace_id" : ${content_trace_id_3}
+ },
+ "type" : "span",
+ "version" : 1
+}, {
+ "content" : {
+ "duration" : ${content_duration_4},
+ "error" : 0,
+ "meta" : {
+ "_dd.p.tid" : ${content_meta__dd_p_tid},
+ "component" : "karate",
+ "dummy_ci_tag" : "dummy_ci_tag_value",
+ "env" : "none",
+ "library_version" : ${content_meta_library_version},
+ "span.kind" : "test_suite_end",
+ "test.framework" : "karate",
+ "test.framework_version" : ${content_meta_test_framework_version},
+ "test.module" : "karate-2.0",
+ "test.status" : "pass",
+ "test.suite" : "[org/example/test_failed_then_succeed] test failed",
+ "test.type" : "test",
+ "test_session.name" : "session-name"
+ },
+ "metrics" : {
+ "_dd.host.vcpu_count" : ${content_metrics__dd_host_vcpu_count}
+ },
+ "name" : "karate.test_suite",
+ "resource" : "[org/example/test_failed_then_succeed] test failed",
+ "service" : "worker.org.gradle.process.internal.worker.gradleworkermain",
+ "start" : ${content_start_4},
+ "test_module_id" : ${content_test_module_id},
+ "test_session_id" : ${content_test_session_id},
+ "test_suite_id" : ${content_test_suite_id}
+ },
+ "type" : "test_suite_end",
+ "version" : 1
+}, {
+ "content" : {
+ "duration" : ${content_duration_5},
+ "error" : 1,
+ "meta" : {
+ "_dd.profiling.ctx" : "test",
+ "_dd.tracer_host" : ${content_meta__dd_tracer_host},
+ "component" : "karate",
+ "dummy_ci_tag" : "dummy_ci_tag_value",
+ "env" : "none",
+ "error.message" : ${content_meta_error_message},
+ "error.stack" : ${content_meta_error_stack},
+ "error.type" : "io.karatelabs.js.EngineException",
+ "language" : "jvm",
+ "library_version" : ${content_meta_library_version},
+ "runtime-id" : ${content_meta_runtime_id},
+ "span.kind" : "test",
+ "test.failure_suppressed" : "true",
+ "test.framework" : "karate",
+ "test.framework_version" : ${content_meta_test_framework_version},
+ "test.module" : "karate-2.0",
+ "test.name" : "flaky scenario",
+ "test.status" : "fail",
+ "test.suite" : "[org/example/test_failed_then_succeed] test failed",
+ "test.type" : "test",
+ "test_session.name" : "session-name"
+ },
+ "metrics" : {
+ "_dd.host.vcpu_count" : ${content_metrics__dd_host_vcpu_count_2},
+ "_dd.profiling.enabled" : 0,
+ "_dd.trace_span_attribute_schema" : 0,
+ "process_id" : ${content_metrics_process_id}
+ },
+ "name" : "karate.test",
+ "parent_id" : ${content_parent_id_4},
+ "resource" : "[org/example/test_failed_then_succeed] test failed.flaky scenario",
+ "service" : "worker.org.gradle.process.internal.worker.gradleworkermain",
+ "span_id" : ${content_parent_id},
+ "start" : ${content_start_5},
+ "test_module_id" : ${content_test_module_id},
+ "test_session_id" : ${content_test_session_id},
+ "test_suite_id" : ${content_test_suite_id},
+ "trace_id" : ${content_trace_id}
+ },
+ "type" : "test",
+ "version" : 2
+}, {
+ "content" : {
+ "duration" : ${content_duration_6},
+ "error" : 1,
+ "meta" : {
+ "_dd.profiling.ctx" : "test",
+ "_dd.tracer_host" : ${content_meta__dd_tracer_host},
+ "component" : "karate",
+ "dummy_ci_tag" : "dummy_ci_tag_value",
+ "env" : "none",
+ "error.message" : ${content_meta_error_message},
+ "error.stack" : ${content_meta_error_stack_2},
+ "error.type" : "io.karatelabs.js.EngineException",
+ "language" : "jvm",
+ "library_version" : ${content_meta_library_version},
+ "runtime-id" : ${content_meta_runtime_id},
+ "span.kind" : "test",
+ "test.failure_suppressed" : "true",
+ "test.framework" : "karate",
+ "test.framework_version" : ${content_meta_test_framework_version},
+ "test.is_retry" : "true",
+ "test.module" : "karate-2.0",
+ "test.name" : "flaky scenario",
+ "test.retry_reason" : "auto_test_retry",
+ "test.status" : "fail",
+ "test.suite" : "[org/example/test_failed_then_succeed] test failed",
+ "test.type" : "test",
+ "test_session.name" : "session-name"
+ },
+ "metrics" : {
+ "_dd.host.vcpu_count" : ${content_metrics__dd_host_vcpu_count_3},
+ "_dd.profiling.enabled" : 0,
+ "_dd.trace_span_attribute_schema" : 0,
+ "process_id" : ${content_metrics_process_id}
+ },
+ "name" : "karate.test",
+ "parent_id" : ${content_parent_id_4},
+ "resource" : "[org/example/test_failed_then_succeed] test failed.flaky scenario",
+ "service" : "worker.org.gradle.process.internal.worker.gradleworkermain",
+ "span_id" : ${content_parent_id_2},
+ "start" : ${content_start_6},
+ "test_module_id" : ${content_test_module_id},
+ "test_session_id" : ${content_test_session_id},
+ "test_suite_id" : ${content_test_suite_id},
+ "trace_id" : ${content_trace_id_2}
+ },
+ "type" : "test",
+ "version" : 2
+}, {
+ "content" : {
+ "duration" : ${content_duration_7},
+ "error" : 0,
+ "meta" : {
+ "_dd.profiling.ctx" : "test",
+ "_dd.tracer_host" : ${content_meta__dd_tracer_host},
+ "component" : "karate",
+ "dummy_ci_tag" : "dummy_ci_tag_value",
+ "env" : "none",
+ "language" : "jvm",
+ "library_version" : ${content_meta_library_version},
+ "runtime-id" : ${content_meta_runtime_id},
+ "span.kind" : "test",
+ "test.final_status" : "pass",
+ "test.framework" : "karate",
+ "test.framework_version" : ${content_meta_test_framework_version},
+ "test.is_retry" : "true",
+ "test.module" : "karate-2.0",
+ "test.name" : "flaky scenario",
+ "test.retry_reason" : "auto_test_retry",
+ "test.status" : "pass",
+ "test.suite" : "[org/example/test_failed_then_succeed] test failed",
+ "test.type" : "test",
+ "test_session.name" : "session-name"
+ },
+ "metrics" : {
+ "_dd.host.vcpu_count" : ${content_metrics__dd_host_vcpu_count_4},
+ "_dd.profiling.enabled" : 0,
+ "_dd.trace_span_attribute_schema" : 0,
+ "process_id" : ${content_metrics_process_id}
+ },
+ "name" : "karate.test",
+ "parent_id" : ${content_parent_id_4},
+ "resource" : "[org/example/test_failed_then_succeed] test failed.flaky scenario",
+ "service" : "worker.org.gradle.process.internal.worker.gradleworkermain",
+ "span_id" : ${content_parent_id_3},
+ "start" : ${content_start_7},
+ "test_module_id" : ${content_test_module_id},
+ "test_session_id" : ${content_test_session_id},
+ "test_suite_id" : ${content_test_suite_id},
+ "trace_id" : ${content_trace_id_3}
+ },
+ "type" : "test",
+ "version" : 2
+}, {
+ "content" : {
+ "duration" : ${content_duration_8},
+ "error" : 0,
+ "meta" : {
+ "_dd.p.tid" : ${content_meta__dd_p_tid_2},
+ "_dd.profiling.ctx" : "test",
+ "_dd.tracer_host" : ${content_meta__dd_tracer_host},
+ "component" : "karate",
+ "dummy_ci_tag" : "dummy_ci_tag_value",
+ "env" : "none",
+ "language" : "jvm",
+ "library_version" : ${content_meta_library_version},
+ "runtime-id" : ${content_meta_runtime_id},
+ "span.kind" : "test_session_end",
+ "test.command" : "karate-2.0",
+ "test.framework" : "karate",
+ "test.framework_version" : ${content_meta_test_framework_version},
+ "test.status" : "pass",
+ "test.type" : "test",
+ "test_session.name" : "session-name"
+ },
+ "metrics" : {
+ "_dd.host.vcpu_count" : ${content_metrics__dd_host_vcpu_count_5},
+ "_dd.profiling.enabled" : 0,
+ "_dd.trace_span_attribute_schema" : 0,
+ "process_id" : ${content_metrics_process_id}
+ },
+ "name" : "karate.test_session",
+ "resource" : "karate-2.0",
+ "service" : "worker.org.gradle.process.internal.worker.gradleworkermain",
+ "start" : ${content_start_8},
+ "test_session_id" : ${content_test_session_id}
+ },
+ "type" : "test_session_end",
+ "version" : 1
+}, {
+ "content" : {
+ "duration" : ${content_duration_9},
+ "error" : 0,
+ "meta" : {
+ "_dd.p.tid" : ${content_meta__dd_p_tid_3},
+ "component" : "karate",
+ "dummy_ci_tag" : "dummy_ci_tag_value",
+ "env" : "none",
+ "library_version" : ${content_meta_library_version},
+ "span.kind" : "test_module_end",
+ "test.framework" : "karate",
+ "test.framework_version" : ${content_meta_test_framework_version},
+ "test.module" : "karate-2.0",
+ "test.status" : "pass",
+ "test.type" : "test",
+ "test_session.name" : "session-name"
+ },
+ "metrics" : {
+ "_dd.host.vcpu_count" : ${content_metrics__dd_host_vcpu_count_6}
+ },
+ "name" : "karate.test_module",
+ "resource" : "karate-2.0",
+ "service" : "worker.org.gradle.process.internal.worker.gradleworkermain",
+ "start" : ${content_start_9},
+ "test_module_id" : ${content_test_module_id},
+ "test_session_id" : ${content_test_session_id}
+ },
+ "type" : "test_module_end",
+ "version" : 1
+} ]
\ No newline at end of file
diff --git a/dd-java-agent/instrumentation/karate/karate-2.0/src/test/resources/test-failed/coverages.ftl b/dd-java-agent/instrumentation/karate/karate-2.0/src/test/resources/test-failed/coverages.ftl
new file mode 100644
index 00000000000..8878e547a79
--- /dev/null
+++ b/dd-java-agent/instrumentation/karate/karate-2.0/src/test/resources/test-failed/coverages.ftl
@@ -0,0 +1 @@
+[ ]
\ No newline at end of file
diff --git a/dd-java-agent/instrumentation/karate/karate-2.0/src/test/resources/test-failed/events.ftl b/dd-java-agent/instrumentation/karate/karate-2.0/src/test/resources/test-failed/events.ftl
new file mode 100644
index 00000000000..d1e680f8cfb
--- /dev/null
+++ b/dd-java-agent/instrumentation/karate/karate-2.0/src/test/resources/test-failed/events.ftl
@@ -0,0 +1,239 @@
+[ {
+ "content" : {
+ "duration" : ${content_duration},
+ "error" : 0,
+ "meta" : {
+ "component" : "karate",
+ "env" : "none",
+ "library_version" : ${content_meta_library_version},
+ "step.name" : "* 'first'"
+ },
+ "metrics" : {
+ "step.endLine" : 4,
+ "step.startLine" : 4
+ },
+ "name" : "karate.step",
+ "parent_id" : ${content_parent_id},
+ "resource" : "* 'first'",
+ "service" : "worker.org.gradle.process.internal.worker.gradleworkermain",
+ "span_id" : ${content_span_id},
+ "start" : ${content_start},
+ "trace_id" : ${content_trace_id}
+ },
+ "type" : "span",
+ "version" : 1
+}, {
+ "content" : {
+ "duration" : ${content_duration_2},
+ "error" : 0,
+ "meta" : {
+ "component" : "karate",
+ "env" : "none",
+ "library_version" : ${content_meta_library_version},
+ "step.name" : "* false"
+ },
+ "metrics" : {
+ "step.endLine" : 7,
+ "step.startLine" : 7
+ },
+ "name" : "karate.step",
+ "parent_id" : ${content_parent_id_2},
+ "resource" : "* false",
+ "service" : "worker.org.gradle.process.internal.worker.gradleworkermain",
+ "span_id" : ${content_span_id_2},
+ "start" : ${content_start_2},
+ "trace_id" : ${content_trace_id_2}
+ },
+ "type" : "span",
+ "version" : 1
+}, {
+ "content" : {
+ "duration" : ${content_duration_3},
+ "error" : 1,
+ "meta" : {
+ "_dd.p.tid" : ${content_meta__dd_p_tid},
+ "component" : "karate",
+ "dummy_ci_tag" : "dummy_ci_tag_value",
+ "env" : "none",
+ "error.message" : ${content_meta_error_message},
+ "error.stack" : ${content_meta_error_stack},
+ "error.type" : "java.lang.AssertionError",
+ "library_version" : ${content_meta_library_version},
+ "span.kind" : "test_suite_end",
+ "test.framework" : "karate",
+ "test.framework_version" : ${content_meta_test_framework_version},
+ "test.module" : "karate-2.0",
+ "test.status" : "fail",
+ "test.suite" : "[org/example/test_failed] test failed",
+ "test.type" : "test",
+ "test_session.name" : "session-name"
+ },
+ "metrics" : {
+ "_dd.host.vcpu_count" : ${content_metrics__dd_host_vcpu_count}
+ },
+ "name" : "karate.test_suite",
+ "resource" : "[org/example/test_failed] test failed",
+ "service" : "worker.org.gradle.process.internal.worker.gradleworkermain",
+ "start" : ${content_start_3},
+ "test_module_id" : ${content_test_module_id},
+ "test_session_id" : ${content_test_session_id},
+ "test_suite_id" : ${content_test_suite_id}
+ },
+ "type" : "test_suite_end",
+ "version" : 1
+}, {
+ "content" : {
+ "duration" : ${content_duration_4},
+ "error" : 0,
+ "meta" : {
+ "_dd.profiling.ctx" : "test",
+ "_dd.tracer_host" : ${content_meta__dd_tracer_host},
+ "component" : "karate",
+ "dummy_ci_tag" : "dummy_ci_tag_value",
+ "env" : "none",
+ "language" : "jvm",
+ "library_version" : ${content_meta_library_version},
+ "runtime-id" : ${content_meta_runtime_id},
+ "span.kind" : "test",
+ "test.final_status" : "pass",
+ "test.framework" : "karate",
+ "test.framework_version" : ${content_meta_test_framework_version},
+ "test.module" : "karate-2.0",
+ "test.name" : "first scenario",
+ "test.status" : "pass",
+ "test.suite" : "[org/example/test_failed] test failed",
+ "test.type" : "test",
+ "test_session.name" : "session-name"
+ },
+ "metrics" : {
+ "_dd.host.vcpu_count" : ${content_metrics__dd_host_vcpu_count_2},
+ "_dd.profiling.enabled" : 0,
+ "_dd.trace_span_attribute_schema" : 0,
+ "process_id" : ${content_metrics_process_id}
+ },
+ "name" : "karate.test",
+ "parent_id" : ${content_parent_id_3},
+ "resource" : "[org/example/test_failed] test failed.first scenario",
+ "service" : "worker.org.gradle.process.internal.worker.gradleworkermain",
+ "span_id" : ${content_parent_id},
+ "start" : ${content_start_4},
+ "test_module_id" : ${content_test_module_id},
+ "test_session_id" : ${content_test_session_id},
+ "test_suite_id" : ${content_test_suite_id},
+ "trace_id" : ${content_trace_id}
+ },
+ "type" : "test",
+ "version" : 2
+}, {
+ "content" : {
+ "duration" : ${content_duration_5},
+ "error" : 1,
+ "meta" : {
+ "_dd.profiling.ctx" : "test",
+ "_dd.tracer_host" : ${content_meta__dd_tracer_host},
+ "component" : "karate",
+ "dummy_ci_tag" : "dummy_ci_tag_value",
+ "env" : "none",
+ "error.message" : ${content_meta_error_message},
+ "error.stack" : ${content_meta_error_stack_2},
+ "error.type" : "java.lang.AssertionError",
+ "language" : "jvm",
+ "library_version" : ${content_meta_library_version},
+ "runtime-id" : ${content_meta_runtime_id},
+ "span.kind" : "test",
+ "test.final_status" : "fail",
+ "test.framework" : "karate",
+ "test.framework_version" : ${content_meta_test_framework_version},
+ "test.module" : "karate-2.0",
+ "test.name" : "second scenario",
+ "test.status" : "fail",
+ "test.suite" : "[org/example/test_failed] test failed",
+ "test.type" : "test",
+ "test_session.name" : "session-name"
+ },
+ "metrics" : {
+ "_dd.host.vcpu_count" : ${content_metrics__dd_host_vcpu_count_3},
+ "_dd.profiling.enabled" : 0,
+ "_dd.trace_span_attribute_schema" : 0,
+ "process_id" : ${content_metrics_process_id}
+ },
+ "name" : "karate.test",
+ "parent_id" : ${content_parent_id_3},
+ "resource" : "[org/example/test_failed] test failed.second scenario",
+ "service" : "worker.org.gradle.process.internal.worker.gradleworkermain",
+ "span_id" : ${content_parent_id_2},
+ "start" : ${content_start_5},
+ "test_module_id" : ${content_test_module_id},
+ "test_session_id" : ${content_test_session_id},
+ "test_suite_id" : ${content_test_suite_id},
+ "trace_id" : ${content_trace_id_2}
+ },
+ "type" : "test",
+ "version" : 2
+}, {
+ "content" : {
+ "duration" : ${content_duration_6},
+ "error" : 0,
+ "meta" : {
+ "_dd.p.tid" : ${content_meta__dd_p_tid_2},
+ "_dd.profiling.ctx" : "test",
+ "_dd.tracer_host" : ${content_meta__dd_tracer_host},
+ "component" : "karate",
+ "dummy_ci_tag" : "dummy_ci_tag_value",
+ "env" : "none",
+ "language" : "jvm",
+ "library_version" : ${content_meta_library_version},
+ "runtime-id" : ${content_meta_runtime_id},
+ "span.kind" : "test_session_end",
+ "test.command" : "karate-2.0",
+ "test.framework" : "karate",
+ "test.framework_version" : ${content_meta_test_framework_version},
+ "test.status" : "fail",
+ "test.type" : "test",
+ "test_session.name" : "session-name"
+ },
+ "metrics" : {
+ "_dd.host.vcpu_count" : ${content_metrics__dd_host_vcpu_count_4},
+ "_dd.profiling.enabled" : 0,
+ "_dd.trace_span_attribute_schema" : 0,
+ "process_id" : ${content_metrics_process_id}
+ },
+ "name" : "karate.test_session",
+ "resource" : "karate-2.0",
+ "service" : "worker.org.gradle.process.internal.worker.gradleworkermain",
+ "start" : ${content_start_6},
+ "test_session_id" : ${content_test_session_id}
+ },
+ "type" : "test_session_end",
+ "version" : 1
+}, {
+ "content" : {
+ "duration" : ${content_duration_7},
+ "error" : 0,
+ "meta" : {
+ "_dd.p.tid" : ${content_meta__dd_p_tid_3},
+ "component" : "karate",
+ "dummy_ci_tag" : "dummy_ci_tag_value",
+ "env" : "none",
+ "library_version" : ${content_meta_library_version},
+ "span.kind" : "test_module_end",
+ "test.framework" : "karate",
+ "test.framework_version" : ${content_meta_test_framework_version},
+ "test.module" : "karate-2.0",
+ "test.status" : "fail",
+ "test.type" : "test",
+ "test_session.name" : "session-name"
+ },
+ "metrics" : {
+ "_dd.host.vcpu_count" : ${content_metrics__dd_host_vcpu_count_5}
+ },
+ "name" : "karate.test_module",
+ "resource" : "karate-2.0",
+ "service" : "worker.org.gradle.process.internal.worker.gradleworkermain",
+ "start" : ${content_start_7},
+ "test_module_id" : ${content_test_module_id},
+ "test_session_id" : ${content_test_session_id}
+ },
+ "type" : "test_module_end",
+ "version" : 1
+} ]
\ No newline at end of file
diff --git a/dd-java-agent/instrumentation/karate/karate-2.0/src/test/resources/test-itr-skipping-parameterized/coverages.ftl b/dd-java-agent/instrumentation/karate/karate-2.0/src/test/resources/test-itr-skipping-parameterized/coverages.ftl
new file mode 100644
index 00000000000..8878e547a79
--- /dev/null
+++ b/dd-java-agent/instrumentation/karate/karate-2.0/src/test/resources/test-itr-skipping-parameterized/coverages.ftl
@@ -0,0 +1 @@
+[ ]
\ No newline at end of file
diff --git a/dd-java-agent/instrumentation/karate/karate-2.0/src/test/resources/test-itr-skipping-parameterized/events.ftl b/dd-java-agent/instrumentation/karate/karate-2.0/src/test/resources/test-itr-skipping-parameterized/events.ftl
new file mode 100644
index 00000000000..a2c029a9497
--- /dev/null
+++ b/dd-java-agent/instrumentation/karate/karate-2.0/src/test/resources/test-itr-skipping-parameterized/events.ftl
@@ -0,0 +1,274 @@
+[ {
+ "content" : {
+ "duration" : ${content_duration},
+ "error" : 0,
+ "meta" : {
+ "component" : "karate",
+ "env" : "none",
+ "library_version" : ${content_meta_library_version},
+ "step.name" : "Given p = 'b'"
+ },
+ "metrics" : {
+ "step.endLine" : 6,
+ "step.startLine" : 6
+ },
+ "name" : "karate.step",
+ "parent_id" : ${content_parent_id},
+ "resource" : "Given p = 'b'",
+ "service" : "worker.org.gradle.process.internal.worker.gradleworkermain",
+ "span_id" : ${content_span_id},
+ "start" : ${content_start},
+ "trace_id" : ${content_trace_id}
+ },
+ "type" : "span",
+ "version" : 1
+}, {
+ "content" : {
+ "duration" : ${content_duration_2},
+ "error" : 0,
+ "meta" : {
+ "component" : "karate",
+ "env" : "none",
+ "library_version" : ${content_meta_library_version},
+ "step.name" : "Then response == value"
+ },
+ "metrics" : {
+ "step.endLine" : 8,
+ "step.startLine" : 8
+ },
+ "name" : "karate.step",
+ "parent_id" : ${content_parent_id},
+ "resource" : "Then response == value",
+ "service" : "worker.org.gradle.process.internal.worker.gradleworkermain",
+ "span_id" : ${content_span_id_2},
+ "start" : ${content_start_2},
+ "trace_id" : ${content_trace_id}
+ },
+ "type" : "span",
+ "version" : 1
+}, {
+ "content" : {
+ "duration" : ${content_duration_3},
+ "error" : 0,
+ "meta" : {
+ "component" : "karate",
+ "env" : "none",
+ "library_version" : ${content_meta_library_version},
+ "step.name" : "When response = p + p"
+ },
+ "metrics" : {
+ "step.endLine" : 7,
+ "step.startLine" : 7
+ },
+ "name" : "karate.step",
+ "parent_id" : ${content_parent_id},
+ "resource" : "When response = p + p",
+ "service" : "worker.org.gradle.process.internal.worker.gradleworkermain",
+ "span_id" : ${content_span_id_3},
+ "start" : ${content_start_3},
+ "trace_id" : ${content_trace_id}
+ },
+ "type" : "span",
+ "version" : 1
+}, {
+ "content" : {
+ "duration" : ${content_duration_4},
+ "error" : 0,
+ "meta" : {
+ "_dd.p.tid" : ${content_meta__dd_p_tid},
+ "component" : "karate",
+ "dummy_ci_tag" : "dummy_ci_tag_value",
+ "env" : "none",
+ "library_version" : ${content_meta_library_version},
+ "span.kind" : "test_suite_end",
+ "test.framework" : "karate",
+ "test.framework_version" : ${content_meta_test_framework_version},
+ "test.itr.tests_skipping.enabled" : "true",
+ "test.module" : "karate-2.0",
+ "test.status" : "pass",
+ "test.suite" : "[org/example/test_parameterized] test parameterized",
+ "test.type" : "test",
+ "test_session.name" : "session-name"
+ },
+ "metrics" : {
+ "_dd.host.vcpu_count" : ${content_metrics__dd_host_vcpu_count}
+ },
+ "name" : "karate.test_suite",
+ "resource" : "[org/example/test_parameterized] test parameterized",
+ "service" : "worker.org.gradle.process.internal.worker.gradleworkermain",
+ "start" : ${content_start_4},
+ "test_module_id" : ${content_test_module_id},
+ "test_session_id" : ${content_test_session_id},
+ "test_suite_id" : ${content_test_suite_id}
+ },
+ "type" : "test_suite_end",
+ "version" : 1
+}, {
+ "content" : {
+ "duration" : ${content_duration_5},
+ "error" : 0,
+ "itr_correlation_id" : "itrCorrelationId",
+ "meta" : {
+ "_dd.profiling.ctx" : "test",
+ "_dd.tracer_host" : ${content_meta__dd_tracer_host},
+ "component" : "karate",
+ "dummy_ci_tag" : "dummy_ci_tag_value",
+ "env" : "none",
+ "language" : "jvm",
+ "library_version" : ${content_meta_library_version},
+ "runtime-id" : ${content_meta_runtime_id},
+ "span.kind" : "test",
+ "test.final_status" : "skip",
+ "test.framework" : "karate",
+ "test.framework_version" : ${content_meta_test_framework_version},
+ "test.itr.tests_skipping.enabled" : "true",
+ "test.module" : "karate-2.0",
+ "test.name" : "first scenario as an outline",
+ "test.parameters" : "{\"param\":\"'a'\",\"value\":\"aa\"}",
+ "test.skip_reason" : "Skipped by Datadog Test Impact Analysis",
+ "test.skipped_by_itr" : "true",
+ "test.status" : "skip",
+ "test.suite" : "[org/example/test_parameterized] test parameterized",
+ "test.type" : "test",
+ "test_session.name" : "session-name"
+ },
+ "metrics" : {
+ "_dd.host.vcpu_count" : ${content_metrics__dd_host_vcpu_count_2},
+ "_dd.profiling.enabled" : 0,
+ "_dd.trace_span_attribute_schema" : 0,
+ "process_id" : ${content_metrics_process_id}
+ },
+ "name" : "karate.test",
+ "parent_id" : ${content_parent_id_2},
+ "resource" : "[org/example/test_parameterized] test parameterized.first scenario as an outline",
+ "service" : "worker.org.gradle.process.internal.worker.gradleworkermain",
+ "span_id" : ${content_span_id_4},
+ "start" : ${content_start_5},
+ "test_module_id" : ${content_test_module_id},
+ "test_session_id" : ${content_test_session_id},
+ "test_suite_id" : ${content_test_suite_id},
+ "trace_id" : ${content_trace_id_2}
+ },
+ "type" : "test",
+ "version" : 2
+}, {
+ "content" : {
+ "duration" : ${content_duration_6},
+ "error" : 0,
+ "itr_correlation_id" : "itrCorrelationId",
+ "meta" : {
+ "_dd.profiling.ctx" : "test",
+ "_dd.tracer_host" : ${content_meta__dd_tracer_host},
+ "component" : "karate",
+ "dummy_ci_tag" : "dummy_ci_tag_value",
+ "env" : "none",
+ "language" : "jvm",
+ "library_version" : ${content_meta_library_version},
+ "runtime-id" : ${content_meta_runtime_id},
+ "span.kind" : "test",
+ "test.final_status" : "pass",
+ "test.framework" : "karate",
+ "test.framework_version" : ${content_meta_test_framework_version},
+ "test.itr.tests_skipping.enabled" : "true",
+ "test.module" : "karate-2.0",
+ "test.name" : "first scenario as an outline",
+ "test.parameters" : "{\"param\":\"'b'\",\"value\":\"bb\"}",
+ "test.status" : "pass",
+ "test.suite" : "[org/example/test_parameterized] test parameterized",
+ "test.type" : "test",
+ "test_session.name" : "session-name"
+ },
+ "metrics" : {
+ "_dd.host.vcpu_count" : ${content_metrics__dd_host_vcpu_count_3},
+ "_dd.profiling.enabled" : 0,
+ "_dd.trace_span_attribute_schema" : 0,
+ "process_id" : ${content_metrics_process_id}
+ },
+ "name" : "karate.test",
+ "parent_id" : ${content_parent_id_2},
+ "resource" : "[org/example/test_parameterized] test parameterized.first scenario as an outline",
+ "service" : "worker.org.gradle.process.internal.worker.gradleworkermain",
+ "span_id" : ${content_parent_id},
+ "start" : ${content_start_6},
+ "test_module_id" : ${content_test_module_id},
+ "test_session_id" : ${content_test_session_id},
+ "test_suite_id" : ${content_test_suite_id},
+ "trace_id" : ${content_trace_id}
+ },
+ "type" : "test",
+ "version" : 2
+}, {
+ "content" : {
+ "duration" : ${content_duration_7},
+ "error" : 0,
+ "meta" : {
+ "_dd.ci.itr.tests_skipped" : "true",
+ "_dd.p.tid" : ${content_meta__dd_p_tid_2},
+ "_dd.profiling.ctx" : "test",
+ "_dd.tracer_host" : ${content_meta__dd_tracer_host},
+ "component" : "karate",
+ "dummy_ci_tag" : "dummy_ci_tag_value",
+ "env" : "none",
+ "language" : "jvm",
+ "library_version" : ${content_meta_library_version},
+ "runtime-id" : ${content_meta_runtime_id},
+ "span.kind" : "test_session_end",
+ "test.command" : "karate-2.0",
+ "test.framework" : "karate",
+ "test.framework_version" : ${content_meta_test_framework_version},
+ "test.itr.tests_skipping.enabled" : "true",
+ "test.itr.tests_skipping.type" : "test",
+ "test.status" : "pass",
+ "test.type" : "test",
+ "test_session.name" : "session-name"
+ },
+ "metrics" : {
+ "_dd.host.vcpu_count" : ${content_metrics__dd_host_vcpu_count_4},
+ "_dd.profiling.enabled" : 0,
+ "_dd.trace_span_attribute_schema" : 0,
+ "process_id" : ${content_metrics_process_id},
+ "test.itr.tests_skipping.count" : 1
+ },
+ "name" : "karate.test_session",
+ "resource" : "karate-2.0",
+ "service" : "worker.org.gradle.process.internal.worker.gradleworkermain",
+ "start" : ${content_start_7},
+ "test_session_id" : ${content_test_session_id}
+ },
+ "type" : "test_session_end",
+ "version" : 1
+}, {
+ "content" : {
+ "duration" : ${content_duration_8},
+ "error" : 0,
+ "meta" : {
+ "_dd.ci.itr.tests_skipped" : "true",
+ "_dd.p.tid" : ${content_meta__dd_p_tid_3},
+ "component" : "karate",
+ "dummy_ci_tag" : "dummy_ci_tag_value",
+ "env" : "none",
+ "library_version" : ${content_meta_library_version},
+ "span.kind" : "test_module_end",
+ "test.framework" : "karate",
+ "test.framework_version" : ${content_meta_test_framework_version},
+ "test.itr.tests_skipping.enabled" : "true",
+ "test.itr.tests_skipping.type" : "test",
+ "test.module" : "karate-2.0",
+ "test.status" : "pass",
+ "test.type" : "test",
+ "test_session.name" : "session-name"
+ },
+ "metrics" : {
+ "_dd.host.vcpu_count" : ${content_metrics__dd_host_vcpu_count_5},
+ "test.itr.tests_skipping.count" : 1
+ },
+ "name" : "karate.test_module",
+ "resource" : "karate-2.0",
+ "service" : "worker.org.gradle.process.internal.worker.gradleworkermain",
+ "start" : ${content_start_8},
+ "test_module_id" : ${content_test_module_id},
+ "test_session_id" : ${content_test_session_id}
+ },
+ "type" : "test_module_end",
+ "version" : 1
+} ]
\ No newline at end of file
diff --git a/dd-java-agent/instrumentation/karate/karate-2.0/src/test/resources/test-itr-skipping/coverages.ftl b/dd-java-agent/instrumentation/karate/karate-2.0/src/test/resources/test-itr-skipping/coverages.ftl
new file mode 100644
index 00000000000..8878e547a79
--- /dev/null
+++ b/dd-java-agent/instrumentation/karate/karate-2.0/src/test/resources/test-itr-skipping/coverages.ftl
@@ -0,0 +1 @@
+[ ]
\ No newline at end of file
diff --git a/dd-java-agent/instrumentation/karate/karate-2.0/src/test/resources/test-itr-skipping/events.ftl b/dd-java-agent/instrumentation/karate/karate-2.0/src/test/resources/test-itr-skipping/events.ftl
new file mode 100644
index 00000000000..a208d424c82
--- /dev/null
+++ b/dd-java-agent/instrumentation/karate/karate-2.0/src/test/resources/test-itr-skipping/events.ftl
@@ -0,0 +1,227 @@
+[ {
+ "content" : {
+ "duration" : ${content_duration},
+ "error" : 0,
+ "meta" : {
+ "component" : "karate",
+ "env" : "none",
+ "library_version" : ${content_meta_library_version},
+ "step.name" : "* 'second'"
+ },
+ "metrics" : {
+ "step.endLine" : 9,
+ "step.startLine" : 9
+ },
+ "name" : "karate.step",
+ "parent_id" : ${content_parent_id},
+ "resource" : "* 'second'",
+ "service" : "worker.org.gradle.process.internal.worker.gradleworkermain",
+ "span_id" : ${content_span_id},
+ "start" : ${content_start},
+ "trace_id" : ${content_trace_id}
+ },
+ "type" : "span",
+ "version" : 1
+}, {
+ "content" : {
+ "duration" : ${content_duration_2},
+ "error" : 0,
+ "meta" : {
+ "_dd.p.tid" : ${content_meta__dd_p_tid},
+ "component" : "karate",
+ "dummy_ci_tag" : "dummy_ci_tag_value",
+ "env" : "none",
+ "library_version" : ${content_meta_library_version},
+ "span.kind" : "test_suite_end",
+ "test.framework" : "karate",
+ "test.framework_version" : ${content_meta_test_framework_version},
+ "test.itr.tests_skipping.enabled" : "true",
+ "test.module" : "karate-2.0",
+ "test.status" : "pass",
+ "test.suite" : "[org/example/test_succeed] test succeed",
+ "test.traits" : "{\"category\":[\"foo\"]}",
+ "test.type" : "test",
+ "test_session.name" : "session-name"
+ },
+ "metrics" : {
+ "_dd.host.vcpu_count" : ${content_metrics__dd_host_vcpu_count}
+ },
+ "name" : "karate.test_suite",
+ "resource" : "[org/example/test_succeed] test succeed",
+ "service" : "worker.org.gradle.process.internal.worker.gradleworkermain",
+ "start" : ${content_start_2},
+ "test_module_id" : ${content_test_module_id},
+ "test_session_id" : ${content_test_session_id},
+ "test_suite_id" : ${content_test_suite_id}
+ },
+ "type" : "test_suite_end",
+ "version" : 1
+}, {
+ "content" : {
+ "duration" : ${content_duration_3},
+ "error" : 0,
+ "itr_correlation_id" : "itrCorrelationId",
+ "meta" : {
+ "_dd.profiling.ctx" : "test",
+ "_dd.tracer_host" : ${content_meta__dd_tracer_host},
+ "component" : "karate",
+ "dummy_ci_tag" : "dummy_ci_tag_value",
+ "env" : "none",
+ "language" : "jvm",
+ "library_version" : ${content_meta_library_version},
+ "runtime-id" : ${content_meta_runtime_id},
+ "span.kind" : "test",
+ "test.final_status" : "skip",
+ "test.framework" : "karate",
+ "test.framework_version" : ${content_meta_test_framework_version},
+ "test.itr.tests_skipping.enabled" : "true",
+ "test.module" : "karate-2.0",
+ "test.name" : "first scenario",
+ "test.skip_reason" : "Skipped by Datadog Test Impact Analysis",
+ "test.skipped_by_itr" : "true",
+ "test.status" : "skip",
+ "test.suite" : "[org/example/test_succeed] test succeed",
+ "test.traits" : "{\"category\":[\"foo\",\"bar\"]}",
+ "test.type" : "test",
+ "test_session.name" : "session-name"
+ },
+ "metrics" : {
+ "_dd.host.vcpu_count" : ${content_metrics__dd_host_vcpu_count_2},
+ "_dd.profiling.enabled" : 0,
+ "_dd.trace_span_attribute_schema" : 0,
+ "process_id" : ${content_metrics_process_id}
+ },
+ "name" : "karate.test",
+ "parent_id" : ${content_parent_id_2},
+ "resource" : "[org/example/test_succeed] test succeed.first scenario",
+ "service" : "worker.org.gradle.process.internal.worker.gradleworkermain",
+ "span_id" : ${content_span_id_2},
+ "start" : ${content_start_3},
+ "test_module_id" : ${content_test_module_id},
+ "test_session_id" : ${content_test_session_id},
+ "test_suite_id" : ${content_test_suite_id},
+ "trace_id" : ${content_trace_id_2}
+ },
+ "type" : "test",
+ "version" : 2
+}, {
+ "content" : {
+ "duration" : ${content_duration_4},
+ "error" : 0,
+ "itr_correlation_id" : "itrCorrelationId",
+ "meta" : {
+ "_dd.profiling.ctx" : "test",
+ "_dd.tracer_host" : ${content_meta__dd_tracer_host},
+ "component" : "karate",
+ "dummy_ci_tag" : "dummy_ci_tag_value",
+ "env" : "none",
+ "language" : "jvm",
+ "library_version" : ${content_meta_library_version},
+ "runtime-id" : ${content_meta_runtime_id},
+ "span.kind" : "test",
+ "test.final_status" : "pass",
+ "test.framework" : "karate",
+ "test.framework_version" : ${content_meta_test_framework_version},
+ "test.itr.tests_skipping.enabled" : "true",
+ "test.module" : "karate-2.0",
+ "test.name" : "second scenario",
+ "test.status" : "pass",
+ "test.suite" : "[org/example/test_succeed] test succeed",
+ "test.traits" : "{\"category\":[\"foo\"]}",
+ "test.type" : "test",
+ "test_session.name" : "session-name"
+ },
+ "metrics" : {
+ "_dd.host.vcpu_count" : ${content_metrics__dd_host_vcpu_count_3},
+ "_dd.profiling.enabled" : 0,
+ "_dd.trace_span_attribute_schema" : 0,
+ "process_id" : ${content_metrics_process_id}
+ },
+ "name" : "karate.test",
+ "parent_id" : ${content_parent_id_2},
+ "resource" : "[org/example/test_succeed] test succeed.second scenario",
+ "service" : "worker.org.gradle.process.internal.worker.gradleworkermain",
+ "span_id" : ${content_parent_id},
+ "start" : ${content_start_4},
+ "test_module_id" : ${content_test_module_id},
+ "test_session_id" : ${content_test_session_id},
+ "test_suite_id" : ${content_test_suite_id},
+ "trace_id" : ${content_trace_id}
+ },
+ "type" : "test",
+ "version" : 2
+}, {
+ "content" : {
+ "duration" : ${content_duration_5},
+ "error" : 0,
+ "meta" : {
+ "_dd.ci.itr.tests_skipped" : "true",
+ "_dd.p.tid" : ${content_meta__dd_p_tid_2},
+ "_dd.profiling.ctx" : "test",
+ "_dd.tracer_host" : ${content_meta__dd_tracer_host},
+ "component" : "karate",
+ "dummy_ci_tag" : "dummy_ci_tag_value",
+ "env" : "none",
+ "language" : "jvm",
+ "library_version" : ${content_meta_library_version},
+ "runtime-id" : ${content_meta_runtime_id},
+ "span.kind" : "test_session_end",
+ "test.command" : "karate-2.0",
+ "test.framework" : "karate",
+ "test.framework_version" : ${content_meta_test_framework_version},
+ "test.itr.tests_skipping.enabled" : "true",
+ "test.itr.tests_skipping.type" : "test",
+ "test.status" : "pass",
+ "test.type" : "test",
+ "test_session.name" : "session-name"
+ },
+ "metrics" : {
+ "_dd.host.vcpu_count" : ${content_metrics__dd_host_vcpu_count_4},
+ "_dd.profiling.enabled" : 0,
+ "_dd.trace_span_attribute_schema" : 0,
+ "process_id" : ${content_metrics_process_id},
+ "test.itr.tests_skipping.count" : 1
+ },
+ "name" : "karate.test_session",
+ "resource" : "karate-2.0",
+ "service" : "worker.org.gradle.process.internal.worker.gradleworkermain",
+ "start" : ${content_start_5},
+ "test_session_id" : ${content_test_session_id}
+ },
+ "type" : "test_session_end",
+ "version" : 1
+}, {
+ "content" : {
+ "duration" : ${content_duration_6},
+ "error" : 0,
+ "meta" : {
+ "_dd.ci.itr.tests_skipped" : "true",
+ "_dd.p.tid" : ${content_meta__dd_p_tid_3},
+ "component" : "karate",
+ "dummy_ci_tag" : "dummy_ci_tag_value",
+ "env" : "none",
+ "library_version" : ${content_meta_library_version},
+ "span.kind" : "test_module_end",
+ "test.framework" : "karate",
+ "test.framework_version" : ${content_meta_test_framework_version},
+ "test.itr.tests_skipping.enabled" : "true",
+ "test.itr.tests_skipping.type" : "test",
+ "test.module" : "karate-2.0",
+ "test.status" : "pass",
+ "test.type" : "test",
+ "test_session.name" : "session-name"
+ },
+ "metrics" : {
+ "_dd.host.vcpu_count" : ${content_metrics__dd_host_vcpu_count_5},
+ "test.itr.tests_skipping.count" : 1
+ },
+ "name" : "karate.test_module",
+ "resource" : "karate-2.0",
+ "service" : "worker.org.gradle.process.internal.worker.gradleworkermain",
+ "start" : ${content_start_6},
+ "test_module_id" : ${content_test_module_id},
+ "test_session_id" : ${content_test_session_id}
+ },
+ "type" : "test_module_end",
+ "version" : 1
+} ]
\ No newline at end of file
diff --git a/dd-java-agent/instrumentation/karate/karate-2.0/src/test/resources/test-itr-unskippable/coverages.ftl b/dd-java-agent/instrumentation/karate/karate-2.0/src/test/resources/test-itr-unskippable/coverages.ftl
new file mode 100644
index 00000000000..8878e547a79
--- /dev/null
+++ b/dd-java-agent/instrumentation/karate/karate-2.0/src/test/resources/test-itr-unskippable/coverages.ftl
@@ -0,0 +1 @@
+[ ]
\ No newline at end of file
diff --git a/dd-java-agent/instrumentation/karate/karate-2.0/src/test/resources/test-itr-unskippable/events.ftl b/dd-java-agent/instrumentation/karate/karate-2.0/src/test/resources/test-itr-unskippable/events.ftl
new file mode 100644
index 00000000000..45bf59aa899
--- /dev/null
+++ b/dd-java-agent/instrumentation/karate/karate-2.0/src/test/resources/test-itr-unskippable/events.ftl
@@ -0,0 +1,249 @@
+[ {
+ "content" : {
+ "duration" : ${content_duration},
+ "error" : 0,
+ "meta" : {
+ "component" : "karate",
+ "env" : "none",
+ "library_version" : ${content_meta_library_version},
+ "step.name" : "* 'first'"
+ },
+ "metrics" : {
+ "step.endLine" : 7,
+ "step.startLine" : 7
+ },
+ "name" : "karate.step",
+ "parent_id" : ${content_parent_id},
+ "resource" : "* 'first'",
+ "service" : "worker.org.gradle.process.internal.worker.gradleworkermain",
+ "span_id" : ${content_span_id},
+ "start" : ${content_start},
+ "trace_id" : ${content_trace_id}
+ },
+ "type" : "span",
+ "version" : 1
+}, {
+ "content" : {
+ "duration" : ${content_duration_2},
+ "error" : 0,
+ "meta" : {
+ "component" : "karate",
+ "env" : "none",
+ "library_version" : ${content_meta_library_version},
+ "step.name" : "* 'second'"
+ },
+ "metrics" : {
+ "step.endLine" : 10,
+ "step.startLine" : 10
+ },
+ "name" : "karate.step",
+ "parent_id" : ${content_parent_id_2},
+ "resource" : "* 'second'",
+ "service" : "worker.org.gradle.process.internal.worker.gradleworkermain",
+ "span_id" : ${content_span_id_2},
+ "start" : ${content_start_2},
+ "trace_id" : ${content_trace_id_2}
+ },
+ "type" : "span",
+ "version" : 1
+}, {
+ "content" : {
+ "duration" : ${content_duration_3},
+ "error" : 0,
+ "meta" : {
+ "_dd.p.tid" : ${content_meta__dd_p_tid},
+ "component" : "karate",
+ "dummy_ci_tag" : "dummy_ci_tag_value",
+ "env" : "none",
+ "library_version" : ${content_meta_library_version},
+ "span.kind" : "test_suite_end",
+ "test.framework" : "karate",
+ "test.framework_version" : ${content_meta_test_framework_version},
+ "test.itr.tests_skipping.enabled" : "true",
+ "test.module" : "karate-2.0",
+ "test.status" : "pass",
+ "test.suite" : "[org/example/test_unskippable] test unskippable",
+ "test.traits" : "{\"category\":[\"foo\"]}",
+ "test.type" : "test",
+ "test_session.name" : "session-name"
+ },
+ "metrics" : {
+ "_dd.host.vcpu_count" : ${content_metrics__dd_host_vcpu_count}
+ },
+ "name" : "karate.test_suite",
+ "resource" : "[org/example/test_unskippable] test unskippable",
+ "service" : "worker.org.gradle.process.internal.worker.gradleworkermain",
+ "start" : ${content_start_3},
+ "test_module_id" : ${content_test_module_id},
+ "test_session_id" : ${content_test_session_id},
+ "test_suite_id" : ${content_test_suite_id}
+ },
+ "type" : "test_suite_end",
+ "version" : 1
+}, {
+ "content" : {
+ "duration" : ${content_duration_4},
+ "error" : 0,
+ "itr_correlation_id" : "itrCorrelationId",
+ "meta" : {
+ "_dd.profiling.ctx" : "test",
+ "_dd.tracer_host" : ${content_meta__dd_tracer_host},
+ "component" : "karate",
+ "dummy_ci_tag" : "dummy_ci_tag_value",
+ "env" : "none",
+ "language" : "jvm",
+ "library_version" : ${content_meta_library_version},
+ "runtime-id" : ${content_meta_runtime_id},
+ "span.kind" : "test",
+ "test.final_status" : "pass",
+ "test.framework" : "karate",
+ "test.framework_version" : ${content_meta_test_framework_version},
+ "test.itr.forced_run" : "true",
+ "test.itr.tests_skipping.enabled" : "true",
+ "test.itr.unskippable" : "true",
+ "test.module" : "karate-2.0",
+ "test.name" : "first scenario",
+ "test.status" : "pass",
+ "test.suite" : "[org/example/test_unskippable] test unskippable",
+ "test.traits" : "{\"category\":[\"foo\",\"bar\",\"datadog_itr_unskippable\"]}",
+ "test.type" : "test",
+ "test_session.name" : "session-name"
+ },
+ "metrics" : {
+ "_dd.host.vcpu_count" : ${content_metrics__dd_host_vcpu_count_2},
+ "_dd.profiling.enabled" : 0,
+ "_dd.trace_span_attribute_schema" : 0,
+ "process_id" : ${content_metrics_process_id}
+ },
+ "name" : "karate.test",
+ "parent_id" : ${content_parent_id_3},
+ "resource" : "[org/example/test_unskippable] test unskippable.first scenario",
+ "service" : "worker.org.gradle.process.internal.worker.gradleworkermain",
+ "span_id" : ${content_parent_id},
+ "start" : ${content_start_4},
+ "test_module_id" : ${content_test_module_id},
+ "test_session_id" : ${content_test_session_id},
+ "test_suite_id" : ${content_test_suite_id},
+ "trace_id" : ${content_trace_id}
+ },
+ "type" : "test",
+ "version" : 2
+}, {
+ "content" : {
+ "duration" : ${content_duration_5},
+ "error" : 0,
+ "itr_correlation_id" : "itrCorrelationId",
+ "meta" : {
+ "_dd.profiling.ctx" : "test",
+ "_dd.tracer_host" : ${content_meta__dd_tracer_host},
+ "component" : "karate",
+ "dummy_ci_tag" : "dummy_ci_tag_value",
+ "env" : "none",
+ "language" : "jvm",
+ "library_version" : ${content_meta_library_version},
+ "runtime-id" : ${content_meta_runtime_id},
+ "span.kind" : "test",
+ "test.final_status" : "pass",
+ "test.framework" : "karate",
+ "test.framework_version" : ${content_meta_test_framework_version},
+ "test.itr.tests_skipping.enabled" : "true",
+ "test.module" : "karate-2.0",
+ "test.name" : "second scenario",
+ "test.status" : "pass",
+ "test.suite" : "[org/example/test_unskippable] test unskippable",
+ "test.traits" : "{\"category\":[\"foo\"]}",
+ "test.type" : "test",
+ "test_session.name" : "session-name"
+ },
+ "metrics" : {
+ "_dd.host.vcpu_count" : ${content_metrics__dd_host_vcpu_count_3},
+ "_dd.profiling.enabled" : 0,
+ "_dd.trace_span_attribute_schema" : 0,
+ "process_id" : ${content_metrics_process_id}
+ },
+ "name" : "karate.test",
+ "parent_id" : ${content_parent_id_3},
+ "resource" : "[org/example/test_unskippable] test unskippable.second scenario",
+ "service" : "worker.org.gradle.process.internal.worker.gradleworkermain",
+ "span_id" : ${content_parent_id_2},
+ "start" : ${content_start_5},
+ "test_module_id" : ${content_test_module_id},
+ "test_session_id" : ${content_test_session_id},
+ "test_suite_id" : ${content_test_suite_id},
+ "trace_id" : ${content_trace_id_2}
+ },
+ "type" : "test",
+ "version" : 2
+}, {
+ "content" : {
+ "duration" : ${content_duration_6},
+ "error" : 0,
+ "meta" : {
+ "_dd.p.tid" : ${content_meta__dd_p_tid_2},
+ "_dd.profiling.ctx" : "test",
+ "_dd.tracer_host" : ${content_meta__dd_tracer_host},
+ "component" : "karate",
+ "dummy_ci_tag" : "dummy_ci_tag_value",
+ "env" : "none",
+ "language" : "jvm",
+ "library_version" : ${content_meta_library_version},
+ "runtime-id" : ${content_meta_runtime_id},
+ "span.kind" : "test_session_end",
+ "test.command" : "karate-2.0",
+ "test.framework" : "karate",
+ "test.framework_version" : ${content_meta_test_framework_version},
+ "test.itr.tests_skipping.enabled" : "true",
+ "test.itr.tests_skipping.type" : "test",
+ "test.status" : "pass",
+ "test.type" : "test",
+ "test_session.name" : "session-name"
+ },
+ "metrics" : {
+ "_dd.host.vcpu_count" : ${content_metrics__dd_host_vcpu_count_4},
+ "_dd.profiling.enabled" : 0,
+ "_dd.trace_span_attribute_schema" : 0,
+ "process_id" : ${content_metrics_process_id},
+ "test.itr.tests_skipping.count" : 0
+ },
+ "name" : "karate.test_session",
+ "resource" : "karate-2.0",
+ "service" : "worker.org.gradle.process.internal.worker.gradleworkermain",
+ "start" : ${content_start_6},
+ "test_session_id" : ${content_test_session_id}
+ },
+ "type" : "test_session_end",
+ "version" : 1
+}, {
+ "content" : {
+ "duration" : ${content_duration_7},
+ "error" : 0,
+ "meta" : {
+ "_dd.p.tid" : ${content_meta__dd_p_tid_3},
+ "component" : "karate",
+ "dummy_ci_tag" : "dummy_ci_tag_value",
+ "env" : "none",
+ "library_version" : ${content_meta_library_version},
+ "span.kind" : "test_module_end",
+ "test.framework" : "karate",
+ "test.framework_version" : ${content_meta_test_framework_version},
+ "test.itr.tests_skipping.enabled" : "true",
+ "test.itr.tests_skipping.type" : "test",
+ "test.module" : "karate-2.0",
+ "test.status" : "pass",
+ "test.type" : "test",
+ "test_session.name" : "session-name"
+ },
+ "metrics" : {
+ "_dd.host.vcpu_count" : ${content_metrics__dd_host_vcpu_count_5},
+ "test.itr.tests_skipping.count" : 0
+ },
+ "name" : "karate.test_module",
+ "resource" : "karate-2.0",
+ "service" : "worker.org.gradle.process.internal.worker.gradleworkermain",
+ "start" : ${content_start_7},
+ "test_module_id" : ${content_test_module_id},
+ "test_session_id" : ${content_test_session_id}
+ },
+ "type" : "test_module_end",
+ "version" : 1
+} ]
\ No newline at end of file
diff --git a/dd-java-agent/instrumentation/karate/karate-2.0/src/test/resources/test-parameterized/coverages.ftl b/dd-java-agent/instrumentation/karate/karate-2.0/src/test/resources/test-parameterized/coverages.ftl
new file mode 100644
index 00000000000..8878e547a79
--- /dev/null
+++ b/dd-java-agent/instrumentation/karate/karate-2.0/src/test/resources/test-parameterized/coverages.ftl
@@ -0,0 +1 @@
+[ ]
\ No newline at end of file
diff --git a/dd-java-agent/instrumentation/karate/karate-2.0/src/test/resources/test-parameterized/events.ftl b/dd-java-agent/instrumentation/karate/karate-2.0/src/test/resources/test-parameterized/events.ftl
new file mode 100644
index 00000000000..a4123cde6c5
--- /dev/null
+++ b/dd-java-agent/instrumentation/karate/karate-2.0/src/test/resources/test-parameterized/events.ftl
@@ -0,0 +1,331 @@
+[ {
+ "content" : {
+ "duration" : ${content_duration},
+ "error" : 0,
+ "meta" : {
+ "component" : "karate",
+ "env" : "none",
+ "library_version" : ${content_meta_library_version},
+ "step.name" : "Given p = 'a'"
+ },
+ "metrics" : {
+ "step.endLine" : 6,
+ "step.startLine" : 6
+ },
+ "name" : "karate.step",
+ "parent_id" : ${content_parent_id},
+ "resource" : "Given p = 'a'",
+ "service" : "worker.org.gradle.process.internal.worker.gradleworkermain",
+ "span_id" : ${content_span_id},
+ "start" : ${content_start},
+ "trace_id" : ${content_trace_id}
+ },
+ "type" : "span",
+ "version" : 1
+}, {
+ "content" : {
+ "duration" : ${content_duration_2},
+ "error" : 0,
+ "meta" : {
+ "component" : "karate",
+ "env" : "none",
+ "library_version" : ${content_meta_library_version},
+ "step.name" : "Given p = 'b'"
+ },
+ "metrics" : {
+ "step.endLine" : 6,
+ "step.startLine" : 6
+ },
+ "name" : "karate.step",
+ "parent_id" : ${content_parent_id_2},
+ "resource" : "Given p = 'b'",
+ "service" : "worker.org.gradle.process.internal.worker.gradleworkermain",
+ "span_id" : ${content_span_id_2},
+ "start" : ${content_start_2},
+ "trace_id" : ${content_trace_id_2}
+ },
+ "type" : "span",
+ "version" : 1
+}, {
+ "content" : {
+ "duration" : ${content_duration_3},
+ "error" : 0,
+ "meta" : {
+ "component" : "karate",
+ "env" : "none",
+ "library_version" : ${content_meta_library_version},
+ "step.name" : "Then response == value"
+ },
+ "metrics" : {
+ "step.endLine" : 8,
+ "step.startLine" : 8
+ },
+ "name" : "karate.step",
+ "parent_id" : ${content_parent_id},
+ "resource" : "Then response == value",
+ "service" : "worker.org.gradle.process.internal.worker.gradleworkermain",
+ "span_id" : ${content_span_id_3},
+ "start" : ${content_start_3},
+ "trace_id" : ${content_trace_id}
+ },
+ "type" : "span",
+ "version" : 1
+}, {
+ "content" : {
+ "duration" : ${content_duration_4},
+ "error" : 0,
+ "meta" : {
+ "component" : "karate",
+ "env" : "none",
+ "library_version" : ${content_meta_library_version},
+ "step.name" : "Then response == value"
+ },
+ "metrics" : {
+ "step.endLine" : 8,
+ "step.startLine" : 8
+ },
+ "name" : "karate.step",
+ "parent_id" : ${content_parent_id_2},
+ "resource" : "Then response == value",
+ "service" : "worker.org.gradle.process.internal.worker.gradleworkermain",
+ "span_id" : ${content_span_id_4},
+ "start" : ${content_start_4},
+ "trace_id" : ${content_trace_id_2}
+ },
+ "type" : "span",
+ "version" : 1
+}, {
+ "content" : {
+ "duration" : ${content_duration_5},
+ "error" : 0,
+ "meta" : {
+ "component" : "karate",
+ "env" : "none",
+ "library_version" : ${content_meta_library_version},
+ "step.name" : "When response = p + p"
+ },
+ "metrics" : {
+ "step.endLine" : 7,
+ "step.startLine" : 7
+ },
+ "name" : "karate.step",
+ "parent_id" : ${content_parent_id},
+ "resource" : "When response = p + p",
+ "service" : "worker.org.gradle.process.internal.worker.gradleworkermain",
+ "span_id" : ${content_span_id_5},
+ "start" : ${content_start_5},
+ "trace_id" : ${content_trace_id}
+ },
+ "type" : "span",
+ "version" : 1
+}, {
+ "content" : {
+ "duration" : ${content_duration_6},
+ "error" : 0,
+ "meta" : {
+ "component" : "karate",
+ "env" : "none",
+ "library_version" : ${content_meta_library_version},
+ "step.name" : "When response = p + p"
+ },
+ "metrics" : {
+ "step.endLine" : 7,
+ "step.startLine" : 7
+ },
+ "name" : "karate.step",
+ "parent_id" : ${content_parent_id_2},
+ "resource" : "When response = p + p",
+ "service" : "worker.org.gradle.process.internal.worker.gradleworkermain",
+ "span_id" : ${content_span_id_6},
+ "start" : ${content_start_6},
+ "trace_id" : ${content_trace_id_2}
+ },
+ "type" : "span",
+ "version" : 1
+}, {
+ "content" : {
+ "duration" : ${content_duration_7},
+ "error" : 0,
+ "meta" : {
+ "_dd.p.tid" : ${content_meta__dd_p_tid},
+ "component" : "karate",
+ "dummy_ci_tag" : "dummy_ci_tag_value",
+ "env" : "none",
+ "library_version" : ${content_meta_library_version},
+ "span.kind" : "test_suite_end",
+ "test.framework" : "karate",
+ "test.framework_version" : ${content_meta_test_framework_version},
+ "test.module" : "karate-2.0",
+ "test.status" : "pass",
+ "test.suite" : "[org/example/test_parameterized] test parameterized",
+ "test.type" : "test",
+ "test_session.name" : "session-name"
+ },
+ "metrics" : {
+ "_dd.host.vcpu_count" : ${content_metrics__dd_host_vcpu_count}
+ },
+ "name" : "karate.test_suite",
+ "resource" : "[org/example/test_parameterized] test parameterized",
+ "service" : "worker.org.gradle.process.internal.worker.gradleworkermain",
+ "start" : ${content_start_7},
+ "test_module_id" : ${content_test_module_id},
+ "test_session_id" : ${content_test_session_id},
+ "test_suite_id" : ${content_test_suite_id}
+ },
+ "type" : "test_suite_end",
+ "version" : 1
+}, {
+ "content" : {
+ "duration" : ${content_duration_8},
+ "error" : 0,
+ "meta" : {
+ "_dd.profiling.ctx" : "test",
+ "_dd.tracer_host" : ${content_meta__dd_tracer_host},
+ "component" : "karate",
+ "dummy_ci_tag" : "dummy_ci_tag_value",
+ "env" : "none",
+ "language" : "jvm",
+ "library_version" : ${content_meta_library_version},
+ "runtime-id" : ${content_meta_runtime_id},
+ "span.kind" : "test",
+ "test.final_status" : "pass",
+ "test.framework" : "karate",
+ "test.framework_version" : ${content_meta_test_framework_version},
+ "test.module" : "karate-2.0",
+ "test.name" : "first scenario as an outline",
+ "test.parameters" : "{\"param\":\"'a'\",\"value\":\"aa\"}",
+ "test.status" : "pass",
+ "test.suite" : "[org/example/test_parameterized] test parameterized",
+ "test.type" : "test",
+ "test_session.name" : "session-name"
+ },
+ "metrics" : {
+ "_dd.host.vcpu_count" : ${content_metrics__dd_host_vcpu_count_2},
+ "_dd.profiling.enabled" : 0,
+ "_dd.trace_span_attribute_schema" : 0,
+ "process_id" : ${content_metrics_process_id}
+ },
+ "name" : "karate.test",
+ "parent_id" : ${content_parent_id_3},
+ "resource" : "[org/example/test_parameterized] test parameterized.first scenario as an outline",
+ "service" : "worker.org.gradle.process.internal.worker.gradleworkermain",
+ "span_id" : ${content_parent_id},
+ "start" : ${content_start_8},
+ "test_module_id" : ${content_test_module_id},
+ "test_session_id" : ${content_test_session_id},
+ "test_suite_id" : ${content_test_suite_id},
+ "trace_id" : ${content_trace_id}
+ },
+ "type" : "test",
+ "version" : 2
+}, {
+ "content" : {
+ "duration" : ${content_duration_9},
+ "error" : 0,
+ "meta" : {
+ "_dd.profiling.ctx" : "test",
+ "_dd.tracer_host" : ${content_meta__dd_tracer_host},
+ "component" : "karate",
+ "dummy_ci_tag" : "dummy_ci_tag_value",
+ "env" : "none",
+ "language" : "jvm",
+ "library_version" : ${content_meta_library_version},
+ "runtime-id" : ${content_meta_runtime_id},
+ "span.kind" : "test",
+ "test.final_status" : "pass",
+ "test.framework" : "karate",
+ "test.framework_version" : ${content_meta_test_framework_version},
+ "test.module" : "karate-2.0",
+ "test.name" : "first scenario as an outline",
+ "test.parameters" : "{\"param\":\"'b'\",\"value\":\"bb\"}",
+ "test.status" : "pass",
+ "test.suite" : "[org/example/test_parameterized] test parameterized",
+ "test.type" : "test",
+ "test_session.name" : "session-name"
+ },
+ "metrics" : {
+ "_dd.host.vcpu_count" : ${content_metrics__dd_host_vcpu_count_3},
+ "_dd.profiling.enabled" : 0,
+ "_dd.trace_span_attribute_schema" : 0,
+ "process_id" : ${content_metrics_process_id}
+ },
+ "name" : "karate.test",
+ "parent_id" : ${content_parent_id_3},
+ "resource" : "[org/example/test_parameterized] test parameterized.first scenario as an outline",
+ "service" : "worker.org.gradle.process.internal.worker.gradleworkermain",
+ "span_id" : ${content_parent_id_2},
+ "start" : ${content_start_9},
+ "test_module_id" : ${content_test_module_id},
+ "test_session_id" : ${content_test_session_id},
+ "test_suite_id" : ${content_test_suite_id},
+ "trace_id" : ${content_trace_id_2}
+ },
+ "type" : "test",
+ "version" : 2
+}, {
+ "content" : {
+ "duration" : ${content_duration_10},
+ "error" : 0,
+ "meta" : {
+ "_dd.p.tid" : ${content_meta__dd_p_tid_2},
+ "_dd.profiling.ctx" : "test",
+ "_dd.tracer_host" : ${content_meta__dd_tracer_host},
+ "component" : "karate",
+ "dummy_ci_tag" : "dummy_ci_tag_value",
+ "env" : "none",
+ "language" : "jvm",
+ "library_version" : ${content_meta_library_version},
+ "runtime-id" : ${content_meta_runtime_id},
+ "span.kind" : "test_session_end",
+ "test.command" : "karate-2.0",
+ "test.framework" : "karate",
+ "test.framework_version" : ${content_meta_test_framework_version},
+ "test.status" : "pass",
+ "test.type" : "test",
+ "test_session.name" : "session-name"
+ },
+ "metrics" : {
+ "_dd.host.vcpu_count" : ${content_metrics__dd_host_vcpu_count_4},
+ "_dd.profiling.enabled" : 0,
+ "_dd.trace_span_attribute_schema" : 0,
+ "process_id" : ${content_metrics_process_id}
+ },
+ "name" : "karate.test_session",
+ "resource" : "karate-2.0",
+ "service" : "worker.org.gradle.process.internal.worker.gradleworkermain",
+ "start" : ${content_start_10},
+ "test_session_id" : ${content_test_session_id}
+ },
+ "type" : "test_session_end",
+ "version" : 1
+}, {
+ "content" : {
+ "duration" : ${content_duration_11},
+ "error" : 0,
+ "meta" : {
+ "_dd.p.tid" : ${content_meta__dd_p_tid_3},
+ "component" : "karate",
+ "dummy_ci_tag" : "dummy_ci_tag_value",
+ "env" : "none",
+ "library_version" : ${content_meta_library_version},
+ "span.kind" : "test_module_end",
+ "test.framework" : "karate",
+ "test.framework_version" : ${content_meta_test_framework_version},
+ "test.module" : "karate-2.0",
+ "test.status" : "pass",
+ "test.type" : "test",
+ "test_session.name" : "session-name"
+ },
+ "metrics" : {
+ "_dd.host.vcpu_count" : ${content_metrics__dd_host_vcpu_count_5}
+ },
+ "name" : "karate.test_module",
+ "resource" : "karate-2.0",
+ "service" : "worker.org.gradle.process.internal.worker.gradleworkermain",
+ "start" : ${content_start_11},
+ "test_module_id" : ${content_test_module_id},
+ "test_session_id" : ${content_test_session_id}
+ },
+ "type" : "test_module_end",
+ "version" : 1
+} ]
\ No newline at end of file
diff --git a/dd-java-agent/instrumentation/karate/karate-2.0/src/test/resources/test-quarantined-failed-atr/coverages.ftl b/dd-java-agent/instrumentation/karate/karate-2.0/src/test/resources/test-quarantined-failed-atr/coverages.ftl
new file mode 100644
index 00000000000..8878e547a79
--- /dev/null
+++ b/dd-java-agent/instrumentation/karate/karate-2.0/src/test/resources/test-quarantined-failed-atr/coverages.ftl
@@ -0,0 +1 @@
+[ ]
\ No newline at end of file
diff --git a/dd-java-agent/instrumentation/karate/karate-2.0/src/test/resources/test-quarantined-failed-atr/events.ftl b/dd-java-agent/instrumentation/karate/karate-2.0/src/test/resources/test-quarantined-failed-atr/events.ftl
new file mode 100644
index 00000000000..fbf1c1cb407
--- /dev/null
+++ b/dd-java-agent/instrumentation/karate/karate-2.0/src/test/resources/test-quarantined-failed-atr/events.ftl
@@ -0,0 +1,533 @@
+[ {
+ "content" : {
+ "duration" : ${content_duration},
+ "error" : 0,
+ "meta" : {
+ "component" : "karate",
+ "env" : "none",
+ "library_version" : ${content_meta_library_version},
+ "step.name" : "* 'first'"
+ },
+ "metrics" : {
+ "step.endLine" : 4,
+ "step.startLine" : 4
+ },
+ "name" : "karate.step",
+ "parent_id" : ${content_parent_id},
+ "resource" : "* 'first'",
+ "service" : "worker.org.gradle.process.internal.worker.gradleworkermain",
+ "span_id" : ${content_span_id},
+ "start" : ${content_start},
+ "trace_id" : ${content_trace_id}
+ },
+ "type" : "span",
+ "version" : 1
+}, {
+ "content" : {
+ "duration" : ${content_duration_2},
+ "error" : 0,
+ "meta" : {
+ "component" : "karate",
+ "env" : "none",
+ "library_version" : ${content_meta_library_version},
+ "step.name" : "* false"
+ },
+ "metrics" : {
+ "step.endLine" : 7,
+ "step.startLine" : 7
+ },
+ "name" : "karate.step",
+ "parent_id" : ${content_parent_id_2},
+ "resource" : "* false",
+ "service" : "worker.org.gradle.process.internal.worker.gradleworkermain",
+ "span_id" : ${content_span_id_2},
+ "start" : ${content_start_2},
+ "trace_id" : ${content_trace_id_2}
+ },
+ "type" : "span",
+ "version" : 1
+}, {
+ "content" : {
+ "duration" : ${content_duration_3},
+ "error" : 0,
+ "meta" : {
+ "component" : "karate",
+ "env" : "none",
+ "library_version" : ${content_meta_library_version},
+ "step.name" : "* false"
+ },
+ "metrics" : {
+ "step.endLine" : 7,
+ "step.startLine" : 7
+ },
+ "name" : "karate.step",
+ "parent_id" : ${content_parent_id_3},
+ "resource" : "* false",
+ "service" : "worker.org.gradle.process.internal.worker.gradleworkermain",
+ "span_id" : ${content_span_id_3},
+ "start" : ${content_start_3},
+ "trace_id" : ${content_trace_id_3}
+ },
+ "type" : "span",
+ "version" : 1
+}, {
+ "content" : {
+ "duration" : ${content_duration_4},
+ "error" : 0,
+ "meta" : {
+ "component" : "karate",
+ "env" : "none",
+ "library_version" : ${content_meta_library_version},
+ "step.name" : "* false"
+ },
+ "metrics" : {
+ "step.endLine" : 7,
+ "step.startLine" : 7
+ },
+ "name" : "karate.step",
+ "parent_id" : ${content_parent_id_4},
+ "resource" : "* false",
+ "service" : "worker.org.gradle.process.internal.worker.gradleworkermain",
+ "span_id" : ${content_span_id_4},
+ "start" : ${content_start_4},
+ "trace_id" : ${content_trace_id_4}
+ },
+ "type" : "span",
+ "version" : 1
+}, {
+ "content" : {
+ "duration" : ${content_duration_5},
+ "error" : 0,
+ "meta" : {
+ "component" : "karate",
+ "env" : "none",
+ "library_version" : ${content_meta_library_version},
+ "step.name" : "* false"
+ },
+ "metrics" : {
+ "step.endLine" : 7,
+ "step.startLine" : 7
+ },
+ "name" : "karate.step",
+ "parent_id" : ${content_parent_id_5},
+ "resource" : "* false",
+ "service" : "worker.org.gradle.process.internal.worker.gradleworkermain",
+ "span_id" : ${content_span_id_5},
+ "start" : ${content_start_5},
+ "trace_id" : ${content_trace_id_5}
+ },
+ "type" : "span",
+ "version" : 1
+}, {
+ "content" : {
+ "duration" : ${content_duration_6},
+ "error" : 0,
+ "meta" : {
+ "component" : "karate",
+ "env" : "none",
+ "library_version" : ${content_meta_library_version},
+ "step.name" : "* false"
+ },
+ "metrics" : {
+ "step.endLine" : 7,
+ "step.startLine" : 7
+ },
+ "name" : "karate.step",
+ "parent_id" : ${content_parent_id_6},
+ "resource" : "* false",
+ "service" : "worker.org.gradle.process.internal.worker.gradleworkermain",
+ "span_id" : ${content_span_id_6},
+ "start" : ${content_start_6},
+ "trace_id" : ${content_trace_id_6}
+ },
+ "type" : "span",
+ "version" : 1
+}, {
+ "content" : {
+ "duration" : ${content_duration_7},
+ "error" : 0,
+ "meta" : {
+ "_dd.p.tid" : ${content_meta__dd_p_tid},
+ "component" : "karate",
+ "dummy_ci_tag" : "dummy_ci_tag_value",
+ "env" : "none",
+ "library_version" : ${content_meta_library_version},
+ "span.kind" : "test_suite_end",
+ "test.framework" : "karate",
+ "test.framework_version" : ${content_meta_test_framework_version},
+ "test.module" : "karate-2.0",
+ "test.status" : "pass",
+ "test.suite" : "[org/example/test_failed] test failed",
+ "test.type" : "test",
+ "test_session.name" : "session-name"
+ },
+ "metrics" : {
+ "_dd.host.vcpu_count" : ${content_metrics__dd_host_vcpu_count}
+ },
+ "name" : "karate.test_suite",
+ "resource" : "[org/example/test_failed] test failed",
+ "service" : "worker.org.gradle.process.internal.worker.gradleworkermain",
+ "start" : ${content_start_7},
+ "test_module_id" : ${content_test_module_id},
+ "test_session_id" : ${content_test_session_id},
+ "test_suite_id" : ${content_test_suite_id}
+ },
+ "type" : "test_suite_end",
+ "version" : 1
+}, {
+ "content" : {
+ "duration" : ${content_duration_8},
+ "error" : 0,
+ "meta" : {
+ "_dd.profiling.ctx" : "test",
+ "_dd.tracer_host" : ${content_meta__dd_tracer_host},
+ "component" : "karate",
+ "dummy_ci_tag" : "dummy_ci_tag_value",
+ "env" : "none",
+ "language" : "jvm",
+ "library_version" : ${content_meta_library_version},
+ "runtime-id" : ${content_meta_runtime_id},
+ "span.kind" : "test",
+ "test.final_status" : "pass",
+ "test.framework" : "karate",
+ "test.framework_version" : ${content_meta_test_framework_version},
+ "test.module" : "karate-2.0",
+ "test.name" : "first scenario",
+ "test.status" : "pass",
+ "test.suite" : "[org/example/test_failed] test failed",
+ "test.type" : "test",
+ "test_session.name" : "session-name"
+ },
+ "metrics" : {
+ "_dd.host.vcpu_count" : ${content_metrics__dd_host_vcpu_count_2},
+ "_dd.profiling.enabled" : 0,
+ "_dd.trace_span_attribute_schema" : 0,
+ "process_id" : ${content_metrics_process_id}
+ },
+ "name" : "karate.test",
+ "parent_id" : ${content_parent_id_7},
+ "resource" : "[org/example/test_failed] test failed.first scenario",
+ "service" : "worker.org.gradle.process.internal.worker.gradleworkermain",
+ "span_id" : ${content_parent_id},
+ "start" : ${content_start_8},
+ "test_module_id" : ${content_test_module_id},
+ "test_session_id" : ${content_test_session_id},
+ "test_suite_id" : ${content_test_suite_id},
+ "trace_id" : ${content_trace_id}
+ },
+ "type" : "test",
+ "version" : 2
+}, {
+ "content" : {
+ "duration" : ${content_duration_9},
+ "error" : 1,
+ "meta" : {
+ "_dd.profiling.ctx" : "test",
+ "_dd.tracer_host" : ${content_meta__dd_tracer_host},
+ "component" : "karate",
+ "dummy_ci_tag" : "dummy_ci_tag_value",
+ "env" : "none",
+ "error.message" : ${content_meta_error_message},
+ "error.stack" : ${content_meta_error_stack},
+ "error.type" : "java.lang.AssertionError",
+ "language" : "jvm",
+ "library_version" : ${content_meta_library_version},
+ "runtime-id" : ${content_meta_runtime_id},
+ "span.kind" : "test",
+ "test.failure_suppressed" : "true",
+ "test.framework" : "karate",
+ "test.framework_version" : ${content_meta_test_framework_version},
+ "test.module" : "karate-2.0",
+ "test.name" : "second scenario",
+ "test.status" : "fail",
+ "test.suite" : "[org/example/test_failed] test failed",
+ "test.test_management.is_quarantined" : "true",
+ "test.type" : "test",
+ "test_session.name" : "session-name"
+ },
+ "metrics" : {
+ "_dd.host.vcpu_count" : ${content_metrics__dd_host_vcpu_count_3},
+ "_dd.profiling.enabled" : 0,
+ "_dd.trace_span_attribute_schema" : 0,
+ "process_id" : ${content_metrics_process_id}
+ },
+ "name" : "karate.test",
+ "parent_id" : ${content_parent_id_7},
+ "resource" : "[org/example/test_failed] test failed.second scenario",
+ "service" : "worker.org.gradle.process.internal.worker.gradleworkermain",
+ "span_id" : ${content_parent_id_2},
+ "start" : ${content_start_9},
+ "test_module_id" : ${content_test_module_id},
+ "test_session_id" : ${content_test_session_id},
+ "test_suite_id" : ${content_test_suite_id},
+ "trace_id" : ${content_trace_id_2}
+ },
+ "type" : "test",
+ "version" : 2
+}, {
+ "content" : {
+ "duration" : ${content_duration_10},
+ "error" : 1,
+ "meta" : {
+ "_dd.profiling.ctx" : "test",
+ "_dd.tracer_host" : ${content_meta__dd_tracer_host},
+ "component" : "karate",
+ "dummy_ci_tag" : "dummy_ci_tag_value",
+ "env" : "none",
+ "error.message" : ${content_meta_error_message},
+ "error.stack" : ${content_meta_error_stack_2},
+ "error.type" : "java.lang.AssertionError",
+ "language" : "jvm",
+ "library_version" : ${content_meta_library_version},
+ "runtime-id" : ${content_meta_runtime_id},
+ "span.kind" : "test",
+ "test.failure_suppressed" : "true",
+ "test.framework" : "karate",
+ "test.framework_version" : ${content_meta_test_framework_version},
+ "test.is_retry" : "true",
+ "test.module" : "karate-2.0",
+ "test.name" : "second scenario",
+ "test.retry_reason" : "auto_test_retry",
+ "test.status" : "fail",
+ "test.suite" : "[org/example/test_failed] test failed",
+ "test.test_management.is_quarantined" : "true",
+ "test.type" : "test",
+ "test_session.name" : "session-name"
+ },
+ "metrics" : {
+ "_dd.host.vcpu_count" : ${content_metrics__dd_host_vcpu_count_4},
+ "_dd.profiling.enabled" : 0,
+ "_dd.trace_span_attribute_schema" : 0,
+ "process_id" : ${content_metrics_process_id}
+ },
+ "name" : "karate.test",
+ "parent_id" : ${content_parent_id_7},
+ "resource" : "[org/example/test_failed] test failed.second scenario",
+ "service" : "worker.org.gradle.process.internal.worker.gradleworkermain",
+ "span_id" : ${content_parent_id_3},
+ "start" : ${content_start_10},
+ "test_module_id" : ${content_test_module_id},
+ "test_session_id" : ${content_test_session_id},
+ "test_suite_id" : ${content_test_suite_id},
+ "trace_id" : ${content_trace_id_3}
+ },
+ "type" : "test",
+ "version" : 2
+}, {
+ "content" : {
+ "duration" : ${content_duration_11},
+ "error" : 1,
+ "meta" : {
+ "_dd.profiling.ctx" : "test",
+ "_dd.tracer_host" : ${content_meta__dd_tracer_host},
+ "component" : "karate",
+ "dummy_ci_tag" : "dummy_ci_tag_value",
+ "env" : "none",
+ "error.message" : ${content_meta_error_message},
+ "error.stack" : ${content_meta_error_stack_3},
+ "error.type" : "java.lang.AssertionError",
+ "language" : "jvm",
+ "library_version" : ${content_meta_library_version},
+ "runtime-id" : ${content_meta_runtime_id},
+ "span.kind" : "test",
+ "test.failure_suppressed" : "true",
+ "test.framework" : "karate",
+ "test.framework_version" : ${content_meta_test_framework_version},
+ "test.is_retry" : "true",
+ "test.module" : "karate-2.0",
+ "test.name" : "second scenario",
+ "test.retry_reason" : "auto_test_retry",
+ "test.status" : "fail",
+ "test.suite" : "[org/example/test_failed] test failed",
+ "test.test_management.is_quarantined" : "true",
+ "test.type" : "test",
+ "test_session.name" : "session-name"
+ },
+ "metrics" : {
+ "_dd.host.vcpu_count" : ${content_metrics__dd_host_vcpu_count_5},
+ "_dd.profiling.enabled" : 0,
+ "_dd.trace_span_attribute_schema" : 0,
+ "process_id" : ${content_metrics_process_id}
+ },
+ "name" : "karate.test",
+ "parent_id" : ${content_parent_id_7},
+ "resource" : "[org/example/test_failed] test failed.second scenario",
+ "service" : "worker.org.gradle.process.internal.worker.gradleworkermain",
+ "span_id" : ${content_parent_id_4},
+ "start" : ${content_start_11},
+ "test_module_id" : ${content_test_module_id},
+ "test_session_id" : ${content_test_session_id},
+ "test_suite_id" : ${content_test_suite_id},
+ "trace_id" : ${content_trace_id_4}
+ },
+ "type" : "test",
+ "version" : 2
+}, {
+ "content" : {
+ "duration" : ${content_duration_12},
+ "error" : 1,
+ "meta" : {
+ "_dd.profiling.ctx" : "test",
+ "_dd.tracer_host" : ${content_meta__dd_tracer_host},
+ "component" : "karate",
+ "dummy_ci_tag" : "dummy_ci_tag_value",
+ "env" : "none",
+ "error.message" : ${content_meta_error_message},
+ "error.stack" : ${content_meta_error_stack_4},
+ "error.type" : "java.lang.AssertionError",
+ "language" : "jvm",
+ "library_version" : ${content_meta_library_version},
+ "runtime-id" : ${content_meta_runtime_id},
+ "span.kind" : "test",
+ "test.failure_suppressed" : "true",
+ "test.framework" : "karate",
+ "test.framework_version" : ${content_meta_test_framework_version},
+ "test.is_retry" : "true",
+ "test.module" : "karate-2.0",
+ "test.name" : "second scenario",
+ "test.retry_reason" : "auto_test_retry",
+ "test.status" : "fail",
+ "test.suite" : "[org/example/test_failed] test failed",
+ "test.test_management.is_quarantined" : "true",
+ "test.type" : "test",
+ "test_session.name" : "session-name"
+ },
+ "metrics" : {
+ "_dd.host.vcpu_count" : ${content_metrics__dd_host_vcpu_count_6},
+ "_dd.profiling.enabled" : 0,
+ "_dd.trace_span_attribute_schema" : 0,
+ "process_id" : ${content_metrics_process_id}
+ },
+ "name" : "karate.test",
+ "parent_id" : ${content_parent_id_7},
+ "resource" : "[org/example/test_failed] test failed.second scenario",
+ "service" : "worker.org.gradle.process.internal.worker.gradleworkermain",
+ "span_id" : ${content_parent_id_5},
+ "start" : ${content_start_12},
+ "test_module_id" : ${content_test_module_id},
+ "test_session_id" : ${content_test_session_id},
+ "test_suite_id" : ${content_test_suite_id},
+ "trace_id" : ${content_trace_id_5}
+ },
+ "type" : "test",
+ "version" : 2
+}, {
+ "content" : {
+ "duration" : ${content_duration_13},
+ "error" : 1,
+ "meta" : {
+ "_dd.profiling.ctx" : "test",
+ "_dd.tracer_host" : ${content_meta__dd_tracer_host},
+ "component" : "karate",
+ "dummy_ci_tag" : "dummy_ci_tag_value",
+ "env" : "none",
+ "error.message" : ${content_meta_error_message},
+ "error.stack" : ${content_meta_error_stack_5},
+ "error.type" : "java.lang.AssertionError",
+ "language" : "jvm",
+ "library_version" : ${content_meta_library_version},
+ "runtime-id" : ${content_meta_runtime_id},
+ "span.kind" : "test",
+ "test.failure_suppressed" : "true",
+ "test.final_status" : "pass",
+ "test.framework" : "karate",
+ "test.framework_version" : ${content_meta_test_framework_version},
+ "test.has_failed_all_retries" : "true",
+ "test.is_retry" : "true",
+ "test.module" : "karate-2.0",
+ "test.name" : "second scenario",
+ "test.retry_reason" : "auto_test_retry",
+ "test.status" : "fail",
+ "test.suite" : "[org/example/test_failed] test failed",
+ "test.test_management.is_quarantined" : "true",
+ "test.type" : "test",
+ "test_session.name" : "session-name"
+ },
+ "metrics" : {
+ "_dd.host.vcpu_count" : ${content_metrics__dd_host_vcpu_count_7},
+ "_dd.profiling.enabled" : 0,
+ "_dd.trace_span_attribute_schema" : 0,
+ "process_id" : ${content_metrics_process_id}
+ },
+ "name" : "karate.test",
+ "parent_id" : ${content_parent_id_7},
+ "resource" : "[org/example/test_failed] test failed.second scenario",
+ "service" : "worker.org.gradle.process.internal.worker.gradleworkermain",
+ "span_id" : ${content_parent_id_6},
+ "start" : ${content_start_13},
+ "test_module_id" : ${content_test_module_id},
+ "test_session_id" : ${content_test_session_id},
+ "test_suite_id" : ${content_test_suite_id},
+ "trace_id" : ${content_trace_id_6}
+ },
+ "type" : "test",
+ "version" : 2
+}, {
+ "content" : {
+ "duration" : ${content_duration_14},
+ "error" : 0,
+ "meta" : {
+ "_dd.p.tid" : ${content_meta__dd_p_tid_2},
+ "_dd.profiling.ctx" : "test",
+ "_dd.tracer_host" : ${content_meta__dd_tracer_host},
+ "component" : "karate",
+ "dummy_ci_tag" : "dummy_ci_tag_value",
+ "env" : "none",
+ "language" : "jvm",
+ "library_version" : ${content_meta_library_version},
+ "runtime-id" : ${content_meta_runtime_id},
+ "span.kind" : "test_session_end",
+ "test.command" : "karate-2.0",
+ "test.framework" : "karate",
+ "test.framework_version" : ${content_meta_test_framework_version},
+ "test.status" : "pass",
+ "test.test_management.enabled" : "true",
+ "test.type" : "test",
+ "test_session.name" : "session-name"
+ },
+ "metrics" : {
+ "_dd.host.vcpu_count" : ${content_metrics__dd_host_vcpu_count_8},
+ "_dd.profiling.enabled" : 0,
+ "_dd.trace_span_attribute_schema" : 0,
+ "process_id" : ${content_metrics_process_id}
+ },
+ "name" : "karate.test_session",
+ "resource" : "karate-2.0",
+ "service" : "worker.org.gradle.process.internal.worker.gradleworkermain",
+ "start" : ${content_start_14},
+ "test_session_id" : ${content_test_session_id}
+ },
+ "type" : "test_session_end",
+ "version" : 1
+}, {
+ "content" : {
+ "duration" : ${content_duration_15},
+ "error" : 0,
+ "meta" : {
+ "_dd.p.tid" : ${content_meta__dd_p_tid_3},
+ "component" : "karate",
+ "dummy_ci_tag" : "dummy_ci_tag_value",
+ "env" : "none",
+ "library_version" : ${content_meta_library_version},
+ "span.kind" : "test_module_end",
+ "test.framework" : "karate",
+ "test.framework_version" : ${content_meta_test_framework_version},
+ "test.module" : "karate-2.0",
+ "test.status" : "pass",
+ "test.test_management.enabled" : "true",
+ "test.type" : "test",
+ "test_session.name" : "session-name"
+ },
+ "metrics" : {
+ "_dd.host.vcpu_count" : ${content_metrics__dd_host_vcpu_count_9}
+ },
+ "name" : "karate.test_module",
+ "resource" : "karate-2.0",
+ "service" : "worker.org.gradle.process.internal.worker.gradleworkermain",
+ "start" : ${content_start_15},
+ "test_module_id" : ${content_test_module_id},
+ "test_session_id" : ${content_test_session_id}
+ },
+ "type" : "test_module_end",
+ "version" : 1
+} ]
\ No newline at end of file
diff --git a/dd-java-agent/instrumentation/karate/karate-2.0/src/test/resources/test-quarantined-failed-efd/coverages.ftl b/dd-java-agent/instrumentation/karate/karate-2.0/src/test/resources/test-quarantined-failed-efd/coverages.ftl
new file mode 100644
index 00000000000..8878e547a79
--- /dev/null
+++ b/dd-java-agent/instrumentation/karate/karate-2.0/src/test/resources/test-quarantined-failed-efd/coverages.ftl
@@ -0,0 +1 @@
+[ ]
\ No newline at end of file
diff --git a/dd-java-agent/instrumentation/karate/karate-2.0/src/test/resources/test-quarantined-failed-efd/events.ftl b/dd-java-agent/instrumentation/karate/karate-2.0/src/test/resources/test-quarantined-failed-efd/events.ftl
new file mode 100644
index 00000000000..2fb2cddf5e0
--- /dev/null
+++ b/dd-java-agent/instrumentation/karate/karate-2.0/src/test/resources/test-quarantined-failed-efd/events.ftl
@@ -0,0 +1,533 @@
+[ {
+ "content" : {
+ "duration" : ${content_duration},
+ "error" : 0,
+ "meta" : {
+ "component" : "karate",
+ "env" : "none",
+ "library_version" : ${content_meta_library_version},
+ "step.name" : "* 'first'"
+ },
+ "metrics" : {
+ "step.endLine" : 4,
+ "step.startLine" : 4
+ },
+ "name" : "karate.step",
+ "parent_id" : ${content_parent_id},
+ "resource" : "* 'first'",
+ "service" : "worker.org.gradle.process.internal.worker.gradleworkermain",
+ "span_id" : ${content_span_id},
+ "start" : ${content_start},
+ "trace_id" : ${content_trace_id}
+ },
+ "type" : "span",
+ "version" : 1
+}, {
+ "content" : {
+ "duration" : ${content_duration_2},
+ "error" : 0,
+ "meta" : {
+ "component" : "karate",
+ "env" : "none",
+ "library_version" : ${content_meta_library_version},
+ "step.name" : "* 'first'"
+ },
+ "metrics" : {
+ "step.endLine" : 4,
+ "step.startLine" : 4
+ },
+ "name" : "karate.step",
+ "parent_id" : ${content_parent_id_2},
+ "resource" : "* 'first'",
+ "service" : "worker.org.gradle.process.internal.worker.gradleworkermain",
+ "span_id" : ${content_span_id_2},
+ "start" : ${content_start_2},
+ "trace_id" : ${content_trace_id_2}
+ },
+ "type" : "span",
+ "version" : 1
+}, {
+ "content" : {
+ "duration" : ${content_duration_3},
+ "error" : 0,
+ "meta" : {
+ "component" : "karate",
+ "env" : "none",
+ "library_version" : ${content_meta_library_version},
+ "step.name" : "* 'first'"
+ },
+ "metrics" : {
+ "step.endLine" : 4,
+ "step.startLine" : 4
+ },
+ "name" : "karate.step",
+ "parent_id" : ${content_parent_id_3},
+ "resource" : "* 'first'",
+ "service" : "worker.org.gradle.process.internal.worker.gradleworkermain",
+ "span_id" : ${content_span_id_3},
+ "start" : ${content_start_3},
+ "trace_id" : ${content_trace_id_3}
+ },
+ "type" : "span",
+ "version" : 1
+}, {
+ "content" : {
+ "duration" : ${content_duration_4},
+ "error" : 0,
+ "meta" : {
+ "component" : "karate",
+ "env" : "none",
+ "library_version" : ${content_meta_library_version},
+ "step.name" : "* false"
+ },
+ "metrics" : {
+ "step.endLine" : 7,
+ "step.startLine" : 7
+ },
+ "name" : "karate.step",
+ "parent_id" : ${content_parent_id_4},
+ "resource" : "* false",
+ "service" : "worker.org.gradle.process.internal.worker.gradleworkermain",
+ "span_id" : ${content_span_id_4},
+ "start" : ${content_start_4},
+ "trace_id" : ${content_trace_id_4}
+ },
+ "type" : "span",
+ "version" : 1
+}, {
+ "content" : {
+ "duration" : ${content_duration_5},
+ "error" : 0,
+ "meta" : {
+ "component" : "karate",
+ "env" : "none",
+ "library_version" : ${content_meta_library_version},
+ "step.name" : "* false"
+ },
+ "metrics" : {
+ "step.endLine" : 7,
+ "step.startLine" : 7
+ },
+ "name" : "karate.step",
+ "parent_id" : ${content_parent_id_5},
+ "resource" : "* false",
+ "service" : "worker.org.gradle.process.internal.worker.gradleworkermain",
+ "span_id" : ${content_span_id_5},
+ "start" : ${content_start_5},
+ "trace_id" : ${content_trace_id_5}
+ },
+ "type" : "span",
+ "version" : 1
+}, {
+ "content" : {
+ "duration" : ${content_duration_6},
+ "error" : 0,
+ "meta" : {
+ "component" : "karate",
+ "env" : "none",
+ "library_version" : ${content_meta_library_version},
+ "step.name" : "* false"
+ },
+ "metrics" : {
+ "step.endLine" : 7,
+ "step.startLine" : 7
+ },
+ "name" : "karate.step",
+ "parent_id" : ${content_parent_id_6},
+ "resource" : "* false",
+ "service" : "worker.org.gradle.process.internal.worker.gradleworkermain",
+ "span_id" : ${content_span_id_6},
+ "start" : ${content_start_6},
+ "trace_id" : ${content_trace_id_6}
+ },
+ "type" : "span",
+ "version" : 1
+}, {
+ "content" : {
+ "duration" : ${content_duration_7},
+ "error" : 0,
+ "meta" : {
+ "_dd.p.tid" : ${content_meta__dd_p_tid},
+ "component" : "karate",
+ "dummy_ci_tag" : "dummy_ci_tag_value",
+ "env" : "none",
+ "library_version" : ${content_meta_library_version},
+ "span.kind" : "test_suite_end",
+ "test.framework" : "karate",
+ "test.framework_version" : ${content_meta_test_framework_version},
+ "test.module" : "karate-2.0",
+ "test.status" : "pass",
+ "test.suite" : "[org/example/test_failed] test failed",
+ "test.type" : "test",
+ "test_session.name" : "session-name"
+ },
+ "metrics" : {
+ "_dd.host.vcpu_count" : ${content_metrics__dd_host_vcpu_count}
+ },
+ "name" : "karate.test_suite",
+ "resource" : "[org/example/test_failed] test failed",
+ "service" : "worker.org.gradle.process.internal.worker.gradleworkermain",
+ "start" : ${content_start_7},
+ "test_module_id" : ${content_test_module_id},
+ "test_session_id" : ${content_test_session_id},
+ "test_suite_id" : ${content_test_suite_id}
+ },
+ "type" : "test_suite_end",
+ "version" : 1
+}, {
+ "content" : {
+ "duration" : ${content_duration_8},
+ "error" : 0,
+ "meta" : {
+ "_dd.profiling.ctx" : "test",
+ "_dd.tracer_host" : ${content_meta__dd_tracer_host},
+ "component" : "karate",
+ "dummy_ci_tag" : "dummy_ci_tag_value",
+ "env" : "none",
+ "language" : "jvm",
+ "library_version" : ${content_meta_library_version},
+ "runtime-id" : ${content_meta_runtime_id},
+ "span.kind" : "test",
+ "test.framework" : "karate",
+ "test.framework_version" : ${content_meta_test_framework_version},
+ "test.is_new" : "true",
+ "test.module" : "karate-2.0",
+ "test.name" : "first scenario",
+ "test.status" : "pass",
+ "test.suite" : "[org/example/test_failed] test failed",
+ "test.type" : "test",
+ "test_session.name" : "session-name"
+ },
+ "metrics" : {
+ "_dd.host.vcpu_count" : ${content_metrics__dd_host_vcpu_count_2},
+ "_dd.profiling.enabled" : 0,
+ "_dd.trace_span_attribute_schema" : 0,
+ "process_id" : ${content_metrics_process_id}
+ },
+ "name" : "karate.test",
+ "parent_id" : ${content_parent_id_7},
+ "resource" : "[org/example/test_failed] test failed.first scenario",
+ "service" : "worker.org.gradle.process.internal.worker.gradleworkermain",
+ "span_id" : ${content_parent_id},
+ "start" : ${content_start_8},
+ "test_module_id" : ${content_test_module_id},
+ "test_session_id" : ${content_test_session_id},
+ "test_suite_id" : ${content_test_suite_id},
+ "trace_id" : ${content_trace_id}
+ },
+ "type" : "test",
+ "version" : 2
+}, {
+ "content" : {
+ "duration" : ${content_duration_9},
+ "error" : 0,
+ "meta" : {
+ "_dd.profiling.ctx" : "test",
+ "_dd.tracer_host" : ${content_meta__dd_tracer_host},
+ "component" : "karate",
+ "dummy_ci_tag" : "dummy_ci_tag_value",
+ "env" : "none",
+ "language" : "jvm",
+ "library_version" : ${content_meta_library_version},
+ "runtime-id" : ${content_meta_runtime_id},
+ "span.kind" : "test",
+ "test.framework" : "karate",
+ "test.framework_version" : ${content_meta_test_framework_version},
+ "test.is_new" : "true",
+ "test.is_retry" : "true",
+ "test.module" : "karate-2.0",
+ "test.name" : "first scenario",
+ "test.retry_reason" : "early_flake_detection",
+ "test.status" : "pass",
+ "test.suite" : "[org/example/test_failed] test failed",
+ "test.type" : "test",
+ "test_session.name" : "session-name"
+ },
+ "metrics" : {
+ "_dd.host.vcpu_count" : ${content_metrics__dd_host_vcpu_count_3},
+ "_dd.profiling.enabled" : 0,
+ "_dd.trace_span_attribute_schema" : 0,
+ "process_id" : ${content_metrics_process_id}
+ },
+ "name" : "karate.test",
+ "parent_id" : ${content_parent_id_7},
+ "resource" : "[org/example/test_failed] test failed.first scenario",
+ "service" : "worker.org.gradle.process.internal.worker.gradleworkermain",
+ "span_id" : ${content_parent_id_2},
+ "start" : ${content_start_9},
+ "test_module_id" : ${content_test_module_id},
+ "test_session_id" : ${content_test_session_id},
+ "test_suite_id" : ${content_test_suite_id},
+ "trace_id" : ${content_trace_id_2}
+ },
+ "type" : "test",
+ "version" : 2
+}, {
+ "content" : {
+ "duration" : ${content_duration_10},
+ "error" : 0,
+ "meta" : {
+ "_dd.profiling.ctx" : "test",
+ "_dd.tracer_host" : ${content_meta__dd_tracer_host},
+ "component" : "karate",
+ "dummy_ci_tag" : "dummy_ci_tag_value",
+ "env" : "none",
+ "language" : "jvm",
+ "library_version" : ${content_meta_library_version},
+ "runtime-id" : ${content_meta_runtime_id},
+ "span.kind" : "test",
+ "test.final_status" : "pass",
+ "test.framework" : "karate",
+ "test.framework_version" : ${content_meta_test_framework_version},
+ "test.is_new" : "true",
+ "test.is_retry" : "true",
+ "test.module" : "karate-2.0",
+ "test.name" : "first scenario",
+ "test.retry_reason" : "early_flake_detection",
+ "test.status" : "pass",
+ "test.suite" : "[org/example/test_failed] test failed",
+ "test.type" : "test",
+ "test_session.name" : "session-name"
+ },
+ "metrics" : {
+ "_dd.host.vcpu_count" : ${content_metrics__dd_host_vcpu_count_4},
+ "_dd.profiling.enabled" : 0,
+ "_dd.trace_span_attribute_schema" : 0,
+ "process_id" : ${content_metrics_process_id}
+ },
+ "name" : "karate.test",
+ "parent_id" : ${content_parent_id_7},
+ "resource" : "[org/example/test_failed] test failed.first scenario",
+ "service" : "worker.org.gradle.process.internal.worker.gradleworkermain",
+ "span_id" : ${content_parent_id_3},
+ "start" : ${content_start_10},
+ "test_module_id" : ${content_test_module_id},
+ "test_session_id" : ${content_test_session_id},
+ "test_suite_id" : ${content_test_suite_id},
+ "trace_id" : ${content_trace_id_3}
+ },
+ "type" : "test",
+ "version" : 2
+}, {
+ "content" : {
+ "duration" : ${content_duration_11},
+ "error" : 1,
+ "meta" : {
+ "_dd.profiling.ctx" : "test",
+ "_dd.tracer_host" : ${content_meta__dd_tracer_host},
+ "component" : "karate",
+ "dummy_ci_tag" : "dummy_ci_tag_value",
+ "env" : "none",
+ "error.message" : ${content_meta_error_message},
+ "error.stack" : ${content_meta_error_stack},
+ "error.type" : "java.lang.AssertionError",
+ "language" : "jvm",
+ "library_version" : ${content_meta_library_version},
+ "runtime-id" : ${content_meta_runtime_id},
+ "span.kind" : "test",
+ "test.failure_suppressed" : "true",
+ "test.framework" : "karate",
+ "test.framework_version" : ${content_meta_test_framework_version},
+ "test.is_new" : "true",
+ "test.module" : "karate-2.0",
+ "test.name" : "second scenario",
+ "test.status" : "fail",
+ "test.suite" : "[org/example/test_failed] test failed",
+ "test.test_management.is_quarantined" : "true",
+ "test.type" : "test",
+ "test_session.name" : "session-name"
+ },
+ "metrics" : {
+ "_dd.host.vcpu_count" : ${content_metrics__dd_host_vcpu_count_5},
+ "_dd.profiling.enabled" : 0,
+ "_dd.trace_span_attribute_schema" : 0,
+ "process_id" : ${content_metrics_process_id}
+ },
+ "name" : "karate.test",
+ "parent_id" : ${content_parent_id_7},
+ "resource" : "[org/example/test_failed] test failed.second scenario",
+ "service" : "worker.org.gradle.process.internal.worker.gradleworkermain",
+ "span_id" : ${content_parent_id_4},
+ "start" : ${content_start_11},
+ "test_module_id" : ${content_test_module_id},
+ "test_session_id" : ${content_test_session_id},
+ "test_suite_id" : ${content_test_suite_id},
+ "trace_id" : ${content_trace_id_4}
+ },
+ "type" : "test",
+ "version" : 2
+}, {
+ "content" : {
+ "duration" : ${content_duration_12},
+ "error" : 1,
+ "meta" : {
+ "_dd.profiling.ctx" : "test",
+ "_dd.tracer_host" : ${content_meta__dd_tracer_host},
+ "component" : "karate",
+ "dummy_ci_tag" : "dummy_ci_tag_value",
+ "env" : "none",
+ "error.message" : ${content_meta_error_message},
+ "error.stack" : ${content_meta_error_stack_2},
+ "error.type" : "java.lang.AssertionError",
+ "language" : "jvm",
+ "library_version" : ${content_meta_library_version},
+ "runtime-id" : ${content_meta_runtime_id},
+ "span.kind" : "test",
+ "test.failure_suppressed" : "true",
+ "test.framework" : "karate",
+ "test.framework_version" : ${content_meta_test_framework_version},
+ "test.is_new" : "true",
+ "test.is_retry" : "true",
+ "test.module" : "karate-2.0",
+ "test.name" : "second scenario",
+ "test.retry_reason" : "early_flake_detection",
+ "test.status" : "fail",
+ "test.suite" : "[org/example/test_failed] test failed",
+ "test.test_management.is_quarantined" : "true",
+ "test.type" : "test",
+ "test_session.name" : "session-name"
+ },
+ "metrics" : {
+ "_dd.host.vcpu_count" : ${content_metrics__dd_host_vcpu_count_6},
+ "_dd.profiling.enabled" : 0,
+ "_dd.trace_span_attribute_schema" : 0,
+ "process_id" : ${content_metrics_process_id}
+ },
+ "name" : "karate.test",
+ "parent_id" : ${content_parent_id_7},
+ "resource" : "[org/example/test_failed] test failed.second scenario",
+ "service" : "worker.org.gradle.process.internal.worker.gradleworkermain",
+ "span_id" : ${content_parent_id_5},
+ "start" : ${content_start_12},
+ "test_module_id" : ${content_test_module_id},
+ "test_session_id" : ${content_test_session_id},
+ "test_suite_id" : ${content_test_suite_id},
+ "trace_id" : ${content_trace_id_5}
+ },
+ "type" : "test",
+ "version" : 2
+}, {
+ "content" : {
+ "duration" : ${content_duration_13},
+ "error" : 1,
+ "meta" : {
+ "_dd.profiling.ctx" : "test",
+ "_dd.tracer_host" : ${content_meta__dd_tracer_host},
+ "component" : "karate",
+ "dummy_ci_tag" : "dummy_ci_tag_value",
+ "env" : "none",
+ "error.message" : ${content_meta_error_message},
+ "error.stack" : ${content_meta_error_stack_3},
+ "error.type" : "java.lang.AssertionError",
+ "language" : "jvm",
+ "library_version" : ${content_meta_library_version},
+ "runtime-id" : ${content_meta_runtime_id},
+ "span.kind" : "test",
+ "test.failure_suppressed" : "true",
+ "test.final_status" : "pass",
+ "test.framework" : "karate",
+ "test.framework_version" : ${content_meta_test_framework_version},
+ "test.has_failed_all_retries" : "true",
+ "test.is_new" : "true",
+ "test.is_retry" : "true",
+ "test.module" : "karate-2.0",
+ "test.name" : "second scenario",
+ "test.retry_reason" : "early_flake_detection",
+ "test.status" : "fail",
+ "test.suite" : "[org/example/test_failed] test failed",
+ "test.test_management.is_quarantined" : "true",
+ "test.type" : "test",
+ "test_session.name" : "session-name"
+ },
+ "metrics" : {
+ "_dd.host.vcpu_count" : ${content_metrics__dd_host_vcpu_count_7},
+ "_dd.profiling.enabled" : 0,
+ "_dd.trace_span_attribute_schema" : 0,
+ "process_id" : ${content_metrics_process_id}
+ },
+ "name" : "karate.test",
+ "parent_id" : ${content_parent_id_7},
+ "resource" : "[org/example/test_failed] test failed.second scenario",
+ "service" : "worker.org.gradle.process.internal.worker.gradleworkermain",
+ "span_id" : ${content_parent_id_6},
+ "start" : ${content_start_13},
+ "test_module_id" : ${content_test_module_id},
+ "test_session_id" : ${content_test_session_id},
+ "test_suite_id" : ${content_test_suite_id},
+ "trace_id" : ${content_trace_id_6}
+ },
+ "type" : "test",
+ "version" : 2
+}, {
+ "content" : {
+ "duration" : ${content_duration_14},
+ "error" : 0,
+ "meta" : {
+ "_dd.p.tid" : ${content_meta__dd_p_tid_2},
+ "_dd.profiling.ctx" : "test",
+ "_dd.tracer_host" : ${content_meta__dd_tracer_host},
+ "component" : "karate",
+ "dummy_ci_tag" : "dummy_ci_tag_value",
+ "env" : "none",
+ "language" : "jvm",
+ "library_version" : ${content_meta_library_version},
+ "runtime-id" : ${content_meta_runtime_id},
+ "span.kind" : "test_session_end",
+ "test.command" : "karate-2.0",
+ "test.early_flake.abort_reason" : "faulty",
+ "test.early_flake.enabled" : "true",
+ "test.framework" : "karate",
+ "test.framework_version" : ${content_meta_test_framework_version},
+ "test.status" : "pass",
+ "test.test_management.enabled" : "true",
+ "test.type" : "test",
+ "test_session.name" : "session-name"
+ },
+ "metrics" : {
+ "_dd.host.vcpu_count" : ${content_metrics__dd_host_vcpu_count_8},
+ "_dd.profiling.enabled" : 0,
+ "_dd.trace_span_attribute_schema" : 0,
+ "process_id" : ${content_metrics_process_id}
+ },
+ "name" : "karate.test_session",
+ "resource" : "karate-2.0",
+ "service" : "worker.org.gradle.process.internal.worker.gradleworkermain",
+ "start" : ${content_start_14},
+ "test_session_id" : ${content_test_session_id}
+ },
+ "type" : "test_session_end",
+ "version" : 1
+}, {
+ "content" : {
+ "duration" : ${content_duration_15},
+ "error" : 0,
+ "meta" : {
+ "_dd.p.tid" : ${content_meta__dd_p_tid_3},
+ "component" : "karate",
+ "dummy_ci_tag" : "dummy_ci_tag_value",
+ "env" : "none",
+ "library_version" : ${content_meta_library_version},
+ "span.kind" : "test_module_end",
+ "test.early_flake.abort_reason" : "faulty",
+ "test.early_flake.enabled" : "true",
+ "test.framework" : "karate",
+ "test.framework_version" : ${content_meta_test_framework_version},
+ "test.module" : "karate-2.0",
+ "test.status" : "pass",
+ "test.test_management.enabled" : "true",
+ "test.type" : "test",
+ "test_session.name" : "session-name"
+ },
+ "metrics" : {
+ "_dd.host.vcpu_count" : ${content_metrics__dd_host_vcpu_count_9}
+ },
+ "name" : "karate.test_module",
+ "resource" : "karate-2.0",
+ "service" : "worker.org.gradle.process.internal.worker.gradleworkermain",
+ "start" : ${content_start_15},
+ "test_module_id" : ${content_test_module_id},
+ "test_session_id" : ${content_test_session_id}
+ },
+ "type" : "test_module_end",
+ "version" : 1
+} ]
\ No newline at end of file
diff --git a/dd-java-agent/instrumentation/karate/karate-2.0/src/test/resources/test-quarantined-failed-known/coverages.ftl b/dd-java-agent/instrumentation/karate/karate-2.0/src/test/resources/test-quarantined-failed-known/coverages.ftl
new file mode 100644
index 00000000000..8878e547a79
--- /dev/null
+++ b/dd-java-agent/instrumentation/karate/karate-2.0/src/test/resources/test-quarantined-failed-known/coverages.ftl
@@ -0,0 +1 @@
+[ ]
\ No newline at end of file
diff --git a/dd-java-agent/instrumentation/karate/karate-2.0/src/test/resources/test-quarantined-failed-known/events.ftl b/dd-java-agent/instrumentation/karate/karate-2.0/src/test/resources/test-quarantined-failed-known/events.ftl
new file mode 100644
index 00000000000..86a10f1782f
--- /dev/null
+++ b/dd-java-agent/instrumentation/karate/karate-2.0/src/test/resources/test-quarantined-failed-known/events.ftl
@@ -0,0 +1,381 @@
+[ {
+ "content" : {
+ "duration" : ${content_duration},
+ "error" : 0,
+ "meta" : {
+ "component" : "karate",
+ "env" : "none",
+ "library_version" : ${content_meta_library_version},
+ "step.name" : "* 'first'"
+ },
+ "metrics" : {
+ "step.endLine" : 4,
+ "step.startLine" : 4
+ },
+ "name" : "karate.step",
+ "parent_id" : ${content_parent_id},
+ "resource" : "* 'first'",
+ "service" : "worker.org.gradle.process.internal.worker.gradleworkermain",
+ "span_id" : ${content_span_id},
+ "start" : ${content_start},
+ "trace_id" : ${content_trace_id}
+ },
+ "type" : "span",
+ "version" : 1
+}, {
+ "content" : {
+ "duration" : ${content_duration_2},
+ "error" : 0,
+ "meta" : {
+ "component" : "karate",
+ "env" : "none",
+ "library_version" : ${content_meta_library_version},
+ "step.name" : "* 'first'"
+ },
+ "metrics" : {
+ "step.endLine" : 4,
+ "step.startLine" : 4
+ },
+ "name" : "karate.step",
+ "parent_id" : ${content_parent_id_2},
+ "resource" : "* 'first'",
+ "service" : "worker.org.gradle.process.internal.worker.gradleworkermain",
+ "span_id" : ${content_span_id_2},
+ "start" : ${content_start_2},
+ "trace_id" : ${content_trace_id_2}
+ },
+ "type" : "span",
+ "version" : 1
+}, {
+ "content" : {
+ "duration" : ${content_duration_3},
+ "error" : 0,
+ "meta" : {
+ "component" : "karate",
+ "env" : "none",
+ "library_version" : ${content_meta_library_version},
+ "step.name" : "* 'first'"
+ },
+ "metrics" : {
+ "step.endLine" : 4,
+ "step.startLine" : 4
+ },
+ "name" : "karate.step",
+ "parent_id" : ${content_parent_id_3},
+ "resource" : "* 'first'",
+ "service" : "worker.org.gradle.process.internal.worker.gradleworkermain",
+ "span_id" : ${content_span_id_3},
+ "start" : ${content_start_3},
+ "trace_id" : ${content_trace_id_3}
+ },
+ "type" : "span",
+ "version" : 1
+}, {
+ "content" : {
+ "duration" : ${content_duration_4},
+ "error" : 0,
+ "meta" : {
+ "component" : "karate",
+ "env" : "none",
+ "library_version" : ${content_meta_library_version},
+ "step.name" : "* false"
+ },
+ "metrics" : {
+ "step.endLine" : 7,
+ "step.startLine" : 7
+ },
+ "name" : "karate.step",
+ "parent_id" : ${content_parent_id_4},
+ "resource" : "* false",
+ "service" : "worker.org.gradle.process.internal.worker.gradleworkermain",
+ "span_id" : ${content_span_id_4},
+ "start" : ${content_start_4},
+ "trace_id" : ${content_trace_id_4}
+ },
+ "type" : "span",
+ "version" : 1
+}, {
+ "content" : {
+ "duration" : ${content_duration_5},
+ "error" : 0,
+ "meta" : {
+ "_dd.p.tid" : ${content_meta__dd_p_tid},
+ "component" : "karate",
+ "dummy_ci_tag" : "dummy_ci_tag_value",
+ "env" : "none",
+ "library_version" : ${content_meta_library_version},
+ "span.kind" : "test_suite_end",
+ "test.framework" : "karate",
+ "test.framework_version" : ${content_meta_test_framework_version},
+ "test.module" : "karate-2.0",
+ "test.status" : "pass",
+ "test.suite" : "[org/example/test_failed] test failed",
+ "test.type" : "test",
+ "test_session.name" : "session-name"
+ },
+ "metrics" : {
+ "_dd.host.vcpu_count" : ${content_metrics__dd_host_vcpu_count}
+ },
+ "name" : "karate.test_suite",
+ "resource" : "[org/example/test_failed] test failed",
+ "service" : "worker.org.gradle.process.internal.worker.gradleworkermain",
+ "start" : ${content_start_5},
+ "test_module_id" : ${content_test_module_id},
+ "test_session_id" : ${content_test_session_id},
+ "test_suite_id" : ${content_test_suite_id}
+ },
+ "type" : "test_suite_end",
+ "version" : 1
+}, {
+ "content" : {
+ "duration" : ${content_duration_6},
+ "error" : 0,
+ "meta" : {
+ "_dd.profiling.ctx" : "test",
+ "_dd.tracer_host" : ${content_meta__dd_tracer_host},
+ "component" : "karate",
+ "dummy_ci_tag" : "dummy_ci_tag_value",
+ "env" : "none",
+ "language" : "jvm",
+ "library_version" : ${content_meta_library_version},
+ "runtime-id" : ${content_meta_runtime_id},
+ "span.kind" : "test",
+ "test.framework" : "karate",
+ "test.framework_version" : ${content_meta_test_framework_version},
+ "test.is_new" : "true",
+ "test.module" : "karate-2.0",
+ "test.name" : "first scenario",
+ "test.status" : "pass",
+ "test.suite" : "[org/example/test_failed] test failed",
+ "test.type" : "test",
+ "test_session.name" : "session-name"
+ },
+ "metrics" : {
+ "_dd.host.vcpu_count" : ${content_metrics__dd_host_vcpu_count_2},
+ "_dd.profiling.enabled" : 0,
+ "_dd.trace_span_attribute_schema" : 0,
+ "process_id" : ${content_metrics_process_id}
+ },
+ "name" : "karate.test",
+ "parent_id" : ${content_parent_id_5},
+ "resource" : "[org/example/test_failed] test failed.first scenario",
+ "service" : "worker.org.gradle.process.internal.worker.gradleworkermain",
+ "span_id" : ${content_parent_id},
+ "start" : ${content_start_6},
+ "test_module_id" : ${content_test_module_id},
+ "test_session_id" : ${content_test_session_id},
+ "test_suite_id" : ${content_test_suite_id},
+ "trace_id" : ${content_trace_id}
+ },
+ "type" : "test",
+ "version" : 2
+}, {
+ "content" : {
+ "duration" : ${content_duration_7},
+ "error" : 0,
+ "meta" : {
+ "_dd.profiling.ctx" : "test",
+ "_dd.tracer_host" : ${content_meta__dd_tracer_host},
+ "component" : "karate",
+ "dummy_ci_tag" : "dummy_ci_tag_value",
+ "env" : "none",
+ "language" : "jvm",
+ "library_version" : ${content_meta_library_version},
+ "runtime-id" : ${content_meta_runtime_id},
+ "span.kind" : "test",
+ "test.framework" : "karate",
+ "test.framework_version" : ${content_meta_test_framework_version},
+ "test.is_new" : "true",
+ "test.is_retry" : "true",
+ "test.module" : "karate-2.0",
+ "test.name" : "first scenario",
+ "test.retry_reason" : "early_flake_detection",
+ "test.status" : "pass",
+ "test.suite" : "[org/example/test_failed] test failed",
+ "test.type" : "test",
+ "test_session.name" : "session-name"
+ },
+ "metrics" : {
+ "_dd.host.vcpu_count" : ${content_metrics__dd_host_vcpu_count_3},
+ "_dd.profiling.enabled" : 0,
+ "_dd.trace_span_attribute_schema" : 0,
+ "process_id" : ${content_metrics_process_id}
+ },
+ "name" : "karate.test",
+ "parent_id" : ${content_parent_id_5},
+ "resource" : "[org/example/test_failed] test failed.first scenario",
+ "service" : "worker.org.gradle.process.internal.worker.gradleworkermain",
+ "span_id" : ${content_parent_id_2},
+ "start" : ${content_start_7},
+ "test_module_id" : ${content_test_module_id},
+ "test_session_id" : ${content_test_session_id},
+ "test_suite_id" : ${content_test_suite_id},
+ "trace_id" : ${content_trace_id_2}
+ },
+ "type" : "test",
+ "version" : 2
+}, {
+ "content" : {
+ "duration" : ${content_duration_8},
+ "error" : 0,
+ "meta" : {
+ "_dd.profiling.ctx" : "test",
+ "_dd.tracer_host" : ${content_meta__dd_tracer_host},
+ "component" : "karate",
+ "dummy_ci_tag" : "dummy_ci_tag_value",
+ "env" : "none",
+ "language" : "jvm",
+ "library_version" : ${content_meta_library_version},
+ "runtime-id" : ${content_meta_runtime_id},
+ "span.kind" : "test",
+ "test.final_status" : "pass",
+ "test.framework" : "karate",
+ "test.framework_version" : ${content_meta_test_framework_version},
+ "test.is_new" : "true",
+ "test.is_retry" : "true",
+ "test.module" : "karate-2.0",
+ "test.name" : "first scenario",
+ "test.retry_reason" : "early_flake_detection",
+ "test.status" : "pass",
+ "test.suite" : "[org/example/test_failed] test failed",
+ "test.type" : "test",
+ "test_session.name" : "session-name"
+ },
+ "metrics" : {
+ "_dd.host.vcpu_count" : ${content_metrics__dd_host_vcpu_count_4},
+ "_dd.profiling.enabled" : 0,
+ "_dd.trace_span_attribute_schema" : 0,
+ "process_id" : ${content_metrics_process_id}
+ },
+ "name" : "karate.test",
+ "parent_id" : ${content_parent_id_5},
+ "resource" : "[org/example/test_failed] test failed.first scenario",
+ "service" : "worker.org.gradle.process.internal.worker.gradleworkermain",
+ "span_id" : ${content_parent_id_3},
+ "start" : ${content_start_8},
+ "test_module_id" : ${content_test_module_id},
+ "test_session_id" : ${content_test_session_id},
+ "test_suite_id" : ${content_test_suite_id},
+ "trace_id" : ${content_trace_id_3}
+ },
+ "type" : "test",
+ "version" : 2
+}, {
+ "content" : {
+ "duration" : ${content_duration_9},
+ "error" : 1,
+ "meta" : {
+ "_dd.profiling.ctx" : "test",
+ "_dd.tracer_host" : ${content_meta__dd_tracer_host},
+ "component" : "karate",
+ "dummy_ci_tag" : "dummy_ci_tag_value",
+ "env" : "none",
+ "error.message" : ${content_meta_error_message},
+ "error.stack" : ${content_meta_error_stack},
+ "error.type" : "java.lang.AssertionError",
+ "language" : "jvm",
+ "library_version" : ${content_meta_library_version},
+ "runtime-id" : ${content_meta_runtime_id},
+ "span.kind" : "test",
+ "test.failure_suppressed" : "true",
+ "test.final_status" : "pass",
+ "test.framework" : "karate",
+ "test.framework_version" : ${content_meta_test_framework_version},
+ "test.module" : "karate-2.0",
+ "test.name" : "second scenario",
+ "test.status" : "fail",
+ "test.suite" : "[org/example/test_failed] test failed",
+ "test.test_management.is_quarantined" : "true",
+ "test.type" : "test",
+ "test_session.name" : "session-name"
+ },
+ "metrics" : {
+ "_dd.host.vcpu_count" : ${content_metrics__dd_host_vcpu_count_5},
+ "_dd.profiling.enabled" : 0,
+ "_dd.trace_span_attribute_schema" : 0,
+ "process_id" : ${content_metrics_process_id}
+ },
+ "name" : "karate.test",
+ "parent_id" : ${content_parent_id_5},
+ "resource" : "[org/example/test_failed] test failed.second scenario",
+ "service" : "worker.org.gradle.process.internal.worker.gradleworkermain",
+ "span_id" : ${content_parent_id_4},
+ "start" : ${content_start_9},
+ "test_module_id" : ${content_test_module_id},
+ "test_session_id" : ${content_test_session_id},
+ "test_suite_id" : ${content_test_suite_id},
+ "trace_id" : ${content_trace_id_4}
+ },
+ "type" : "test",
+ "version" : 2
+}, {
+ "content" : {
+ "duration" : ${content_duration_10},
+ "error" : 0,
+ "meta" : {
+ "_dd.p.tid" : ${content_meta__dd_p_tid_2},
+ "_dd.profiling.ctx" : "test",
+ "_dd.tracer_host" : ${content_meta__dd_tracer_host},
+ "component" : "karate",
+ "dummy_ci_tag" : "dummy_ci_tag_value",
+ "env" : "none",
+ "language" : "jvm",
+ "library_version" : ${content_meta_library_version},
+ "runtime-id" : ${content_meta_runtime_id},
+ "span.kind" : "test_session_end",
+ "test.command" : "karate-2.0",
+ "test.early_flake.enabled" : "true",
+ "test.framework" : "karate",
+ "test.framework_version" : ${content_meta_test_framework_version},
+ "test.status" : "pass",
+ "test.test_management.enabled" : "true",
+ "test.type" : "test",
+ "test_session.name" : "session-name"
+ },
+ "metrics" : {
+ "_dd.host.vcpu_count" : ${content_metrics__dd_host_vcpu_count_6},
+ "_dd.profiling.enabled" : 0,
+ "_dd.trace_span_attribute_schema" : 0,
+ "process_id" : ${content_metrics_process_id}
+ },
+ "name" : "karate.test_session",
+ "resource" : "karate-2.0",
+ "service" : "worker.org.gradle.process.internal.worker.gradleworkermain",
+ "start" : ${content_start_10},
+ "test_session_id" : ${content_test_session_id}
+ },
+ "type" : "test_session_end",
+ "version" : 1
+}, {
+ "content" : {
+ "duration" : ${content_duration_11},
+ "error" : 0,
+ "meta" : {
+ "_dd.p.tid" : ${content_meta__dd_p_tid_3},
+ "component" : "karate",
+ "dummy_ci_tag" : "dummy_ci_tag_value",
+ "env" : "none",
+ "library_version" : ${content_meta_library_version},
+ "span.kind" : "test_module_end",
+ "test.early_flake.enabled" : "true",
+ "test.framework" : "karate",
+ "test.framework_version" : ${content_meta_test_framework_version},
+ "test.module" : "karate-2.0",
+ "test.status" : "pass",
+ "test.test_management.enabled" : "true",
+ "test.type" : "test",
+ "test_session.name" : "session-name"
+ },
+ "metrics" : {
+ "_dd.host.vcpu_count" : ${content_metrics__dd_host_vcpu_count_7}
+ },
+ "name" : "karate.test_module",
+ "resource" : "karate-2.0",
+ "service" : "worker.org.gradle.process.internal.worker.gradleworkermain",
+ "start" : ${content_start_11},
+ "test_module_id" : ${content_test_module_id},
+ "test_session_id" : ${content_test_session_id}
+ },
+ "type" : "test_module_end",
+ "version" : 1
+} ]
\ No newline at end of file
diff --git a/dd-java-agent/instrumentation/karate/karate-2.0/src/test/resources/test-quarantined-failed/coverages.ftl b/dd-java-agent/instrumentation/karate/karate-2.0/src/test/resources/test-quarantined-failed/coverages.ftl
new file mode 100644
index 00000000000..8878e547a79
--- /dev/null
+++ b/dd-java-agent/instrumentation/karate/karate-2.0/src/test/resources/test-quarantined-failed/coverages.ftl
@@ -0,0 +1 @@
+[ ]
\ No newline at end of file
diff --git a/dd-java-agent/instrumentation/karate/karate-2.0/src/test/resources/test-quarantined-failed/events.ftl b/dd-java-agent/instrumentation/karate/karate-2.0/src/test/resources/test-quarantined-failed/events.ftl
new file mode 100644
index 00000000000..cf475efcab6
--- /dev/null
+++ b/dd-java-agent/instrumentation/karate/karate-2.0/src/test/resources/test-quarantined-failed/events.ftl
@@ -0,0 +1,240 @@
+[ {
+ "content" : {
+ "duration" : ${content_duration},
+ "error" : 0,
+ "meta" : {
+ "component" : "karate",
+ "env" : "none",
+ "library_version" : ${content_meta_library_version},
+ "step.name" : "* 'first'"
+ },
+ "metrics" : {
+ "step.endLine" : 4,
+ "step.startLine" : 4
+ },
+ "name" : "karate.step",
+ "parent_id" : ${content_parent_id},
+ "resource" : "* 'first'",
+ "service" : "worker.org.gradle.process.internal.worker.gradleworkermain",
+ "span_id" : ${content_span_id},
+ "start" : ${content_start},
+ "trace_id" : ${content_trace_id}
+ },
+ "type" : "span",
+ "version" : 1
+}, {
+ "content" : {
+ "duration" : ${content_duration_2},
+ "error" : 0,
+ "meta" : {
+ "component" : "karate",
+ "env" : "none",
+ "library_version" : ${content_meta_library_version},
+ "step.name" : "* false"
+ },
+ "metrics" : {
+ "step.endLine" : 7,
+ "step.startLine" : 7
+ },
+ "name" : "karate.step",
+ "parent_id" : ${content_parent_id_2},
+ "resource" : "* false",
+ "service" : "worker.org.gradle.process.internal.worker.gradleworkermain",
+ "span_id" : ${content_span_id_2},
+ "start" : ${content_start_2},
+ "trace_id" : ${content_trace_id_2}
+ },
+ "type" : "span",
+ "version" : 1
+}, {
+ "content" : {
+ "duration" : ${content_duration_3},
+ "error" : 0,
+ "meta" : {
+ "_dd.p.tid" : ${content_meta__dd_p_tid},
+ "component" : "karate",
+ "dummy_ci_tag" : "dummy_ci_tag_value",
+ "env" : "none",
+ "library_version" : ${content_meta_library_version},
+ "span.kind" : "test_suite_end",
+ "test.framework" : "karate",
+ "test.framework_version" : ${content_meta_test_framework_version},
+ "test.module" : "karate-2.0",
+ "test.status" : "pass",
+ "test.suite" : "[org/example/test_failed] test failed",
+ "test.type" : "test",
+ "test_session.name" : "session-name"
+ },
+ "metrics" : {
+ "_dd.host.vcpu_count" : ${content_metrics__dd_host_vcpu_count}
+ },
+ "name" : "karate.test_suite",
+ "resource" : "[org/example/test_failed] test failed",
+ "service" : "worker.org.gradle.process.internal.worker.gradleworkermain",
+ "start" : ${content_start_3},
+ "test_module_id" : ${content_test_module_id},
+ "test_session_id" : ${content_test_session_id},
+ "test_suite_id" : ${content_test_suite_id}
+ },
+ "type" : "test_suite_end",
+ "version" : 1
+}, {
+ "content" : {
+ "duration" : ${content_duration_4},
+ "error" : 0,
+ "meta" : {
+ "_dd.profiling.ctx" : "test",
+ "_dd.tracer_host" : ${content_meta__dd_tracer_host},
+ "component" : "karate",
+ "dummy_ci_tag" : "dummy_ci_tag_value",
+ "env" : "none",
+ "language" : "jvm",
+ "library_version" : ${content_meta_library_version},
+ "runtime-id" : ${content_meta_runtime_id},
+ "span.kind" : "test",
+ "test.final_status" : "pass",
+ "test.framework" : "karate",
+ "test.framework_version" : ${content_meta_test_framework_version},
+ "test.module" : "karate-2.0",
+ "test.name" : "first scenario",
+ "test.status" : "pass",
+ "test.suite" : "[org/example/test_failed] test failed",
+ "test.type" : "test",
+ "test_session.name" : "session-name"
+ },
+ "metrics" : {
+ "_dd.host.vcpu_count" : ${content_metrics__dd_host_vcpu_count_2},
+ "_dd.profiling.enabled" : 0,
+ "_dd.trace_span_attribute_schema" : 0,
+ "process_id" : ${content_metrics_process_id}
+ },
+ "name" : "karate.test",
+ "parent_id" : ${content_parent_id_3},
+ "resource" : "[org/example/test_failed] test failed.first scenario",
+ "service" : "worker.org.gradle.process.internal.worker.gradleworkermain",
+ "span_id" : ${content_parent_id},
+ "start" : ${content_start_4},
+ "test_module_id" : ${content_test_module_id},
+ "test_session_id" : ${content_test_session_id},
+ "test_suite_id" : ${content_test_suite_id},
+ "trace_id" : ${content_trace_id}
+ },
+ "type" : "test",
+ "version" : 2
+}, {
+ "content" : {
+ "duration" : ${content_duration_5},
+ "error" : 1,
+ "meta" : {
+ "_dd.profiling.ctx" : "test",
+ "_dd.tracer_host" : ${content_meta__dd_tracer_host},
+ "component" : "karate",
+ "dummy_ci_tag" : "dummy_ci_tag_value",
+ "env" : "none",
+ "error.message" : ${content_meta_error_message},
+ "error.stack" : ${content_meta_error_stack},
+ "error.type" : "java.lang.AssertionError",
+ "language" : "jvm",
+ "library_version" : ${content_meta_library_version},
+ "runtime-id" : ${content_meta_runtime_id},
+ "span.kind" : "test",
+ "test.failure_suppressed" : "true",
+ "test.final_status" : "pass",
+ "test.framework" : "karate",
+ "test.framework_version" : ${content_meta_test_framework_version},
+ "test.module" : "karate-2.0",
+ "test.name" : "second scenario",
+ "test.status" : "fail",
+ "test.suite" : "[org/example/test_failed] test failed",
+ "test.test_management.is_quarantined" : "true",
+ "test.type" : "test",
+ "test_session.name" : "session-name"
+ },
+ "metrics" : {
+ "_dd.host.vcpu_count" : ${content_metrics__dd_host_vcpu_count_3},
+ "_dd.profiling.enabled" : 0,
+ "_dd.trace_span_attribute_schema" : 0,
+ "process_id" : ${content_metrics_process_id}
+ },
+ "name" : "karate.test",
+ "parent_id" : ${content_parent_id_3},
+ "resource" : "[org/example/test_failed] test failed.second scenario",
+ "service" : "worker.org.gradle.process.internal.worker.gradleworkermain",
+ "span_id" : ${content_parent_id_2},
+ "start" : ${content_start_5},
+ "test_module_id" : ${content_test_module_id},
+ "test_session_id" : ${content_test_session_id},
+ "test_suite_id" : ${content_test_suite_id},
+ "trace_id" : ${content_trace_id_2}
+ },
+ "type" : "test",
+ "version" : 2
+}, {
+ "content" : {
+ "duration" : ${content_duration_6},
+ "error" : 0,
+ "meta" : {
+ "_dd.p.tid" : ${content_meta__dd_p_tid_2},
+ "_dd.profiling.ctx" : "test",
+ "_dd.tracer_host" : ${content_meta__dd_tracer_host},
+ "component" : "karate",
+ "dummy_ci_tag" : "dummy_ci_tag_value",
+ "env" : "none",
+ "language" : "jvm",
+ "library_version" : ${content_meta_library_version},
+ "runtime-id" : ${content_meta_runtime_id},
+ "span.kind" : "test_session_end",
+ "test.command" : "karate-2.0",
+ "test.framework" : "karate",
+ "test.framework_version" : ${content_meta_test_framework_version},
+ "test.status" : "pass",
+ "test.test_management.enabled" : "true",
+ "test.type" : "test",
+ "test_session.name" : "session-name"
+ },
+ "metrics" : {
+ "_dd.host.vcpu_count" : ${content_metrics__dd_host_vcpu_count_4},
+ "_dd.profiling.enabled" : 0,
+ "_dd.trace_span_attribute_schema" : 0,
+ "process_id" : ${content_metrics_process_id}
+ },
+ "name" : "karate.test_session",
+ "resource" : "karate-2.0",
+ "service" : "worker.org.gradle.process.internal.worker.gradleworkermain",
+ "start" : ${content_start_6},
+ "test_session_id" : ${content_test_session_id}
+ },
+ "type" : "test_session_end",
+ "version" : 1
+}, {
+ "content" : {
+ "duration" : ${content_duration_7},
+ "error" : 0,
+ "meta" : {
+ "_dd.p.tid" : ${content_meta__dd_p_tid_3},
+ "component" : "karate",
+ "dummy_ci_tag" : "dummy_ci_tag_value",
+ "env" : "none",
+ "library_version" : ${content_meta_library_version},
+ "span.kind" : "test_module_end",
+ "test.framework" : "karate",
+ "test.framework_version" : ${content_meta_test_framework_version},
+ "test.module" : "karate-2.0",
+ "test.status" : "pass",
+ "test.test_management.enabled" : "true",
+ "test.type" : "test",
+ "test_session.name" : "session-name"
+ },
+ "metrics" : {
+ "_dd.host.vcpu_count" : ${content_metrics__dd_host_vcpu_count_5}
+ },
+ "name" : "karate.test_module",
+ "resource" : "karate-2.0",
+ "service" : "worker.org.gradle.process.internal.worker.gradleworkermain",
+ "start" : ${content_start_7},
+ "test_module_id" : ${content_test_module_id},
+ "test_session_id" : ${content_test_session_id}
+ },
+ "type" : "test_module_end",
+ "version" : 1
+} ]
\ No newline at end of file
diff --git a/dd-java-agent/instrumentation/karate/karate-2.0/src/test/resources/test-retry-failed/coverages.ftl b/dd-java-agent/instrumentation/karate/karate-2.0/src/test/resources/test-retry-failed/coverages.ftl
new file mode 100644
index 00000000000..8878e547a79
--- /dev/null
+++ b/dd-java-agent/instrumentation/karate/karate-2.0/src/test/resources/test-retry-failed/coverages.ftl
@@ -0,0 +1 @@
+[ ]
\ No newline at end of file
diff --git a/dd-java-agent/instrumentation/karate/karate-2.0/src/test/resources/test-retry-failed/events.ftl b/dd-java-agent/instrumentation/karate/karate-2.0/src/test/resources/test-retry-failed/events.ftl
new file mode 100644
index 00000000000..813d2d93780
--- /dev/null
+++ b/dd-java-agent/instrumentation/karate/karate-2.0/src/test/resources/test-retry-failed/events.ftl
@@ -0,0 +1,528 @@
+[ {
+ "content" : {
+ "duration" : ${content_duration},
+ "error" : 0,
+ "meta" : {
+ "component" : "karate",
+ "env" : "none",
+ "library_version" : ${content_meta_library_version},
+ "step.name" : "* 'first'"
+ },
+ "metrics" : {
+ "step.endLine" : 4,
+ "step.startLine" : 4
+ },
+ "name" : "karate.step",
+ "parent_id" : ${content_parent_id},
+ "resource" : "* 'first'",
+ "service" : "worker.org.gradle.process.internal.worker.gradleworkermain",
+ "span_id" : ${content_span_id},
+ "start" : ${content_start},
+ "trace_id" : ${content_trace_id}
+ },
+ "type" : "span",
+ "version" : 1
+}, {
+ "content" : {
+ "duration" : ${content_duration_2},
+ "error" : 0,
+ "meta" : {
+ "component" : "karate",
+ "env" : "none",
+ "library_version" : ${content_meta_library_version},
+ "step.name" : "* false"
+ },
+ "metrics" : {
+ "step.endLine" : 7,
+ "step.startLine" : 7
+ },
+ "name" : "karate.step",
+ "parent_id" : ${content_parent_id_2},
+ "resource" : "* false",
+ "service" : "worker.org.gradle.process.internal.worker.gradleworkermain",
+ "span_id" : ${content_span_id_2},
+ "start" : ${content_start_2},
+ "trace_id" : ${content_trace_id_2}
+ },
+ "type" : "span",
+ "version" : 1
+}, {
+ "content" : {
+ "duration" : ${content_duration_3},
+ "error" : 0,
+ "meta" : {
+ "component" : "karate",
+ "env" : "none",
+ "library_version" : ${content_meta_library_version},
+ "step.name" : "* false"
+ },
+ "metrics" : {
+ "step.endLine" : 7,
+ "step.startLine" : 7
+ },
+ "name" : "karate.step",
+ "parent_id" : ${content_parent_id_3},
+ "resource" : "* false",
+ "service" : "worker.org.gradle.process.internal.worker.gradleworkermain",
+ "span_id" : ${content_span_id_3},
+ "start" : ${content_start_3},
+ "trace_id" : ${content_trace_id_3}
+ },
+ "type" : "span",
+ "version" : 1
+}, {
+ "content" : {
+ "duration" : ${content_duration_4},
+ "error" : 0,
+ "meta" : {
+ "component" : "karate",
+ "env" : "none",
+ "library_version" : ${content_meta_library_version},
+ "step.name" : "* false"
+ },
+ "metrics" : {
+ "step.endLine" : 7,
+ "step.startLine" : 7
+ },
+ "name" : "karate.step",
+ "parent_id" : ${content_parent_id_4},
+ "resource" : "* false",
+ "service" : "worker.org.gradle.process.internal.worker.gradleworkermain",
+ "span_id" : ${content_span_id_4},
+ "start" : ${content_start_4},
+ "trace_id" : ${content_trace_id_4}
+ },
+ "type" : "span",
+ "version" : 1
+}, {
+ "content" : {
+ "duration" : ${content_duration_5},
+ "error" : 0,
+ "meta" : {
+ "component" : "karate",
+ "env" : "none",
+ "library_version" : ${content_meta_library_version},
+ "step.name" : "* false"
+ },
+ "metrics" : {
+ "step.endLine" : 7,
+ "step.startLine" : 7
+ },
+ "name" : "karate.step",
+ "parent_id" : ${content_parent_id_5},
+ "resource" : "* false",
+ "service" : "worker.org.gradle.process.internal.worker.gradleworkermain",
+ "span_id" : ${content_span_id_5},
+ "start" : ${content_start_5},
+ "trace_id" : ${content_trace_id_5}
+ },
+ "type" : "span",
+ "version" : 1
+}, {
+ "content" : {
+ "duration" : ${content_duration_6},
+ "error" : 0,
+ "meta" : {
+ "component" : "karate",
+ "env" : "none",
+ "library_version" : ${content_meta_library_version},
+ "step.name" : "* false"
+ },
+ "metrics" : {
+ "step.endLine" : 7,
+ "step.startLine" : 7
+ },
+ "name" : "karate.step",
+ "parent_id" : ${content_parent_id_6},
+ "resource" : "* false",
+ "service" : "worker.org.gradle.process.internal.worker.gradleworkermain",
+ "span_id" : ${content_span_id_6},
+ "start" : ${content_start_6},
+ "trace_id" : ${content_trace_id_6}
+ },
+ "type" : "span",
+ "version" : 1
+}, {
+ "content" : {
+ "duration" : ${content_duration_7},
+ "error" : 1,
+ "meta" : {
+ "_dd.p.tid" : ${content_meta__dd_p_tid},
+ "component" : "karate",
+ "dummy_ci_tag" : "dummy_ci_tag_value",
+ "env" : "none",
+ "error.message" : ${content_meta_error_message},
+ "error.stack" : ${content_meta_error_stack},
+ "error.type" : "java.lang.AssertionError",
+ "library_version" : ${content_meta_library_version},
+ "span.kind" : "test_suite_end",
+ "test.framework" : "karate",
+ "test.framework_version" : ${content_meta_test_framework_version},
+ "test.module" : "karate-2.0",
+ "test.status" : "fail",
+ "test.suite" : "[org/example/test_failed] test failed",
+ "test.type" : "test",
+ "test_session.name" : "session-name"
+ },
+ "metrics" : {
+ "_dd.host.vcpu_count" : ${content_metrics__dd_host_vcpu_count}
+ },
+ "name" : "karate.test_suite",
+ "resource" : "[org/example/test_failed] test failed",
+ "service" : "worker.org.gradle.process.internal.worker.gradleworkermain",
+ "start" : ${content_start_7},
+ "test_module_id" : ${content_test_module_id},
+ "test_session_id" : ${content_test_session_id},
+ "test_suite_id" : ${content_test_suite_id}
+ },
+ "type" : "test_suite_end",
+ "version" : 1
+}, {
+ "content" : {
+ "duration" : ${content_duration_8},
+ "error" : 0,
+ "meta" : {
+ "_dd.profiling.ctx" : "test",
+ "_dd.tracer_host" : ${content_meta__dd_tracer_host},
+ "component" : "karate",
+ "dummy_ci_tag" : "dummy_ci_tag_value",
+ "env" : "none",
+ "language" : "jvm",
+ "library_version" : ${content_meta_library_version},
+ "runtime-id" : ${content_meta_runtime_id},
+ "span.kind" : "test",
+ "test.final_status" : "pass",
+ "test.framework" : "karate",
+ "test.framework_version" : ${content_meta_test_framework_version},
+ "test.module" : "karate-2.0",
+ "test.name" : "first scenario",
+ "test.status" : "pass",
+ "test.suite" : "[org/example/test_failed] test failed",
+ "test.type" : "test",
+ "test_session.name" : "session-name"
+ },
+ "metrics" : {
+ "_dd.host.vcpu_count" : ${content_metrics__dd_host_vcpu_count_2},
+ "_dd.profiling.enabled" : 0,
+ "_dd.trace_span_attribute_schema" : 0,
+ "process_id" : ${content_metrics_process_id}
+ },
+ "name" : "karate.test",
+ "parent_id" : ${content_parent_id_7},
+ "resource" : "[org/example/test_failed] test failed.first scenario",
+ "service" : "worker.org.gradle.process.internal.worker.gradleworkermain",
+ "span_id" : ${content_parent_id},
+ "start" : ${content_start_8},
+ "test_module_id" : ${content_test_module_id},
+ "test_session_id" : ${content_test_session_id},
+ "test_suite_id" : ${content_test_suite_id},
+ "trace_id" : ${content_trace_id}
+ },
+ "type" : "test",
+ "version" : 2
+}, {
+ "content" : {
+ "duration" : ${content_duration_9},
+ "error" : 1,
+ "meta" : {
+ "_dd.profiling.ctx" : "test",
+ "_dd.tracer_host" : ${content_meta__dd_tracer_host},
+ "component" : "karate",
+ "dummy_ci_tag" : "dummy_ci_tag_value",
+ "env" : "none",
+ "error.message" : ${content_meta_error_message},
+ "error.stack" : ${content_meta_error_stack_2},
+ "error.type" : "java.lang.AssertionError",
+ "language" : "jvm",
+ "library_version" : ${content_meta_library_version},
+ "runtime-id" : ${content_meta_runtime_id},
+ "span.kind" : "test",
+ "test.failure_suppressed" : "true",
+ "test.framework" : "karate",
+ "test.framework_version" : ${content_meta_test_framework_version},
+ "test.module" : "karate-2.0",
+ "test.name" : "second scenario",
+ "test.status" : "fail",
+ "test.suite" : "[org/example/test_failed] test failed",
+ "test.type" : "test",
+ "test_session.name" : "session-name"
+ },
+ "metrics" : {
+ "_dd.host.vcpu_count" : ${content_metrics__dd_host_vcpu_count_3},
+ "_dd.profiling.enabled" : 0,
+ "_dd.trace_span_attribute_schema" : 0,
+ "process_id" : ${content_metrics_process_id}
+ },
+ "name" : "karate.test",
+ "parent_id" : ${content_parent_id_7},
+ "resource" : "[org/example/test_failed] test failed.second scenario",
+ "service" : "worker.org.gradle.process.internal.worker.gradleworkermain",
+ "span_id" : ${content_parent_id_2},
+ "start" : ${content_start_9},
+ "test_module_id" : ${content_test_module_id},
+ "test_session_id" : ${content_test_session_id},
+ "test_suite_id" : ${content_test_suite_id},
+ "trace_id" : ${content_trace_id_2}
+ },
+ "type" : "test",
+ "version" : 2
+}, {
+ "content" : {
+ "duration" : ${content_duration_10},
+ "error" : 1,
+ "meta" : {
+ "_dd.profiling.ctx" : "test",
+ "_dd.tracer_host" : ${content_meta__dd_tracer_host},
+ "component" : "karate",
+ "dummy_ci_tag" : "dummy_ci_tag_value",
+ "env" : "none",
+ "error.message" : ${content_meta_error_message},
+ "error.stack" : ${content_meta_error_stack_3},
+ "error.type" : "java.lang.AssertionError",
+ "language" : "jvm",
+ "library_version" : ${content_meta_library_version},
+ "runtime-id" : ${content_meta_runtime_id},
+ "span.kind" : "test",
+ "test.failure_suppressed" : "true",
+ "test.framework" : "karate",
+ "test.framework_version" : ${content_meta_test_framework_version},
+ "test.is_retry" : "true",
+ "test.module" : "karate-2.0",
+ "test.name" : "second scenario",
+ "test.retry_reason" : "auto_test_retry",
+ "test.status" : "fail",
+ "test.suite" : "[org/example/test_failed] test failed",
+ "test.type" : "test",
+ "test_session.name" : "session-name"
+ },
+ "metrics" : {
+ "_dd.host.vcpu_count" : ${content_metrics__dd_host_vcpu_count_4},
+ "_dd.profiling.enabled" : 0,
+ "_dd.trace_span_attribute_schema" : 0,
+ "process_id" : ${content_metrics_process_id}
+ },
+ "name" : "karate.test",
+ "parent_id" : ${content_parent_id_7},
+ "resource" : "[org/example/test_failed] test failed.second scenario",
+ "service" : "worker.org.gradle.process.internal.worker.gradleworkermain",
+ "span_id" : ${content_parent_id_3},
+ "start" : ${content_start_10},
+ "test_module_id" : ${content_test_module_id},
+ "test_session_id" : ${content_test_session_id},
+ "test_suite_id" : ${content_test_suite_id},
+ "trace_id" : ${content_trace_id_3}
+ },
+ "type" : "test",
+ "version" : 2
+}, {
+ "content" : {
+ "duration" : ${content_duration_11},
+ "error" : 1,
+ "meta" : {
+ "_dd.profiling.ctx" : "test",
+ "_dd.tracer_host" : ${content_meta__dd_tracer_host},
+ "component" : "karate",
+ "dummy_ci_tag" : "dummy_ci_tag_value",
+ "env" : "none",
+ "error.message" : ${content_meta_error_message},
+ "error.stack" : ${content_meta_error_stack_4},
+ "error.type" : "java.lang.AssertionError",
+ "language" : "jvm",
+ "library_version" : ${content_meta_library_version},
+ "runtime-id" : ${content_meta_runtime_id},
+ "span.kind" : "test",
+ "test.failure_suppressed" : "true",
+ "test.framework" : "karate",
+ "test.framework_version" : ${content_meta_test_framework_version},
+ "test.is_retry" : "true",
+ "test.module" : "karate-2.0",
+ "test.name" : "second scenario",
+ "test.retry_reason" : "auto_test_retry",
+ "test.status" : "fail",
+ "test.suite" : "[org/example/test_failed] test failed",
+ "test.type" : "test",
+ "test_session.name" : "session-name"
+ },
+ "metrics" : {
+ "_dd.host.vcpu_count" : ${content_metrics__dd_host_vcpu_count_5},
+ "_dd.profiling.enabled" : 0,
+ "_dd.trace_span_attribute_schema" : 0,
+ "process_id" : ${content_metrics_process_id}
+ },
+ "name" : "karate.test",
+ "parent_id" : ${content_parent_id_7},
+ "resource" : "[org/example/test_failed] test failed.second scenario",
+ "service" : "worker.org.gradle.process.internal.worker.gradleworkermain",
+ "span_id" : ${content_parent_id_4},
+ "start" : ${content_start_11},
+ "test_module_id" : ${content_test_module_id},
+ "test_session_id" : ${content_test_session_id},
+ "test_suite_id" : ${content_test_suite_id},
+ "trace_id" : ${content_trace_id_4}
+ },
+ "type" : "test",
+ "version" : 2
+}, {
+ "content" : {
+ "duration" : ${content_duration_12},
+ "error" : 1,
+ "meta" : {
+ "_dd.profiling.ctx" : "test",
+ "_dd.tracer_host" : ${content_meta__dd_tracer_host},
+ "component" : "karate",
+ "dummy_ci_tag" : "dummy_ci_tag_value",
+ "env" : "none",
+ "error.message" : ${content_meta_error_message},
+ "error.stack" : ${content_meta_error_stack_5},
+ "error.type" : "java.lang.AssertionError",
+ "language" : "jvm",
+ "library_version" : ${content_meta_library_version},
+ "runtime-id" : ${content_meta_runtime_id},
+ "span.kind" : "test",
+ "test.failure_suppressed" : "true",
+ "test.framework" : "karate",
+ "test.framework_version" : ${content_meta_test_framework_version},
+ "test.is_retry" : "true",
+ "test.module" : "karate-2.0",
+ "test.name" : "second scenario",
+ "test.retry_reason" : "auto_test_retry",
+ "test.status" : "fail",
+ "test.suite" : "[org/example/test_failed] test failed",
+ "test.type" : "test",
+ "test_session.name" : "session-name"
+ },
+ "metrics" : {
+ "_dd.host.vcpu_count" : ${content_metrics__dd_host_vcpu_count_6},
+ "_dd.profiling.enabled" : 0,
+ "_dd.trace_span_attribute_schema" : 0,
+ "process_id" : ${content_metrics_process_id}
+ },
+ "name" : "karate.test",
+ "parent_id" : ${content_parent_id_7},
+ "resource" : "[org/example/test_failed] test failed.second scenario",
+ "service" : "worker.org.gradle.process.internal.worker.gradleworkermain",
+ "span_id" : ${content_parent_id_5},
+ "start" : ${content_start_12},
+ "test_module_id" : ${content_test_module_id},
+ "test_session_id" : ${content_test_session_id},
+ "test_suite_id" : ${content_test_suite_id},
+ "trace_id" : ${content_trace_id_5}
+ },
+ "type" : "test",
+ "version" : 2
+}, {
+ "content" : {
+ "duration" : ${content_duration_13},
+ "error" : 1,
+ "meta" : {
+ "_dd.profiling.ctx" : "test",
+ "_dd.tracer_host" : ${content_meta__dd_tracer_host},
+ "component" : "karate",
+ "dummy_ci_tag" : "dummy_ci_tag_value",
+ "env" : "none",
+ "error.message" : ${content_meta_error_message},
+ "error.stack" : ${content_meta_error_stack_6},
+ "error.type" : "java.lang.AssertionError",
+ "language" : "jvm",
+ "library_version" : ${content_meta_library_version},
+ "runtime-id" : ${content_meta_runtime_id},
+ "span.kind" : "test",
+ "test.final_status" : "fail",
+ "test.framework" : "karate",
+ "test.framework_version" : ${content_meta_test_framework_version},
+ "test.has_failed_all_retries" : "true",
+ "test.is_retry" : "true",
+ "test.module" : "karate-2.0",
+ "test.name" : "second scenario",
+ "test.retry_reason" : "auto_test_retry",
+ "test.status" : "fail",
+ "test.suite" : "[org/example/test_failed] test failed",
+ "test.type" : "test",
+ "test_session.name" : "session-name"
+ },
+ "metrics" : {
+ "_dd.host.vcpu_count" : ${content_metrics__dd_host_vcpu_count_7},
+ "_dd.profiling.enabled" : 0,
+ "_dd.trace_span_attribute_schema" : 0,
+ "process_id" : ${content_metrics_process_id}
+ },
+ "name" : "karate.test",
+ "parent_id" : ${content_parent_id_7},
+ "resource" : "[org/example/test_failed] test failed.second scenario",
+ "service" : "worker.org.gradle.process.internal.worker.gradleworkermain",
+ "span_id" : ${content_parent_id_6},
+ "start" : ${content_start_13},
+ "test_module_id" : ${content_test_module_id},
+ "test_session_id" : ${content_test_session_id},
+ "test_suite_id" : ${content_test_suite_id},
+ "trace_id" : ${content_trace_id_6}
+ },
+ "type" : "test",
+ "version" : 2
+}, {
+ "content" : {
+ "duration" : ${content_duration_14},
+ "error" : 0,
+ "meta" : {
+ "_dd.p.tid" : ${content_meta__dd_p_tid_2},
+ "_dd.profiling.ctx" : "test",
+ "_dd.tracer_host" : ${content_meta__dd_tracer_host},
+ "component" : "karate",
+ "dummy_ci_tag" : "dummy_ci_tag_value",
+ "env" : "none",
+ "language" : "jvm",
+ "library_version" : ${content_meta_library_version},
+ "runtime-id" : ${content_meta_runtime_id},
+ "span.kind" : "test_session_end",
+ "test.command" : "karate-2.0",
+ "test.framework" : "karate",
+ "test.framework_version" : ${content_meta_test_framework_version},
+ "test.status" : "fail",
+ "test.type" : "test",
+ "test_session.name" : "session-name"
+ },
+ "metrics" : {
+ "_dd.host.vcpu_count" : ${content_metrics__dd_host_vcpu_count_8},
+ "_dd.profiling.enabled" : 0,
+ "_dd.trace_span_attribute_schema" : 0,
+ "process_id" : ${content_metrics_process_id}
+ },
+ "name" : "karate.test_session",
+ "resource" : "karate-2.0",
+ "service" : "worker.org.gradle.process.internal.worker.gradleworkermain",
+ "start" : ${content_start_14},
+ "test_session_id" : ${content_test_session_id}
+ },
+ "type" : "test_session_end",
+ "version" : 1
+}, {
+ "content" : {
+ "duration" : ${content_duration_15},
+ "error" : 0,
+ "meta" : {
+ "_dd.p.tid" : ${content_meta__dd_p_tid_3},
+ "component" : "karate",
+ "dummy_ci_tag" : "dummy_ci_tag_value",
+ "env" : "none",
+ "library_version" : ${content_meta_library_version},
+ "span.kind" : "test_module_end",
+ "test.framework" : "karate",
+ "test.framework_version" : ${content_meta_test_framework_version},
+ "test.module" : "karate-2.0",
+ "test.status" : "fail",
+ "test.type" : "test",
+ "test_session.name" : "session-name"
+ },
+ "metrics" : {
+ "_dd.host.vcpu_count" : ${content_metrics__dd_host_vcpu_count_9}
+ },
+ "name" : "karate.test_module",
+ "resource" : "karate-2.0",
+ "service" : "worker.org.gradle.process.internal.worker.gradleworkermain",
+ "start" : ${content_start_15},
+ "test_module_id" : ${content_test_module_id},
+ "test_session_id" : ${content_test_session_id}
+ },
+ "type" : "test_module_end",
+ "version" : 1
+} ]
\ No newline at end of file
diff --git a/dd-java-agent/instrumentation/karate/karate-2.0/src/test/resources/test-retry-parameterized/coverages.ftl b/dd-java-agent/instrumentation/karate/karate-2.0/src/test/resources/test-retry-parameterized/coverages.ftl
new file mode 100644
index 00000000000..8878e547a79
--- /dev/null
+++ b/dd-java-agent/instrumentation/karate/karate-2.0/src/test/resources/test-retry-parameterized/coverages.ftl
@@ -0,0 +1 @@
+[ ]
\ No newline at end of file
diff --git a/dd-java-agent/instrumentation/karate/karate-2.0/src/test/resources/test-retry-parameterized/events.ftl b/dd-java-agent/instrumentation/karate/karate-2.0/src/test/resources/test-retry-parameterized/events.ftl
new file mode 100644
index 00000000000..ed370dbb34b
--- /dev/null
+++ b/dd-java-agent/instrumentation/karate/karate-2.0/src/test/resources/test-retry-parameterized/events.ftl
@@ -0,0 +1,822 @@
+[ {
+ "content" : {
+ "duration" : ${content_duration},
+ "error" : 0,
+ "meta" : {
+ "component" : "karate",
+ "env" : "none",
+ "library_version" : ${content_meta_library_version},
+ "step.name" : "Given p = 'a'"
+ },
+ "metrics" : {
+ "step.endLine" : 6,
+ "step.startLine" : 6
+ },
+ "name" : "karate.step",
+ "parent_id" : ${content_parent_id},
+ "resource" : "Given p = 'a'",
+ "service" : "worker.org.gradle.process.internal.worker.gradleworkermain",
+ "span_id" : ${content_span_id},
+ "start" : ${content_start},
+ "trace_id" : ${content_trace_id}
+ },
+ "type" : "span",
+ "version" : 1
+}, {
+ "content" : {
+ "duration" : ${content_duration_2},
+ "error" : 0,
+ "meta" : {
+ "component" : "karate",
+ "env" : "none",
+ "library_version" : ${content_meta_library_version},
+ "step.name" : "Given p = 'a'"
+ },
+ "metrics" : {
+ "step.endLine" : 6,
+ "step.startLine" : 6
+ },
+ "name" : "karate.step",
+ "parent_id" : ${content_parent_id_2},
+ "resource" : "Given p = 'a'",
+ "service" : "worker.org.gradle.process.internal.worker.gradleworkermain",
+ "span_id" : ${content_span_id_2},
+ "start" : ${content_start_2},
+ "trace_id" : ${content_trace_id_2}
+ },
+ "type" : "span",
+ "version" : 1
+}, {
+ "content" : {
+ "duration" : ${content_duration_3},
+ "error" : 0,
+ "meta" : {
+ "component" : "karate",
+ "env" : "none",
+ "library_version" : ${content_meta_library_version},
+ "step.name" : "Given p = 'a'"
+ },
+ "metrics" : {
+ "step.endLine" : 6,
+ "step.startLine" : 6
+ },
+ "name" : "karate.step",
+ "parent_id" : ${content_parent_id_3},
+ "resource" : "Given p = 'a'",
+ "service" : "worker.org.gradle.process.internal.worker.gradleworkermain",
+ "span_id" : ${content_span_id_3},
+ "start" : ${content_start_3},
+ "trace_id" : ${content_trace_id_3}
+ },
+ "type" : "span",
+ "version" : 1
+}, {
+ "content" : {
+ "duration" : ${content_duration_4},
+ "error" : 0,
+ "meta" : {
+ "component" : "karate",
+ "env" : "none",
+ "library_version" : ${content_meta_library_version},
+ "step.name" : "Given p = 'a'"
+ },
+ "metrics" : {
+ "step.endLine" : 6,
+ "step.startLine" : 6
+ },
+ "name" : "karate.step",
+ "parent_id" : ${content_parent_id_4},
+ "resource" : "Given p = 'a'",
+ "service" : "worker.org.gradle.process.internal.worker.gradleworkermain",
+ "span_id" : ${content_span_id_4},
+ "start" : ${content_start_4},
+ "trace_id" : ${content_trace_id_4}
+ },
+ "type" : "span",
+ "version" : 1
+}, {
+ "content" : {
+ "duration" : ${content_duration_5},
+ "error" : 0,
+ "meta" : {
+ "component" : "karate",
+ "env" : "none",
+ "library_version" : ${content_meta_library_version},
+ "step.name" : "Given p = 'a'"
+ },
+ "metrics" : {
+ "step.endLine" : 6,
+ "step.startLine" : 6
+ },
+ "name" : "karate.step",
+ "parent_id" : ${content_parent_id_5},
+ "resource" : "Given p = 'a'",
+ "service" : "worker.org.gradle.process.internal.worker.gradleworkermain",
+ "span_id" : ${content_span_id_5},
+ "start" : ${content_start_5},
+ "trace_id" : ${content_trace_id_5}
+ },
+ "type" : "span",
+ "version" : 1
+}, {
+ "content" : {
+ "duration" : ${content_duration_6},
+ "error" : 0,
+ "meta" : {
+ "component" : "karate",
+ "env" : "none",
+ "library_version" : ${content_meta_library_version},
+ "step.name" : "Given p = 'b'"
+ },
+ "metrics" : {
+ "step.endLine" : 6,
+ "step.startLine" : 6
+ },
+ "name" : "karate.step",
+ "parent_id" : ${content_parent_id_6},
+ "resource" : "Given p = 'b'",
+ "service" : "worker.org.gradle.process.internal.worker.gradleworkermain",
+ "span_id" : ${content_span_id_6},
+ "start" : ${content_start_6},
+ "trace_id" : ${content_trace_id_6}
+ },
+ "type" : "span",
+ "version" : 1
+}, {
+ "content" : {
+ "duration" : ${content_duration_7},
+ "error" : 0,
+ "meta" : {
+ "component" : "karate",
+ "env" : "none",
+ "library_version" : ${content_meta_library_version},
+ "step.name" : "Then response == value"
+ },
+ "metrics" : {
+ "step.endLine" : 8,
+ "step.startLine" : 8
+ },
+ "name" : "karate.step",
+ "parent_id" : ${content_parent_id},
+ "resource" : "Then response == value",
+ "service" : "worker.org.gradle.process.internal.worker.gradleworkermain",
+ "span_id" : ${content_span_id_7},
+ "start" : ${content_start_7},
+ "trace_id" : ${content_trace_id}
+ },
+ "type" : "span",
+ "version" : 1
+}, {
+ "content" : {
+ "duration" : ${content_duration_8},
+ "error" : 0,
+ "meta" : {
+ "component" : "karate",
+ "env" : "none",
+ "library_version" : ${content_meta_library_version},
+ "step.name" : "Then response == value"
+ },
+ "metrics" : {
+ "step.endLine" : 8,
+ "step.startLine" : 8
+ },
+ "name" : "karate.step",
+ "parent_id" : ${content_parent_id_2},
+ "resource" : "Then response == value",
+ "service" : "worker.org.gradle.process.internal.worker.gradleworkermain",
+ "span_id" : ${content_span_id_8},
+ "start" : ${content_start_8},
+ "trace_id" : ${content_trace_id_2}
+ },
+ "type" : "span",
+ "version" : 1
+}, {
+ "content" : {
+ "duration" : ${content_duration_9},
+ "error" : 0,
+ "meta" : {
+ "component" : "karate",
+ "env" : "none",
+ "library_version" : ${content_meta_library_version},
+ "step.name" : "Then response == value"
+ },
+ "metrics" : {
+ "step.endLine" : 8,
+ "step.startLine" : 8
+ },
+ "name" : "karate.step",
+ "parent_id" : ${content_parent_id_3},
+ "resource" : "Then response == value",
+ "service" : "worker.org.gradle.process.internal.worker.gradleworkermain",
+ "span_id" : ${content_span_id_9},
+ "start" : ${content_start_9},
+ "trace_id" : ${content_trace_id_3}
+ },
+ "type" : "span",
+ "version" : 1
+}, {
+ "content" : {
+ "duration" : ${content_duration_10},
+ "error" : 0,
+ "meta" : {
+ "component" : "karate",
+ "env" : "none",
+ "library_version" : ${content_meta_library_version},
+ "step.name" : "Then response == value"
+ },
+ "metrics" : {
+ "step.endLine" : 8,
+ "step.startLine" : 8
+ },
+ "name" : "karate.step",
+ "parent_id" : ${content_parent_id_4},
+ "resource" : "Then response == value",
+ "service" : "worker.org.gradle.process.internal.worker.gradleworkermain",
+ "span_id" : ${content_span_id_10},
+ "start" : ${content_start_10},
+ "trace_id" : ${content_trace_id_4}
+ },
+ "type" : "span",
+ "version" : 1
+}, {
+ "content" : {
+ "duration" : ${content_duration_11},
+ "error" : 0,
+ "meta" : {
+ "component" : "karate",
+ "env" : "none",
+ "library_version" : ${content_meta_library_version},
+ "step.name" : "Then response == value"
+ },
+ "metrics" : {
+ "step.endLine" : 8,
+ "step.startLine" : 8
+ },
+ "name" : "karate.step",
+ "parent_id" : ${content_parent_id_5},
+ "resource" : "Then response == value",
+ "service" : "worker.org.gradle.process.internal.worker.gradleworkermain",
+ "span_id" : ${content_span_id_11},
+ "start" : ${content_start_11},
+ "trace_id" : ${content_trace_id_5}
+ },
+ "type" : "span",
+ "version" : 1
+}, {
+ "content" : {
+ "duration" : ${content_duration_12},
+ "error" : 0,
+ "meta" : {
+ "component" : "karate",
+ "env" : "none",
+ "library_version" : ${content_meta_library_version},
+ "step.name" : "Then response == value"
+ },
+ "metrics" : {
+ "step.endLine" : 8,
+ "step.startLine" : 8
+ },
+ "name" : "karate.step",
+ "parent_id" : ${content_parent_id_6},
+ "resource" : "Then response == value",
+ "service" : "worker.org.gradle.process.internal.worker.gradleworkermain",
+ "span_id" : ${content_span_id_12},
+ "start" : ${content_start_12},
+ "trace_id" : ${content_trace_id_6}
+ },
+ "type" : "span",
+ "version" : 1
+}, {
+ "content" : {
+ "duration" : ${content_duration_13},
+ "error" : 0,
+ "meta" : {
+ "component" : "karate",
+ "env" : "none",
+ "library_version" : ${content_meta_library_version},
+ "step.name" : "When response = p + p"
+ },
+ "metrics" : {
+ "step.endLine" : 7,
+ "step.startLine" : 7
+ },
+ "name" : "karate.step",
+ "parent_id" : ${content_parent_id},
+ "resource" : "When response = p + p",
+ "service" : "worker.org.gradle.process.internal.worker.gradleworkermain",
+ "span_id" : ${content_span_id_13},
+ "start" : ${content_start_13},
+ "trace_id" : ${content_trace_id}
+ },
+ "type" : "span",
+ "version" : 1
+}, {
+ "content" : {
+ "duration" : ${content_duration_14},
+ "error" : 0,
+ "meta" : {
+ "component" : "karate",
+ "env" : "none",
+ "library_version" : ${content_meta_library_version},
+ "step.name" : "When response = p + p"
+ },
+ "metrics" : {
+ "step.endLine" : 7,
+ "step.startLine" : 7
+ },
+ "name" : "karate.step",
+ "parent_id" : ${content_parent_id_2},
+ "resource" : "When response = p + p",
+ "service" : "worker.org.gradle.process.internal.worker.gradleworkermain",
+ "span_id" : ${content_span_id_14},
+ "start" : ${content_start_14},
+ "trace_id" : ${content_trace_id_2}
+ },
+ "type" : "span",
+ "version" : 1
+}, {
+ "content" : {
+ "duration" : ${content_duration_15},
+ "error" : 0,
+ "meta" : {
+ "component" : "karate",
+ "env" : "none",
+ "library_version" : ${content_meta_library_version},
+ "step.name" : "When response = p + p"
+ },
+ "metrics" : {
+ "step.endLine" : 7,
+ "step.startLine" : 7
+ },
+ "name" : "karate.step",
+ "parent_id" : ${content_parent_id_3},
+ "resource" : "When response = p + p",
+ "service" : "worker.org.gradle.process.internal.worker.gradleworkermain",
+ "span_id" : ${content_span_id_15},
+ "start" : ${content_start_15},
+ "trace_id" : ${content_trace_id_3}
+ },
+ "type" : "span",
+ "version" : 1
+}, {
+ "content" : {
+ "duration" : ${content_duration_16},
+ "error" : 0,
+ "meta" : {
+ "component" : "karate",
+ "env" : "none",
+ "library_version" : ${content_meta_library_version},
+ "step.name" : "When response = p + p"
+ },
+ "metrics" : {
+ "step.endLine" : 7,
+ "step.startLine" : 7
+ },
+ "name" : "karate.step",
+ "parent_id" : ${content_parent_id_4},
+ "resource" : "When response = p + p",
+ "service" : "worker.org.gradle.process.internal.worker.gradleworkermain",
+ "span_id" : ${content_span_id_16},
+ "start" : ${content_start_16},
+ "trace_id" : ${content_trace_id_4}
+ },
+ "type" : "span",
+ "version" : 1
+}, {
+ "content" : {
+ "duration" : ${content_duration_17},
+ "error" : 0,
+ "meta" : {
+ "component" : "karate",
+ "env" : "none",
+ "library_version" : ${content_meta_library_version},
+ "step.name" : "When response = p + p"
+ },
+ "metrics" : {
+ "step.endLine" : 7,
+ "step.startLine" : 7
+ },
+ "name" : "karate.step",
+ "parent_id" : ${content_parent_id_5},
+ "resource" : "When response = p + p",
+ "service" : "worker.org.gradle.process.internal.worker.gradleworkermain",
+ "span_id" : ${content_span_id_17},
+ "start" : ${content_start_17},
+ "trace_id" : ${content_trace_id_5}
+ },
+ "type" : "span",
+ "version" : 1
+}, {
+ "content" : {
+ "duration" : ${content_duration_18},
+ "error" : 0,
+ "meta" : {
+ "component" : "karate",
+ "env" : "none",
+ "library_version" : ${content_meta_library_version},
+ "step.name" : "When response = p + p"
+ },
+ "metrics" : {
+ "step.endLine" : 7,
+ "step.startLine" : 7
+ },
+ "name" : "karate.step",
+ "parent_id" : ${content_parent_id_6},
+ "resource" : "When response = p + p",
+ "service" : "worker.org.gradle.process.internal.worker.gradleworkermain",
+ "span_id" : ${content_span_id_18},
+ "start" : ${content_start_18},
+ "trace_id" : ${content_trace_id_6}
+ },
+ "type" : "span",
+ "version" : 1
+}, {
+ "content" : {
+ "duration" : ${content_duration_19},
+ "error" : 1,
+ "meta" : {
+ "_dd.p.tid" : ${content_meta__dd_p_tid},
+ "component" : "karate",
+ "dummy_ci_tag" : "dummy_ci_tag_value",
+ "env" : "none",
+ "error.message" : ${content_meta_error_message},
+ "error.stack" : ${content_meta_error_stack},
+ "error.type" : "java.lang.AssertionError",
+ "library_version" : ${content_meta_library_version},
+ "span.kind" : "test_suite_end",
+ "test.framework" : "karate",
+ "test.framework_version" : ${content_meta_test_framework_version},
+ "test.module" : "karate-2.0",
+ "test.status" : "fail",
+ "test.suite" : "[org/example/test_failed_parameterized] test parameterized",
+ "test.type" : "test",
+ "test_session.name" : "session-name"
+ },
+ "metrics" : {
+ "_dd.host.vcpu_count" : ${content_metrics__dd_host_vcpu_count}
+ },
+ "name" : "karate.test_suite",
+ "resource" : "[org/example/test_failed_parameterized] test parameterized",
+ "service" : "worker.org.gradle.process.internal.worker.gradleworkermain",
+ "start" : ${content_start_19},
+ "test_module_id" : ${content_test_module_id},
+ "test_session_id" : ${content_test_session_id},
+ "test_suite_id" : ${content_test_suite_id}
+ },
+ "type" : "test_suite_end",
+ "version" : 1
+}, {
+ "content" : {
+ "duration" : ${content_duration_20},
+ "error" : 1,
+ "meta" : {
+ "_dd.profiling.ctx" : "test",
+ "_dd.tracer_host" : ${content_meta__dd_tracer_host},
+ "component" : "karate",
+ "dummy_ci_tag" : "dummy_ci_tag_value",
+ "env" : "none",
+ "error.message" : ${content_meta_error_message},
+ "error.stack" : ${content_meta_error_stack_2},
+ "error.type" : "java.lang.AssertionError",
+ "language" : "jvm",
+ "library_version" : ${content_meta_library_version},
+ "runtime-id" : ${content_meta_runtime_id},
+ "span.kind" : "test",
+ "test.failure_suppressed" : "true",
+ "test.framework" : "karate",
+ "test.framework_version" : ${content_meta_test_framework_version},
+ "test.module" : "karate-2.0",
+ "test.name" : "first scenario as an outline",
+ "test.parameters" : "{\"param\":\"'a'\",\"value\":\"aaa\"}",
+ "test.status" : "fail",
+ "test.suite" : "[org/example/test_failed_parameterized] test parameterized",
+ "test.type" : "test",
+ "test_session.name" : "session-name"
+ },
+ "metrics" : {
+ "_dd.host.vcpu_count" : ${content_metrics__dd_host_vcpu_count_2},
+ "_dd.profiling.enabled" : 0,
+ "_dd.trace_span_attribute_schema" : 0,
+ "process_id" : ${content_metrics_process_id}
+ },
+ "name" : "karate.test",
+ "parent_id" : ${content_parent_id_7},
+ "resource" : "[org/example/test_failed_parameterized] test parameterized.first scenario as an outline",
+ "service" : "worker.org.gradle.process.internal.worker.gradleworkermain",
+ "span_id" : ${content_parent_id},
+ "start" : ${content_start_20},
+ "test_module_id" : ${content_test_module_id},
+ "test_session_id" : ${content_test_session_id},
+ "test_suite_id" : ${content_test_suite_id},
+ "trace_id" : ${content_trace_id}
+ },
+ "type" : "test",
+ "version" : 2
+}, {
+ "content" : {
+ "duration" : ${content_duration_21},
+ "error" : 1,
+ "meta" : {
+ "_dd.profiling.ctx" : "test",
+ "_dd.tracer_host" : ${content_meta__dd_tracer_host},
+ "component" : "karate",
+ "dummy_ci_tag" : "dummy_ci_tag_value",
+ "env" : "none",
+ "error.message" : ${content_meta_error_message},
+ "error.stack" : ${content_meta_error_stack_3},
+ "error.type" : "java.lang.AssertionError",
+ "language" : "jvm",
+ "library_version" : ${content_meta_library_version},
+ "runtime-id" : ${content_meta_runtime_id},
+ "span.kind" : "test",
+ "test.failure_suppressed" : "true",
+ "test.framework" : "karate",
+ "test.framework_version" : ${content_meta_test_framework_version},
+ "test.is_retry" : "true",
+ "test.module" : "karate-2.0",
+ "test.name" : "first scenario as an outline",
+ "test.parameters" : "{\"param\":\"'a'\",\"value\":\"aaa\"}",
+ "test.retry_reason" : "auto_test_retry",
+ "test.status" : "fail",
+ "test.suite" : "[org/example/test_failed_parameterized] test parameterized",
+ "test.type" : "test",
+ "test_session.name" : "session-name"
+ },
+ "metrics" : {
+ "_dd.host.vcpu_count" : ${content_metrics__dd_host_vcpu_count_3},
+ "_dd.profiling.enabled" : 0,
+ "_dd.trace_span_attribute_schema" : 0,
+ "process_id" : ${content_metrics_process_id}
+ },
+ "name" : "karate.test",
+ "parent_id" : ${content_parent_id_7},
+ "resource" : "[org/example/test_failed_parameterized] test parameterized.first scenario as an outline",
+ "service" : "worker.org.gradle.process.internal.worker.gradleworkermain",
+ "span_id" : ${content_parent_id_2},
+ "start" : ${content_start_21},
+ "test_module_id" : ${content_test_module_id},
+ "test_session_id" : ${content_test_session_id},
+ "test_suite_id" : ${content_test_suite_id},
+ "trace_id" : ${content_trace_id_2}
+ },
+ "type" : "test",
+ "version" : 2
+}, {
+ "content" : {
+ "duration" : ${content_duration_22},
+ "error" : 1,
+ "meta" : {
+ "_dd.profiling.ctx" : "test",
+ "_dd.tracer_host" : ${content_meta__dd_tracer_host},
+ "component" : "karate",
+ "dummy_ci_tag" : "dummy_ci_tag_value",
+ "env" : "none",
+ "error.message" : ${content_meta_error_message},
+ "error.stack" : ${content_meta_error_stack_4},
+ "error.type" : "java.lang.AssertionError",
+ "language" : "jvm",
+ "library_version" : ${content_meta_library_version},
+ "runtime-id" : ${content_meta_runtime_id},
+ "span.kind" : "test",
+ "test.failure_suppressed" : "true",
+ "test.framework" : "karate",
+ "test.framework_version" : ${content_meta_test_framework_version},
+ "test.is_retry" : "true",
+ "test.module" : "karate-2.0",
+ "test.name" : "first scenario as an outline",
+ "test.parameters" : "{\"param\":\"'a'\",\"value\":\"aaa\"}",
+ "test.retry_reason" : "auto_test_retry",
+ "test.status" : "fail",
+ "test.suite" : "[org/example/test_failed_parameterized] test parameterized",
+ "test.type" : "test",
+ "test_session.name" : "session-name"
+ },
+ "metrics" : {
+ "_dd.host.vcpu_count" : ${content_metrics__dd_host_vcpu_count_4},
+ "_dd.profiling.enabled" : 0,
+ "_dd.trace_span_attribute_schema" : 0,
+ "process_id" : ${content_metrics_process_id}
+ },
+ "name" : "karate.test",
+ "parent_id" : ${content_parent_id_7},
+ "resource" : "[org/example/test_failed_parameterized] test parameterized.first scenario as an outline",
+ "service" : "worker.org.gradle.process.internal.worker.gradleworkermain",
+ "span_id" : ${content_parent_id_3},
+ "start" : ${content_start_22},
+ "test_module_id" : ${content_test_module_id},
+ "test_session_id" : ${content_test_session_id},
+ "test_suite_id" : ${content_test_suite_id},
+ "trace_id" : ${content_trace_id_3}
+ },
+ "type" : "test",
+ "version" : 2
+}, {
+ "content" : {
+ "duration" : ${content_duration_23},
+ "error" : 1,
+ "meta" : {
+ "_dd.profiling.ctx" : "test",
+ "_dd.tracer_host" : ${content_meta__dd_tracer_host},
+ "component" : "karate",
+ "dummy_ci_tag" : "dummy_ci_tag_value",
+ "env" : "none",
+ "error.message" : ${content_meta_error_message},
+ "error.stack" : ${content_meta_error_stack_5},
+ "error.type" : "java.lang.AssertionError",
+ "language" : "jvm",
+ "library_version" : ${content_meta_library_version},
+ "runtime-id" : ${content_meta_runtime_id},
+ "span.kind" : "test",
+ "test.failure_suppressed" : "true",
+ "test.framework" : "karate",
+ "test.framework_version" : ${content_meta_test_framework_version},
+ "test.is_retry" : "true",
+ "test.module" : "karate-2.0",
+ "test.name" : "first scenario as an outline",
+ "test.parameters" : "{\"param\":\"'a'\",\"value\":\"aaa\"}",
+ "test.retry_reason" : "auto_test_retry",
+ "test.status" : "fail",
+ "test.suite" : "[org/example/test_failed_parameterized] test parameterized",
+ "test.type" : "test",
+ "test_session.name" : "session-name"
+ },
+ "metrics" : {
+ "_dd.host.vcpu_count" : ${content_metrics__dd_host_vcpu_count_5},
+ "_dd.profiling.enabled" : 0,
+ "_dd.trace_span_attribute_schema" : 0,
+ "process_id" : ${content_metrics_process_id}
+ },
+ "name" : "karate.test",
+ "parent_id" : ${content_parent_id_7},
+ "resource" : "[org/example/test_failed_parameterized] test parameterized.first scenario as an outline",
+ "service" : "worker.org.gradle.process.internal.worker.gradleworkermain",
+ "span_id" : ${content_parent_id_4},
+ "start" : ${content_start_23},
+ "test_module_id" : ${content_test_module_id},
+ "test_session_id" : ${content_test_session_id},
+ "test_suite_id" : ${content_test_suite_id},
+ "trace_id" : ${content_trace_id_4}
+ },
+ "type" : "test",
+ "version" : 2
+}, {
+ "content" : {
+ "duration" : ${content_duration_24},
+ "error" : 1,
+ "meta" : {
+ "_dd.profiling.ctx" : "test",
+ "_dd.tracer_host" : ${content_meta__dd_tracer_host},
+ "component" : "karate",
+ "dummy_ci_tag" : "dummy_ci_tag_value",
+ "env" : "none",
+ "error.message" : ${content_meta_error_message},
+ "error.stack" : ${content_meta_error_stack_6},
+ "error.type" : "java.lang.AssertionError",
+ "language" : "jvm",
+ "library_version" : ${content_meta_library_version},
+ "runtime-id" : ${content_meta_runtime_id},
+ "span.kind" : "test",
+ "test.final_status" : "fail",
+ "test.framework" : "karate",
+ "test.framework_version" : ${content_meta_test_framework_version},
+ "test.has_failed_all_retries" : "true",
+ "test.is_retry" : "true",
+ "test.module" : "karate-2.0",
+ "test.name" : "first scenario as an outline",
+ "test.parameters" : "{\"param\":\"'a'\",\"value\":\"aaa\"}",
+ "test.retry_reason" : "auto_test_retry",
+ "test.status" : "fail",
+ "test.suite" : "[org/example/test_failed_parameterized] test parameterized",
+ "test.type" : "test",
+ "test_session.name" : "session-name"
+ },
+ "metrics" : {
+ "_dd.host.vcpu_count" : ${content_metrics__dd_host_vcpu_count_6},
+ "_dd.profiling.enabled" : 0,
+ "_dd.trace_span_attribute_schema" : 0,
+ "process_id" : ${content_metrics_process_id}
+ },
+ "name" : "karate.test",
+ "parent_id" : ${content_parent_id_7},
+ "resource" : "[org/example/test_failed_parameterized] test parameterized.first scenario as an outline",
+ "service" : "worker.org.gradle.process.internal.worker.gradleworkermain",
+ "span_id" : ${content_parent_id_5},
+ "start" : ${content_start_24},
+ "test_module_id" : ${content_test_module_id},
+ "test_session_id" : ${content_test_session_id},
+ "test_suite_id" : ${content_test_suite_id},
+ "trace_id" : ${content_trace_id_5}
+ },
+ "type" : "test",
+ "version" : 2
+}, {
+ "content" : {
+ "duration" : ${content_duration_25},
+ "error" : 0,
+ "meta" : {
+ "_dd.profiling.ctx" : "test",
+ "_dd.tracer_host" : ${content_meta__dd_tracer_host},
+ "component" : "karate",
+ "dummy_ci_tag" : "dummy_ci_tag_value",
+ "env" : "none",
+ "language" : "jvm",
+ "library_version" : ${content_meta_library_version},
+ "runtime-id" : ${content_meta_runtime_id},
+ "span.kind" : "test",
+ "test.final_status" : "pass",
+ "test.framework" : "karate",
+ "test.framework_version" : ${content_meta_test_framework_version},
+ "test.module" : "karate-2.0",
+ "test.name" : "first scenario as an outline",
+ "test.parameters" : "{\"param\":\"'b'\",\"value\":\"bb\"}",
+ "test.status" : "pass",
+ "test.suite" : "[org/example/test_failed_parameterized] test parameterized",
+ "test.type" : "test",
+ "test_session.name" : "session-name"
+ },
+ "metrics" : {
+ "_dd.host.vcpu_count" : ${content_metrics__dd_host_vcpu_count_7},
+ "_dd.profiling.enabled" : 0,
+ "_dd.trace_span_attribute_schema" : 0,
+ "process_id" : ${content_metrics_process_id}
+ },
+ "name" : "karate.test",
+ "parent_id" : ${content_parent_id_7},
+ "resource" : "[org/example/test_failed_parameterized] test parameterized.first scenario as an outline",
+ "service" : "worker.org.gradle.process.internal.worker.gradleworkermain",
+ "span_id" : ${content_parent_id_6},
+ "start" : ${content_start_25},
+ "test_module_id" : ${content_test_module_id},
+ "test_session_id" : ${content_test_session_id},
+ "test_suite_id" : ${content_test_suite_id},
+ "trace_id" : ${content_trace_id_6}
+ },
+ "type" : "test",
+ "version" : 2
+}, {
+ "content" : {
+ "duration" : ${content_duration_26},
+ "error" : 0,
+ "meta" : {
+ "_dd.p.tid" : ${content_meta__dd_p_tid_2},
+ "_dd.profiling.ctx" : "test",
+ "_dd.tracer_host" : ${content_meta__dd_tracer_host},
+ "component" : "karate",
+ "dummy_ci_tag" : "dummy_ci_tag_value",
+ "env" : "none",
+ "language" : "jvm",
+ "library_version" : ${content_meta_library_version},
+ "runtime-id" : ${content_meta_runtime_id},
+ "span.kind" : "test_session_end",
+ "test.command" : "karate-2.0",
+ "test.framework" : "karate",
+ "test.framework_version" : ${content_meta_test_framework_version},
+ "test.status" : "fail",
+ "test.type" : "test",
+ "test_session.name" : "session-name"
+ },
+ "metrics" : {
+ "_dd.host.vcpu_count" : ${content_metrics__dd_host_vcpu_count_8},
+ "_dd.profiling.enabled" : 0,
+ "_dd.trace_span_attribute_schema" : 0,
+ "process_id" : ${content_metrics_process_id}
+ },
+ "name" : "karate.test_session",
+ "resource" : "karate-2.0",
+ "service" : "worker.org.gradle.process.internal.worker.gradleworkermain",
+ "start" : ${content_start_26},
+ "test_session_id" : ${content_test_session_id}
+ },
+ "type" : "test_session_end",
+ "version" : 1
+}, {
+ "content" : {
+ "duration" : ${content_duration_27},
+ "error" : 0,
+ "meta" : {
+ "_dd.p.tid" : ${content_meta__dd_p_tid_3},
+ "component" : "karate",
+ "dummy_ci_tag" : "dummy_ci_tag_value",
+ "env" : "none",
+ "library_version" : ${content_meta_library_version},
+ "span.kind" : "test_module_end",
+ "test.framework" : "karate",
+ "test.framework_version" : ${content_meta_test_framework_version},
+ "test.module" : "karate-2.0",
+ "test.status" : "fail",
+ "test.type" : "test",
+ "test_session.name" : "session-name"
+ },
+ "metrics" : {
+ "_dd.host.vcpu_count" : ${content_metrics__dd_host_vcpu_count_9}
+ },
+ "name" : "karate.test_module",
+ "resource" : "karate-2.0",
+ "service" : "worker.org.gradle.process.internal.worker.gradleworkermain",
+ "start" : ${content_start_27},
+ "test_module_id" : ${content_test_module_id},
+ "test_session_id" : ${content_test_session_id}
+ },
+ "type" : "test_module_end",
+ "version" : 1
+} ]
\ No newline at end of file
diff --git a/dd-java-agent/instrumentation/karate/karate-2.0/src/test/resources/test-skipped-feature/coverages.ftl b/dd-java-agent/instrumentation/karate/karate-2.0/src/test/resources/test-skipped-feature/coverages.ftl
new file mode 100644
index 00000000000..8878e547a79
--- /dev/null
+++ b/dd-java-agent/instrumentation/karate/karate-2.0/src/test/resources/test-skipped-feature/coverages.ftl
@@ -0,0 +1 @@
+[ ]
\ No newline at end of file
diff --git a/dd-java-agent/instrumentation/karate/karate-2.0/src/test/resources/test-skipped-feature/events.ftl b/dd-java-agent/instrumentation/karate/karate-2.0/src/test/resources/test-skipped-feature/events.ftl
new file mode 100644
index 00000000000..c2acf214162
--- /dev/null
+++ b/dd-java-agent/instrumentation/karate/karate-2.0/src/test/resources/test-skipped-feature/events.ftl
@@ -0,0 +1,236 @@
+[ {
+ "content" : {
+ "duration" : ${content_duration},
+ "error" : 0,
+ "meta" : {
+ "component" : "karate",
+ "env" : "none",
+ "library_version" : ${content_meta_library_version},
+ "step.name" : "* 'first'"
+ },
+ "metrics" : {
+ "step.endLine" : 6,
+ "step.startLine" : 6
+ },
+ "name" : "karate.step",
+ "parent_id" : ${content_parent_id},
+ "resource" : "* 'first'",
+ "service" : "worker.org.gradle.process.internal.worker.gradleworkermain",
+ "span_id" : ${content_span_id},
+ "start" : ${content_start},
+ "trace_id" : ${content_trace_id}
+ },
+ "type" : "span",
+ "version" : 1
+}, {
+ "content" : {
+ "duration" : ${content_duration_2},
+ "error" : 0,
+ "meta" : {
+ "component" : "karate",
+ "env" : "none",
+ "library_version" : ${content_meta_library_version},
+ "step.name" : "* 'second'"
+ },
+ "metrics" : {
+ "step.endLine" : 9,
+ "step.startLine" : 9
+ },
+ "name" : "karate.step",
+ "parent_id" : ${content_parent_id_2},
+ "resource" : "* 'second'",
+ "service" : "worker.org.gradle.process.internal.worker.gradleworkermain",
+ "span_id" : ${content_span_id_2},
+ "start" : ${content_start_2},
+ "trace_id" : ${content_trace_id_2}
+ },
+ "type" : "span",
+ "version" : 1
+}, {
+ "content" : {
+ "duration" : ${content_duration_3},
+ "error" : 0,
+ "meta" : {
+ "_dd.p.tid" : ${content_meta__dd_p_tid},
+ "component" : "karate",
+ "dummy_ci_tag" : "dummy_ci_tag_value",
+ "env" : "none",
+ "library_version" : ${content_meta_library_version},
+ "span.kind" : "test_suite_end",
+ "test.framework" : "karate",
+ "test.framework_version" : ${content_meta_test_framework_version},
+ "test.module" : "karate-2.0",
+ "test.status" : "pass",
+ "test.suite" : "[org/example/test_succeed] test succeed",
+ "test.traits" : "{\"category\":[\"foo\"]}",
+ "test.type" : "test",
+ "test_session.name" : "session-name"
+ },
+ "metrics" : {
+ "_dd.host.vcpu_count" : ${content_metrics__dd_host_vcpu_count}
+ },
+ "name" : "karate.test_suite",
+ "resource" : "[org/example/test_succeed] test succeed",
+ "service" : "worker.org.gradle.process.internal.worker.gradleworkermain",
+ "start" : ${content_start_3},
+ "test_module_id" : ${content_test_module_id},
+ "test_session_id" : ${content_test_session_id},
+ "test_suite_id" : ${content_test_suite_id}
+ },
+ "type" : "test_suite_end",
+ "version" : 1
+}, {
+ "content" : {
+ "duration" : ${content_duration_4},
+ "error" : 0,
+ "meta" : {
+ "_dd.profiling.ctx" : "test",
+ "_dd.tracer_host" : ${content_meta__dd_tracer_host},
+ "component" : "karate",
+ "dummy_ci_tag" : "dummy_ci_tag_value",
+ "env" : "none",
+ "language" : "jvm",
+ "library_version" : ${content_meta_library_version},
+ "runtime-id" : ${content_meta_runtime_id},
+ "span.kind" : "test",
+ "test.final_status" : "pass",
+ "test.framework" : "karate",
+ "test.framework_version" : ${content_meta_test_framework_version},
+ "test.module" : "karate-2.0",
+ "test.name" : "first scenario",
+ "test.status" : "pass",
+ "test.suite" : "[org/example/test_succeed] test succeed",
+ "test.traits" : "{\"category\":[\"foo\",\"bar\"]}",
+ "test.type" : "test",
+ "test_session.name" : "session-name"
+ },
+ "metrics" : {
+ "_dd.host.vcpu_count" : ${content_metrics__dd_host_vcpu_count_2},
+ "_dd.profiling.enabled" : 0,
+ "_dd.trace_span_attribute_schema" : 0,
+ "process_id" : ${content_metrics_process_id}
+ },
+ "name" : "karate.test",
+ "parent_id" : ${content_parent_id_3},
+ "resource" : "[org/example/test_succeed] test succeed.first scenario",
+ "service" : "worker.org.gradle.process.internal.worker.gradleworkermain",
+ "span_id" : ${content_parent_id},
+ "start" : ${content_start_4},
+ "test_module_id" : ${content_test_module_id},
+ "test_session_id" : ${content_test_session_id},
+ "test_suite_id" : ${content_test_suite_id},
+ "trace_id" : ${content_trace_id}
+ },
+ "type" : "test",
+ "version" : 2
+}, {
+ "content" : {
+ "duration" : ${content_duration_5},
+ "error" : 0,
+ "meta" : {
+ "_dd.profiling.ctx" : "test",
+ "_dd.tracer_host" : ${content_meta__dd_tracer_host},
+ "component" : "karate",
+ "dummy_ci_tag" : "dummy_ci_tag_value",
+ "env" : "none",
+ "language" : "jvm",
+ "library_version" : ${content_meta_library_version},
+ "runtime-id" : ${content_meta_runtime_id},
+ "span.kind" : "test",
+ "test.final_status" : "pass",
+ "test.framework" : "karate",
+ "test.framework_version" : ${content_meta_test_framework_version},
+ "test.module" : "karate-2.0",
+ "test.name" : "second scenario",
+ "test.status" : "pass",
+ "test.suite" : "[org/example/test_succeed] test succeed",
+ "test.traits" : "{\"category\":[\"foo\"]}",
+ "test.type" : "test",
+ "test_session.name" : "session-name"
+ },
+ "metrics" : {
+ "_dd.host.vcpu_count" : ${content_metrics__dd_host_vcpu_count_3},
+ "_dd.profiling.enabled" : 0,
+ "_dd.trace_span_attribute_schema" : 0,
+ "process_id" : ${content_metrics_process_id}
+ },
+ "name" : "karate.test",
+ "parent_id" : ${content_parent_id_3},
+ "resource" : "[org/example/test_succeed] test succeed.second scenario",
+ "service" : "worker.org.gradle.process.internal.worker.gradleworkermain",
+ "span_id" : ${content_parent_id_2},
+ "start" : ${content_start_5},
+ "test_module_id" : ${content_test_module_id},
+ "test_session_id" : ${content_test_session_id},
+ "test_suite_id" : ${content_test_suite_id},
+ "trace_id" : ${content_trace_id_2}
+ },
+ "type" : "test",
+ "version" : 2
+}, {
+ "content" : {
+ "duration" : ${content_duration_6},
+ "error" : 0,
+ "meta" : {
+ "_dd.p.tid" : ${content_meta__dd_p_tid_2},
+ "_dd.profiling.ctx" : "test",
+ "_dd.tracer_host" : ${content_meta__dd_tracer_host},
+ "component" : "karate",
+ "dummy_ci_tag" : "dummy_ci_tag_value",
+ "env" : "none",
+ "language" : "jvm",
+ "library_version" : ${content_meta_library_version},
+ "runtime-id" : ${content_meta_runtime_id},
+ "span.kind" : "test_session_end",
+ "test.command" : "karate-2.0",
+ "test.framework" : "karate",
+ "test.framework_version" : ${content_meta_test_framework_version},
+ "test.status" : "pass",
+ "test.type" : "test",
+ "test_session.name" : "session-name"
+ },
+ "metrics" : {
+ "_dd.host.vcpu_count" : ${content_metrics__dd_host_vcpu_count_4},
+ "_dd.profiling.enabled" : 0,
+ "_dd.trace_span_attribute_schema" : 0,
+ "process_id" : ${content_metrics_process_id}
+ },
+ "name" : "karate.test_session",
+ "resource" : "karate-2.0",
+ "service" : "worker.org.gradle.process.internal.worker.gradleworkermain",
+ "start" : ${content_start_6},
+ "test_session_id" : ${content_test_session_id}
+ },
+ "type" : "test_session_end",
+ "version" : 1
+}, {
+ "content" : {
+ "duration" : ${content_duration_7},
+ "error" : 0,
+ "meta" : {
+ "_dd.p.tid" : ${content_meta__dd_p_tid_3},
+ "component" : "karate",
+ "dummy_ci_tag" : "dummy_ci_tag_value",
+ "env" : "none",
+ "library_version" : ${content_meta_library_version},
+ "span.kind" : "test_module_end",
+ "test.framework" : "karate",
+ "test.framework_version" : ${content_meta_test_framework_version},
+ "test.module" : "karate-2.0",
+ "test.status" : "pass",
+ "test.type" : "test",
+ "test_session.name" : "session-name"
+ },
+ "metrics" : {
+ "_dd.host.vcpu_count" : ${content_metrics__dd_host_vcpu_count_5}
+ },
+ "name" : "karate.test_module",
+ "resource" : "karate-2.0",
+ "service" : "worker.org.gradle.process.internal.worker.gradleworkermain",
+ "start" : ${content_start_7},
+ "test_module_id" : ${content_test_module_id},
+ "test_session_id" : ${content_test_session_id}
+ },
+ "type" : "test_module_end",
+ "version" : 1
+} ]
\ No newline at end of file
diff --git a/dd-java-agent/instrumentation/karate/karate-2.0/src/test/resources/test-succeed-parallel/coverages.ftl b/dd-java-agent/instrumentation/karate/karate-2.0/src/test/resources/test-succeed-parallel/coverages.ftl
new file mode 100644
index 00000000000..8878e547a79
--- /dev/null
+++ b/dd-java-agent/instrumentation/karate/karate-2.0/src/test/resources/test-succeed-parallel/coverages.ftl
@@ -0,0 +1 @@
+[ ]
\ No newline at end of file
diff --git a/dd-java-agent/instrumentation/karate/karate-2.0/src/test/resources/test-succeed-parallel/events.ftl b/dd-java-agent/instrumentation/karate/karate-2.0/src/test/resources/test-succeed-parallel/events.ftl
new file mode 100644
index 00000000000..c2acf214162
--- /dev/null
+++ b/dd-java-agent/instrumentation/karate/karate-2.0/src/test/resources/test-succeed-parallel/events.ftl
@@ -0,0 +1,236 @@
+[ {
+ "content" : {
+ "duration" : ${content_duration},
+ "error" : 0,
+ "meta" : {
+ "component" : "karate",
+ "env" : "none",
+ "library_version" : ${content_meta_library_version},
+ "step.name" : "* 'first'"
+ },
+ "metrics" : {
+ "step.endLine" : 6,
+ "step.startLine" : 6
+ },
+ "name" : "karate.step",
+ "parent_id" : ${content_parent_id},
+ "resource" : "* 'first'",
+ "service" : "worker.org.gradle.process.internal.worker.gradleworkermain",
+ "span_id" : ${content_span_id},
+ "start" : ${content_start},
+ "trace_id" : ${content_trace_id}
+ },
+ "type" : "span",
+ "version" : 1
+}, {
+ "content" : {
+ "duration" : ${content_duration_2},
+ "error" : 0,
+ "meta" : {
+ "component" : "karate",
+ "env" : "none",
+ "library_version" : ${content_meta_library_version},
+ "step.name" : "* 'second'"
+ },
+ "metrics" : {
+ "step.endLine" : 9,
+ "step.startLine" : 9
+ },
+ "name" : "karate.step",
+ "parent_id" : ${content_parent_id_2},
+ "resource" : "* 'second'",
+ "service" : "worker.org.gradle.process.internal.worker.gradleworkermain",
+ "span_id" : ${content_span_id_2},
+ "start" : ${content_start_2},
+ "trace_id" : ${content_trace_id_2}
+ },
+ "type" : "span",
+ "version" : 1
+}, {
+ "content" : {
+ "duration" : ${content_duration_3},
+ "error" : 0,
+ "meta" : {
+ "_dd.p.tid" : ${content_meta__dd_p_tid},
+ "component" : "karate",
+ "dummy_ci_tag" : "dummy_ci_tag_value",
+ "env" : "none",
+ "library_version" : ${content_meta_library_version},
+ "span.kind" : "test_suite_end",
+ "test.framework" : "karate",
+ "test.framework_version" : ${content_meta_test_framework_version},
+ "test.module" : "karate-2.0",
+ "test.status" : "pass",
+ "test.suite" : "[org/example/test_succeed] test succeed",
+ "test.traits" : "{\"category\":[\"foo\"]}",
+ "test.type" : "test",
+ "test_session.name" : "session-name"
+ },
+ "metrics" : {
+ "_dd.host.vcpu_count" : ${content_metrics__dd_host_vcpu_count}
+ },
+ "name" : "karate.test_suite",
+ "resource" : "[org/example/test_succeed] test succeed",
+ "service" : "worker.org.gradle.process.internal.worker.gradleworkermain",
+ "start" : ${content_start_3},
+ "test_module_id" : ${content_test_module_id},
+ "test_session_id" : ${content_test_session_id},
+ "test_suite_id" : ${content_test_suite_id}
+ },
+ "type" : "test_suite_end",
+ "version" : 1
+}, {
+ "content" : {
+ "duration" : ${content_duration_4},
+ "error" : 0,
+ "meta" : {
+ "_dd.profiling.ctx" : "test",
+ "_dd.tracer_host" : ${content_meta__dd_tracer_host},
+ "component" : "karate",
+ "dummy_ci_tag" : "dummy_ci_tag_value",
+ "env" : "none",
+ "language" : "jvm",
+ "library_version" : ${content_meta_library_version},
+ "runtime-id" : ${content_meta_runtime_id},
+ "span.kind" : "test",
+ "test.final_status" : "pass",
+ "test.framework" : "karate",
+ "test.framework_version" : ${content_meta_test_framework_version},
+ "test.module" : "karate-2.0",
+ "test.name" : "first scenario",
+ "test.status" : "pass",
+ "test.suite" : "[org/example/test_succeed] test succeed",
+ "test.traits" : "{\"category\":[\"foo\",\"bar\"]}",
+ "test.type" : "test",
+ "test_session.name" : "session-name"
+ },
+ "metrics" : {
+ "_dd.host.vcpu_count" : ${content_metrics__dd_host_vcpu_count_2},
+ "_dd.profiling.enabled" : 0,
+ "_dd.trace_span_attribute_schema" : 0,
+ "process_id" : ${content_metrics_process_id}
+ },
+ "name" : "karate.test",
+ "parent_id" : ${content_parent_id_3},
+ "resource" : "[org/example/test_succeed] test succeed.first scenario",
+ "service" : "worker.org.gradle.process.internal.worker.gradleworkermain",
+ "span_id" : ${content_parent_id},
+ "start" : ${content_start_4},
+ "test_module_id" : ${content_test_module_id},
+ "test_session_id" : ${content_test_session_id},
+ "test_suite_id" : ${content_test_suite_id},
+ "trace_id" : ${content_trace_id}
+ },
+ "type" : "test",
+ "version" : 2
+}, {
+ "content" : {
+ "duration" : ${content_duration_5},
+ "error" : 0,
+ "meta" : {
+ "_dd.profiling.ctx" : "test",
+ "_dd.tracer_host" : ${content_meta__dd_tracer_host},
+ "component" : "karate",
+ "dummy_ci_tag" : "dummy_ci_tag_value",
+ "env" : "none",
+ "language" : "jvm",
+ "library_version" : ${content_meta_library_version},
+ "runtime-id" : ${content_meta_runtime_id},
+ "span.kind" : "test",
+ "test.final_status" : "pass",
+ "test.framework" : "karate",
+ "test.framework_version" : ${content_meta_test_framework_version},
+ "test.module" : "karate-2.0",
+ "test.name" : "second scenario",
+ "test.status" : "pass",
+ "test.suite" : "[org/example/test_succeed] test succeed",
+ "test.traits" : "{\"category\":[\"foo\"]}",
+ "test.type" : "test",
+ "test_session.name" : "session-name"
+ },
+ "metrics" : {
+ "_dd.host.vcpu_count" : ${content_metrics__dd_host_vcpu_count_3},
+ "_dd.profiling.enabled" : 0,
+ "_dd.trace_span_attribute_schema" : 0,
+ "process_id" : ${content_metrics_process_id}
+ },
+ "name" : "karate.test",
+ "parent_id" : ${content_parent_id_3},
+ "resource" : "[org/example/test_succeed] test succeed.second scenario",
+ "service" : "worker.org.gradle.process.internal.worker.gradleworkermain",
+ "span_id" : ${content_parent_id_2},
+ "start" : ${content_start_5},
+ "test_module_id" : ${content_test_module_id},
+ "test_session_id" : ${content_test_session_id},
+ "test_suite_id" : ${content_test_suite_id},
+ "trace_id" : ${content_trace_id_2}
+ },
+ "type" : "test",
+ "version" : 2
+}, {
+ "content" : {
+ "duration" : ${content_duration_6},
+ "error" : 0,
+ "meta" : {
+ "_dd.p.tid" : ${content_meta__dd_p_tid_2},
+ "_dd.profiling.ctx" : "test",
+ "_dd.tracer_host" : ${content_meta__dd_tracer_host},
+ "component" : "karate",
+ "dummy_ci_tag" : "dummy_ci_tag_value",
+ "env" : "none",
+ "language" : "jvm",
+ "library_version" : ${content_meta_library_version},
+ "runtime-id" : ${content_meta_runtime_id},
+ "span.kind" : "test_session_end",
+ "test.command" : "karate-2.0",
+ "test.framework" : "karate",
+ "test.framework_version" : ${content_meta_test_framework_version},
+ "test.status" : "pass",
+ "test.type" : "test",
+ "test_session.name" : "session-name"
+ },
+ "metrics" : {
+ "_dd.host.vcpu_count" : ${content_metrics__dd_host_vcpu_count_4},
+ "_dd.profiling.enabled" : 0,
+ "_dd.trace_span_attribute_schema" : 0,
+ "process_id" : ${content_metrics_process_id}
+ },
+ "name" : "karate.test_session",
+ "resource" : "karate-2.0",
+ "service" : "worker.org.gradle.process.internal.worker.gradleworkermain",
+ "start" : ${content_start_6},
+ "test_session_id" : ${content_test_session_id}
+ },
+ "type" : "test_session_end",
+ "version" : 1
+}, {
+ "content" : {
+ "duration" : ${content_duration_7},
+ "error" : 0,
+ "meta" : {
+ "_dd.p.tid" : ${content_meta__dd_p_tid_3},
+ "component" : "karate",
+ "dummy_ci_tag" : "dummy_ci_tag_value",
+ "env" : "none",
+ "library_version" : ${content_meta_library_version},
+ "span.kind" : "test_module_end",
+ "test.framework" : "karate",
+ "test.framework_version" : ${content_meta_test_framework_version},
+ "test.module" : "karate-2.0",
+ "test.status" : "pass",
+ "test.type" : "test",
+ "test_session.name" : "session-name"
+ },
+ "metrics" : {
+ "_dd.host.vcpu_count" : ${content_metrics__dd_host_vcpu_count_5}
+ },
+ "name" : "karate.test_module",
+ "resource" : "karate-2.0",
+ "service" : "worker.org.gradle.process.internal.worker.gradleworkermain",
+ "start" : ${content_start_7},
+ "test_module_id" : ${content_test_module_id},
+ "test_session_id" : ${content_test_session_id}
+ },
+ "type" : "test_module_end",
+ "version" : 1
+} ]
\ No newline at end of file
diff --git a/dd-java-agent/instrumentation/karate/karate-2.0/src/test/resources/test-succeed/coverages.ftl b/dd-java-agent/instrumentation/karate/karate-2.0/src/test/resources/test-succeed/coverages.ftl
new file mode 100644
index 00000000000..8878e547a79
--- /dev/null
+++ b/dd-java-agent/instrumentation/karate/karate-2.0/src/test/resources/test-succeed/coverages.ftl
@@ -0,0 +1 @@
+[ ]
\ No newline at end of file
diff --git a/dd-java-agent/instrumentation/karate/karate-2.0/src/test/resources/test-succeed/events.ftl b/dd-java-agent/instrumentation/karate/karate-2.0/src/test/resources/test-succeed/events.ftl
new file mode 100644
index 00000000000..c2acf214162
--- /dev/null
+++ b/dd-java-agent/instrumentation/karate/karate-2.0/src/test/resources/test-succeed/events.ftl
@@ -0,0 +1,236 @@
+[ {
+ "content" : {
+ "duration" : ${content_duration},
+ "error" : 0,
+ "meta" : {
+ "component" : "karate",
+ "env" : "none",
+ "library_version" : ${content_meta_library_version},
+ "step.name" : "* 'first'"
+ },
+ "metrics" : {
+ "step.endLine" : 6,
+ "step.startLine" : 6
+ },
+ "name" : "karate.step",
+ "parent_id" : ${content_parent_id},
+ "resource" : "* 'first'",
+ "service" : "worker.org.gradle.process.internal.worker.gradleworkermain",
+ "span_id" : ${content_span_id},
+ "start" : ${content_start},
+ "trace_id" : ${content_trace_id}
+ },
+ "type" : "span",
+ "version" : 1
+}, {
+ "content" : {
+ "duration" : ${content_duration_2},
+ "error" : 0,
+ "meta" : {
+ "component" : "karate",
+ "env" : "none",
+ "library_version" : ${content_meta_library_version},
+ "step.name" : "* 'second'"
+ },
+ "metrics" : {
+ "step.endLine" : 9,
+ "step.startLine" : 9
+ },
+ "name" : "karate.step",
+ "parent_id" : ${content_parent_id_2},
+ "resource" : "* 'second'",
+ "service" : "worker.org.gradle.process.internal.worker.gradleworkermain",
+ "span_id" : ${content_span_id_2},
+ "start" : ${content_start_2},
+ "trace_id" : ${content_trace_id_2}
+ },
+ "type" : "span",
+ "version" : 1
+}, {
+ "content" : {
+ "duration" : ${content_duration_3},
+ "error" : 0,
+ "meta" : {
+ "_dd.p.tid" : ${content_meta__dd_p_tid},
+ "component" : "karate",
+ "dummy_ci_tag" : "dummy_ci_tag_value",
+ "env" : "none",
+ "library_version" : ${content_meta_library_version},
+ "span.kind" : "test_suite_end",
+ "test.framework" : "karate",
+ "test.framework_version" : ${content_meta_test_framework_version},
+ "test.module" : "karate-2.0",
+ "test.status" : "pass",
+ "test.suite" : "[org/example/test_succeed] test succeed",
+ "test.traits" : "{\"category\":[\"foo\"]}",
+ "test.type" : "test",
+ "test_session.name" : "session-name"
+ },
+ "metrics" : {
+ "_dd.host.vcpu_count" : ${content_metrics__dd_host_vcpu_count}
+ },
+ "name" : "karate.test_suite",
+ "resource" : "[org/example/test_succeed] test succeed",
+ "service" : "worker.org.gradle.process.internal.worker.gradleworkermain",
+ "start" : ${content_start_3},
+ "test_module_id" : ${content_test_module_id},
+ "test_session_id" : ${content_test_session_id},
+ "test_suite_id" : ${content_test_suite_id}
+ },
+ "type" : "test_suite_end",
+ "version" : 1
+}, {
+ "content" : {
+ "duration" : ${content_duration_4},
+ "error" : 0,
+ "meta" : {
+ "_dd.profiling.ctx" : "test",
+ "_dd.tracer_host" : ${content_meta__dd_tracer_host},
+ "component" : "karate",
+ "dummy_ci_tag" : "dummy_ci_tag_value",
+ "env" : "none",
+ "language" : "jvm",
+ "library_version" : ${content_meta_library_version},
+ "runtime-id" : ${content_meta_runtime_id},
+ "span.kind" : "test",
+ "test.final_status" : "pass",
+ "test.framework" : "karate",
+ "test.framework_version" : ${content_meta_test_framework_version},
+ "test.module" : "karate-2.0",
+ "test.name" : "first scenario",
+ "test.status" : "pass",
+ "test.suite" : "[org/example/test_succeed] test succeed",
+ "test.traits" : "{\"category\":[\"foo\",\"bar\"]}",
+ "test.type" : "test",
+ "test_session.name" : "session-name"
+ },
+ "metrics" : {
+ "_dd.host.vcpu_count" : ${content_metrics__dd_host_vcpu_count_2},
+ "_dd.profiling.enabled" : 0,
+ "_dd.trace_span_attribute_schema" : 0,
+ "process_id" : ${content_metrics_process_id}
+ },
+ "name" : "karate.test",
+ "parent_id" : ${content_parent_id_3},
+ "resource" : "[org/example/test_succeed] test succeed.first scenario",
+ "service" : "worker.org.gradle.process.internal.worker.gradleworkermain",
+ "span_id" : ${content_parent_id},
+ "start" : ${content_start_4},
+ "test_module_id" : ${content_test_module_id},
+ "test_session_id" : ${content_test_session_id},
+ "test_suite_id" : ${content_test_suite_id},
+ "trace_id" : ${content_trace_id}
+ },
+ "type" : "test",
+ "version" : 2
+}, {
+ "content" : {
+ "duration" : ${content_duration_5},
+ "error" : 0,
+ "meta" : {
+ "_dd.profiling.ctx" : "test",
+ "_dd.tracer_host" : ${content_meta__dd_tracer_host},
+ "component" : "karate",
+ "dummy_ci_tag" : "dummy_ci_tag_value",
+ "env" : "none",
+ "language" : "jvm",
+ "library_version" : ${content_meta_library_version},
+ "runtime-id" : ${content_meta_runtime_id},
+ "span.kind" : "test",
+ "test.final_status" : "pass",
+ "test.framework" : "karate",
+ "test.framework_version" : ${content_meta_test_framework_version},
+ "test.module" : "karate-2.0",
+ "test.name" : "second scenario",
+ "test.status" : "pass",
+ "test.suite" : "[org/example/test_succeed] test succeed",
+ "test.traits" : "{\"category\":[\"foo\"]}",
+ "test.type" : "test",
+ "test_session.name" : "session-name"
+ },
+ "metrics" : {
+ "_dd.host.vcpu_count" : ${content_metrics__dd_host_vcpu_count_3},
+ "_dd.profiling.enabled" : 0,
+ "_dd.trace_span_attribute_schema" : 0,
+ "process_id" : ${content_metrics_process_id}
+ },
+ "name" : "karate.test",
+ "parent_id" : ${content_parent_id_3},
+ "resource" : "[org/example/test_succeed] test succeed.second scenario",
+ "service" : "worker.org.gradle.process.internal.worker.gradleworkermain",
+ "span_id" : ${content_parent_id_2},
+ "start" : ${content_start_5},
+ "test_module_id" : ${content_test_module_id},
+ "test_session_id" : ${content_test_session_id},
+ "test_suite_id" : ${content_test_suite_id},
+ "trace_id" : ${content_trace_id_2}
+ },
+ "type" : "test",
+ "version" : 2
+}, {
+ "content" : {
+ "duration" : ${content_duration_6},
+ "error" : 0,
+ "meta" : {
+ "_dd.p.tid" : ${content_meta__dd_p_tid_2},
+ "_dd.profiling.ctx" : "test",
+ "_dd.tracer_host" : ${content_meta__dd_tracer_host},
+ "component" : "karate",
+ "dummy_ci_tag" : "dummy_ci_tag_value",
+ "env" : "none",
+ "language" : "jvm",
+ "library_version" : ${content_meta_library_version},
+ "runtime-id" : ${content_meta_runtime_id},
+ "span.kind" : "test_session_end",
+ "test.command" : "karate-2.0",
+ "test.framework" : "karate",
+ "test.framework_version" : ${content_meta_test_framework_version},
+ "test.status" : "pass",
+ "test.type" : "test",
+ "test_session.name" : "session-name"
+ },
+ "metrics" : {
+ "_dd.host.vcpu_count" : ${content_metrics__dd_host_vcpu_count_4},
+ "_dd.profiling.enabled" : 0,
+ "_dd.trace_span_attribute_schema" : 0,
+ "process_id" : ${content_metrics_process_id}
+ },
+ "name" : "karate.test_session",
+ "resource" : "karate-2.0",
+ "service" : "worker.org.gradle.process.internal.worker.gradleworkermain",
+ "start" : ${content_start_6},
+ "test_session_id" : ${content_test_session_id}
+ },
+ "type" : "test_session_end",
+ "version" : 1
+}, {
+ "content" : {
+ "duration" : ${content_duration_7},
+ "error" : 0,
+ "meta" : {
+ "_dd.p.tid" : ${content_meta__dd_p_tid_3},
+ "component" : "karate",
+ "dummy_ci_tag" : "dummy_ci_tag_value",
+ "env" : "none",
+ "library_version" : ${content_meta_library_version},
+ "span.kind" : "test_module_end",
+ "test.framework" : "karate",
+ "test.framework_version" : ${content_meta_test_framework_version},
+ "test.module" : "karate-2.0",
+ "test.status" : "pass",
+ "test.type" : "test",
+ "test_session.name" : "session-name"
+ },
+ "metrics" : {
+ "_dd.host.vcpu_count" : ${content_metrics__dd_host_vcpu_count_5}
+ },
+ "name" : "karate.test_module",
+ "resource" : "karate-2.0",
+ "service" : "worker.org.gradle.process.internal.worker.gradleworkermain",
+ "start" : ${content_start_7},
+ "test_module_id" : ${content_test_module_id},
+ "test_session_id" : ${content_test_session_id}
+ },
+ "type" : "test_module_end",
+ "version" : 1
+} ]
\ No newline at end of file
diff --git a/dd-java-agent/instrumentation/karate/karate-2.0/src/test/resources/test-with-setup/coverages.ftl b/dd-java-agent/instrumentation/karate/karate-2.0/src/test/resources/test-with-setup/coverages.ftl
new file mode 100644
index 00000000000..8878e547a79
--- /dev/null
+++ b/dd-java-agent/instrumentation/karate/karate-2.0/src/test/resources/test-with-setup/coverages.ftl
@@ -0,0 +1 @@
+[ ]
\ No newline at end of file
diff --git a/dd-java-agent/instrumentation/karate/karate-2.0/src/test/resources/test-with-setup/events.ftl b/dd-java-agent/instrumentation/karate/karate-2.0/src/test/resources/test-with-setup/events.ftl
new file mode 100644
index 00000000000..18854759d1c
--- /dev/null
+++ b/dd-java-agent/instrumentation/karate/karate-2.0/src/test/resources/test-with-setup/events.ftl
@@ -0,0 +1,235 @@
+[ {
+ "content" : {
+ "duration" : ${content_duration},
+ "error" : 0,
+ "meta" : {
+ "component" : "karate",
+ "env" : "none",
+ "library_version" : ${content_meta_library_version},
+ "step.name" : "* foo"
+ },
+ "metrics" : {
+ "step.endLine" : 13,
+ "step.startLine" : 13
+ },
+ "name" : "karate.step",
+ "parent_id" : ${content_parent_id},
+ "resource" : "* foo",
+ "service" : "worker.org.gradle.process.internal.worker.gradleworkermain",
+ "span_id" : ${content_span_id},
+ "start" : ${content_start},
+ "trace_id" : ${content_trace_id}
+ },
+ "type" : "span",
+ "version" : 1
+}, {
+ "content" : {
+ "duration" : ${content_duration_2},
+ "error" : 0,
+ "meta" : {
+ "component" : "karate",
+ "env" : "none",
+ "library_version" : ${content_meta_library_version},
+ "step.name" : "* foo"
+ },
+ "metrics" : {
+ "step.endLine" : 18,
+ "step.startLine" : 18
+ },
+ "name" : "karate.step",
+ "parent_id" : ${content_parent_id_2},
+ "resource" : "* foo",
+ "service" : "worker.org.gradle.process.internal.worker.gradleworkermain",
+ "span_id" : ${content_span_id_2},
+ "start" : ${content_start_2},
+ "trace_id" : ${content_trace_id_2}
+ },
+ "type" : "span",
+ "version" : 1
+}, {
+ "content" : {
+ "duration" : ${content_duration_3},
+ "error" : 0,
+ "meta" : {
+ "_dd.p.tid" : ${content_meta__dd_p_tid},
+ "component" : "karate",
+ "dummy_ci_tag" : "dummy_ci_tag_value",
+ "env" : "none",
+ "library_version" : ${content_meta_library_version},
+ "span.kind" : "test_suite_end",
+ "test.framework" : "karate",
+ "test.framework_version" : ${content_meta_test_framework_version},
+ "test.module" : "karate-2.0",
+ "test.status" : "pass",
+ "test.suite" : "[org/example/test_with_setup] test with setup",
+ "test.type" : "test",
+ "test_session.name" : "session-name"
+ },
+ "metrics" : {
+ "_dd.host.vcpu_count" : ${content_metrics__dd_host_vcpu_count}
+ },
+ "name" : "karate.test_suite",
+ "resource" : "[org/example/test_with_setup] test with setup",
+ "service" : "worker.org.gradle.process.internal.worker.gradleworkermain",
+ "start" : ${content_start_3},
+ "test_module_id" : ${content_test_module_id},
+ "test_session_id" : ${content_test_session_id},
+ "test_suite_id" : ${content_test_suite_id}
+ },
+ "type" : "test_suite_end",
+ "version" : 1
+}, {
+ "content" : {
+ "duration" : ${content_duration_4},
+ "error" : 0,
+ "meta" : {
+ "_dd.profiling.ctx" : "test",
+ "_dd.tracer_host" : ${content_meta__dd_tracer_host},
+ "component" : "karate",
+ "dummy_ci_tag" : "dummy_ci_tag_value",
+ "env" : "none",
+ "language" : "jvm",
+ "library_version" : ${content_meta_library_version},
+ "runtime-id" : ${content_meta_runtime_id},
+ "span.kind" : "test",
+ "test.final_status" : "pass",
+ "test.framework" : "karate",
+ "test.framework_version" : ${content_meta_test_framework_version},
+ "test.module" : "karate-2.0",
+ "test.name" : "first scenario",
+ "test.parameters" : "{\"foo\":\"bar\"}",
+ "test.status" : "pass",
+ "test.suite" : "[org/example/test_with_setup] test with setup",
+ "test.type" : "test",
+ "test_session.name" : "session-name"
+ },
+ "metrics" : {
+ "_dd.host.vcpu_count" : ${content_metrics__dd_host_vcpu_count_2},
+ "_dd.profiling.enabled" : 0,
+ "_dd.trace_span_attribute_schema" : 0,
+ "process_id" : ${content_metrics_process_id}
+ },
+ "name" : "karate.test",
+ "parent_id" : ${content_parent_id_3},
+ "resource" : "[org/example/test_with_setup] test with setup.first scenario",
+ "service" : "worker.org.gradle.process.internal.worker.gradleworkermain",
+ "span_id" : ${content_parent_id},
+ "start" : ${content_start_4},
+ "test_module_id" : ${content_test_module_id},
+ "test_session_id" : ${content_test_session_id},
+ "test_suite_id" : ${content_test_suite_id},
+ "trace_id" : ${content_trace_id}
+ },
+ "type" : "test",
+ "version" : 2
+}, {
+ "content" : {
+ "duration" : ${content_duration_5},
+ "error" : 0,
+ "meta" : {
+ "_dd.profiling.ctx" : "test",
+ "_dd.tracer_host" : ${content_meta__dd_tracer_host},
+ "component" : "karate",
+ "dummy_ci_tag" : "dummy_ci_tag_value",
+ "env" : "none",
+ "language" : "jvm",
+ "library_version" : ${content_meta_library_version},
+ "runtime-id" : ${content_meta_runtime_id},
+ "span.kind" : "test",
+ "test.final_status" : "pass",
+ "test.framework" : "karate",
+ "test.framework_version" : ${content_meta_test_framework_version},
+ "test.module" : "karate-2.0",
+ "test.name" : "second scenario",
+ "test.parameters" : "{\"foo\":\"bar\"}",
+ "test.status" : "pass",
+ "test.suite" : "[org/example/test_with_setup] test with setup",
+ "test.type" : "test",
+ "test_session.name" : "session-name"
+ },
+ "metrics" : {
+ "_dd.host.vcpu_count" : ${content_metrics__dd_host_vcpu_count_3},
+ "_dd.profiling.enabled" : 0,
+ "_dd.trace_span_attribute_schema" : 0,
+ "process_id" : ${content_metrics_process_id}
+ },
+ "name" : "karate.test",
+ "parent_id" : ${content_parent_id_3},
+ "resource" : "[org/example/test_with_setup] test with setup.second scenario",
+ "service" : "worker.org.gradle.process.internal.worker.gradleworkermain",
+ "span_id" : ${content_parent_id_2},
+ "start" : ${content_start_5},
+ "test_module_id" : ${content_test_module_id},
+ "test_session_id" : ${content_test_session_id},
+ "test_suite_id" : ${content_test_suite_id},
+ "trace_id" : ${content_trace_id_2}
+ },
+ "type" : "test",
+ "version" : 2
+}, {
+ "content" : {
+ "duration" : ${content_duration_6},
+ "error" : 0,
+ "meta" : {
+ "_dd.p.tid" : ${content_meta__dd_p_tid_2},
+ "_dd.profiling.ctx" : "test",
+ "_dd.tracer_host" : ${content_meta__dd_tracer_host},
+ "component" : "karate",
+ "dummy_ci_tag" : "dummy_ci_tag_value",
+ "env" : "none",
+ "language" : "jvm",
+ "library_version" : ${content_meta_library_version},
+ "runtime-id" : ${content_meta_runtime_id},
+ "span.kind" : "test_session_end",
+ "test.command" : "karate-2.0",
+ "test.framework" : "karate",
+ "test.framework_version" : ${content_meta_test_framework_version},
+ "test.status" : "pass",
+ "test.type" : "test",
+ "test_session.name" : "session-name"
+ },
+ "metrics" : {
+ "_dd.host.vcpu_count" : ${content_metrics__dd_host_vcpu_count_4},
+ "_dd.profiling.enabled" : 0,
+ "_dd.trace_span_attribute_schema" : 0,
+ "process_id" : ${content_metrics_process_id}
+ },
+ "name" : "karate.test_session",
+ "resource" : "karate-2.0",
+ "service" : "worker.org.gradle.process.internal.worker.gradleworkermain",
+ "start" : ${content_start_6},
+ "test_session_id" : ${content_test_session_id}
+ },
+ "type" : "test_session_end",
+ "version" : 1
+}, {
+ "content" : {
+ "duration" : ${content_duration_7},
+ "error" : 0,
+ "meta" : {
+ "_dd.p.tid" : ${content_meta__dd_p_tid_3},
+ "component" : "karate",
+ "dummy_ci_tag" : "dummy_ci_tag_value",
+ "env" : "none",
+ "library_version" : ${content_meta_library_version},
+ "span.kind" : "test_module_end",
+ "test.framework" : "karate",
+ "test.framework_version" : ${content_meta_test_framework_version},
+ "test.module" : "karate-2.0",
+ "test.status" : "pass",
+ "test.type" : "test",
+ "test_session.name" : "session-name"
+ },
+ "metrics" : {
+ "_dd.host.vcpu_count" : ${content_metrics__dd_host_vcpu_count_5}
+ },
+ "name" : "karate.test_module",
+ "resource" : "karate-2.0",
+ "service" : "worker.org.gradle.process.internal.worker.gradleworkermain",
+ "start" : ${content_start_7},
+ "test_module_id" : ${content_test_module_id},
+ "test_session_id" : ${content_test_session_id}
+ },
+ "type" : "test_module_end",
+ "version" : 1
+} ]
\ No newline at end of file
diff --git a/settings.gradle.kts b/settings.gradle.kts
index 36b1d9b95df..231dffad538 100644
--- a/settings.gradle.kts
+++ b/settings.gradle.kts
@@ -464,7 +464,8 @@ include(
":dd-java-agent:instrumentation:kafka:kafka-connect-0.11",
":dd-java-agent:instrumentation:kafka:kafka-streams-0.11",
":dd-java-agent:instrumentation:kafka:kafka-streams-1.0",
- ":dd-java-agent:instrumentation:karate-1.0",
+ ":dd-java-agent:instrumentation:karate:karate-1.0",
+ ":dd-java-agent:instrumentation:karate:karate-2.0",
":dd-java-agent:instrumentation:kotlin-coroutines-1.3",
":dd-java-agent:instrumentation:lettuce:lettuce-4.0",
":dd-java-agent:instrumentation:lettuce:lettuce-5.0",