Skip to content

Commit d101167

Browse files
Encapsulate TestDecorator in agent-ci-visibility module (#5521)
1 parent 18259d8 commit d101167

File tree

17 files changed

+115
-120
lines changed

17 files changed

+115
-120
lines changed

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

Lines changed: 31 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -2,9 +2,7 @@
22

33
import datadog.trace.api.Config;
44
import datadog.trace.api.civisibility.CIVisibility;
5-
import datadog.trace.api.civisibility.DDTestSession;
65
import datadog.trace.api.civisibility.InstrumentationBridge;
7-
import datadog.trace.api.civisibility.decorator.TestDecorator;
86
import datadog.trace.api.civisibility.events.TestEventsHandler;
97
import datadog.trace.api.civisibility.source.SourcePathResolver;
108
import datadog.trace.api.git.GitInfoProvider;
@@ -15,6 +13,8 @@
1513
import datadog.trace.civisibility.codeowners.Codeowners;
1614
import datadog.trace.civisibility.codeowners.CodeownersProvider;
1715
import datadog.trace.civisibility.coverage.TestProbes;
16+
import datadog.trace.civisibility.decorator.TestDecorator;
17+
import datadog.trace.civisibility.decorator.TestDecoratorImpl;
1818
import datadog.trace.civisibility.events.BuildEventsHandlerImpl;
1919
import datadog.trace.civisibility.events.CachingTestEventsHandlerFactory;
2020
import datadog.trace.civisibility.events.TestEventsHandlerImpl;
@@ -51,47 +51,54 @@ public static void start() {
5151

5252
InstrumentationBridge.registerTestEventsHandlerFactory(factory);
5353
InstrumentationBridge.registerBuildEventsHandlerFactory(BuildEventsHandlerImpl::new);
54-
InstrumentationBridge.registerTestDecoratorFactory(CiVisibilitySystem::createTestDecorator);
5554

5655
GitInfoProvider.INSTANCE.registerGitInfoBuilder(new CIProviderGitInfoBuilder());
5756
GitInfoProvider.INSTANCE.registerGitInfoBuilder(new CILocalGitInfoBuilder(GIT_FOLDER_NAME));
5857

59-
CIVisibility.registerSessionFactory(CiVisibilitySystem::createTestSession);
58+
CIVisibility.registerSessionFactory(buildSessionFactory(config));
6059

6160
InstrumentationBridge.registerCoverageProbeStoreFactory(new TestProbes.TestProbesFactory());
6261
}
6362

64-
private static DDTestSession createTestSession(
65-
String projectName, String component, Long startTime) {
66-
Path path = Paths.get("").toAbsolutePath();
67-
String repoRoot = getRepositoryRoot(path);
68-
69-
SourcePathResolver sourcePathResolver = getSourcePathResolver(repoRoot);
70-
Codeowners codeowners = getCodeowners(repoRoot);
71-
MethodLinesResolver methodLinesResolver = new MethodLinesResolverImpl();
72-
TestDecorator testDecorator = createTestDecorator(component, null, null, path);
73-
74-
return new DDTestSessionImpl(
75-
projectName,
76-
startTime,
77-
Config.get(),
78-
testDecorator,
79-
sourcePathResolver,
80-
codeowners,
81-
methodLinesResolver);
63+
private static CIVisibility.SessionFactory buildSessionFactory(Config config) {
64+
return (String projectName, Path projectRoot, String component, Long startTime) -> {
65+
CIProviderInfoFactory ciProviderInfoFactory = new CIProviderInfoFactory();
66+
CIProviderInfo ciProviderInfo = ciProviderInfoFactory.createCIProviderInfo(projectRoot);
67+
CIInfo ciInfo = ciProviderInfo.buildCIInfo();
68+
String repoRoot = ciInfo.getCiWorkspace();
69+
70+
SourcePathResolver sourcePathResolver = getSourcePathResolver(repoRoot);
71+
Codeowners codeowners = getCodeowners(repoRoot);
72+
MethodLinesResolver methodLinesResolver = new MethodLinesResolverImpl();
73+
Map<String, String> ciTags = new CITagsProvider().getCiTags(ciInfo);
74+
TestDecorator testDecorator = new TestDecoratorImpl(component, null, null, ciTags);
75+
76+
return new DDTestSessionImpl(
77+
projectName,
78+
startTime,
79+
config,
80+
testDecorator,
81+
sourcePathResolver,
82+
codeowners,
83+
methodLinesResolver);
84+
};
8285
}
8386

8487
private static TestEventsHandler createTestEventsHandler(
8588
String component, String testFramework, String testFrameworkVersion, Path path) {
86-
String repoRoot = getRepositoryRoot(path);
89+
CIProviderInfoFactory ciProviderInfoFactory = new CIProviderInfoFactory();
90+
CIProviderInfo ciProviderInfo = ciProviderInfoFactory.createCIProviderInfo(path);
91+
CIInfo ciInfo = ciProviderInfo.buildCIInfo();
92+
String repoRoot = ciInfo.getCiWorkspace();
8793
String moduleName =
8894
(repoRoot != null) ? Paths.get(repoRoot).relativize(path).toString() : path.toString();
8995

9096
SourcePathResolver sourcePathResolver = getSourcePathResolver(repoRoot);
9197
Codeowners codeowners = getCodeowners(repoRoot);
9298
MethodLinesResolver methodLinesResolver = new MethodLinesResolverImpl();
99+
Map<String, String> ciTags = new CITagsProvider().getCiTags(ciInfo);
93100
TestDecorator testDecorator =
94-
createTestDecorator(component, testFramework, testFrameworkVersion, path);
101+
new TestDecoratorImpl(component, testFramework, testFrameworkVersion, ciTags);
95102

96103
return new TestEventsHandlerImpl(
97104
moduleName,
@@ -102,15 +109,6 @@ private static TestEventsHandler createTestEventsHandler(
102109
methodLinesResolver);
103110
}
104111

105-
private static TestDecorator createTestDecorator(
106-
String component, String testFramework, String testFrameworkVersion, Path path) {
107-
CIProviderInfoFactory ciProviderInfoFactory = new CIProviderInfoFactory();
108-
CIProviderInfo ciProviderInfo = ciProviderInfoFactory.createCIProviderInfo(path);
109-
CIInfo ciInfo = ciProviderInfo.buildCIInfo();
110-
Map<String, String> ciTags = new CITagsProvider().getCiTags(ciInfo);
111-
return new TestDecoratorImpl(component, testFramework, testFrameworkVersion, ciTags);
112-
}
113-
114112
private static String getRepositoryRoot(Path path) {
115113
CIProviderInfoFactory ciProviderInfoFactory = new CIProviderInfoFactory();
116114
CIProviderInfo ciProviderInfo = ciProviderInfoFactory.createCIProviderInfo(path);

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,6 @@
88
import datadog.trace.api.civisibility.DDTest;
99
import datadog.trace.api.civisibility.InstrumentationBridge;
1010
import datadog.trace.api.civisibility.coverage.CoverageProbeStore;
11-
import datadog.trace.api.civisibility.decorator.TestDecorator;
1211
import datadog.trace.api.civisibility.source.SourcePathResolver;
1312
import datadog.trace.api.gateway.RequestContextSlot;
1413
import datadog.trace.bootstrap.instrumentation.api.AgentScope;
@@ -18,6 +17,7 @@
1817
import datadog.trace.bootstrap.instrumentation.api.Tags;
1918
import datadog.trace.civisibility.codeowners.Codeowners;
2019
import datadog.trace.civisibility.context.TestContext;
20+
import datadog.trace.civisibility.decorator.TestDecorator;
2121
import datadog.trace.civisibility.source.MethodLinesResolver;
2222
import java.lang.reflect.Method;
2323
import java.util.Collection;

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,6 @@
66
import datadog.trace.api.civisibility.CIConstants;
77
import datadog.trace.api.civisibility.DDTestModule;
88
import datadog.trace.api.civisibility.DDTestSuite;
9-
import datadog.trace.api.civisibility.decorator.TestDecorator;
109
import datadog.trace.api.civisibility.events.BuildEventsHandler;
1110
import datadog.trace.api.civisibility.source.SourcePathResolver;
1211
import datadog.trace.api.config.CiVisibilityConfig;
@@ -17,6 +16,7 @@
1716
import datadog.trace.civisibility.context.ParentProcessTestContext;
1817
import datadog.trace.civisibility.context.SpanTestContext;
1918
import datadog.trace.civisibility.context.TestContext;
19+
import datadog.trace.civisibility.decorator.TestDecorator;
2020
import datadog.trace.civisibility.source.MethodLinesResolver;
2121
import datadog.trace.util.Strings;
2222
import javax.annotation.Nullable;

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,14 +6,14 @@
66
import datadog.trace.api.civisibility.CIConstants;
77
import datadog.trace.api.civisibility.DDTestModule;
88
import datadog.trace.api.civisibility.DDTestSession;
9-
import datadog.trace.api.civisibility.decorator.TestDecorator;
109
import datadog.trace.api.civisibility.source.SourcePathResolver;
1110
import datadog.trace.bootstrap.instrumentation.api.AgentSpan;
1211
import datadog.trace.bootstrap.instrumentation.api.InternalSpanTypes;
1312
import datadog.trace.bootstrap.instrumentation.api.Tags;
1413
import datadog.trace.civisibility.codeowners.Codeowners;
1514
import datadog.trace.civisibility.context.SpanTestContext;
1615
import datadog.trace.civisibility.context.TestContext;
16+
import datadog.trace.civisibility.decorator.TestDecorator;
1717
import datadog.trace.civisibility.source.MethodLinesResolver;
1818
import javax.annotation.Nullable;
1919

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,6 @@
77
import datadog.trace.api.civisibility.CIConstants;
88
import datadog.trace.api.civisibility.DDTest;
99
import datadog.trace.api.civisibility.DDTestSuite;
10-
import datadog.trace.api.civisibility.decorator.TestDecorator;
1110
import datadog.trace.api.civisibility.source.SourcePathResolver;
1211
import datadog.trace.bootstrap.instrumentation.api.AgentScope;
1312
import datadog.trace.bootstrap.instrumentation.api.AgentSpan;
@@ -17,6 +16,7 @@
1716
import datadog.trace.civisibility.codeowners.Codeowners;
1817
import datadog.trace.civisibility.context.SpanTestContext;
1918
import datadog.trace.civisibility.context.TestContext;
19+
import datadog.trace.civisibility.decorator.TestDecorator;
2020
import datadog.trace.civisibility.source.MethodLinesResolver;
2121
import java.lang.reflect.Method;
2222
import javax.annotation.Nullable;

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -75,7 +75,7 @@ private TracerEnvironment buildTracerEnvironment(String repositoryRoot, Path jvm
7575

7676
/*
7777
* IMPORTANT: JVM and OS properties should match tags
78-
* set in datadog.trace.api.civisibility.decorator.TestDecorator
78+
* set in datadog.trace.civisibility.decorator.TestDecorator
7979
*/
8080
return TracerEnvironment.builder()
8181
.service(config.getServiceName())

internal-api/src/main/java/datadog/trace/api/civisibility/decorator/TestDecorator.java renamed to dd-java-agent/agent-ci-visibility/src/main/java/datadog/trace/civisibility/decorator/TestDecorator.java

Lines changed: 1 addition & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
1-
package datadog.trace.api.civisibility.decorator;
1+
package datadog.trace.civisibility.decorator;
22

33
import datadog.trace.bootstrap.instrumentation.api.AgentSpan;
4-
import java.nio.file.Path;
54

65
public interface TestDecorator {
76
String TEST_TYPE = "test";
@@ -11,9 +10,4 @@ public interface TestDecorator {
1110
CharSequence component();
1211

1312
AgentSpan beforeFinish(final AgentSpan span);
14-
15-
interface Factory {
16-
TestDecorator create(
17-
String component, String testFramework, String testFrameworkVersion, Path path);
18-
}
1913
}

dd-java-agent/agent-ci-visibility/src/main/java/datadog/trace/civisibility/TestDecoratorImpl.java renamed to dd-java-agent/agent-ci-visibility/src/main/java/datadog/trace/civisibility/decorator/TestDecoratorImpl.java

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
1-
package datadog.trace.civisibility;
1+
package datadog.trace.civisibility.decorator;
22

33
import datadog.trace.api.DDTags;
4-
import datadog.trace.api.civisibility.decorator.TestDecorator;
54
import datadog.trace.api.sampling.PrioritySampling;
65
import datadog.trace.bootstrap.instrumentation.api.AgentSpan;
76
import datadog.trace.bootstrap.instrumentation.api.Tags;

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

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

3-
import datadog.trace.api.Config;
3+
import datadog.trace.api.civisibility.CIVisibility;
44
import datadog.trace.api.civisibility.DDTestModule;
55
import datadog.trace.api.civisibility.DDTestSession;
6-
import datadog.trace.api.civisibility.decorator.TestDecorator;
76
import datadog.trace.api.civisibility.events.BuildEventsHandler;
87
import datadog.trace.bootstrap.instrumentation.api.Tags;
98
import datadog.trace.civisibility.DDTestModuleImpl;
10-
import datadog.trace.civisibility.DDTestSessionImpl;
9+
import java.nio.file.Path;
1110
import java.util.Map;
1211
import java.util.concurrent.ConcurrentHashMap;
1312
import java.util.concurrent.ConcurrentMap;
@@ -22,13 +21,13 @@ public class BuildEventsHandlerImpl<T> implements BuildEventsHandler<T> {
2221
@Override
2322
public void onTestSessionStart(
2423
final T sessionKey,
25-
final TestDecorator sessionDecorator,
2624
final String projectName,
25+
Path projectRoot,
2726
final String startCommand,
2827
final String buildSystemName,
2928
final String buildSystemVersion) {
3029
DDTestSession testSession =
31-
new DDTestSessionImpl(projectName, null, Config.get(), sessionDecorator, null, null, null);
30+
CIVisibility.startSession(projectName, projectRoot, buildSystemName, null);
3231
testSession.setTag(Tags.TEST_COMMAND, startCommand);
3332
testSession.setTag(Tags.TEST_TOOLCHAIN, buildSystemName + ":" + buildSystemVersion);
3433
inProgressTestSessions.put(sessionKey, testSession);

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,14 +7,14 @@
77
import datadog.trace.api.civisibility.DDTest;
88
import datadog.trace.api.civisibility.DDTestModule;
99
import datadog.trace.api.civisibility.DDTestSuite;
10-
import datadog.trace.api.civisibility.decorator.TestDecorator;
1110
import datadog.trace.api.civisibility.events.TestEventsHandler;
1211
import datadog.trace.api.civisibility.source.SourcePathResolver;
1312
import datadog.trace.bootstrap.instrumentation.api.Tags;
1413
import datadog.trace.civisibility.DDTestImpl;
1514
import datadog.trace.civisibility.DDTestModuleImpl;
1615
import datadog.trace.civisibility.codeowners.Codeowners;
1716
import datadog.trace.civisibility.context.EmptyTestContext;
17+
import datadog.trace.civisibility.decorator.TestDecorator;
1818
import datadog.trace.civisibility.source.MethodLinesResolver;
1919
import java.lang.reflect.Method;
2020
import java.util.Collection;

0 commit comments

Comments
 (0)