Skip to content

Commit 04579e4

Browse files
committed
Test for different headers when multiple propagation styles are set
1 parent f953fad commit 04579e4

File tree

2 files changed

+103
-13
lines changed

2 files changed

+103
-13
lines changed

dd-java-agent/instrumentation/aws-java-eventbridge-2.0/src/test/groovy/EventBridgeClientTest.groovy

Lines changed: 65 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -27,19 +27,30 @@ class EventBridgeClientTest extends AgentTestRunner {
2727
.withReuse(true)
2828
.withStartupTimeout(Duration.ofSeconds(120))
2929

30-
@Shared SnsClient snsClient
31-
@Shared String testTopicARN
32-
@Shared String testTopicName
33-
34-
@Shared EventBridgeClient eventBridgeClient
35-
@Shared EventBridgeAsyncClient eventBridgeAsyncClient
36-
@Shared String testBusARN
37-
@Shared String testBusName
38-
@Shared String testRuleName
39-
40-
@Shared SqsClient sqsClient
41-
@Shared String testQueueURL
42-
@Shared String testQueueARN
30+
@Shared
31+
SnsClient snsClient
32+
@Shared
33+
String testTopicARN
34+
@Shared
35+
String testTopicName
36+
37+
@Shared
38+
EventBridgeClient eventBridgeClient
39+
@Shared
40+
EventBridgeAsyncClient eventBridgeAsyncClient
41+
@Shared
42+
String testBusARN
43+
@Shared
44+
String testBusName
45+
@Shared
46+
String testRuleName
47+
48+
@Shared
49+
SqsClient sqsClient
50+
@Shared
51+
String testQueueURL
52+
@Shared
53+
String testQueueARN
4354

4455
def setupSpec() {
4556
LOCALSTACK.start()
@@ -115,6 +126,9 @@ class EventBridgeClientTest extends AgentTestRunner {
115126
super.configurePreAgent()
116127
injectSysConfig(GeneralConfig.SERVICE_NAME, "eventbridge")
117128
injectSysConfig(GeneralConfig.DATA_STREAMS_ENABLED, "true")
129+
130+
// test propagation styles
131+
injectSysConfig('dd.trace.propagation.style', 'datadog,b3single,b3multi,haystack,xray,tracecontext')
118132
}
119133

120134
def "trace details propagated via EventBridge to SQS (sync)"() {
@@ -443,4 +457,42 @@ class EventBridgeClientTest extends AgentTestRunner {
443457
assert emptyDetailBody["detail"]["_datadog"]["x-datadog-sent-timestamp"] != null
444458
assert emptyDetailBody["detail"]["_datadog"]["x-datadog-bus-name"] != null
445459
}
460+
461+
def "test propagation styles"() {
462+
when:
463+
eventBridgeClient.putEvents { req ->
464+
req.entries(
465+
PutEventsRequestEntry.builder()
466+
.source("com.example")
467+
.detailType("test")
468+
.detail('{"foo":"bar"}')
469+
.eventBusName(testBusARN)
470+
.build()
471+
)
472+
}
473+
474+
def message = sqsClient.receiveMessage { it.queueUrl(testQueueURL).waitTimeSeconds(3) }.messages().get(0)
475+
def messageBody = new JsonSlurper().parseText(message.body())
476+
def traceContext = messageBody["detail"]["_datadog"]
477+
478+
then:
479+
expectedHeaders.each { header ->
480+
assert traceContext[header] != null
481+
}
482+
483+
where:
484+
expectedHeaders = [
485+
'x-datadog-trace-id',
486+
'x-datadog-parent-id',
487+
'x-datadog-sampling-priority',
488+
'b3',
489+
'X-B3-TraceId',
490+
'X-B3-SpanId',
491+
'Span-ID',
492+
'Parent-ID',
493+
'X-Amzn-Trace-Id',
494+
'traceparent',
495+
'tracestate'
496+
]
497+
}
446498
}

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

Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -65,6 +65,9 @@ abstract class SnsClientTest extends VersionedNamingTestBase {
6565
// Set a service name that gets sorted early with SORT_BY_NAMES
6666
injectSysConfig(GeneralConfig.SERVICE_NAME, "A-service")
6767
injectSysConfig(GeneralConfig.DATA_STREAMS_ENABLED, isDataStreamsEnabled().toString())
68+
69+
// test propagation styles
70+
injectSysConfig('dd.trace.propagation.style', 'datadog,b3single,b3multi,xray,tracecontext')
6871
}
6972

7073
@Override
@@ -188,6 +191,41 @@ abstract class SnsClientTest extends VersionedNamingTestBase {
188191
then:
189192
noExceptionThrown()
190193
}
194+
195+
def "test propagation styles"() {
196+
when:
197+
TEST_WRITER.clear()
198+
snsClient.publish { req ->
199+
req.message("test message")
200+
.topicArn(testTopicARN)
201+
}
202+
203+
def message = sqsClient.receiveMessage { it.queueUrl(testQueueURL).waitTimeSeconds(3) }.messages().get(0)
204+
def messageBody = new JsonSlurper().parseText(message.body())
205+
206+
String base64EncodedString = messageBody["MessageAttributes"]["_datadog"]["Value"]
207+
byte[] decodedBytes = base64EncodedString.decodeBase64()
208+
String decodedString = new String(decodedBytes, "UTF-8")
209+
def traceContext = new JsonSlurper().parseText(decodedString)
210+
211+
then:
212+
expectedHeaders.each { header ->
213+
assert traceContext[header] != null, "Header $header is missing"
214+
}
215+
216+
where:
217+
expectedHeaders = [
218+
'x-datadog-trace-id',
219+
'x-datadog-parent-id',
220+
'x-datadog-sampling-priority',
221+
'b3',
222+
'X-B3-TraceId',
223+
'X-B3-SpanId',
224+
'X-Amzn-Trace-Id',
225+
'traceparent',
226+
'tracestate'
227+
]
228+
}
191229
}
192230

193231
class SnsClientV0Test extends SnsClientTest {

0 commit comments

Comments
 (0)