Skip to content

Commit 4d417ef

Browse files
Implement telemetry for shell git commands
1 parent 8936a3f commit 4d417ef

File tree

8 files changed

+278
-134
lines changed

8 files changed

+278
-134
lines changed

dd-java-agent/agent-ci-visibility/build.gradle

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -91,6 +91,7 @@ excludedClassesCoverage += [
9191
"datadog.trace.civisibility.utils.ProcessHierarchyUtils",
9292
"datadog.trace.civisibility.utils.ShellCommandExecutor",
9393
"datadog.trace.civisibility.utils.ShellCommandExecutor.OutputParser",
94+
"datadog.trace.civisibility.utils.ShellCommandExecutor.ShellCommandFailedException",
9495
"datadog.trace.civisibility.utils.SpanUtils"
9596
]
9697

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

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22

33
import datadog.communication.ddagent.SharedCommunicationObjects;
44
import datadog.trace.api.Config;
5+
import datadog.trace.api.civisibility.telemetry.CiVisibilityMetricCollector;
56
import datadog.trace.api.git.GitInfoProvider;
67
import datadog.trace.civisibility.ci.CIProviderInfoFactory;
78
import datadog.trace.civisibility.communication.BackendApi;
@@ -42,6 +43,7 @@ public class CiVisibilityServices {
4243
private static final String GIT_FOLDER_NAME = ".git";
4344

4445
final Config config;
46+
final CiVisibilityMetricCollector metricCollector;
4547
final BackendApi backendApi;
4648
final JvmInfoFactory jvmInfoFactory;
4749
final CIProviderInfoFactory ciProviderInfoFactory;
@@ -53,11 +55,15 @@ public class CiVisibilityServices {
5355
@Nullable final SignalClient.Factory signalClientFactory;
5456

5557
CiVisibilityServices(
56-
Config config, SharedCommunicationObjects sco, GitInfoProvider gitInfoProvider) {
58+
Config config,
59+
CiVisibilityMetricCollector metricCollector,
60+
SharedCommunicationObjects sco,
61+
GitInfoProvider gitInfoProvider) {
5762
this.config = config;
63+
this.metricCollector = metricCollector;
5864
this.backendApi = new BackendApiFactory(config, sco).createBackendApi();
5965
this.jvmInfoFactory = new CachingJvmInfoFactory(config, new JvmInfoFactoryImpl());
60-
this.gitClientFactory = new GitClient.Factory(config);
66+
this.gitClientFactory = new GitClient.Factory(config, metricCollector);
6167
this.ciProviderInfoFactory = new CIProviderInfoFactory(config);
6268
this.methodLinesResolver =
6369
new BestEffortMethodLinesResolver(

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

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,8 @@
1010
import datadog.trace.api.civisibility.coverage.CoverageDataSupplier;
1111
import datadog.trace.api.civisibility.events.BuildEventsHandler;
1212
import datadog.trace.api.civisibility.events.TestEventsHandler;
13+
import datadog.trace.api.civisibility.telemetry.CiVisibilityMetricCollector;
14+
import datadog.trace.api.civisibility.telemetry.NoOpMetricCollector;
1315
import datadog.trace.api.git.GitInfoProvider;
1416
import datadog.trace.civisibility.config.JvmInfo;
1517
import datadog.trace.civisibility.coverage.instrumentation.CoverageClassTransformer;
@@ -19,6 +21,7 @@
1921
import datadog.trace.civisibility.events.BuildEventsHandlerImpl;
2022
import datadog.trace.civisibility.events.TestEventsHandlerImpl;
2123
import datadog.trace.civisibility.ipc.SignalServer;
24+
import datadog.trace.civisibility.telemetry.CiVisibilityMetricCollectorImpl;
2225
import datadog.trace.civisibility.utils.ProcessHierarchyUtils;
2326
import datadog.trace.util.throwable.FatalAgentMisconfigurationError;
2427
import java.lang.instrument.Instrumentation;
@@ -53,7 +56,14 @@ public static void start(Instrumentation inst, SharedCommunicationObjects sco) {
5356

5457
sco.createRemaining(config);
5558

56-
CiVisibilityServices services = new CiVisibilityServices(config, sco, GitInfoProvider.INSTANCE);
59+
CiVisibilityMetricCollector metricCollector =
60+
config.isCiVisibilityTelemetryEnabled()
61+
? new CiVisibilityMetricCollectorImpl()
62+
: NoOpMetricCollector.INSTANCE;
63+
InstrumentationBridge.registerMetricCollector(metricCollector);
64+
65+
CiVisibilityServices services =
66+
new CiVisibilityServices(config, metricCollector, sco, GitInfoProvider.INSTANCE);
5767

5868
InstrumentationBridge.registerBuildEventsHandlerFactory(buildEventsHandlerFactory(services));
5969
CIVisibility.registerSessionFactory(apiSessionFactory(services));

0 commit comments

Comments
 (0)