Skip to content

Commit d5d53cd

Browse files
Add commit discrepancies telemetry when building repository git information (#8763)
1 parent c2faab3 commit d5d53cd

File tree

14 files changed

+334
-27
lines changed

14 files changed

+334
-27
lines changed

dd-java-agent/agent-ci-visibility/src/main/java/datadog/trace/civisibility/git/CILocalGitInfoBuilder.java

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
package datadog.trace.civisibility.git;
22

3+
import datadog.trace.api.civisibility.telemetry.tag.GitProviderDiscrepant;
4+
import datadog.trace.api.civisibility.telemetry.tag.GitProviderExpected;
35
import datadog.trace.api.git.GitInfo;
46
import datadog.trace.api.git.GitInfoBuilder;
57
import datadog.trace.civisibility.git.tree.GitClient;
@@ -54,4 +56,14 @@ private Path getGitPath(String repositoryPath) {
5456
public int order() {
5557
return 2;
5658
}
59+
60+
@Override
61+
public GitProviderExpected providerAsExpected() {
62+
return GitProviderExpected.LOCAL_GIT;
63+
}
64+
65+
@Override
66+
public GitProviderDiscrepant providerAsDiscrepant() {
67+
return GitProviderDiscrepant.LOCAL_GIT;
68+
}
5769
}

dd-java-agent/agent-ci-visibility/src/main/java/datadog/trace/civisibility/git/CIProviderGitInfoBuilder.java

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,8 @@
11
package datadog.trace.civisibility.git;
22

33
import datadog.trace.api.Config;
4+
import datadog.trace.api.civisibility.telemetry.tag.GitProviderDiscrepant;
5+
import datadog.trace.api.civisibility.telemetry.tag.GitProviderExpected;
46
import datadog.trace.api.git.GitInfo;
57
import datadog.trace.api.git.GitInfoBuilder;
68
import datadog.trace.civisibility.ci.CIProviderInfo;
@@ -32,4 +34,14 @@ public GitInfo build(@Nullable String repositoryPath) {
3234
public int order() {
3335
return 1;
3436
}
37+
38+
@Override
39+
public GitProviderExpected providerAsExpected() {
40+
return GitProviderExpected.CI_PROVIDER;
41+
}
42+
43+
@Override
44+
public GitProviderDiscrepant providerAsDiscrepant() {
45+
return GitProviderDiscrepant.CI_PROVIDER;
46+
}
3547
}

dd-java-agent/agent-ci-visibility/src/main/java/datadog/trace/civisibility/git/GitClientGitInfoBuilder.java

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,8 @@
11
package datadog.trace.civisibility.git;
22

33
import datadog.trace.api.Config;
4+
import datadog.trace.api.civisibility.telemetry.tag.GitProviderDiscrepant;
5+
import datadog.trace.api.civisibility.telemetry.tag.GitProviderExpected;
46
import datadog.trace.api.git.CommitInfo;
57
import datadog.trace.api.git.GitInfo;
68
import datadog.trace.api.git.GitInfoBuilder;
@@ -64,4 +66,14 @@ public GitInfo build(@Nullable String repositoryPath) {
6466
public int order() {
6567
return 3;
6668
}
69+
70+
@Override
71+
public GitProviderExpected providerAsExpected() {
72+
return GitProviderExpected.GIT_CLIENT;
73+
}
74+
75+
@Override
76+
public GitProviderDiscrepant providerAsDiscrepant() {
77+
return GitProviderDiscrepant.GIT_CLIENT;
78+
}
6779
}

internal-api/build.gradle

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -139,6 +139,7 @@ excludedClassesCoverage += [
139139
// POJO
140140
"datadog.trace.api.git.GitInfo",
141141
"datadog.trace.api.git.GitInfoProvider",
142+
"datadog.trace.api.git.GitInfoProvider.ShaDiscrepancy",
142143
// POJO
143144
"datadog.trace.api.git.PersonInfo",
144145
// POJO

internal-api/src/main/java/datadog/trace/api/civisibility/telemetry/CiVisibilityCountMetric.java

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,10 @@
1414
import datadog.trace.api.civisibility.telemetry.tag.ExitCode;
1515
import datadog.trace.api.civisibility.telemetry.tag.FailFastTestOrderEnabled;
1616
import datadog.trace.api.civisibility.telemetry.tag.FlakyTestRetriesEnabled;
17+
import datadog.trace.api.civisibility.telemetry.tag.GitProviderDiscrepant;
18+
import datadog.trace.api.civisibility.telemetry.tag.GitProviderExpected;
19+
import datadog.trace.api.civisibility.telemetry.tag.GitShaDiscrepancyType;
20+
import datadog.trace.api.civisibility.telemetry.tag.GitShaMatch;
1721
import datadog.trace.api.civisibility.telemetry.tag.HasCodeowner;
1822
import datadog.trace.api.civisibility.telemetry.tag.HasFailedAllRetries;
1923
import datadog.trace.api.civisibility.telemetry.tag.ImpactedTestsDetectionEnabled;
@@ -101,6 +105,14 @@ public enum CiVisibilityCountMetric {
101105
GIT_COMMAND("git.command", Command.class),
102106
/** The number of git commands that errored */
103107
GIT_COMMAND_ERRORS("git.command_errors", Command.class, ExitCode.class),
108+
/** Number of commit sha comparisons and if they matched when building git info for a repo */
109+
GIT_COMMIT_SHA_MATCH("git.commit_sha_match", GitShaMatch.class),
110+
/** Number of sha mismatches when building git info for a repo */
111+
GIT_COMMIT_SHA_DISCREPANCY(
112+
"git.commit_sha_discrepancy",
113+
GitProviderExpected.class,
114+
GitProviderDiscrepant.class,
115+
GitShaDiscrepancyType.class),
104116
/** The number of requests sent to the search commit endpoint */
105117
GIT_REQUESTS_SEARCH_COMMITS("git_requests.search_commits", RequestCompressed.class),
106118
/** The number of search commit requests sent to the endpoint that errored */
Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
package datadog.trace.api.civisibility.telemetry.tag;
2+
3+
import datadog.trace.api.civisibility.telemetry.TagValue;
4+
5+
public enum GitProviderDiscrepant implements TagValue {
6+
USER_SUPPLIED,
7+
CI_PROVIDER,
8+
LOCAL_GIT,
9+
GIT_CLIENT,
10+
EMBEDDED;
11+
12+
@Override
13+
public String asString() {
14+
return "discrepant_provider:" + name().toLowerCase();
15+
}
16+
}
Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
package datadog.trace.api.civisibility.telemetry.tag;
2+
3+
import datadog.trace.api.civisibility.telemetry.TagValue;
4+
5+
public enum GitProviderExpected implements TagValue {
6+
USER_SUPPLIED,
7+
CI_PROVIDER,
8+
LOCAL_GIT,
9+
GIT_CLIENT,
10+
EMBEDDED;
11+
12+
@Override
13+
public String asString() {
14+
return "expected_provider:" + name().toLowerCase();
15+
}
16+
}
Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
package datadog.trace.api.civisibility.telemetry.tag;
2+
3+
import datadog.trace.api.civisibility.telemetry.TagValue;
4+
5+
public enum GitShaDiscrepancyType implements TagValue {
6+
REPOSITORY_DISCREPANCY,
7+
COMMIT_DISCREPANCY;
8+
9+
@Override
10+
public String asString() {
11+
return "type:" + name().toLowerCase();
12+
}
13+
}
Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
package datadog.trace.api.civisibility.telemetry.tag;
2+
3+
import datadog.trace.api.civisibility.telemetry.TagValue;
4+
5+
public enum GitShaMatch implements TagValue {
6+
TRUE,
7+
FALSE;
8+
9+
@Override
10+
public String asString() {
11+
return "matched:" + name().toLowerCase();
12+
}
13+
}

internal-api/src/main/java/datadog/trace/api/git/EmbeddedGitInfoBuilder.java

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
package datadog.trace.api.git;
22

3+
import datadog.trace.api.civisibility.telemetry.tag.GitProviderDiscrepant;
4+
import datadog.trace.api.civisibility.telemetry.tag.GitProviderExpected;
35
import java.io.IOException;
46
import java.io.InputStream;
57
import java.util.Arrays;
@@ -89,4 +91,14 @@ public GitInfo build(@Nullable String repositoryPath) {
8991
public int order() {
9092
return Integer.MAX_VALUE;
9193
}
94+
95+
@Override
96+
public GitProviderExpected providerAsExpected() {
97+
return GitProviderExpected.EMBEDDED;
98+
}
99+
100+
@Override
101+
public GitProviderDiscrepant providerAsDiscrepant() {
102+
return GitProviderDiscrepant.EMBEDDED;
103+
}
92104
}

0 commit comments

Comments
 (0)