From 35a94bf17b908790d0daf064ae758abd25e0278e Mon Sep 17 00:00:00 2001 From: Daniel Mohedano Date: Mon, 13 Jul 2026 12:19:49 +0200 Subject: [PATCH 1/4] refactor: group karate instrumentation modules under karate/ --- .github/CODEOWNERS | 2 +- .../instrumentation/{ => karate}/karate-1.0/build.gradle | 0 .../instrumentation/{ => karate}/karate-1.0/gradle.lockfile | 0 .../datadog/trace/instrumentation/karate/ExecutionContext.java | 0 .../instrumentation/karate/KarateExecutionInstrumentation.java | 0 .../trace/instrumentation/karate/KarateInstrumentation.java | 0 .../datadog/trace/instrumentation/karate/KarateTracingHook.java | 0 .../java/datadog/trace/instrumentation/karate/KarateUtils.java | 0 .../trace/instrumentation/karate/TestEventsHandlerHolder.java | 0 .../{ => karate}/karate-1.0/src/test/groovy/KarateTest.groovy | 0 .../karate-1.0/src/test/java/org/example/Flaky.java | 0 .../{ => karate}/karate-1.0/src/test/java/org/example/Slow.java | 0 .../test/java/org/example/TestContinueOnStepFailureKarate.java | 0 .../src/test/java/org/example/TestFailedBuiltInRetryKarate.java | 0 .../karate-1.0/src/test/java/org/example/TestFailedKarate.java | 0 .../test/java/org/example/TestFailedParameterizedKarate.java | 0 .../src/test/java/org/example/TestFailedThenSucceedKarate.java | 0 .../src/test/java/org/example/TestParameterizedKarate.java | 0 .../test/java/org/example/TestParameterizedMoreCasesKarate.java | 0 .../src/test/java/org/example/TestSkippedFeatureKarate.java | 0 .../karate-1.0/src/test/java/org/example/TestSucceedKarate.java | 0 .../src/test/java/org/example/TestSucceedKarateSkipEfd.java | 0 .../src/test/java/org/example/TestSucceedKarateSlow.java | 0 .../src/test/java/org/example/TestSucceedOneCaseKarate.java | 0 .../src/test/java/org/example/TestSucceedParallelKarate.java | 0 .../src/test/java/org/example/TestUnskippableKarate.java | 0 .../src/test/java/org/example/TestWithSetupKarate.java | 0 .../karate-1.0/src/test/java/org/example/karate-config.js | 0 .../test/java/org/example/test_continue_on_step_failure.feature | 0 .../karate-1.0/src/test/java/org/example/test_failed.feature | 0 .../src/test/java/org/example/test_failed_parameterized.feature | 0 .../src/test/java/org/example/test_failed_then_succeed.feature | 0 .../src/test/java/org/example/test_parameterized.feature | 0 .../test/java/org/example/test_parameterized_more_cases.feature | 0 .../karate-1.0/src/test/java/org/example/test_succeed.feature | 0 .../src/test/java/org/example/test_succeed_one_case.feature | 0 .../src/test/java/org/example/test_succeed_skip_efd.feature | 0 .../src/test/java/org/example/test_succeed_slow.feature | 0 .../src/test/java/org/example/test_unskippable.feature | 0 .../src/test/java/org/example/test_with_setup.feature | 0 .../resources/test-attempt-to-fix-disabled-failed/coverages.ftl | 0 .../resources/test-attempt-to-fix-disabled-failed/events.ftl | 0 .../test-attempt-to-fix-disabled-succeeded/coverages.ftl | 0 .../resources/test-attempt-to-fix-disabled-succeeded/events.ftl | 0 .../src/test/resources/test-attempt-to-fix-failed/coverages.ftl | 0 .../src/test/resources/test-attempt-to-fix-failed/events.ftl | 0 .../test-attempt-to-fix-quarantined-failed/coverages.ftl | 0 .../resources/test-attempt-to-fix-quarantined-failed/events.ftl | 0 .../test-attempt-to-fix-quarantined-succeeded/coverages.ftl | 0 .../test-attempt-to-fix-quarantined-succeeded/events.ftl | 0 .../test/resources/test-attempt-to-fix-succeeded/coverages.ftl | 0 .../src/test/resources/test-attempt-to-fix-succeeded/events.ftl | 0 .../src/test/resources/test-built-in-retry/coverages.ftl | 0 .../src/test/resources/test-built-in-retry/events.ftl | 0 .../src/test/resources/test-disabled-failed/coverages.ftl | 0 .../src/test/resources/test-disabled-failed/events.ftl | 0 .../resources/test-efd-faulty-session-threshold/coverages.ftl | 0 .../test/resources/test-efd-faulty-session-threshold/events.ftl | 0 .../resources/test-efd-known-parameterized-test/coverages.ftl | 0 .../test/resources/test-efd-known-parameterized-test/events.ftl | 0 .../src/test/resources/test-efd-known-test/coverages.ftl | 0 .../src/test/resources/test-efd-known-test/events.ftl | 0 .../resources/test-efd-new-parameterized-test/coverages.ftl | 0 .../test/resources/test-efd-new-parameterized-test/events.ftl | 0 .../src/test/resources/test-efd-new-slow-test/coverages.ftl | 0 .../src/test/resources/test-efd-new-slow-test/events.ftl | 0 .../src/test/resources/test-efd-new-test/coverages.ftl | 0 .../karate-1.0/src/test/resources/test-efd-new-test/events.ftl | 0 .../src/test/resources/test-efd-skip-new-test/coverages.ftl | 0 .../src/test/resources/test-efd-skip-new-test/events.ftl | 0 .../src/test/resources/test-failed-then-succeed/coverages.ftl | 0 .../src/test/resources/test-failed-then-succeed/events.ftl | 0 .../karate-1.0/src/test/resources/test-failed/coverages.ftl | 0 .../karate-1.0/src/test/resources/test-failed/events.ftl | 0 .../resources/test-itr-skipping-parameterized/coverages.ftl | 0 .../test/resources/test-itr-skipping-parameterized/events.ftl | 0 .../src/test/resources/test-itr-skipping/coverages.ftl | 0 .../karate-1.0/src/test/resources/test-itr-skipping/events.ftl | 0 .../src/test/resources/test-itr-unskippable/coverages.ftl | 0 .../src/test/resources/test-itr-unskippable/events.ftl | 0 .../src/test/resources/test-parameterized/coverages.ftl | 0 .../karate-1.0/src/test/resources/test-parameterized/events.ftl | 0 .../test/resources/test-quarantined-failed-atr/coverages.ftl | 0 .../src/test/resources/test-quarantined-failed-atr/events.ftl | 0 .../test/resources/test-quarantined-failed-efd/coverages.ftl | 0 .../src/test/resources/test-quarantined-failed-efd/events.ftl | 0 .../test/resources/test-quarantined-failed-known/coverages.ftl | 0 .../src/test/resources/test-quarantined-failed-known/events.ftl | 0 .../src/test/resources/test-quarantined-failed/coverages.ftl | 0 .../src/test/resources/test-quarantined-failed/events.ftl | 0 .../resources/test-retry-continue-on-step-failure/coverages.ftl | 0 .../resources/test-retry-continue-on-step-failure/events.ftl | 0 .../src/test/resources/test-retry-failed/coverages.ftl | 0 .../karate-1.0/src/test/resources/test-retry-failed/events.ftl | 0 .../src/test/resources/test-retry-parameterized/coverages.ftl | 0 .../src/test/resources/test-retry-parameterized/events.ftl | 0 .../src/test/resources/test-skipped-feature/coverages.ftl | 0 .../src/test/resources/test-skipped-feature/events.ftl | 0 .../src/test/resources/test-succeed-parallel/coverages.ftl | 0 .../src/test/resources/test-succeed-parallel/events.ftl | 0 .../karate-1.0/src/test/resources/test-succeed/coverages.ftl | 0 .../karate-1.0/src/test/resources/test-succeed/events.ftl | 0 .../karate-1.0/src/test/resources/test-with-setup/coverages.ftl | 0 .../karate-1.0/src/test/resources/test-with-setup/events.ftl | 0 settings.gradle.kts | 2 +- 105 files changed, 2 insertions(+), 2 deletions(-) rename dd-java-agent/instrumentation/{ => karate}/karate-1.0/build.gradle (100%) rename dd-java-agent/instrumentation/{ => karate}/karate-1.0/gradle.lockfile (100%) rename dd-java-agent/instrumentation/{ => karate}/karate-1.0/src/main/java/datadog/trace/instrumentation/karate/ExecutionContext.java (100%) rename dd-java-agent/instrumentation/{ => karate}/karate-1.0/src/main/java/datadog/trace/instrumentation/karate/KarateExecutionInstrumentation.java (100%) rename dd-java-agent/instrumentation/{ => karate}/karate-1.0/src/main/java/datadog/trace/instrumentation/karate/KarateInstrumentation.java (100%) rename dd-java-agent/instrumentation/{ => karate}/karate-1.0/src/main/java/datadog/trace/instrumentation/karate/KarateTracingHook.java (100%) rename dd-java-agent/instrumentation/{ => karate}/karate-1.0/src/main/java/datadog/trace/instrumentation/karate/KarateUtils.java (100%) rename dd-java-agent/instrumentation/{ => karate}/karate-1.0/src/main/java/datadog/trace/instrumentation/karate/TestEventsHandlerHolder.java (100%) rename dd-java-agent/instrumentation/{ => karate}/karate-1.0/src/test/groovy/KarateTest.groovy (100%) rename dd-java-agent/instrumentation/{ => karate}/karate-1.0/src/test/java/org/example/Flaky.java (100%) rename dd-java-agent/instrumentation/{ => karate}/karate-1.0/src/test/java/org/example/Slow.java (100%) rename dd-java-agent/instrumentation/{ => karate}/karate-1.0/src/test/java/org/example/TestContinueOnStepFailureKarate.java (100%) rename dd-java-agent/instrumentation/{ => karate}/karate-1.0/src/test/java/org/example/TestFailedBuiltInRetryKarate.java (100%) rename dd-java-agent/instrumentation/{ => karate}/karate-1.0/src/test/java/org/example/TestFailedKarate.java (100%) rename dd-java-agent/instrumentation/{ => karate}/karate-1.0/src/test/java/org/example/TestFailedParameterizedKarate.java (100%) rename dd-java-agent/instrumentation/{ => karate}/karate-1.0/src/test/java/org/example/TestFailedThenSucceedKarate.java (100%) rename dd-java-agent/instrumentation/{ => karate}/karate-1.0/src/test/java/org/example/TestParameterizedKarate.java (100%) rename dd-java-agent/instrumentation/{ => karate}/karate-1.0/src/test/java/org/example/TestParameterizedMoreCasesKarate.java (100%) rename dd-java-agent/instrumentation/{ => karate}/karate-1.0/src/test/java/org/example/TestSkippedFeatureKarate.java (100%) rename dd-java-agent/instrumentation/{ => karate}/karate-1.0/src/test/java/org/example/TestSucceedKarate.java (100%) rename dd-java-agent/instrumentation/{ => karate}/karate-1.0/src/test/java/org/example/TestSucceedKarateSkipEfd.java (100%) rename dd-java-agent/instrumentation/{ => karate}/karate-1.0/src/test/java/org/example/TestSucceedKarateSlow.java (100%) rename dd-java-agent/instrumentation/{ => karate}/karate-1.0/src/test/java/org/example/TestSucceedOneCaseKarate.java (100%) rename dd-java-agent/instrumentation/{ => karate}/karate-1.0/src/test/java/org/example/TestSucceedParallelKarate.java (100%) rename dd-java-agent/instrumentation/{ => karate}/karate-1.0/src/test/java/org/example/TestUnskippableKarate.java (100%) rename dd-java-agent/instrumentation/{ => karate}/karate-1.0/src/test/java/org/example/TestWithSetupKarate.java (100%) rename dd-java-agent/instrumentation/{ => karate}/karate-1.0/src/test/java/org/example/karate-config.js (100%) rename dd-java-agent/instrumentation/{ => karate}/karate-1.0/src/test/java/org/example/test_continue_on_step_failure.feature (100%) rename dd-java-agent/instrumentation/{ => karate}/karate-1.0/src/test/java/org/example/test_failed.feature (100%) rename dd-java-agent/instrumentation/{ => karate}/karate-1.0/src/test/java/org/example/test_failed_parameterized.feature (100%) rename dd-java-agent/instrumentation/{ => karate}/karate-1.0/src/test/java/org/example/test_failed_then_succeed.feature (100%) rename dd-java-agent/instrumentation/{ => karate}/karate-1.0/src/test/java/org/example/test_parameterized.feature (100%) rename dd-java-agent/instrumentation/{ => karate}/karate-1.0/src/test/java/org/example/test_parameterized_more_cases.feature (100%) rename dd-java-agent/instrumentation/{ => karate}/karate-1.0/src/test/java/org/example/test_succeed.feature (100%) rename dd-java-agent/instrumentation/{ => karate}/karate-1.0/src/test/java/org/example/test_succeed_one_case.feature (100%) rename dd-java-agent/instrumentation/{ => karate}/karate-1.0/src/test/java/org/example/test_succeed_skip_efd.feature (100%) rename dd-java-agent/instrumentation/{ => karate}/karate-1.0/src/test/java/org/example/test_succeed_slow.feature (100%) rename dd-java-agent/instrumentation/{ => karate}/karate-1.0/src/test/java/org/example/test_unskippable.feature (100%) rename dd-java-agent/instrumentation/{ => karate}/karate-1.0/src/test/java/org/example/test_with_setup.feature (100%) rename dd-java-agent/instrumentation/{ => karate}/karate-1.0/src/test/resources/test-attempt-to-fix-disabled-failed/coverages.ftl (100%) rename dd-java-agent/instrumentation/{ => karate}/karate-1.0/src/test/resources/test-attempt-to-fix-disabled-failed/events.ftl (100%) rename dd-java-agent/instrumentation/{ => karate}/karate-1.0/src/test/resources/test-attempt-to-fix-disabled-succeeded/coverages.ftl (100%) rename dd-java-agent/instrumentation/{ => karate}/karate-1.0/src/test/resources/test-attempt-to-fix-disabled-succeeded/events.ftl (100%) rename dd-java-agent/instrumentation/{ => karate}/karate-1.0/src/test/resources/test-attempt-to-fix-failed/coverages.ftl (100%) rename dd-java-agent/instrumentation/{ => karate}/karate-1.0/src/test/resources/test-attempt-to-fix-failed/events.ftl (100%) rename dd-java-agent/instrumentation/{ => karate}/karate-1.0/src/test/resources/test-attempt-to-fix-quarantined-failed/coverages.ftl (100%) rename dd-java-agent/instrumentation/{ => karate}/karate-1.0/src/test/resources/test-attempt-to-fix-quarantined-failed/events.ftl (100%) rename dd-java-agent/instrumentation/{ => karate}/karate-1.0/src/test/resources/test-attempt-to-fix-quarantined-succeeded/coverages.ftl (100%) rename dd-java-agent/instrumentation/{ => karate}/karate-1.0/src/test/resources/test-attempt-to-fix-quarantined-succeeded/events.ftl (100%) rename dd-java-agent/instrumentation/{ => karate}/karate-1.0/src/test/resources/test-attempt-to-fix-succeeded/coverages.ftl (100%) rename dd-java-agent/instrumentation/{ => karate}/karate-1.0/src/test/resources/test-attempt-to-fix-succeeded/events.ftl (100%) rename dd-java-agent/instrumentation/{ => karate}/karate-1.0/src/test/resources/test-built-in-retry/coverages.ftl (100%) rename dd-java-agent/instrumentation/{ => karate}/karate-1.0/src/test/resources/test-built-in-retry/events.ftl (100%) rename dd-java-agent/instrumentation/{ => karate}/karate-1.0/src/test/resources/test-disabled-failed/coverages.ftl (100%) rename dd-java-agent/instrumentation/{ => karate}/karate-1.0/src/test/resources/test-disabled-failed/events.ftl (100%) rename dd-java-agent/instrumentation/{ => karate}/karate-1.0/src/test/resources/test-efd-faulty-session-threshold/coverages.ftl (100%) rename dd-java-agent/instrumentation/{ => karate}/karate-1.0/src/test/resources/test-efd-faulty-session-threshold/events.ftl (100%) rename dd-java-agent/instrumentation/{ => karate}/karate-1.0/src/test/resources/test-efd-known-parameterized-test/coverages.ftl (100%) rename dd-java-agent/instrumentation/{ => karate}/karate-1.0/src/test/resources/test-efd-known-parameterized-test/events.ftl (100%) rename dd-java-agent/instrumentation/{ => karate}/karate-1.0/src/test/resources/test-efd-known-test/coverages.ftl (100%) rename dd-java-agent/instrumentation/{ => karate}/karate-1.0/src/test/resources/test-efd-known-test/events.ftl (100%) rename dd-java-agent/instrumentation/{ => karate}/karate-1.0/src/test/resources/test-efd-new-parameterized-test/coverages.ftl (100%) rename dd-java-agent/instrumentation/{ => karate}/karate-1.0/src/test/resources/test-efd-new-parameterized-test/events.ftl (100%) rename dd-java-agent/instrumentation/{ => karate}/karate-1.0/src/test/resources/test-efd-new-slow-test/coverages.ftl (100%) rename dd-java-agent/instrumentation/{ => karate}/karate-1.0/src/test/resources/test-efd-new-slow-test/events.ftl (100%) rename dd-java-agent/instrumentation/{ => karate}/karate-1.0/src/test/resources/test-efd-new-test/coverages.ftl (100%) rename dd-java-agent/instrumentation/{ => karate}/karate-1.0/src/test/resources/test-efd-new-test/events.ftl (100%) rename dd-java-agent/instrumentation/{ => karate}/karate-1.0/src/test/resources/test-efd-skip-new-test/coverages.ftl (100%) rename dd-java-agent/instrumentation/{ => karate}/karate-1.0/src/test/resources/test-efd-skip-new-test/events.ftl (100%) rename dd-java-agent/instrumentation/{ => karate}/karate-1.0/src/test/resources/test-failed-then-succeed/coverages.ftl (100%) rename dd-java-agent/instrumentation/{ => karate}/karate-1.0/src/test/resources/test-failed-then-succeed/events.ftl (100%) rename dd-java-agent/instrumentation/{ => karate}/karate-1.0/src/test/resources/test-failed/coverages.ftl (100%) rename dd-java-agent/instrumentation/{ => karate}/karate-1.0/src/test/resources/test-failed/events.ftl (100%) rename dd-java-agent/instrumentation/{ => karate}/karate-1.0/src/test/resources/test-itr-skipping-parameterized/coverages.ftl (100%) rename dd-java-agent/instrumentation/{ => karate}/karate-1.0/src/test/resources/test-itr-skipping-parameterized/events.ftl (100%) rename dd-java-agent/instrumentation/{ => karate}/karate-1.0/src/test/resources/test-itr-skipping/coverages.ftl (100%) rename dd-java-agent/instrumentation/{ => karate}/karate-1.0/src/test/resources/test-itr-skipping/events.ftl (100%) rename dd-java-agent/instrumentation/{ => karate}/karate-1.0/src/test/resources/test-itr-unskippable/coverages.ftl (100%) rename dd-java-agent/instrumentation/{ => karate}/karate-1.0/src/test/resources/test-itr-unskippable/events.ftl (100%) rename dd-java-agent/instrumentation/{ => karate}/karate-1.0/src/test/resources/test-parameterized/coverages.ftl (100%) rename dd-java-agent/instrumentation/{ => karate}/karate-1.0/src/test/resources/test-parameterized/events.ftl (100%) rename dd-java-agent/instrumentation/{ => karate}/karate-1.0/src/test/resources/test-quarantined-failed-atr/coverages.ftl (100%) rename dd-java-agent/instrumentation/{ => karate}/karate-1.0/src/test/resources/test-quarantined-failed-atr/events.ftl (100%) rename dd-java-agent/instrumentation/{ => karate}/karate-1.0/src/test/resources/test-quarantined-failed-efd/coverages.ftl (100%) rename dd-java-agent/instrumentation/{ => karate}/karate-1.0/src/test/resources/test-quarantined-failed-efd/events.ftl (100%) rename dd-java-agent/instrumentation/{ => karate}/karate-1.0/src/test/resources/test-quarantined-failed-known/coverages.ftl (100%) rename dd-java-agent/instrumentation/{ => karate}/karate-1.0/src/test/resources/test-quarantined-failed-known/events.ftl (100%) rename dd-java-agent/instrumentation/{ => karate}/karate-1.0/src/test/resources/test-quarantined-failed/coverages.ftl (100%) rename dd-java-agent/instrumentation/{ => karate}/karate-1.0/src/test/resources/test-quarantined-failed/events.ftl (100%) rename dd-java-agent/instrumentation/{ => karate}/karate-1.0/src/test/resources/test-retry-continue-on-step-failure/coverages.ftl (100%) rename dd-java-agent/instrumentation/{ => karate}/karate-1.0/src/test/resources/test-retry-continue-on-step-failure/events.ftl (100%) rename dd-java-agent/instrumentation/{ => karate}/karate-1.0/src/test/resources/test-retry-failed/coverages.ftl (100%) rename dd-java-agent/instrumentation/{ => karate}/karate-1.0/src/test/resources/test-retry-failed/events.ftl (100%) rename dd-java-agent/instrumentation/{ => karate}/karate-1.0/src/test/resources/test-retry-parameterized/coverages.ftl (100%) rename dd-java-agent/instrumentation/{ => karate}/karate-1.0/src/test/resources/test-retry-parameterized/events.ftl (100%) rename dd-java-agent/instrumentation/{ => karate}/karate-1.0/src/test/resources/test-skipped-feature/coverages.ftl (100%) rename dd-java-agent/instrumentation/{ => karate}/karate-1.0/src/test/resources/test-skipped-feature/events.ftl (100%) rename dd-java-agent/instrumentation/{ => karate}/karate-1.0/src/test/resources/test-succeed-parallel/coverages.ftl (100%) rename dd-java-agent/instrumentation/{ => karate}/karate-1.0/src/test/resources/test-succeed-parallel/events.ftl (100%) rename dd-java-agent/instrumentation/{ => karate}/karate-1.0/src/test/resources/test-succeed/coverages.ftl (100%) rename dd-java-agent/instrumentation/{ => karate}/karate-1.0/src/test/resources/test-succeed/events.ftl (100%) rename dd-java-agent/instrumentation/{ => karate}/karate-1.0/src/test/resources/test-with-setup/coverages.ftl (100%) rename dd-java-agent/instrumentation/{ => karate}/karate-1.0/src/test/resources/test-with-setup/events.ftl (100%) 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/settings.gradle.kts b/settings.gradle.kts index 36b1d9b95df..1d62faeba93 100644 --- a/settings.gradle.kts +++ b/settings.gradle.kts @@ -464,7 +464,7 @@ 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:kotlin-coroutines-1.3", ":dd-java-agent:instrumentation:lettuce:lettuce-4.0", ":dd-java-agent:instrumentation:lettuce:lettuce-5.0", From e459f4bc8e3eab96451bed4ed5dcb0213d3523b0 Mon Sep 17 00:00:00 2001 From: Daniel Mohedano Date: Mon, 13 Jul 2026 12:20:09 +0200 Subject: [PATCH 2/4] feat: test visibility for karate v2 --- .../karate/karate-2.0/build.gradle | 52 +++ .../karate2/KarateInstrumentation.java | 44 +++ .../karate2/KarateBuilderAdvice.java | 20 ++ .../karate2/KarateTracingListener.java | 240 +++++++++++++ .../instrumentation/karate2/KarateUtils.java | 178 ++++++++++ .../karate2/TestEventsHandlerHolder.java | 32 ++ .../src/test/groovy/KarateV2Test.groovy | 108 ++++++ .../java/org/example/TestFailedKarate.java | 16 + .../org/example/TestParameterizedKarate.java | 16 + .../java/org/example/TestSucceedKarate.java | 16 + .../test/java/org/example/karate-config.js | 2 + .../test/java/org/example/test_failed.feature | 7 + .../org/example/test_parameterized.feature | 13 + .../java/org/example/test_succeed.feature | 9 + .../test/resources/test-failed/coverages.ftl | 1 + .../src/test/resources/test-failed/events.ftl | 239 +++++++++++++ .../coverages.ftl | 1 + .../events.ftl | 274 +++++++++++++++ .../resources/test-itr-skipping/coverages.ftl | 1 + .../resources/test-itr-skipping/events.ftl | 227 ++++++++++++ .../test-parameterized/coverages.ftl | 1 + .../resources/test-parameterized/events.ftl | 331 ++++++++++++++++++ .../test/resources/test-succeed/coverages.ftl | 1 + .../test/resources/test-succeed/events.ftl | 236 +++++++++++++ settings.gradle.kts | 1 + 25 files changed, 2066 insertions(+) create mode 100644 dd-java-agent/instrumentation/karate/karate-2.0/build.gradle create mode 100644 dd-java-agent/instrumentation/karate/karate-2.0/src/main/java/datadog/trace/instrumentation/karate2/KarateInstrumentation.java create mode 100644 dd-java-agent/instrumentation/karate/karate-2.0/src/main/java21/datadog/trace/instrumentation/karate2/KarateBuilderAdvice.java create mode 100644 dd-java-agent/instrumentation/karate/karate-2.0/src/main/java21/datadog/trace/instrumentation/karate2/KarateTracingListener.java create mode 100644 dd-java-agent/instrumentation/karate/karate-2.0/src/main/java21/datadog/trace/instrumentation/karate2/KarateUtils.java create mode 100644 dd-java-agent/instrumentation/karate/karate-2.0/src/main/java21/datadog/trace/instrumentation/karate2/TestEventsHandlerHolder.java create mode 100644 dd-java-agent/instrumentation/karate/karate-2.0/src/test/groovy/KarateV2Test.groovy create mode 100644 dd-java-agent/instrumentation/karate/karate-2.0/src/test/java/org/example/TestFailedKarate.java create mode 100644 dd-java-agent/instrumentation/karate/karate-2.0/src/test/java/org/example/TestParameterizedKarate.java create mode 100644 dd-java-agent/instrumentation/karate/karate-2.0/src/test/java/org/example/TestSucceedKarate.java create mode 100644 dd-java-agent/instrumentation/karate/karate-2.0/src/test/java/org/example/karate-config.js create mode 100644 dd-java-agent/instrumentation/karate/karate-2.0/src/test/java/org/example/test_failed.feature create mode 100644 dd-java-agent/instrumentation/karate/karate-2.0/src/test/java/org/example/test_parameterized.feature create mode 100644 dd-java-agent/instrumentation/karate/karate-2.0/src/test/java/org/example/test_succeed.feature create mode 100644 dd-java-agent/instrumentation/karate/karate-2.0/src/test/resources/test-failed/coverages.ftl create mode 100644 dd-java-agent/instrumentation/karate/karate-2.0/src/test/resources/test-failed/events.ftl create mode 100644 dd-java-agent/instrumentation/karate/karate-2.0/src/test/resources/test-itr-skipping-parameterized/coverages.ftl create mode 100644 dd-java-agent/instrumentation/karate/karate-2.0/src/test/resources/test-itr-skipping-parameterized/events.ftl create mode 100644 dd-java-agent/instrumentation/karate/karate-2.0/src/test/resources/test-itr-skipping/coverages.ftl create mode 100644 dd-java-agent/instrumentation/karate/karate-2.0/src/test/resources/test-itr-skipping/events.ftl create mode 100644 dd-java-agent/instrumentation/karate/karate-2.0/src/test/resources/test-parameterized/coverages.ftl create mode 100644 dd-java-agent/instrumentation/karate/karate-2.0/src/test/resources/test-parameterized/events.ftl create mode 100644 dd-java-agent/instrumentation/karate/karate-2.0/src/test/resources/test-succeed/coverages.ftl create mode 100644 dd-java-agent/instrumentation/karate/karate-2.0/src/test/resources/test-succeed/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/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..5b3b7ad8d54 --- /dev/null +++ b/dd-java-agent/instrumentation/karate/karate-2.0/src/main/java/datadog/trace/instrumentation/karate2/KarateInstrumentation.java @@ -0,0 +1,44 @@ +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; + +/** + * 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 + ".KarateTracingListener", + packageName + ".KarateBuilderAdvice" + }; + } + + @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/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..3126c907eea --- /dev/null +++ b/dd-java-agent/instrumentation/karate/karate-2.0/src/main/java21/datadog/trace/instrumentation/karate2/KarateBuilderAdvice.java @@ -0,0 +1,20 @@ +package datadog.trace.instrumentation.karate2; + +import io.karatelabs.core.RunEvent; +import io.karatelabs.core.RunListener; +import io.karatelabs.core.Runner; +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) { + builder.listener(new KarateTracingListener()); + } + + // 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/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..2fa59009dd8 --- /dev/null +++ b/dd-java-agent/instrumentation/karate/karate-2.0/src/main/java21/datadog/trace/instrumentation/karate2/KarateTracingListener.java @@ -0,0 +1,240 @@ +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.telemetry.tag.SkipReason; +import datadog.trace.api.civisibility.telemetry.tag.TestFrameworkInstrumentation; +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"; + + @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()); + + 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(), + null); + return false; + } + } + + TestEventsHandlerHolder.TEST_EVENTS_HANDLER.onTestStart( + suiteDescriptor, + testDescriptor, + scenarioName, + FRAMEWORK_NAME, + FRAMEWORK_VERSION, + parameters, + categories, + TestSourceData.UNKNOWN, + null, + null); + return true; + } + + private void afterScenario(ScenarioRunEvent event) { + ScenarioRuntime sr = event.source(); + if (skipTracking(sr)) { + return; + } + ScenarioResult result = event.result(); + TestDescriptor testDescriptor = KarateUtils.toTestDescriptor(sr); + + Throwable failedReason = getFailedReason(result); + 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); + } + + TestEventsHandlerHolder.TEST_EVENTS_HANDLER.onTestFinish(testDescriptor, null, null); + } + + 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) { + if (result == null) { + return null; + } + Throwable error = result.getError(); + if (error != null) { + return error; + } + for (StepResult stepResult : result.getStepResults()) { + if (stepResult.getError() != null) { + return stepResult.getError(); + } + } + return null; + } + + 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..0d7b3d7e53f --- /dev/null +++ b/dd-java-agent/instrumentation/karate/karate-2.0/src/test/groovy/KarateV2Test.groovy @@ -0,0 +1,108 @@ +import datadog.trace.api.DisableTestTrace +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.TestFailedKarate +import org.example.TestParameterizedKarate +import org.example.TestSucceedKarate +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-parameterized" | true | [TestParameterizedKarate] + "test-failed" | false | [TestFailedKarate] + } + + 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"}') + ] + } + + 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/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/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/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/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_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_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/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-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-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/settings.gradle.kts b/settings.gradle.kts index 1d62faeba93..231dffad538 100644 --- a/settings.gradle.kts +++ b/settings.gradle.kts @@ -465,6 +465,7 @@ include( ":dd-java-agent:instrumentation:kafka:kafka-streams-0.11", ":dd-java-agent:instrumentation:kafka:kafka-streams-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", From 3d613de35fef62bd98c79e6f26e9bb648fd7a456 Mon Sep 17 00:00:00 2001 From: Daniel Mohedano Date: Mon, 13 Jul 2026 14:24:21 +0200 Subject: [PATCH 3/4] feat: execution instrumentation for karate v2 --- .../KarateExecutionInstrumentation.java | 85 ++ .../karate2/KarateInstrumentation.java | 9 + .../karate2/ExecutionContext.java | 56 ++ .../karate2/KarateBuilderAdvice.java | 7 +- .../karate2/KarateScenarioAdvice.java | 100 ++ .../karate2/KarateTracingListener.java | 50 +- .../src/test/groovy/KarateV2Test.groovy | 138 ++- .../src/test/java/org/example/Flaky.java | 12 + .../src/test/java/org/example/Slow.java | 12 + .../TestFailedParameterizedKarate.java | 17 + .../example/TestFailedThenSucceedKarate.java | 17 + .../TestParameterizedMoreCasesKarate.java | 17 + .../org/example/TestSkippedFeatureKarate.java | 19 + .../org/example/TestSucceedKarateSkipEfd.java | 17 + .../org/example/TestSucceedKarateSlow.java | 16 + .../org/example/TestSucceedOneCaseKarate.java | 17 + .../example/TestSucceedParallelKarate.java | 16 + .../org/example/TestUnskippableKarate.java | 16 + .../java/org/example/TestWithSetupKarate.java | 16 + .../example/test_failed_parameterized.feature | 13 + .../example/test_failed_then_succeed.feature | 4 + .../test_parameterized_more_cases.feature | 14 + .../org/example/test_succeed_one_case.feature | 6 + .../org/example/test_succeed_skip_efd.feature | 6 + .../org/example/test_succeed_slow.feature | 6 + .../java/org/example/test_unskippable.feature | 10 + .../java/org/example/test_with_setup.feature | 20 + .../coverages.ftl | 1 + .../events.ftl | 244 +++++ .../coverages.ftl | 1 + .../events.ftl | 525 ++++++++++ .../test-attempt-to-fix-failed/coverages.ftl | 1 + .../test-attempt-to-fix-failed/events.ftl | 243 +++++ .../coverages.ftl | 1 + .../events.ftl | 244 +++++ .../coverages.ftl | 1 + .../events.ftl | 525 ++++++++++ .../coverages.ftl | 1 + .../test-attempt-to-fix-succeeded/events.ftl | 520 ++++++++++ .../test-disabled-failed/coverages.ftl | 1 + .../resources/test-disabled-failed/events.ftl | 213 ++++ .../coverages.ftl | 1 + .../events.ftl | 926 ++++++++++++++++++ .../coverages.ftl | 1 + .../events.ftl | 333 +++++++ .../test-efd-known-test/coverages.ftl | 1 + .../resources/test-efd-known-test/events.ftl | 170 ++++ .../coverages.ftl | 1 + .../events.ftl | 809 +++++++++++++++ .../test-efd-new-slow-test/coverages.ftl | 1 + .../test-efd-new-slow-test/events.ftl | 241 +++++ .../resources/test-efd-new-test/coverages.ftl | 1 + .../resources/test-efd-new-test/events.ftl | 311 ++++++ .../test-efd-skip-new-test/coverages.ftl | 1 + .../test-efd-skip-new-test/events.ftl | 171 ++++ .../test-failed-then-succeed/coverages.ftl | 1 + .../test-failed-then-succeed/events.ftl | 310 ++++++ .../test-itr-unskippable/coverages.ftl | 1 + .../resources/test-itr-unskippable/events.ftl | 249 +++++ .../test-quarantined-failed-atr/coverages.ftl | 1 + .../test-quarantined-failed-atr/events.ftl | 533 ++++++++++ .../test-quarantined-failed-efd/coverages.ftl | 1 + .../test-quarantined-failed-efd/events.ftl | 533 ++++++++++ .../coverages.ftl | 1 + .../test-quarantined-failed-known/events.ftl | 381 +++++++ .../test-quarantined-failed/coverages.ftl | 1 + .../test-quarantined-failed/events.ftl | 240 +++++ .../resources/test-retry-failed/coverages.ftl | 1 + .../resources/test-retry-failed/events.ftl | 528 ++++++++++ .../test-retry-parameterized/coverages.ftl | 1 + .../test-retry-parameterized/events.ftl | 822 ++++++++++++++++ .../test-skipped-feature/coverages.ftl | 1 + .../resources/test-skipped-feature/events.ftl | 236 +++++ .../test-succeed-parallel/coverages.ftl | 1 + .../test-succeed-parallel/events.ftl | 236 +++++ .../resources/test-with-setup/coverages.ftl | 1 + .../test/resources/test-with-setup/events.ftl | 235 +++++ 77 files changed, 10495 insertions(+), 24 deletions(-) create mode 100644 dd-java-agent/instrumentation/karate/karate-2.0/src/main/java/datadog/trace/instrumentation/karate2/KarateExecutionInstrumentation.java create mode 100644 dd-java-agent/instrumentation/karate/karate-2.0/src/main/java21/datadog/trace/instrumentation/karate2/ExecutionContext.java create mode 100644 dd-java-agent/instrumentation/karate/karate-2.0/src/main/java21/datadog/trace/instrumentation/karate2/KarateScenarioAdvice.java create mode 100644 dd-java-agent/instrumentation/karate/karate-2.0/src/test/java/org/example/Flaky.java create mode 100644 dd-java-agent/instrumentation/karate/karate-2.0/src/test/java/org/example/Slow.java create mode 100644 dd-java-agent/instrumentation/karate/karate-2.0/src/test/java/org/example/TestFailedParameterizedKarate.java create mode 100644 dd-java-agent/instrumentation/karate/karate-2.0/src/test/java/org/example/TestFailedThenSucceedKarate.java create mode 100644 dd-java-agent/instrumentation/karate/karate-2.0/src/test/java/org/example/TestParameterizedMoreCasesKarate.java create mode 100644 dd-java-agent/instrumentation/karate/karate-2.0/src/test/java/org/example/TestSkippedFeatureKarate.java create mode 100644 dd-java-agent/instrumentation/karate/karate-2.0/src/test/java/org/example/TestSucceedKarateSkipEfd.java create mode 100644 dd-java-agent/instrumentation/karate/karate-2.0/src/test/java/org/example/TestSucceedKarateSlow.java create mode 100644 dd-java-agent/instrumentation/karate/karate-2.0/src/test/java/org/example/TestSucceedOneCaseKarate.java create mode 100644 dd-java-agent/instrumentation/karate/karate-2.0/src/test/java/org/example/TestSucceedParallelKarate.java create mode 100644 dd-java-agent/instrumentation/karate/karate-2.0/src/test/java/org/example/TestUnskippableKarate.java create mode 100644 dd-java-agent/instrumentation/karate/karate-2.0/src/test/java/org/example/TestWithSetupKarate.java create mode 100644 dd-java-agent/instrumentation/karate/karate-2.0/src/test/java/org/example/test_failed_parameterized.feature create mode 100644 dd-java-agent/instrumentation/karate/karate-2.0/src/test/java/org/example/test_failed_then_succeed.feature create mode 100644 dd-java-agent/instrumentation/karate/karate-2.0/src/test/java/org/example/test_parameterized_more_cases.feature create mode 100644 dd-java-agent/instrumentation/karate/karate-2.0/src/test/java/org/example/test_succeed_one_case.feature create mode 100644 dd-java-agent/instrumentation/karate/karate-2.0/src/test/java/org/example/test_succeed_skip_efd.feature create mode 100644 dd-java-agent/instrumentation/karate/karate-2.0/src/test/java/org/example/test_succeed_slow.feature create mode 100644 dd-java-agent/instrumentation/karate/karate-2.0/src/test/java/org/example/test_unskippable.feature create mode 100644 dd-java-agent/instrumentation/karate/karate-2.0/src/test/java/org/example/test_with_setup.feature create mode 100644 dd-java-agent/instrumentation/karate/karate-2.0/src/test/resources/test-attempt-to-fix-disabled-failed/coverages.ftl create mode 100644 dd-java-agent/instrumentation/karate/karate-2.0/src/test/resources/test-attempt-to-fix-disabled-failed/events.ftl create mode 100644 dd-java-agent/instrumentation/karate/karate-2.0/src/test/resources/test-attempt-to-fix-disabled-succeeded/coverages.ftl create mode 100644 dd-java-agent/instrumentation/karate/karate-2.0/src/test/resources/test-attempt-to-fix-disabled-succeeded/events.ftl create mode 100644 dd-java-agent/instrumentation/karate/karate-2.0/src/test/resources/test-attempt-to-fix-failed/coverages.ftl create mode 100644 dd-java-agent/instrumentation/karate/karate-2.0/src/test/resources/test-attempt-to-fix-failed/events.ftl create mode 100644 dd-java-agent/instrumentation/karate/karate-2.0/src/test/resources/test-attempt-to-fix-quarantined-failed/coverages.ftl create mode 100644 dd-java-agent/instrumentation/karate/karate-2.0/src/test/resources/test-attempt-to-fix-quarantined-failed/events.ftl create mode 100644 dd-java-agent/instrumentation/karate/karate-2.0/src/test/resources/test-attempt-to-fix-quarantined-succeeded/coverages.ftl create mode 100644 dd-java-agent/instrumentation/karate/karate-2.0/src/test/resources/test-attempt-to-fix-quarantined-succeeded/events.ftl create mode 100644 dd-java-agent/instrumentation/karate/karate-2.0/src/test/resources/test-attempt-to-fix-succeeded/coverages.ftl create mode 100644 dd-java-agent/instrumentation/karate/karate-2.0/src/test/resources/test-attempt-to-fix-succeeded/events.ftl create mode 100644 dd-java-agent/instrumentation/karate/karate-2.0/src/test/resources/test-disabled-failed/coverages.ftl create mode 100644 dd-java-agent/instrumentation/karate/karate-2.0/src/test/resources/test-disabled-failed/events.ftl create mode 100644 dd-java-agent/instrumentation/karate/karate-2.0/src/test/resources/test-efd-faulty-session-threshold/coverages.ftl create mode 100644 dd-java-agent/instrumentation/karate/karate-2.0/src/test/resources/test-efd-faulty-session-threshold/events.ftl create mode 100644 dd-java-agent/instrumentation/karate/karate-2.0/src/test/resources/test-efd-known-parameterized-test/coverages.ftl create mode 100644 dd-java-agent/instrumentation/karate/karate-2.0/src/test/resources/test-efd-known-parameterized-test/events.ftl create mode 100644 dd-java-agent/instrumentation/karate/karate-2.0/src/test/resources/test-efd-known-test/coverages.ftl create mode 100644 dd-java-agent/instrumentation/karate/karate-2.0/src/test/resources/test-efd-known-test/events.ftl create mode 100644 dd-java-agent/instrumentation/karate/karate-2.0/src/test/resources/test-efd-new-parameterized-test/coverages.ftl create mode 100644 dd-java-agent/instrumentation/karate/karate-2.0/src/test/resources/test-efd-new-parameterized-test/events.ftl create mode 100644 dd-java-agent/instrumentation/karate/karate-2.0/src/test/resources/test-efd-new-slow-test/coverages.ftl create mode 100644 dd-java-agent/instrumentation/karate/karate-2.0/src/test/resources/test-efd-new-slow-test/events.ftl create mode 100644 dd-java-agent/instrumentation/karate/karate-2.0/src/test/resources/test-efd-new-test/coverages.ftl create mode 100644 dd-java-agent/instrumentation/karate/karate-2.0/src/test/resources/test-efd-new-test/events.ftl create mode 100644 dd-java-agent/instrumentation/karate/karate-2.0/src/test/resources/test-efd-skip-new-test/coverages.ftl create mode 100644 dd-java-agent/instrumentation/karate/karate-2.0/src/test/resources/test-efd-skip-new-test/events.ftl create mode 100644 dd-java-agent/instrumentation/karate/karate-2.0/src/test/resources/test-failed-then-succeed/coverages.ftl create mode 100644 dd-java-agent/instrumentation/karate/karate-2.0/src/test/resources/test-failed-then-succeed/events.ftl create mode 100644 dd-java-agent/instrumentation/karate/karate-2.0/src/test/resources/test-itr-unskippable/coverages.ftl create mode 100644 dd-java-agent/instrumentation/karate/karate-2.0/src/test/resources/test-itr-unskippable/events.ftl create mode 100644 dd-java-agent/instrumentation/karate/karate-2.0/src/test/resources/test-quarantined-failed-atr/coverages.ftl create mode 100644 dd-java-agent/instrumentation/karate/karate-2.0/src/test/resources/test-quarantined-failed-atr/events.ftl create mode 100644 dd-java-agent/instrumentation/karate/karate-2.0/src/test/resources/test-quarantined-failed-efd/coverages.ftl create mode 100644 dd-java-agent/instrumentation/karate/karate-2.0/src/test/resources/test-quarantined-failed-efd/events.ftl create mode 100644 dd-java-agent/instrumentation/karate/karate-2.0/src/test/resources/test-quarantined-failed-known/coverages.ftl create mode 100644 dd-java-agent/instrumentation/karate/karate-2.0/src/test/resources/test-quarantined-failed-known/events.ftl create mode 100644 dd-java-agent/instrumentation/karate/karate-2.0/src/test/resources/test-quarantined-failed/coverages.ftl create mode 100644 dd-java-agent/instrumentation/karate/karate-2.0/src/test/resources/test-quarantined-failed/events.ftl create mode 100644 dd-java-agent/instrumentation/karate/karate-2.0/src/test/resources/test-retry-failed/coverages.ftl create mode 100644 dd-java-agent/instrumentation/karate/karate-2.0/src/test/resources/test-retry-failed/events.ftl create mode 100644 dd-java-agent/instrumentation/karate/karate-2.0/src/test/resources/test-retry-parameterized/coverages.ftl create mode 100644 dd-java-agent/instrumentation/karate/karate-2.0/src/test/resources/test-retry-parameterized/events.ftl create mode 100644 dd-java-agent/instrumentation/karate/karate-2.0/src/test/resources/test-skipped-feature/coverages.ftl create mode 100644 dd-java-agent/instrumentation/karate/karate-2.0/src/test/resources/test-skipped-feature/events.ftl create mode 100644 dd-java-agent/instrumentation/karate/karate-2.0/src/test/resources/test-succeed-parallel/coverages.ftl create mode 100644 dd-java-agent/instrumentation/karate/karate-2.0/src/test/resources/test-succeed-parallel/events.ftl create mode 100644 dd-java-agent/instrumentation/karate/karate-2.0/src/test/resources/test-with-setup/coverages.ftl create mode 100644 dd-java-agent/instrumentation/karate/karate-2.0/src/test/resources/test-with-setup/events.ftl 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..890a85ba1d8 --- /dev/null +++ b/dd-java-agent/instrumentation/karate/karate-2.0/src/main/java/datadog/trace/instrumentation/karate2/KarateExecutionInstrumentation.java @@ -0,0 +1,85 @@ +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. + * + *

+ * + * Compiled for Java 8 (see {@link KarateInstrumentation}); the advice lives in the {@code java21} + * source set. + */ +@AutoService(InstrumenterModule.class) +public class KarateExecutionInstrumentation extends InstrumenterModule.CiVisibility + implements Instrumenter.ForKnownTypes, Instrumenter.HasMethodAdvice { + + public KarateExecutionInstrumentation() { + super("ci-visibility", "karate", "test-retry"); + } + + @Override + public boolean isEnabled() { + return super.isEnabled() && Config.get().isCiVisibilityExecutionPoliciesEnabled(); + } + + @Override + public String[] knownMatchingTypes() { + return new String[] {"io.karatelabs.core.ScenarioRuntime", "io.karatelabs.core.ScenarioResult"}; + } + + @Override + public String[] helperClassNames() { + return new String[] { + packageName + ".KarateUtils", + packageName + ".TestEventsHandlerHolder", + packageName + ".ExecutionContext", + packageName + ".KarateTracingListener", + packageName + ".KarateScenarioAdvice", + packageName + ".KarateScenarioAdvice$RetryAdvice", + packageName + ".KarateScenarioAdvice$SuppressErrorAdvice" + }; + } + + @Override + public Map 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 index 5b3b7ad8d54..522c8a464fc 100644 --- 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 @@ -5,6 +5,8 @@ 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 @@ -32,11 +34,18 @@ 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 index 3126c907eea..54bda255b9c 100644 --- 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 @@ -1,8 +1,11 @@ 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. */ @@ -10,7 +13,9 @@ public class KarateBuilderAdvice { @Advice.OnMethodExit public static void onRunnerBuilderConstructorExit(@Advice.This Runner.Builder builder) { - builder.listener(new KarateTracingListener()); + ContextStore scenarioContext = + InstrumentationContext.get(Scenario.class, ExecutionContext.class); + builder.listener(new KarateTracingListener(scenarioContext)); } // Karate 2.0.0 and above 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 index 2fa59009dd8..ce37bdc0ffa 100644 --- 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 @@ -6,8 +6,10 @@ 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; @@ -34,6 +36,12 @@ public class KarateTracingListener implements RunListener { 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(); @@ -101,6 +109,9 @@ private boolean beforeScenario(ScenarioRunEvent event) { 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); @@ -119,7 +130,7 @@ private boolean beforeScenario(ScenarioRunEvent event) { categories, TestSourceData.UNKNOWN, skipReason.getDescription(), - null); + executionTracker); return false; } } @@ -134,7 +145,7 @@ private boolean beforeScenario(ScenarioRunEvent event) { categories, TestSourceData.UNKNOWN, null, - null); + executionTracker); return true; } @@ -143,17 +154,23 @@ private void afterScenario(ScenarioRunEvent event) { if (skipTracking(sr)) { return; } + Scenario scenario = sr.getScenario(); ScenarioResult result = event.result(); TestDescriptor testDescriptor = KarateUtils.toTestDescriptor(sr); - Throwable failedReason = getFailedReason(result); + 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); } - TestEventsHandlerHolder.TEST_EVENTS_HANDLER.onTestFinish(testDescriptor, null, null); + TestExecutionTracker executionTracker = context != null ? context.getExecutionPolicy() : null; + TestEventsHandlerHolder.TEST_EVENTS_HANDLER.onTestFinish( + testDescriptor, null, executionTracker); } private void beforeStep(StepRunEvent event) { @@ -187,20 +204,21 @@ private void afterStep(StepRunEvent event) { span.finish(); } - private static Throwable getFailedReason(ScenarioResult result) { - if (result == null) { - return null; - } - Throwable error = result.getError(); - if (error != null) { - return error; - } - for (StepResult stepResult : result.getStepResults()) { - if (stepResult.getError() != null) { - return stepResult.getError(); + 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(); + } } } - return null; + // 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) { 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 index 0d7b3d7e53f..a295dd66deb 100644 --- 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 @@ -1,11 +1,10 @@ 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.TestFailedKarate -import org.example.TestParameterizedKarate -import org.example.TestSucceedKarate +import org.example.* import org.junit.jupiter.engine.JupiterTestEngine import org.junit.platform.engine.DiscoverySelector import org.junit.platform.engine.TestExecutionResult @@ -28,10 +27,13 @@ class KarateV2Test extends CiVisibilityInstrumentationTest { assertSpansData(testcaseName) where: - testcaseName | success | tests - "test-succeed" | true | [TestSucceedKarate] - "test-parameterized" | true | [TestParameterizedKarate] - "test-failed" | false | [TestFailedKarate] + 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"() { @@ -47,6 +49,128 @@ class KarateV2Test extends CiVisibilityInstrumentationTest { "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) { 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/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/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/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/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_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_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-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-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-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 From d130935321f5246712ef93c53152959b5d81cbd4 Mon Sep 17 00:00:00 2001 From: Daniel Mohedano Date: Mon, 13 Jul 2026 15:43:11 +0200 Subject: [PATCH 4/4] chore: spotless --- .../karate2/KarateExecutionInstrumentation.java | 6 ++++-- .../karate/karate-2.0/src/test/groovy/KarateV2Test.groovy | 8 ++------ 2 files changed, 6 insertions(+), 8 deletions(-) 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 index 890a85ba1d8..8b88bf2476e 100644 --- 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 @@ -20,8 +20,10 @@ * Karate v2. * *
    - *
  • {@code ScenarioRuntime#call()} is advised to re-run the scenario while the execution policy is applicable, overriding the returned {@code ScenarioResult} with the final attempt. - *
  • {@code ScenarioResult#addStepResult(StepResult)} is advised to replace a failing step with a skipped one when the policy requests failure suppression. + *
  • {@code ScenarioRuntime#call()} is advised to re-run the scenario while the execution policy + * is applicable, overriding the returned {@code ScenarioResult} with the final attempt. + *
  • {@code ScenarioResult#addStepResult(StepResult)} is advised to replace a failing step with + * a skipped one when the policy requests failure suppression. *
* * Compiled for Java 8 (see {@link KarateInstrumentation}); the advice lives in the {@code java21} 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 index a295dd66deb..84d52bbf87f 100644 --- 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 @@ -66,9 +66,7 @@ class KarateV2Test extends CiVisibilityInstrumentationTest { 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-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") ] @@ -84,9 +82,7 @@ class KarateV2Test extends CiVisibilityInstrumentationTest { where: testcaseName | tests | knownTestsList - "test-efd-known-test" | [TestSucceedOneCaseKarate] | [ - new TestFQN("[org/example/test_succeed_one_case] test succeed", "first scenario") - ] + "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") ]