Skip to content

Commit a7982c2

Browse files
authored
Add support for TRACE_HTTP_CLIENT_TAG_QUERY_STRING and change default value of HTTP_CLIENT_TAG_QUERY_STRING (#7677)
* testing logs * fixing client header tags * adding unit tests for env variables * code cleanup and fixing tests * final code cleanup * modified existing decorator test to match new var default * creating config var for trace_http_client_tag_query_string and updating tests rebasing * spotless * fixing more legacy tests * updating config for one more test * changing injectsysconfig * configuring for tests * updating sysconfig for wrong test to correct test * enabling final 2 tests fixing merge conlfict * updating tests with new urlTags merge conflicts rebase * spotless * spotless apply pt2 * updating url tag for snsclient test * spotlesS * spotless 2.o * fixing last 2 tests * spotless apply * removing unused imports * moving expectedQueryParams to a shared module * deleting class binary * adding default case * spotless * importing module in last test * using shared module for last unit teset * adding support for new mule test fixing merge conflicts through rebase * small PR changes * changing ExpectedQueryParams to a utility class * spotless * removing unused import
1 parent 9d6a07b commit a7982c2

File tree

23 files changed

+149
-25
lines changed

23 files changed

+149
-25
lines changed

dd-java-agent/agent-bootstrap/src/test/groovy/datadog/trace/bootstrap/instrumentation/decorator/HttpClientDecoratorTest.groovy

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,8 @@ class HttpClientDecoratorTest extends ClientDecoratorTest {
2929
if (req) {
3030
1 * span.setTag(Tags.HTTP_METHOD, req.method)
3131
1 * span.setTag(Tags.HTTP_URL, {it.toString() == "$req.url"})
32+
1 * span.setTag(DDTags.HTTP_QUERY, null)
33+
1 * span.setTag(DDTags.HTTP_FRAGMENT, null)
3234
1 * span.setTag(Tags.PEER_HOSTNAME, req.url.host)
3335
1 * span.setTag(Tags.PEER_PORT, req.url.port)
3436
1 * span.setResourceName({ it as String == req.method.toUpperCase() + " " + req.path }, ResourceNamePriorities.HTTP_PATH_NORMALIZER)
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
apply from: "$rootDir/gradle/java.gradle"
Lines changed: 62 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,62 @@
1+
package datadog.trace.instrumentation.aws;
2+
3+
import java.util.Arrays;
4+
import java.util.List;
5+
6+
public final class ExpectedQueryParams {
7+
private ExpectedQueryParams() {}
8+
9+
public static List<String> getExpectedQueryParams(String operation) {
10+
switch (operation) {
11+
case "Publish":
12+
return Arrays.asList("Action", "Version", "TopicArn", "Message");
13+
case "PublishBatch":
14+
return Arrays.asList(
15+
"Action",
16+
"Version",
17+
"TopicArn",
18+
"PublishBatchRequestEntries.member.1.Id",
19+
"PublishBatchRequestEntries.member.1.Message",
20+
"PublishBatchRequestEntries.member.2.Id",
21+
"PublishBatchRequestEntries.member.2.Message");
22+
case "AllocateAddress":
23+
case "DeleteOptionGroup":
24+
return Arrays.asList("Action", "Version");
25+
case "CreateQueue":
26+
case "GetQueueUrl":
27+
return Arrays.asList("Action", "Version", "QueueName");
28+
case "SendMessage":
29+
return Arrays.asList("Action", "Version", "QueueUrl", "MessageBody");
30+
case "DeleteMessage":
31+
return Arrays.asList("Action", "Version", "QueueUrl", "ReceiptHandle");
32+
case "ReceiveMessage":
33+
return Arrays.asList("Action", "Version", "QueueUrl", "AttributeName.1");
34+
case "SendMessageBatch":
35+
return Arrays.asList(
36+
"Action",
37+
"Version",
38+
"QueueUrl",
39+
"SendMessageBatchRequestEntry.1.Id",
40+
"SendMessageBatchRequestEntry.1.MessageBody",
41+
"SendMessageBatchRequestEntry.2.Id",
42+
"SendMessageBatchRequestEntry.2.MessageBody",
43+
"SendMessageBatchRequestEntry.3.Id",
44+
"SendMessageBatchRequestEntry.3.MessageBody",
45+
"SendMessageBatchRequestEntry.4.Id",
46+
"SendMessageBatchRequestEntry.4.MessageBody",
47+
"SendMessageBatchRequestEntry.5.Id",
48+
"SendMessageBatchRequestEntry.5.MessageBody");
49+
case "DeleteMessageBatch":
50+
return Arrays.asList(
51+
"Action",
52+
"Version",
53+
"QueueUrl",
54+
"DeleteMessageBatchRequestEntry.1.Id",
55+
"DeleteMessageBatchRequestEntry.1.ReceiptHandle");
56+
case "Mule":
57+
return Arrays.asList("name");
58+
default:
59+
return null;
60+
}
61+
}
62+
}

dd-java-agent/instrumentation/aws-java-sdk-2.2/build.gradle

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@ def fixedSdkVersion = '2.20.33' // 2.20.34 is missing and breaks IDEA import
2323

2424
dependencies {
2525
compileOnly group: 'software.amazon.awssdk', name: 'aws-core', version: '2.2.0'
26+
testImplementation project(':dd-java-agent:instrumentation:aws-common')
2627

2728
// Include httpclient instrumentation for testing because it is a dependency for aws-sdk.
2829
testImplementation project(':dd-java-agent:instrumentation:apache-httpclient-4')

dd-java-agent/instrumentation/aws-java-sdk-2.2/src/dsmTest/groovy/Aws2SnsDataStreamsTest.groovy

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ import datadog.trace.api.DDSpanTypes
44
import datadog.trace.api.DDTags
55
import datadog.trace.bootstrap.instrumentation.api.Tags
66
import datadog.trace.core.datastreams.StatsGroup
7+
import datadog.trace.instrumentation.aws.ExpectedQueryParams
78
import org.eclipse.jetty.http2.server.HTTP2CServerConnectionFactory
89
import org.eclipse.jetty.server.HttpConfiguration
910
import org.eclipse.jetty.server.HttpConnectionFactory
@@ -170,7 +171,6 @@ abstract class Aws2SnsDataStreamsTest extends VersionedNamingTestBase {
170171
"$Tags.SPAN_KIND" Tags.SPAN_KIND_CLIENT
171172
"$Tags.PEER_HOSTNAME" "localhost"
172173
"$Tags.PEER_PORT" server.address.port
173-
"$Tags.HTTP_URL" "${server.address}${path}"
174174
"$Tags.HTTP_METHOD" "$method"
175175
"$Tags.HTTP_STATUS" 200
176176
"aws.service" "$service"
@@ -182,6 +182,7 @@ abstract class Aws2SnsDataStreamsTest extends VersionedNamingTestBase {
182182
"topicname" "mytopic"
183183
"$DDTags.PATHWAY_HASH" { String }
184184
checkPeerService = true
185+
urlTags("${server.address}${path}", ExpectedQueryParams.getExpectedQueryParams(operation))
185186
defaultTags(false, checkPeerService)
186187
}
187188
}
@@ -268,7 +269,6 @@ abstract class Aws2SnsDataStreamsTest extends VersionedNamingTestBase {
268269
"$Tags.SPAN_KIND" Tags.SPAN_KIND_CLIENT
269270
"$Tags.PEER_HOSTNAME" "localhost"
270271
"$Tags.PEER_PORT" server.address.port
271-
"$Tags.HTTP_URL" "${server.address}${path}"
272272
"$Tags.HTTP_METHOD" "$method"
273273
"$Tags.HTTP_STATUS" 200
274274
"aws.service" "$service"
@@ -279,6 +279,7 @@ abstract class Aws2SnsDataStreamsTest extends VersionedNamingTestBase {
279279
"aws.topic.name" "mytopic"
280280
"topicname" "mytopic"
281281
"$DDTags.PATHWAY_HASH" { String }
282+
urlTags("${server.address}${path}", ExpectedQueryParams.getExpectedQueryParams(operation))
282283
defaultTags(false, true)
283284
}
284285
}

dd-java-agent/instrumentation/aws-java-sdk-2.2/src/test/groovy/Aws2ClientTest.groovy

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ import datadog.trace.agent.test.naming.VersionedNamingTestBase
44
import datadog.trace.api.Config
55
import datadog.trace.api.DDSpanTypes
66
import datadog.trace.bootstrap.instrumentation.api.Tags
7+
import datadog.trace.instrumentation.aws.ExpectedQueryParams
78
import software.amazon.awssdk.auth.credentials.AwsBasicCredentials
89
import software.amazon.awssdk.auth.credentials.StaticCredentialsProvider
910
import software.amazon.awssdk.core.ResponseInputStream
@@ -129,7 +130,6 @@ abstract class Aws2ClientTest extends VersionedNamingTestBase {
129130
"$Tags.SPAN_KIND" Tags.SPAN_KIND_CLIENT
130131
"$Tags.PEER_HOSTNAME" "localhost"
131132
"$Tags.PEER_PORT" server.address.port
132-
"$Tags.HTTP_URL" "${server.address}${path}"
133133
"$Tags.HTTP_METHOD" "$method"
134134
"$Tags.HTTP_STATUS" 200
135135
"aws.service" "$service"
@@ -173,6 +173,7 @@ abstract class Aws2ClientTest extends VersionedNamingTestBase {
173173
peerServiceFrom("aws.stream.name")
174174
checkPeerService = true
175175
}
176+
urlTags("${server.address}${path}", ExpectedQueryParams.getExpectedQueryParams(operation))
176177
defaultTags(false, checkPeerService)
177178
}
178179
}
@@ -266,7 +267,6 @@ abstract class Aws2ClientTest extends VersionedNamingTestBase {
266267
"$Tags.SPAN_KIND" Tags.SPAN_KIND_CLIENT
267268
"$Tags.PEER_HOSTNAME" "localhost"
268269
"$Tags.PEER_PORT" server.address.port
269-
"$Tags.HTTP_URL" "${server.address}${path}"
270270
"$Tags.HTTP_METHOD" "$method"
271271
"$Tags.HTTP_STATUS" 200
272272
"aws.service" "$service"
@@ -308,6 +308,7 @@ abstract class Aws2ClientTest extends VersionedNamingTestBase {
308308
peerServiceFrom("aws.stream.name")
309309
checkPeerService = true
310310
}
311+
urlTags("${server.address}${path}", ExpectedQueryParams.getExpectedQueryParams(operation))
311312
defaultTags(false, checkPeerService)
312313
}
313314
}

dd-java-agent/instrumentation/aws-java-sdk-2.2/src/test/groovy/LegacyAws2ClientForkedTest.groovy

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
import datadog.trace.agent.test.AgentTestRunner
22
import datadog.trace.api.DDSpanTypes
33
import datadog.trace.bootstrap.instrumentation.api.Tags
4+
import datadog.trace.instrumentation.aws.ExpectedQueryParams
45
import software.amazon.awssdk.auth.credentials.AwsBasicCredentials
56
import software.amazon.awssdk.auth.credentials.StaticCredentialsProvider
67
import software.amazon.awssdk.core.ResponseInputStream
@@ -119,7 +120,6 @@ class LegacyAws2ClientForkedTest extends AgentTestRunner {
119120
"$Tags.SPAN_KIND" Tags.SPAN_KIND_CLIENT
120121
"$Tags.PEER_HOSTNAME" "localhost"
121122
"$Tags.PEER_PORT" server.address.port
122-
"$Tags.HTTP_URL" "${server.address}${path}"
123123
"$Tags.HTTP_METHOD" "$method"
124124
"$Tags.HTTP_STATUS" 200
125125
"aws.service" "$service"
@@ -151,6 +151,7 @@ class LegacyAws2ClientForkedTest extends AgentTestRunner {
151151
"aws.stream.name" "somestream"
152152
"streamname" "somestream"
153153
}
154+
urlTags("${server.address}${path}", ExpectedQueryParams.getExpectedQueryParams(operation))
154155
defaultTags()
155156
}
156157
}
@@ -262,7 +263,6 @@ class LegacyAws2ClientForkedTest extends AgentTestRunner {
262263
"$Tags.SPAN_KIND" Tags.SPAN_KIND_CLIENT
263264
"$Tags.PEER_HOSTNAME" "localhost"
264265
"$Tags.PEER_PORT" server.address.port
265-
"$Tags.HTTP_URL" "${server.address}${path}"
266266
"$Tags.HTTP_METHOD" "$method"
267267
"$Tags.HTTP_STATUS" 200
268268
"aws.service" "$service"
@@ -291,6 +291,7 @@ class LegacyAws2ClientForkedTest extends AgentTestRunner {
291291
"aws.stream.name" "somestream"
292292
"streamname" "somestream"
293293
}
294+
urlTags("${server.address}${path}", ExpectedQueryParams.getExpectedQueryParams(operation))
294295
defaultTags()
295296
}
296297
}

dd-java-agent/instrumentation/aws-java-sns-1.0/build.gradle

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@ addTestSuiteExtendingForDir('latestDepForkedTest', 'latestDepTest', 'test')
1414

1515
dependencies {
1616
compileOnly group: 'com.amazonaws', name: 'aws-java-sdk-sns', version: '1.12.710'
17+
testImplementation project(':dd-java-agent:instrumentation:aws-common')
1718

1819
// Include httpclient instrumentation for testing because it is a dependency for aws-sdk.
1920
testImplementation project(':dd-java-agent:instrumentation:apache-httpclient-4')

dd-java-agent/instrumentation/aws-java-sns-2.0/build.gradle

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@ addTestSuiteExtendingForDir('latestDepForkedTest', 'latestDepTest', 'test')
1414

1515
dependencies {
1616
compileOnly group: 'software.amazon.awssdk', name: 'sns', version: '2.25.40'
17+
testImplementation project(':dd-java-agent:instrumentation:aws-common')
1718

1819
// Include httpclient instrumentation for testing because it is a dependency for aws-sdk.
1920
testImplementation project(':dd-java-agent:instrumentation:apache-httpclient-4')

dd-java-agent/instrumentation/aws-java-sns-2.0/src/test/groovy/SnsClientTest.groovy

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ import datadog.trace.api.DDTags
55
import datadog.trace.api.config.GeneralConfig
66
import datadog.trace.bootstrap.instrumentation.api.Tags
77
import datadog.trace.core.datastreams.StatsGroup
8+
import datadog.trace.instrumentation.aws.ExpectedQueryParams
89
import groovy.json.JsonSlurper
910
import org.testcontainers.containers.GenericContainer
1011
import org.testcontainers.utility.DockerImageName
@@ -65,8 +66,6 @@ abstract class SnsClientTest extends VersionedNamingTestBase {
6566
// Set a service name that gets sorted early with SORT_BY_NAMES
6667
injectSysConfig(GeneralConfig.SERVICE_NAME, "A-service")
6768
injectSysConfig(GeneralConfig.DATA_STREAMS_ENABLED, isDataStreamsEnabled().toString())
68-
69-
// test propagation styles
7069
injectSysConfig('dd.trace.propagation.style', 'datadog,b3single,b3multi,xray,tracecontext')
7170
}
7271

@@ -137,7 +136,6 @@ abstract class SnsClientTest extends VersionedNamingTestBase {
137136
tags {
138137
"$Tags.COMPONENT" "java-aws-sdk"
139138
"$Tags.SPAN_KIND" Tags.SPAN_KIND_CLIENT
140-
"$Tags.HTTP_URL" endPoint+'/'
141139
"$Tags.HTTP_METHOD" "POST"
142140
"$Tags.HTTP_STATUS" 200
143141
"$Tags.PEER_PORT" LOCALSTACK.getMappedPort(4566)
@@ -152,6 +150,7 @@ abstract class SnsClientTest extends VersionedNamingTestBase {
152150
if ({ isDataStreamsEnabled() }) {
153151
"$DDTags.PATHWAY_HASH" { String }
154152
}
153+
urlTags("${endPoint}/", ExpectedQueryParams.getExpectedQueryParams("Publish"))
155154
defaultTags()
156155
}
157156
}

0 commit comments

Comments
 (0)