Skip to content

Commit 776f779

Browse files
committed
Merge remote-tracking branch 'origin/master' into vandonr/fix2
2 parents 3bf9182 + 52c71a7 commit 776f779

622 files changed

Lines changed: 4776 additions & 2002 deletions

File tree

Some content is hidden

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

.github/CODEOWNERS

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -45,6 +45,7 @@
4545
# @DataDog/asm-java (AppSec/IAST)
4646
/buildSrc/call-site-instrumentation-plugin/ @DataDog/asm-java
4747
/dd-java-agent/agent-iast/ @DataDog/asm-java
48+
/dd-java-agent/appsec/appsec-test-fixtures/ @DataDog/asm-java
4849
/dd-java-agent/instrumentation/*iast* @DataDog/asm-java
4950
/dd-java-agent/instrumentation/*appsec* @DataDog/asm-java
5051
/dd-java-agent/instrumentation/json/ @DataDog/asm-java
@@ -87,15 +88,17 @@
8788
/dd-java-agent/instrumentation/maven-surefire/ @DataDog/ci-app-libraries-java
8889
/dd-java-agent/instrumentation/weaver/ @DataDog/ci-app-libraries-java
8990
/dd-smoke-tests/gradle/ @DataDog/ci-app-libraries-java
91+
/dd-smoke-tests/junit-console/ @DataDog/ci-app-libraries-java
9092
/dd-smoke-tests/maven/ @DataDog/ci-app-libraries-java
9193
/internal-api/src/main/java/datadog/trace/api/git/ @DataDog/ci-app-libraries-java
9294
**/civisibility/ @DataDog/ci-app-libraries-java
9395
**/CiVisibility*.java @DataDog/ci-app-libraries-java
9496
**/CiVisibility*.groovy @DataDog/ci-app-libraries-java
9597

9698
# @DataDog/debugger-java (Live Debugger)
97-
/dd-java-agent/agent-debugger/ @DataDog/debugger-java
98-
/dd-smoke-tests/debugger-integration-tests/ @DataDog/debugger-java
99+
/dd-java-agent/agent-debugger/ @DataDog/debugger-java
100+
/dd-smoke-tests/debugger-integration-tests/ @DataDog/debugger-java
101+
/internal-api/src/main/java/datadog/trace/api/debugger/ @DataDog/debugger-java
99102

100103
# @DataDog/data-jobs-monitoring
101104
/dd-java-agent/instrumentation/spark/ @DataDog/data-jobs-monitoring

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

Lines changed: 3 additions & 45 deletions
Original file line numberDiff line numberDiff line change
@@ -5,8 +5,8 @@
55
import datadog.communication.http.HttpRetryPolicy;
66
import datadog.communication.http.OkHttpUtils;
77
import datadog.trace.api.Config;
8+
import datadog.trace.api.intake.Intake;
89
import datadog.trace.util.throwable.FatalAgentMisconfigurationError;
9-
import java.util.function.Function;
1010
import javax.annotation.Nullable;
1111
import okhttp3.HttpUrl;
1212
import okhttp3.OkHttpClient;
@@ -28,8 +28,8 @@ public BackendApiFactory(Config config, SharedCommunicationObjects sharedCommuni
2828
public @Nullable BackendApi createBackendApi(Intake intake) {
2929
HttpRetryPolicy.Factory retryPolicyFactory = new HttpRetryPolicy.Factory(5, 100, 2.0, true);
3030

31-
if (intake.agentlessModeEnabled.apply(config)) {
32-
HttpUrl agentlessUrl = getAgentlessUrl(intake);
31+
if (intake.isAgentlessEnabled(config)) {
32+
HttpUrl agentlessUrl = HttpUrl.get(intake.getAgentlessUrl(config));
3333
String apiKey = config.getApiKey();
3434
if (apiKey == null || apiKey.isEmpty()) {
3535
throw new FatalAgentMisconfigurationError(
@@ -58,46 +58,4 @@ public BackendApiFactory(Config config, SharedCommunicationObjects sharedCommuni
5858
+ "and agent does not support EVP proxy");
5959
return null;
6060
}
61-
62-
private HttpUrl getAgentlessUrl(Intake intake) {
63-
String customUrl = intake.customUrl.apply(config);
64-
if (customUrl != null && !customUrl.isEmpty()) {
65-
return HttpUrl.get(String.format("%s/api/%s/", customUrl, intake.version));
66-
} else {
67-
String site = config.getSite();
68-
return HttpUrl.get(
69-
String.format("https://%s.%s/api/%s/", intake.urlPrefix, site, intake.version));
70-
}
71-
}
72-
73-
public enum Intake {
74-
API("api", "v2", Config::isCiVisibilityAgentlessEnabled, Config::getCiVisibilityAgentlessUrl),
75-
LLMOBS_API("api", "v2", Config::isLlmObsAgentlessEnabled, Config::getLlMObsAgentlessUrl),
76-
LOGS(
77-
"http-intake.logs",
78-
"v2",
79-
Config::isAgentlessLogSubmissionEnabled,
80-
Config::getAgentlessLogSubmissionUrl),
81-
CI_INTAKE(
82-
"ci-intake",
83-
"v2",
84-
Config::isCiVisibilityAgentlessEnabled,
85-
Config::getCiVisibilityIntakeAgentlessUrl);
86-
87-
public final String urlPrefix;
88-
public final String version;
89-
public final Function<Config, Boolean> agentlessModeEnabled;
90-
public final Function<Config, String> customUrl;
91-
92-
Intake(
93-
String urlPrefix,
94-
String version,
95-
Function<Config, Boolean> agentlessModeEnabled,
96-
Function<Config, String> customUrl) {
97-
this.urlPrefix = urlPrefix;
98-
this.version = version;
99-
this.agentlessModeEnabled = agentlessModeEnabled;
100-
this.customUrl = customUrl;
101-
}
102-
}
10361
}

dd-java-agent/agent-bootstrap/src/main/java/datadog/trace/bootstrap/Agent.java

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1308,10 +1308,6 @@ && isExplicitlyDisabled(TraceInstrumentationConfig.CODE_ORIGIN_FOR_SPANS_ENABLED
13081308
&& isExplicitlyDisabled(DebuggerConfig.DISTRIBUTED_DEBUGGER_ENABLED)) {
13091309
return;
13101310
}
1311-
if (!remoteConfigEnabled) {
1312-
log.warn("Cannot enable Dynamic Instrumentation because Remote Configuration is not enabled");
1313-
return;
1314-
}
13151311
startDebuggerAgent(inst, scoClass, sco);
13161312
}
13171313

dd-java-agent/agent-bootstrap/src/main/java/datadog/trace/bootstrap/Constants.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ public final class Constants {
1111
* packages which will be loaded on the bootstrap classloader
1212
*
1313
* <p>Updates should be mirrored in
14-
* datadog.trace.agent.test.SpockRunner#BOOTSTRAP_PACKAGE_PREFIXES_COPY
14+
* datadog.trace.agent.test.BootstrapClasspathSetup#BOOTSTRAP_PACKAGE_PREFIXES_COPY
1515
*/
1616
public static final String[] BOOTSTRAP_PACKAGE_PREFIXES = {
1717
"datadog.slf4j",

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

Lines changed: 6 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,6 @@ buildscript {
2727

2828
plugins {
2929
id 'com.gradleup.shadow'
30-
id 'java-test-fixtures'
3130
}
3231

3332
apply from: "$rootDir/gradle/java.gradle"
@@ -42,29 +41,23 @@ dependencies {
4241
api libs.slf4j
4342

4443
implementation libs.bundles.asm
45-
implementation group: 'org.jacoco', name: 'org.jacoco.core', version: '0.8.12'
46-
implementation group: 'org.jacoco', name: 'org.jacoco.report', version: '0.8.12'
44+
implementation group: 'org.jacoco', name: 'org.jacoco.core', version: '0.8.13'
45+
implementation group: 'org.jacoco', name: 'org.jacoco.report', version: '0.8.13'
4746

4847
implementation project(':communication')
4948
implementation project(':components:json')
5049
implementation project(':internal-api')
5150
implementation project(':internal-api:internal-api-9')
5251

53-
testImplementation project(":utils:test-utils")
52+
testImplementation project(':dd-java-agent:testing')
5453
testImplementation("com.google.jimfs:jimfs:1.1") // an in-memory file system for testing code that works with files
5554

5655
testImplementation libs.scala
5756
testImplementation libs.kotlin
5857

59-
testFixturesApi project(':dd-java-agent:testing')
60-
testFixturesApi project(':utils:test-utils')
61-
62-
testFixturesApi group: 'org.skyscreamer', name: 'jsonassert', version: '1.5.1'
63-
testFixturesApi group: 'org.freemarker', name: 'freemarker', version: '2.3.31'
64-
testFixturesApi group: 'com.jayway.jsonpath', name: 'json-path', version: '2.8.0'
65-
testFixturesApi group: 'com.fasterxml.jackson.core', name: 'jackson-databind', version: '2.16.0'
66-
testFixturesApi group: 'org.msgpack', name: 'jackson-dataformat-msgpack', version: '0.9.6'
67-
testFixturesApi group: 'org.xmlunit', name: 'xmlunit-core', version: '2.10.3'
58+
testImplementation group: 'org.skyscreamer', name: 'jsonassert', version: '1.5.1'
59+
testImplementation group: 'org.freemarker', name: 'freemarker', version: '2.3.31'
60+
testImplementation group: 'org.msgpack', name: 'jackson-dataformat-msgpack', version: '0.9.6'
6861

6962
testRuntimeOnly("org.junit.platform:junit-platform-launcher:1.9.2") // Required to update dependency lock files
7063
}
Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
# civisibility-instrumentation-test-fixtures
2+
3+
This project contains common logic used in CI Visibility instrumentation tests.
4+
5+
The reason it is defined as a separate project rather than using testFixtures plugin in the parent module is because it
6+
transitively pulls in :dd-java-agent:instrumentation-testing.
7+
The latter contains datadog.trace.agent.test.BootstrapClasspathSetupListener that, when present on the classpath,
8+
patches bootstrap CL adding some tracer classes to it.
9+
This is needed for the instrumentation tests, but may break regular unit tests.
10+
If this project used testFixtures, the listener would end up on the classpath of the parent project's unit tests, breaking them.
Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
apply from: "$rootDir/gradle/java.gradle"
2+
apply from: "$rootDir/gradle/version.gradle"
3+
4+
dependencies {
5+
api project(':dd-java-agent:instrumentation-testing')
6+
api project(':dd-java-agent:agent-ci-visibility:civisibility-test-fixtures')
7+
}
8+

dd-java-agent/agent-ci-visibility/src/testFixtures/groovy/datadog/trace/civisibility/CiVisibilityInstrumentationTest.groovy renamed to dd-java-agent/agent-ci-visibility/civisibility-instrumentation-test-fixtures/src/main/groovy/datadog/trace/civisibility/CiVisibilityInstrumentationTest.groovy

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ package datadog.trace.civisibility
33
import com.fasterxml.jackson.databind.ObjectMapper
44
import datadog.communication.serialization.GrowableBuffer
55
import datadog.communication.serialization.msgpack.MsgPackWriter
6-
import datadog.trace.agent.test.AgentTestRunner
6+
import datadog.trace.agent.test.InstrumentationSpecification
77
import datadog.trace.agent.test.asserts.ListWriterAssert
88
import datadog.trace.api.Config
99
import datadog.trace.api.DDSpanTypes
@@ -50,6 +50,7 @@ import datadog.trace.civisibility.writer.ddintake.CiTestCycleMapperV1
5050
import datadog.trace.common.writer.ListWriter
5151
import datadog.trace.common.writer.RemoteMapper
5252
import datadog.trace.core.DDSpan
53+
import edu.umd.cs.findbugs.annotations.SuppressFBWarnings
5354
import org.msgpack.jackson.dataformat.MessagePackFactory
5455

5556
import java.lang.reflect.Method
@@ -61,7 +62,7 @@ import java.util.concurrent.TimeUnit
6162
import java.util.function.Predicate
6263
import java.util.stream.Collectors
6364

64-
abstract class CiVisibilityInstrumentationTest extends AgentTestRunner {
65+
abstract class CiVisibilityInstrumentationTest extends InstrumentationSpecification {
6566

6667
public static final int SLOW_TEST_THRESHOLD_MILLIS = 1000
6768
public static final int VERY_SLOW_TEST_THRESHOLD_MILLIS = 2000
@@ -113,6 +114,7 @@ abstract class CiVisibilityInstrumentationTest extends AgentTestRunner {
113114
private volatile boolean earlyFlakinessDetectionEnabled
114115
private volatile boolean impactedTestsDetectionEnabled
115116
private volatile boolean testManagementEnabled
117+
private volatile boolean failedTestReplayEnabled = false
116118
}
117119

118120
private final Settings settings = new Settings()
@@ -235,6 +237,7 @@ abstract class CiVisibilityInstrumentationTest extends AgentTestRunner {
235237
settings.flakyRetryEnabled,
236238
settings.impactedTestsDetectionEnabled,
237239
false,
240+
settings.failedTestReplayEnabled,
238241
earlyFlakinessDetectionSettings,
239242
testManagementSettings,
240243
settings.itrEnabled ? "itrCorrelationId" : null,
@@ -288,6 +291,7 @@ abstract class CiVisibilityInstrumentationTest extends AgentTestRunner {
288291
return true
289292
}
290293

294+
@SuppressFBWarnings("UMAC_UNCALLABLE_METHOD_OF_ANONYMOUS_CLASS")
291295
boolean waitForSpan(Predicate<DDSpan> predicate, long timeoutMillis) {
292296
long deadline = System.currentTimeMillis() + timeoutMillis
293297
synchronized (lock) {
Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
apply from: "$rootDir/gradle/java.gradle"
2+
apply from: "$rootDir/gradle/version.gradle"
3+
4+
dependencies {
5+
api project(':dd-java-agent:agent-ci-visibility')
6+
api project(':dd-java-agent:testing')
7+
8+
api group: 'org.skyscreamer', name: 'jsonassert', version: '1.5.1'
9+
api group: 'org.freemarker', name: 'freemarker', version: '2.3.31'
10+
api group: 'com.jayway.jsonpath', name: 'json-path', version: '2.8.0'
11+
api group: 'com.fasterxml.jackson.core', name: 'jackson-databind', version: '2.16.0'
12+
api group: 'org.msgpack', name: 'jackson-dataformat-msgpack', version: '0.9.6'
13+
api group: 'org.xmlunit', name: 'xmlunit-core', version: '2.10.3'
14+
}
15+

0 commit comments

Comments
 (0)