Skip to content

Commit 0b66139

Browse files
authored
Use common method to determine telemetry intake url (#9786)
* Use common method to determine intake url * fix tests
1 parent b6e4fea commit 0b66139

File tree

4 files changed

+34
-34
lines changed

4 files changed

+34
-34
lines changed

internal-api/src/main/java/datadog/trace/api/Config.java

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4737,6 +4737,17 @@ public Map<String, String> getMergedCrashTrackingTags() {
47374737
return Collections.unmodifiableMap(result);
47384738
}
47394739

4740+
public String getDefaultTelemetryUrl() {
4741+
String site = getSite();
4742+
String prefix = "";
4743+
if (site.endsWith("datad0g.com")) {
4744+
prefix = "all-http-intake.logs.";
4745+
} else if (site.endsWith("datadoghq.com") || site.endsWith("datadoghq.eu")) {
4746+
prefix = "instrumentation-telemetry-intake.";
4747+
}
4748+
return "https://" + prefix + site + "/api/v2/apmtelemetry";
4749+
}
4750+
47404751
/**
47414752
* Returns the sample rate for the specified instrumentation or {@link
47424753
* ConfigDefaults#DEFAULT_ANALYTICS_SAMPLE_RATE} if none specified.
@@ -4928,7 +4939,7 @@ public String getFinalLLMObsUrl() {
49284939
public String getFinalCrashTrackingTelemetryUrl() {
49294940
if (crashTrackingAgentless) {
49304941
// when agentless crashTracking is turned on we send directly to our intake
4931-
return "https://all-http-intake.logs." + site + "/api/v2/apmtelemetry";
4942+
return getDefaultTelemetryUrl();
49324943
} else {
49334944
// when agentless are not set we send to the dd trace agent running locally
49344945
return "http://" + agentHost + ":" + agentPort + "/telemetry/proxy/api/v2/apmtelemetry";

internal-api/src/test/groovy/datadog/trace/api/ConfigTest.groovy

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2793,4 +2793,24 @@ class ConfigTest extends DDSpecification {
27932793
then:
27942794
config.tracePropagationBehaviorExtract == TracePropagationBehaviorExtract.CONTINUE
27952795
}
2796+
2797+
def "Intake client uses correct URL for site #site"() {
2798+
setup:
2799+
def config = Spy(Config.get())
2800+
2801+
when:
2802+
config.getSite() >> site
2803+
2804+
then:
2805+
config.getDefaultTelemetryUrl()
2806+
2807+
where:
2808+
site | expectedUrl
2809+
"datadoghq.com" | "https://instrumentation-telemetry-intake.datadoghq.com/api/v2/apmtelemetry"
2810+
"us3.datadoghq.com" | "https://instrumentation-telemetry-intake.us3.datadoghq.com/api/v2/apmtelemetry"
2811+
"us5.datadoghq.com" | "https://instrumentation-telemetry-intake.us5.datadoghq.com/api/v2/apmtelemetry"
2812+
"ap1.datadoghq.com" | "https://instrumentation-telemetry-intake.ap1.datadoghq.com/api/v2/apmtelemetry"
2813+
"datadoghq.eu" | "https://instrumentation-telemetry-intake.datadoghq.eu/api/v2/apmtelemetry"
2814+
"datad0g.com" | "https://all-http-intake.logs.datad0g.com/api/v2/apmtelemetry"
2815+
}
27962816
}

telemetry/src/main/java/datadog/telemetry/TelemetryClient.java

Lines changed: 1 addition & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -58,15 +58,7 @@ private static String buildIntakeTelemetryUrl(Config config) {
5858
return agentlessUrl + "/api/v2/apmtelemetry";
5959
}
6060
}
61-
62-
String site = config.getSite();
63-
String prefix = "";
64-
if (site.endsWith("datad0g.com")) {
65-
prefix = "all-http-intake.logs.";
66-
} else if (site.endsWith("datadoghq.com") || site.endsWith("datadoghq.eu")) {
67-
prefix = "instrumentation-telemetry-intake.";
68-
}
69-
return "https://" + prefix + site + "/api/v2/apmtelemetry";
61+
return config.getDefaultTelemetryUrl();
7062
}
7163

7264
private static final Logger log = LoggerFactory.getLogger(TelemetryClient.class);

telemetry/src/test/groovy/datadog/telemetry/TelemetryClientTest.groovy

Lines changed: 1 addition & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -9,32 +9,9 @@ import spock.lang.Specification
99

1010
class TelemetryClientTest extends Specification {
1111

12-
def "Intake client uses correct URL for site #site"() {
13-
setup:
14-
def config = Stub(Config)
15-
config.getApiKey() >> "dummy-key"
16-
config.getAgentTimeout() >> 123
17-
config.getSite() >> site
18-
19-
when:
20-
def intakeClient = TelemetryClient.buildIntakeClient(config, HttpRetryPolicy.Factory.NEVER_RETRY)
21-
22-
then:
23-
intakeClient.getUrl().toString() == expectedUrl
24-
25-
where:
26-
site | expectedUrl
27-
"datadoghq.com" | "https://instrumentation-telemetry-intake.datadoghq.com/api/v2/apmtelemetry"
28-
"us3.datadoghq.com" | "https://instrumentation-telemetry-intake.us3.datadoghq.com/api/v2/apmtelemetry"
29-
"us5.datadoghq.com" | "https://instrumentation-telemetry-intake.us5.datadoghq.com/api/v2/apmtelemetry"
30-
"ap1.datadoghq.com" | "https://instrumentation-telemetry-intake.ap1.datadoghq.com/api/v2/apmtelemetry"
31-
"datadoghq.eu" | "https://instrumentation-telemetry-intake.datadoghq.eu/api/v2/apmtelemetry"
32-
"datad0g.com" | "https://all-http-intake.logs.datad0g.com/api/v2/apmtelemetry"
33-
}
34-
3512
def "Intake client uses CI Visibility agentless URL if configured to do so"() {
3613
setup:
37-
def config = Stub(Config)
14+
def config = Spy(Config.get())
3815
config.getApiKey() >> "dummy-key"
3916
config.getAgentTimeout() >> 123
4017
config.getSite() >> "datad0g.com"

0 commit comments

Comments
 (0)