From 7a0b1534d47175393a9ccf9d1c9807a6275ef59c Mon Sep 17 00:00:00 2001 From: Nikita Tkachenko Date: Fri, 14 Feb 2025 12:41:43 +0100 Subject: [PATCH] Disable backend requests for impacted tests data --- .../config/ExecutionSettingsFactoryImpl.java | 38 ++++++++++--------- .../datadog/smoketest/MavenSmokeTest.groovy | 3 +- .../trace/api/config/CiVisibilityConfig.java | 2 + .../main/java/datadog/trace/api/Config.java | 7 ++++ 4 files changed, 31 insertions(+), 19 deletions(-) diff --git a/dd-java-agent/agent-ci-visibility/src/main/java/datadog/trace/civisibility/config/ExecutionSettingsFactoryImpl.java b/dd-java-agent/agent-ci-visibility/src/main/java/datadog/trace/civisibility/config/ExecutionSettingsFactoryImpl.java index 3ad98f2f02d..cab997654b1 100644 --- a/dd-java-agent/agent-ci-visibility/src/main/java/datadog/trace/civisibility/config/ExecutionSettingsFactoryImpl.java +++ b/dd-java-agent/agent-ci-visibility/src/main/java/datadog/trace/civisibility/config/ExecutionSettingsFactoryImpl.java @@ -431,28 +431,30 @@ private Diff getPullRequestDiff( LOGGER.error("Could not get git diff for PR: {}", pullRequestInfo, e); } - try { - ChangedFiles changedFiles = configurationApi.getChangedFiles(tracerEnvironment); - - // attempting to use base SHA returned by the backend to calculate git diff - if (repositoryRoot != null) { - // ensure repo is not shallow before attempting to get git diff - gitRepoUnshallow.unshallow(); - Diff diff = gitClient.getGitDiff(changedFiles.getBaseSha(), tracerEnvironment.getSha()); - if (diff != null) { - return diff; + if (config.isCiVisibilityImpactedTestsBackendRequestEnabled()) { + try { + ChangedFiles changedFiles = configurationApi.getChangedFiles(tracerEnvironment); + + // attempting to use base SHA returned by the backend to calculate git diff + if (repositoryRoot != null) { + // ensure repo is not shallow before attempting to get git diff + gitRepoUnshallow.unshallow(); + Diff diff = gitClient.getGitDiff(changedFiles.getBaseSha(), tracerEnvironment.getSha()); + if (diff != null) { + return diff; + } } - } - // falling back to file-level granularity - return new FileDiff(changedFiles.getFiles()); + // falling back to file-level granularity + return new FileDiff(changedFiles.getFiles()); - } catch (InterruptedException e) { - LOGGER.error("Interrupted while getting git diff for: {}", tracerEnvironment, e); - Thread.currentThread().interrupt(); + } catch (InterruptedException e) { + LOGGER.error("Interrupted while getting git diff for: {}", tracerEnvironment, e); + Thread.currentThread().interrupt(); - } catch (Exception e) { - LOGGER.error("Could not get git diff for: {}", tracerEnvironment, e); + } catch (Exception e) { + LOGGER.error("Could not get git diff for: {}", tracerEnvironment, e); + } } return LineDiff.EMPTY; diff --git a/dd-smoke-tests/maven/src/test/groovy/datadog/smoketest/MavenSmokeTest.groovy b/dd-smoke-tests/maven/src/test/groovy/datadog/smoketest/MavenSmokeTest.groovy index 4a82bcd2b04..6087564b655 100644 --- a/dd-smoke-tests/maven/src/test/groovy/datadog/smoketest/MavenSmokeTest.groovy +++ b/dd-smoke-tests/maven/src/test/groovy/datadog/smoketest/MavenSmokeTest.groovy @@ -116,7 +116,8 @@ class MavenSmokeTest extends CiVisibilitySmokeTest { mockBackend.givenChangedFile("src/test/java/datadog/smoke/TestSucceed.java") def exitCode = whenRunningMavenBuild([ - "${Strings.propertyNameToSystemPropertyName(CiVisibilityConfig.CIVISIBILITY_GIT_CLIENT_ENABLED)}=false" as String + "${Strings.propertyNameToSystemPropertyName(CiVisibilityConfig.CIVISIBILITY_GIT_CLIENT_ENABLED)}=false" as String, + "${Strings.propertyNameToSystemPropertyName(CiVisibilityConfig.CIVISIBILITY_IMPACTED_TESTS_BACKEND_REQUEST_ENABLED)}=true" as String ], []) assert exitCode == 0 diff --git a/dd-trace-api/src/main/java/datadog/trace/api/config/CiVisibilityConfig.java b/dd-trace-api/src/main/java/datadog/trace/api/config/CiVisibilityConfig.java index 6601e3265aa..20bda97610f 100644 --- a/dd-trace-api/src/main/java/datadog/trace/api/config/CiVisibilityConfig.java +++ b/dd-trace-api/src/main/java/datadog/trace/api/config/CiVisibilityConfig.java @@ -54,6 +54,8 @@ public final class CiVisibilityConfig { public static final String CIVISIBILITY_FLAKY_RETRY_ENABLED = "civisibility.flaky.retry.enabled"; public static final String CIVISIBILITY_IMPACTED_TESTS_DETECTION_ENABLED = "civisibility.impacted.tests.detection.enabled"; + public static final String CIVISIBILITY_IMPACTED_TESTS_BACKEND_REQUEST_ENABLED = + "civisibility.impacted.tests.backend.request.enabled"; public static final String CIVISIBILITY_KNOWN_TESTS_REQUEST_ENABLED = "civisibility.known.tests.request.enabled"; public static final String CIVISIBILITY_FLAKY_RETRY_ONLY_KNOWN_FLAKES = diff --git a/internal-api/src/main/java/datadog/trace/api/Config.java b/internal-api/src/main/java/datadog/trace/api/Config.java index e6441d3cbdf..b0f8e40ca35 100644 --- a/internal-api/src/main/java/datadog/trace/api/Config.java +++ b/internal-api/src/main/java/datadog/trace/api/Config.java @@ -359,6 +359,7 @@ public static String getHostName() { private final List ciVisibilityResourceFolderNames; private final boolean ciVisibilityFlakyRetryEnabled; private final boolean ciVisibilityImpactedTestsDetectionEnabled; + private final boolean ciVisibilityImpactedTestsBackendRequestEnabled; private final boolean ciVisibilityKnownTestsRequestEnabled; private final boolean ciVisibilityFlakyRetryOnlyKnownFlakes; private final int ciVisibilityFlakyRetryCount; @@ -1501,6 +1502,8 @@ PROFILING_DATADOG_PROFILER_ENABLED, isDatadogProfilerSafeInCurrentEnvironment()) configProvider.getBoolean(CIVISIBILITY_FLAKY_RETRY_ENABLED, true); ciVisibilityImpactedTestsDetectionEnabled = configProvider.getBoolean(CIVISIBILITY_IMPACTED_TESTS_DETECTION_ENABLED, true); + ciVisibilityImpactedTestsBackendRequestEnabled = + configProvider.getBoolean(CIVISIBILITY_IMPACTED_TESTS_BACKEND_REQUEST_ENABLED, false); ciVisibilityKnownTestsRequestEnabled = configProvider.getBoolean(CIVISIBILITY_KNOWN_TESTS_REQUEST_ENABLED, true); ciVisibilityFlakyRetryOnlyKnownFlakes = @@ -2945,6 +2948,10 @@ public boolean isCiVisibilityImpactedTestsDetectionEnabled() { return ciVisibilityImpactedTestsDetectionEnabled; } + public boolean isCiVisibilityImpactedTestsBackendRequestEnabled() { + return ciVisibilityImpactedTestsBackendRequestEnabled; + } + public boolean isCiVisibilityKnownTestsRequestEnabled() { return ciVisibilityKnownTestsRequestEnabled; }