Skip to content

Commit 2a22043

Browse files
Fix service name provided by user tagging
1 parent 7d65586 commit 2a22043

File tree

8 files changed

+30
-26
lines changed

8 files changed

+30
-26
lines changed

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

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -101,6 +101,7 @@ public <T extends CoverageCalculator> BuildSystemModuleImpl(
101101
new BuildModuleSettings(
102102
getPropertiesPropagatedToChildProcess(
103103
config.getServiceName(),
104+
config.isServiceNameSetByUser(),
104105
moduleName,
105106
startCommand,
106107
classpath,
@@ -128,6 +129,7 @@ public void set(Map<String, String> carrier, String key, String value) {
128129

129130
private Map<String, String> getPropertiesPropagatedToChildProcess(
130131
String serviceName,
132+
boolean userProvidedServiceName,
131133
String moduleName,
132134
String startCommand,
133135
@Nullable Collection<Path> classpath,
@@ -195,6 +197,9 @@ private Map<String, String> getPropertiesPropagatedToChildProcess(
195197

196198
propagatedSystemProperties.put(
197199
Strings.propertyNameToSystemPropertyName(GeneralConfig.SERVICE_NAME), serviceName);
200+
propagatedSystemProperties.put(
201+
Strings.propertyNameToSystemPropertyName(GeneralConfig.SERVICE_NAME_SET_BY_USER),
202+
String.valueOf(userProvidedServiceName));
198203
propagatedSystemProperties.put(
199204
Strings.propertyNameToSystemPropertyName(CiVisibilityConfig.CIVISIBILITY_MODULE_NAME),
200205
moduleName);

dd-java-agent/agent-ci-visibility/src/testFixtures/groovy/datadog/trace/civisibility/CiVisibilityInstrumentationTest.groovy

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -368,7 +368,7 @@ abstract class CiVisibilityInstrumentationTest extends AgentTestRunner {
368368
}
369369
}
370370

371-
def generateTestFixtures(testcaseName, events, coverages, additionalReplacements, additionalIgnoredTags) {
371+
def generateTestFixtures(String testcaseName, List<Map> events, List<Map> coverages, Map<String, String> additionalReplacements, List<String> additionalIgnoredTags) {
372372
def clazz = this.getClass()
373373
def resourceName = "/" + clazz.name.replace('.', '/') + ".class"
374374
def classfilePath = clazz.getResource(resourceName).toURI().schemeSpecificPart
@@ -380,7 +380,7 @@ abstract class CiVisibilityInstrumentationTest extends AgentTestRunner {
380380
submoduleName = "test"
381381
}
382382
def baseTemplatesPath = modulePath + "/src/" + submoduleName + "/resources/" + testcaseName
383-
CiVisibilityTestUtils.generateTemplates(baseTemplatesPath, events, coverages, additionalReplacements, additionalIgnoredTags)
383+
CiVisibilityTestUtils.generateTemplates(baseTemplatesPath, events, coverages, additionalReplacements.keySet(), additionalIgnoredTags)
384384
return [:]
385385
}
386386

dd-java-agent/agent-ci-visibility/src/testFixtures/groovy/datadog/trace/civisibility/CiVisibilitySmokeTest.groovy

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -6,14 +6,14 @@ import spock.lang.Specification
66
abstract class CiVisibilitySmokeTest extends Specification {
77
static final List<String> SMOKE_IGNORED_TAGS = ["content.meta.['_dd.integration']"]
88

9-
protected verifyEventsAndCoverages(String projectName, String toolchain, String toolchainVersion, List<Map<String, Object>> events, List<Map<String, Object>> coverages) {
9+
protected verifyEventsAndCoverages(String projectName, String toolchain, String toolchainVersion, List<Map<String, Object>> events, List<Map<String, Object>> coverages, List<String> additionalDynamicTags = []) {
1010
def additionalReplacements = ["content.meta.['test.toolchain']": "$toolchain:$toolchainVersion"]
1111

1212
if (System.getenv().get("GENERATE_TEST_FIXTURES") != null) {
1313
def baseTemplatesPath = CiVisibilitySmokeTest.classLoader.getResource(projectName).toURI().schemeSpecificPart.replace('build/resources/test', 'src/test/resources')
14-
CiVisibilityTestUtils.generateTemplates(baseTemplatesPath, events, coverages, additionalReplacements, SMOKE_IGNORED_TAGS)
14+
CiVisibilityTestUtils.generateTemplates(baseTemplatesPath, events, coverages, additionalReplacements.keySet() + additionalDynamicTags, SMOKE_IGNORED_TAGS)
1515
} else {
16-
CiVisibilityTestUtils.assertData(projectName, events, coverages, additionalReplacements, SMOKE_IGNORED_TAGS)
16+
CiVisibilityTestUtils.assertData(projectName, events, coverages, additionalReplacements, SMOKE_IGNORED_TAGS, additionalDynamicTags)
1717
}
1818
}
1919

dd-java-agent/agent-ci-visibility/src/testFixtures/groovy/datadog/trace/civisibility/CiVisibilityTestUtils.groovy

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -71,28 +71,28 @@ abstract class CiVisibilityTestUtils {
7171
/**
7272
* Use this method to generate expected data templates
7373
*/
74-
static void generateTemplates(String baseTemplatesPath, List<Map<?, ?>> events, List<Map<?, ?>> coverages, Map<String, String> additionalReplacements, List<String> ignoredTags = []) {
74+
static void generateTemplates(String baseTemplatesPath, List<Map<?, ?>> events, List<Map<?, ?>> coverages, Collection<String> additionalDynamicPaths, List<String> ignoredTags = []) {
7575
if (!ignoredTags.empty) {
7676
events = removeTags(events, ignoredTags)
7777
}
7878
events.sort(EVENT_RESOURCE_COMPARATOR)
7979

8080
def templateGenerator = new TemplateGenerator(new LabelGenerator())
81-
def compiledAdditionalReplacements = compile(additionalReplacements.keySet())
81+
def compiledAdditionalReplacements = compile(additionalDynamicPaths)
8282

8383
Files.createDirectories(Paths.get(baseTemplatesPath))
8484
Files.write(Paths.get(baseTemplatesPath, "events.ftl"), templateGenerator.generateTemplate(events, EVENT_DYNAMIC_PATHS + compiledAdditionalReplacements).bytes)
8585
Files.write(Paths.get(baseTemplatesPath, "coverages.ftl"), templateGenerator.generateTemplate(coverages, COVERAGE_DYNAMIC_PATHS + compiledAdditionalReplacements).bytes)
8686
}
8787

88-
static Map<String, String> assertData(String baseTemplatesPath, List<Map<?, ?>> events, List<Map<?, ?>> coverages, Map<String, String> additionalReplacements, List<String> ignoredTags) {
88+
static Map<String, String> assertData(String baseTemplatesPath, List<Map<?, ?>> events, List<Map<?, ?>> coverages, Map<String, String> additionalReplacements, List<String> ignoredTags, List<String> additionalDynamicPaths = []) {
8989
events.sort(EVENT_RESOURCE_COMPARATOR)
9090

9191
def labelGenerator = new LabelGenerator()
9292
def templateGenerator = new TemplateGenerator(labelGenerator)
9393

9494
def replacementMap
95-
replacementMap = templateGenerator.generateReplacementMap(events, EVENT_DYNAMIC_PATHS)
95+
replacementMap = templateGenerator.generateReplacementMap(events, EVENT_DYNAMIC_PATHS + compile(additionalDynamicPaths))
9696
replacementMap = templateGenerator.generateReplacementMap(coverages, COVERAGE_DYNAMIC_PATHS)
9797

9898
for (Map.Entry<String, String> e : additionalReplacements.entrySet()) {

dd-smoke-tests/maven/src/test/groovy/datadog/smoketest/MavenSmokeTest.groovy

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -236,7 +236,8 @@ class MavenSmokeTest extends CiVisibilitySmokeTest {
236236
def exitCode = whenRunningMavenBuild([], [], [:], false)
237237
assert exitCode == 0
238238

239-
verifyEventsAndCoverages(projectName, "maven", mavenVersion, mockBackend.waitForEvents(5), mockBackend.waitForCoverages(1))
239+
def additionalDynamicPaths = ["content.service"]
240+
verifyEventsAndCoverages(projectName, "maven", mavenVersion, mockBackend.waitForEvents(5), mockBackend.waitForCoverages(1), additionalDynamicPaths)
240241

241242
where:
242243
projectName | mavenVersion

dd-smoke-tests/maven/src/test/resources/test_successful_maven_run_child_service_propagation/events.ftl

Lines changed: 11 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,6 @@
33
"duration" : ${content_duration},
44
"error" : 0,
55
"meta" : {
6-
"_dd.integration" : "maven",
76
"_dd.p.tid" : ${content_meta__dd_p_tid},
87
"_dd.test.is_user_provided_service" : "false",
98
"_dd.tracer_host" : ${content_meta__dd_tracer_host},
@@ -40,7 +39,7 @@
4039
},
4140
"name" : "maven.test_session",
4241
"resource" : "Maven Smoke Tests Project",
43-
"service" : "maven-1.50.0-snapshot-all",
42+
"service" : ${content_service},
4443
"start" : ${content_start},
4544
"test_session_id" : ${content_test_session_id}
4645
},
@@ -51,7 +50,6 @@
5150
"duration" : ${content_duration_2},
5251
"error" : 0,
5352
"meta" : {
54-
"_dd.integration" : "maven",
5553
"_dd.p.tid" : ${content_meta__dd_p_tid_2},
5654
"_dd.test.is_user_provided_service" : "false",
5755
"ci.workspace_path" : ${content_meta_ci_workspace_path},
@@ -85,7 +83,7 @@
8583
},
8684
"name" : "maven.test_module",
8785
"resource" : "Maven Smoke Tests Project maven-surefire-plugin default-test",
88-
"service" : "maven-1.50.0-snapshot-all",
86+
"service" : ${content_service},
8987
"start" : ${content_start_2},
9088
"test_module_id" : ${content_test_module_id},
9189
"test_session_id" : ${content_test_session_id}
@@ -117,7 +115,7 @@
117115
"name" : "Maven_Smoke_Tests_Project_maven_compiler_plugin_default_compile",
118116
"parent_id" : ${content_test_session_id},
119117
"resource" : "Maven_Smoke_Tests_Project_maven_compiler_plugin_default_compile",
120-
"service" : "maven-1.50.0-snapshot-all",
118+
"service" : ${content_service},
121119
"span_id" : ${content_span_id},
122120
"start" : ${content_start_3},
123121
"trace_id" : ${content_test_session_id}
@@ -149,7 +147,7 @@
149147
"name" : "Maven_Smoke_Tests_Project_maven_compiler_plugin_default_testCompile",
150148
"parent_id" : ${content_test_session_id},
151149
"resource" : "Maven_Smoke_Tests_Project_maven_compiler_plugin_default_testCompile",
152-
"service" : "maven-1.50.0-snapshot-all",
150+
"service" : ${content_service},
153151
"span_id" : ${content_span_id_2},
154152
"start" : ${content_start_4},
155153
"trace_id" : ${content_test_session_id}
@@ -181,7 +179,7 @@
181179
"name" : "Maven_Smoke_Tests_Project_maven_resources_plugin_default_resources",
182180
"parent_id" : ${content_test_session_id},
183181
"resource" : "Maven_Smoke_Tests_Project_maven_resources_plugin_default_resources",
184-
"service" : "maven-1.50.0-snapshot-all",
182+
"service" : ${content_service},
185183
"span_id" : ${content_span_id_3},
186184
"start" : ${content_start_5},
187185
"trace_id" : ${content_test_session_id}
@@ -213,7 +211,7 @@
213211
"name" : "Maven_Smoke_Tests_Project_maven_resources_plugin_default_testResources",
214212
"parent_id" : ${content_test_session_id},
215213
"resource" : "Maven_Smoke_Tests_Project_maven_resources_plugin_default_testResources",
216-
"service" : "maven-1.50.0-snapshot-all",
214+
"service" : ${content_service},
217215
"span_id" : ${content_span_id_4},
218216
"start" : ${content_start_6},
219217
"trace_id" : ${content_test_session_id}
@@ -225,9 +223,8 @@
225223
"duration" : ${content_duration_7},
226224
"error" : 0,
227225
"meta" : {
228-
"_dd.integration" : "junit4",
229226
"_dd.p.tid" : ${content_meta__dd_p_tid_7},
230-
"_dd.test.is_user_provided_service" : "true",
227+
"_dd.test.is_user_provided_service" : "false",
231228
"_dd.tracer_host" : ${content_meta__dd_tracer_host},
232229
"ci.workspace_path" : ${content_meta_ci_workspace_path},
233230
"component" : "junit4",
@@ -261,7 +258,7 @@
261258
},
262259
"name" : "junit4.test_suite",
263260
"resource" : "datadog.smoke.TestSucceed",
264-
"service" : "maven-1.50.0-snapshot-all",
261+
"service" : ${content_service},
265262
"start" : ${content_start_7},
266263
"test_module_id" : ${content_test_module_id},
267264
"test_session_id" : ${content_test_session_id},
@@ -274,17 +271,16 @@
274271
"duration" : ${content_duration_8},
275272
"error" : 0,
276273
"meta" : {
277-
"_dd.integration" : "junit4",
278274
"_dd.library_capabilities.auto_test_retries" : "1",
279275
"_dd.library_capabilities.early_flake_detection" : "1",
280276
"_dd.library_capabilities.fail_fast_test_order" : "1",
281277
"_dd.library_capabilities.impacted_tests" : "1",
282278
"_dd.library_capabilities.test_impact_analysis" : "1",
283-
"_dd.library_capabilities.test_management.attempt_to_fix" : "2",
279+
"_dd.library_capabilities.test_management.attempt_to_fix" : "4",
284280
"_dd.library_capabilities.test_management.disable" : "1",
285281
"_dd.library_capabilities.test_management.quarantine" : "1",
286282
"_dd.p.tid" : ${content_meta__dd_p_tid_8},
287-
"_dd.test.is_user_provided_service" : "true",
283+
"_dd.test.is_user_provided_service" : "false",
288284
"_dd.tracer_host" : ${content_meta__dd_tracer_host},
289285
"ci.workspace_path" : ${content_meta_ci_workspace_path},
290286
"component" : "junit4",
@@ -321,7 +317,7 @@
321317
"name" : "junit4.test",
322318
"parent_id" : ${content_parent_id},
323319
"resource" : "datadog.smoke.TestSucceed.test_succeed",
324-
"service" : "maven-1.50.0-snapshot-all",
320+
"service" : ${content_service},
325321
"span_id" : ${content_span_id_5},
326322
"start" : ${content_start_8},
327323
"test_module_id" : ${content_test_module_id},

dd-trace-api/src/main/java/datadog/trace/api/config/GeneralConfig.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@ public final class GeneralConfig {
2121
public static final String SITE = "site";
2222

2323
public static final String SERVICE_NAME = "service.name";
24+
public static final String SERVICE_NAME_SET_BY_USER = "service.name.set.by.user";
2425
public static final String ENV = "env";
2526
public static final String VERSION = "version";
2627
public static final String PRIMARY_TAG = "primary.tag";

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

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -635,7 +635,8 @@ private Config(final ConfigProvider configProvider, final InstrumenterConfig ins
635635
serviceNameSetByUser = false;
636636
serviceName = configProvider.getString(SERVICE, DEFAULT_SERVICE_NAME, SERVICE_NAME);
637637
} else {
638-
serviceNameSetByUser = true;
638+
// might be an auto-detected name propagated from instrumented parent process
639+
serviceNameSetByUser = configProvider.getBoolean(SERVICE_NAME_SET_BY_USER, true);
639640
serviceName = userProvidedServiceName;
640641
}
641642

0 commit comments

Comments
 (0)