From 4e39330eff50c88138881dec0027c518850e0153 Mon Sep 17 00:00:00 2001 From: Nikita Tkachenko Date: Thu, 2 Oct 2025 18:57:36 +0200 Subject: [PATCH 1/3] Minor fixes for code coverage report upload --- .../coverage/report/CoverageReportUploader.java | 2 +- .../gradle/legacy/GradleProjectConfigurator.groovy | 6 +++--- .../maven3/MavenProjectConfigurator.java | 13 ++++++++----- 3 files changed, 12 insertions(+), 9 deletions(-) diff --git a/dd-java-agent/agent-ci-visibility/src/main/java/datadog/trace/civisibility/coverage/report/CoverageReportUploader.java b/dd-java-agent/agent-ci-visibility/src/main/java/datadog/trace/civisibility/coverage/report/CoverageReportUploader.java index 65423dd46ae..0d0ffef37c9 100644 --- a/dd-java-agent/agent-ci-visibility/src/main/java/datadog/trace/civisibility/coverage/report/CoverageReportUploader.java +++ b/dd-java-agent/agent-ci-visibility/src/main/java/datadog/trace/civisibility/coverage/report/CoverageReportUploader.java @@ -65,7 +65,7 @@ public void upload(String format, InputStream reportStream) throws IOException { .requestCount(CiVisibilityCountMetric.COVERAGE_UPLOAD_REQUEST) .requestBytes(CiVisibilityDistributionMetric.COVERAGE_UPLOAD_REQUEST_BYTES) .requestErrors(CiVisibilityCountMetric.COVERAGE_UPLOAD_REQUEST_ERRORS) - .requestDuration(CiVisibilityDistributionMetric.KNOWN_TESTS_REQUEST_MS) + .requestDuration(CiVisibilityDistributionMetric.COVERAGE_UPLOAD_REQUEST_MS) .build(); backendApi.post("cicovreprt", multipartBody, responseStream -> null, telemetryListener, false); diff --git a/dd-java-agent/instrumentation/gradle/gradle-3.0/src/main/groovy/datadog/trace/instrumentation/gradle/legacy/GradleProjectConfigurator.groovy b/dd-java-agent/instrumentation/gradle/gradle-3.0/src/main/groovy/datadog/trace/instrumentation/gradle/legacy/GradleProjectConfigurator.groovy index cc7b1bf205d..43d4fb64128 100644 --- a/dd-java-agent/instrumentation/gradle/gradle-3.0/src/main/groovy/datadog/trace/instrumentation/gradle/legacy/GradleProjectConfigurator.groovy +++ b/dd-java-agent/instrumentation/gradle/gradle-3.0/src/main/groovy/datadog/trace/instrumentation/gradle/legacy/GradleProjectConfigurator.groovy @@ -187,12 +187,12 @@ class GradleProjectConfigurator { private void configureJacoco(Project project, BuildSessionSettings sessionSettings) { def config = Config.get() - if (project.plugins.hasPlugin(JACOCO_PLUGIN_ID)) { - // Jacoco is already configured for this project + if (!config.isCiVisibilityJacocoPluginVersionProvided() && !sessionSettings.isCoverageReportUploadEnabled()) { return } - if (!config.isCiVisibilityJacocoPluginVersionProvided() && !sessionSettings.isCoverageReportUploadEnabled()) { + if (project.plugins.hasPlugin(JACOCO_PLUGIN_ID)) { + // Jacoco is already configured for this project return } diff --git a/dd-java-agent/instrumentation/maven/maven-3.2.1/src/main/java/datadog/trace/instrumentation/maven3/MavenProjectConfigurator.java b/dd-java-agent/instrumentation/maven/maven-3.2.1/src/main/java/datadog/trace/instrumentation/maven3/MavenProjectConfigurator.java index 73937478165..914a80f93e9 100644 --- a/dd-java-agent/instrumentation/maven/maven-3.2.1/src/main/java/datadog/trace/instrumentation/maven3/MavenProjectConfigurator.java +++ b/dd-java-agent/instrumentation/maven/maven-3.2.1/src/main/java/datadog/trace/instrumentation/maven3/MavenProjectConfigurator.java @@ -245,14 +245,17 @@ private static Xpp3Dom addAnnotationProcessorPath( void configureJacoco( MavenSession session, MavenProject project, BuildSessionSettings sessionSettings) { excludeDatadogClassLoaderFromJacocoInstrumentation(project); - if (runsWithJacoco(session, project)) { - // Jacoco is already configured for this project + if (!Config.get().isCiVisibilityJacocoPluginVersionProvided() + && !sessionSettings.isCoverageReportUploadEnabled()) { return; } - if (Config.get().isCiVisibilityJacocoPluginVersionProvided() - || sessionSettings.isCoverageReportUploadEnabled()) { - configureJacocoPlugin(project, sessionSettings); + + if (!runsWithJacoco(session, project)) { + // Jacoco is already configured for this project + return; } + + configureJacocoPlugin(project, sessionSettings); } private boolean runsWithJacoco(MavenSession session, MavenProject project) { From c263979d422dc0f5bafc7a3d9934cb5fbc8fce64 Mon Sep 17 00:00:00 2001 From: Nikita Tkachenko Date: Fri, 3 Oct 2025 14:07:11 +0200 Subject: [PATCH 2/3] Fix a typo --- .../trace/instrumentation/maven3/MavenProjectConfigurator.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/dd-java-agent/instrumentation/maven/maven-3.2.1/src/main/java/datadog/trace/instrumentation/maven3/MavenProjectConfigurator.java b/dd-java-agent/instrumentation/maven/maven-3.2.1/src/main/java/datadog/trace/instrumentation/maven3/MavenProjectConfigurator.java index 914a80f93e9..dd63e02b0e0 100644 --- a/dd-java-agent/instrumentation/maven/maven-3.2.1/src/main/java/datadog/trace/instrumentation/maven3/MavenProjectConfigurator.java +++ b/dd-java-agent/instrumentation/maven/maven-3.2.1/src/main/java/datadog/trace/instrumentation/maven3/MavenProjectConfigurator.java @@ -250,7 +250,7 @@ void configureJacoco( return; } - if (!runsWithJacoco(session, project)) { + if (runsWithJacoco(session, project)) { // Jacoco is already configured for this project return; } From ab6442a08fc24e78f635ffd19ace97e4ee3c7b80 Mon Sep 17 00:00:00 2001 From: Nikita Tkachenko Date: Fri, 3 Oct 2025 16:36:53 +0200 Subject: [PATCH 3/3] Add failed test replay enabled allowed metric --- .../api/civisibility/telemetry/CiVisibilityCountMetric.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/internal-api/src/main/java/datadog/trace/api/civisibility/telemetry/CiVisibilityCountMetric.java b/internal-api/src/main/java/datadog/trace/api/civisibility/telemetry/CiVisibilityCountMetric.java index 58076bb5eb8..9347472a101 100644 --- a/internal-api/src/main/java/datadog/trace/api/civisibility/telemetry/CiVisibilityCountMetric.java +++ b/internal-api/src/main/java/datadog/trace/api/civisibility/telemetry/CiVisibilityCountMetric.java @@ -71,7 +71,8 @@ public enum CiVisibilityCountMetric { IsHeadless.class, HasCodeowner.class, IsUnsupportedCI.class, - EarlyFlakeDetectionAbortReason.class), + EarlyFlakeDetectionAbortReason.class, + FailedTestReplayEnabled.SessionMetric.class), /** The number of test events finished */ TEST_EVENT_FINISHED( "event_finished",