Skip to content

Commit a3e22e1

Browse files
authored
Merge branch 'master' into mhlidd/client_error_statuses
2 parents bd83253 + 14a45ea commit a3e22e1

File tree

81 files changed

+6777
-3088
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

81 files changed

+6777
-3088
lines changed

.circleci/config.continue.yml.j2

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -782,6 +782,7 @@ jobs:
782782
name: Gather muzzle tasks
783783
command: >-
784784
SKIP_BUILDSCAN="true"
785+
GRADLE_OPTS="-Dorg.gradle.jvmargs='-Xmx2G -Xms2G -XX:ErrorFile=/tmp/hs_err_pid%p.log -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/tmp'"
785786
./gradlew writeMuzzleTasksToFile
786787
<< pipeline.parameters.gradle_flags >>
787788
--max-workers=3
@@ -1217,6 +1218,20 @@ build_test_jobs: &build_test_jobs
12171218
parallelism: 4
12181219
maxWorkers: 4
12191220
testJvm: "8"
1221+
1222+
- tests:
1223+
requires:
1224+
- ok_to_test
1225+
name: z_test_8_flaky_debugger
1226+
gradleTarget: ":debuggerTest"
1227+
gradleParameters: "-PrunFlakyTests"
1228+
continueOnFailure: true
1229+
triggeredBy: *debugger_modules
1230+
stage: debugger
1231+
cacheType: base
1232+
parallelism: 4
1233+
maxWorkers: 4
1234+
testJvm: "8"
12201235
{% endif %}
12211236
12221237
- tests:
@@ -1420,6 +1435,7 @@ build_test_jobs: &build_test_jobs
14201435
{% for jdk in all_jdks %}
14211436
- "test_{{ jdk }}"
14221437
{% endfor %}
1438+
- muzzle
14231439
- profiling
14241440
- debugger
14251441
- system-tests

.gitlab-ci.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -216,7 +216,7 @@ package-oci:
216216
onboarding_tests_installer:
217217
parallel:
218218
matrix:
219-
- ONBOARDING_FILTER_WEBLOG: [test-app-java, test-app-java-container, test-app-java-container-jdk15, test-app-java-alpine-libgcc]
219+
- ONBOARDING_FILTER_WEBLOG: [test-app-java, test-app-java-container, test-app-java-container-jdk15, test-app-java-alpine]
220220
SCENARIO: [ SIMPLE_INSTALLER_AUTO_INJECTION, SIMPLE_AUTO_INJECTION_PROFILING ]
221221
- ONBOARDING_FILTER_WEBLOG: [test-app-java-buildpack]
222222
SCENARIO: [ SIMPLE_INSTALLER_AUTO_INJECTION ]

communication/src/main/java/datadog/communication/BackendApiFactory.java

Lines changed: 6 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -3,11 +3,13 @@
33
import datadog.communication.ddagent.DDAgentFeaturesDiscovery;
44
import datadog.communication.ddagent.SharedCommunicationObjects;
55
import datadog.communication.http.HttpRetryPolicy;
6+
import datadog.communication.http.OkHttpUtils;
67
import datadog.trace.api.Config;
78
import datadog.trace.util.throwable.FatalAgentMisconfigurationError;
89
import java.util.function.Function;
910
import javax.annotation.Nullable;
1011
import okhttp3.HttpUrl;
12+
import okhttp3.OkHttpClient;
1113
import org.slf4j.Logger;
1214
import org.slf4j.LoggerFactory;
1315

@@ -34,13 +36,10 @@ public BackendApiFactory(Config config, SharedCommunicationObjects sharedCommuni
3436
"Agentless mode is enabled and api key is not set. Please set application key");
3537
}
3638
String traceId = config.getIdGenerationStrategy().generateTraceId().toString();
37-
return new IntakeApi(
38-
agentlessUrl,
39-
apiKey,
40-
traceId,
41-
retryPolicyFactory,
42-
sharedCommunicationObjects.okHttpClient,
43-
true);
39+
OkHttpClient httpClient =
40+
OkHttpUtils.buildHttpClient(
41+
agentlessUrl, config.getCiVisibilityBackendApiTimeoutMillis());
42+
return new IntakeApi(agentlessUrl, apiKey, traceId, retryPolicyFactory, httpClient, true);
4443
}
4544

4645
DDAgentFeaturesDiscovery featuresDiscovery =

communication/src/main/java/datadog/communication/ddagent/SharedCommunicationObjects.java

Lines changed: 3 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -36,21 +36,11 @@ public void createRemaining(Config config) {
3636
}
3737
}
3838
if (okHttpClient == null) {
39-
String unixDomainSocket;
40-
String namedPipe;
41-
HttpUrl url;
42-
if (!config.isCiVisibilityAgentlessEnabled()) {
43-
unixDomainSocket = SocketUtils.discoverApmSocket(config);
44-
namedPipe = config.getAgentNamedPipe();
45-
url = agentUrl;
46-
} else {
47-
unixDomainSocket = null;
48-
namedPipe = null;
49-
url = null;
50-
}
39+
String unixDomainSocket = SocketUtils.discoverApmSocket(config);
40+
String namedPipe = config.getAgentNamedPipe();
5141
okHttpClient =
5242
OkHttpUtils.buildHttpClient(
53-
url, unixDomainSocket, namedPipe, getHttpClientTimeout(config));
43+
agentUrl, unixDomainSocket, namedPipe, getHttpClientTimeout(config));
5444
}
5545
}
5646

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

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -25,8 +25,8 @@ dependencies {
2525
api libs.slf4j
2626

2727
implementation libs.bundles.asm
28-
implementation group: 'org.jacoco', name: 'org.jacoco.core', version: '0.8.9'
29-
implementation group: 'org.jacoco', name: 'org.jacoco.report', version: '0.8.9'
28+
implementation group: 'org.jacoco', name: 'org.jacoco.core', version: '0.8.12'
29+
implementation group: 'org.jacoco', name: 'org.jacoco.report', version: '0.8.12'
3030

3131
implementation project(':communication')
3232
implementation project(':internal-api')

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

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
import datadog.trace.api.civisibility.domain.BuildModuleLayout;
44
import datadog.trace.api.civisibility.domain.BuildSessionSettings;
55
import datadog.trace.api.civisibility.domain.JavaAgent;
6+
import datadog.trace.bootstrap.instrumentation.api.AgentSpan;
67
import datadog.trace.civisibility.config.JvmInfo;
78
import java.nio.file.Path;
89
import java.util.Collection;
@@ -25,6 +26,8 @@ BuildSystemModule testModuleStart(
2526
@Nullable Collection<Path> classpath,
2627
@Nullable JavaAgent jacocoAgent);
2728

29+
AgentSpan testTaskStart(String taskName);
30+
2831
BuildSessionSettings getSettings();
2932

3033
interface Factory {

dd-java-agent/agent-ci-visibility/src/main/java/datadog/trace/civisibility/domain/buildsystem/BuildSystemSessionImpl.java

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

3+
import static datadog.trace.bootstrap.instrumentation.api.AgentTracer.startSpan;
4+
35
import datadog.trace.api.Config;
46
import datadog.trace.api.DDTags;
57
import datadog.trace.api.civisibility.CIConstants;
@@ -202,6 +204,11 @@ public BuildSystemModuleImpl testModuleStart(
202204
this::onModuleFinish);
203205
}
204206

207+
@Override
208+
public AgentSpan testTaskStart(String taskName) {
209+
return startSpan("ci_visibility", taskName, span.context());
210+
}
211+
205212
private void onModuleFinish(AgentSpan moduleSpan) {
206213
// multiple modules can finish in parallel
207214
synchronized (tagPropagationLock) {

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

Lines changed: 52 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
import datadog.trace.api.civisibility.domain.BuildSessionSettings;
66
import datadog.trace.api.civisibility.domain.JavaAgent;
77
import datadog.trace.api.civisibility.events.BuildEventsHandler;
8+
import datadog.trace.bootstrap.instrumentation.api.AgentSpan;
89
import datadog.trace.bootstrap.instrumentation.api.Tags;
910
import datadog.trace.civisibility.config.JvmInfo;
1011
import datadog.trace.civisibility.config.JvmInfoFactory;
@@ -23,7 +24,10 @@ public class BuildEventsHandlerImpl<SessionKey> implements BuildEventsHandler<Se
2324
private final ConcurrentMap<SessionKey, BuildSystemSession> inProgressTestSessions =
2425
new ConcurrentHashMap<>();
2526

26-
private final ConcurrentMap<TestModuleDescriptor<SessionKey>, BuildSystemModule>
27+
private final ConcurrentMap<BuildTaskDescriptor<SessionKey>, AgentSpan> inProgressBuildTasks =
28+
new ConcurrentHashMap<>();
29+
30+
private final ConcurrentMap<BuildTaskDescriptor<SessionKey>, BuildSystemModule>
2731
inProgressTestModules = new ConcurrentHashMap<>();
2832

2933
private final BuildSystemSession.Factory sessionFactory;
@@ -79,6 +83,47 @@ public void onTestSessionFinish(final SessionKey sessionKey) {
7983
testSession.end(null);
8084
}
8185

86+
@Override
87+
public void onBuildTaskStart(
88+
SessionKey sessionKey, String taskName, Map<String, Object> additionalTags) {
89+
BuildSystemSession testSession = inProgressTestSessions.get(sessionKey);
90+
if (testSession == null) {
91+
throw new IllegalStateException("Could not find session span for key: " + sessionKey);
92+
}
93+
AgentSpan buildTask = testSession.testTaskStart(taskName);
94+
for (Map.Entry<String, Object> e : additionalTags.entrySet()) {
95+
buildTask.setTag(e.getKey(), e.getValue());
96+
}
97+
inProgressBuildTasks.put(new BuildTaskDescriptor<>(sessionKey, taskName), buildTask);
98+
}
99+
100+
@Override
101+
public void onBuildTaskFail(SessionKey sessionKey, String taskName, Throwable throwable) {
102+
AgentSpan buildTask = inProgressBuildTasks.get(new BuildTaskDescriptor<>(sessionKey, taskName));
103+
if (buildTask == null) {
104+
throw new IllegalStateException(
105+
"Could not find build task span for session key "
106+
+ sessionKey
107+
+ " and task name "
108+
+ taskName);
109+
}
110+
buildTask.setError(true);
111+
buildTask.addThrowable(throwable);
112+
}
113+
114+
@Override
115+
public void onBuildTaskFinish(SessionKey sessionKey, String taskName) {
116+
AgentSpan buildTask = inProgressBuildTasks.get(new BuildTaskDescriptor<>(sessionKey, taskName));
117+
if (buildTask == null) {
118+
throw new IllegalStateException(
119+
"Could not find build task span for session key "
120+
+ sessionKey
121+
+ " and task name "
122+
+ taskName);
123+
}
124+
buildTask.finish();
125+
}
126+
82127
@Override
83128
public BuildModuleSettings onTestModuleStart(
84129
final SessionKey sessionKey,
@@ -104,8 +149,8 @@ public BuildModuleSettings onTestModuleStart(
104149
}
105150
}
106151

107-
TestModuleDescriptor<SessionKey> testModuleDescriptor =
108-
new TestModuleDescriptor<>(sessionKey, moduleName);
152+
BuildTaskDescriptor<SessionKey> testModuleDescriptor =
153+
new BuildTaskDescriptor<>(sessionKey, moduleName);
109154
inProgressTestModules.put(testModuleDescriptor, testModule);
110155

111156
return testModule.getSettings();
@@ -126,8 +171,8 @@ public void onTestModuleFail(
126171
}
127172

128173
private BuildSystemModule getTestModule(final SessionKey sessionKey, final String moduleName) {
129-
TestModuleDescriptor<SessionKey> testModuleDescriptor =
130-
new TestModuleDescriptor<>(sessionKey, moduleName);
174+
BuildTaskDescriptor<SessionKey> testModuleDescriptor =
175+
new BuildTaskDescriptor<>(sessionKey, moduleName);
131176
BuildSystemModule testModule = inProgressTestModules.get(testModuleDescriptor);
132177
if (testModule == null) {
133178
throw new IllegalStateException(
@@ -138,8 +183,8 @@ private BuildSystemModule getTestModule(final SessionKey sessionKey, final Strin
138183

139184
@Override
140185
public void onTestModuleFinish(SessionKey sessionKey, String moduleName) {
141-
TestModuleDescriptor<SessionKey> testModuleDescriptor =
142-
new TestModuleDescriptor<>(sessionKey, moduleName);
186+
BuildTaskDescriptor<SessionKey> testModuleDescriptor =
187+
new BuildTaskDescriptor<>(sessionKey, moduleName);
143188
BuildSystemModule testModule = inProgressTestModules.remove(testModuleDescriptor);
144189
if (testModule == null) {
145190
throw new IllegalStateException(
Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
package datadog.trace.civisibility.events;
2+
3+
import java.util.Objects;
4+
5+
public class BuildTaskDescriptor<T> {
6+
7+
private final T sessionKey;
8+
private final String taskName;
9+
10+
public BuildTaskDescriptor(T sessionKey, String taskName) {
11+
this.sessionKey = sessionKey;
12+
this.taskName = taskName;
13+
}
14+
15+
@Override
16+
public boolean equals(Object o) {
17+
if (this == o) {
18+
return true;
19+
}
20+
if (o == null || getClass() != o.getClass()) {
21+
return false;
22+
}
23+
BuildTaskDescriptor<?> that = (BuildTaskDescriptor<?>) o;
24+
return sessionKey.equals(that.sessionKey) && taskName.equals(that.taskName);
25+
}
26+
27+
@Override
28+
public int hashCode() {
29+
return Objects.hash(sessionKey, taskName);
30+
}
31+
}

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

Lines changed: 0 additions & 31 deletions
This file was deleted.

0 commit comments

Comments
 (0)