Skip to content

Commit 5c827e6

Browse files
committed
Migrate TracingTests to new test structure and add support for custom headers in SqsClient
1 parent c800d46 commit 5c827e6

File tree

6 files changed

+171
-235
lines changed

6 files changed

+171
-235
lines changed

rest/rest-sqs-testing-amazon-java-sdk/src/test/scala/org/elasticmq/rest/sqs/TracingTests.scala

Lines changed: 0 additions & 194 deletions
This file was deleted.

rest/rest-sqs-testing-amazon-java-sdk/src/test/scala/org/elasticmq/rest/sqs/aws/AmazonJavaSdkNewTestSuite.scala

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@ abstract class AmazonJavaSdkNewTestSuite
1313
with CreateQueueRaceConditionTests
1414
with FifoDeduplicationTests
1515
with MessageAttributesTests
16+
with TracingTests
1617

1718
class AmazonJavaSdkV1TestSuite extends AmazonJavaSdkNewTestSuite with SqsClientServerCommunication
1819
class AmazonJavaSdkV2TestSuite extends AmazonJavaSdkNewTestSuite with SqsClientServerWithSdkV2Communication
Lines changed: 112 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,112 @@
1+
package org.elasticmq.rest.sqs.aws
2+
3+
import org.elasticmq.rest.sqs.client._
4+
5+
trait TracingTests extends AmazonJavaSdkNewTestBase {
6+
7+
test("Message should not have assigned trace if such one was not provided") {
8+
val queueUrl = testClient.createQueue("testQueue1").toOption.get
9+
10+
testClient.sendMessage(queueUrl, "Message 1")
11+
12+
val message = testClient
13+
.receiveMessage(queueUrl, systemAttributes = List("All"), maxNumberOfMessages = Some(1))
14+
.head
15+
message.attributes.get(AWSTraceHeader) shouldBe None
16+
}
17+
18+
test("Trace ID should be returned if it was assigned to message (via message system attribute)") {
19+
val queueUrl = testClient.createQueue("testQueue1").toOption.get
20+
21+
testClient.sendMessage(queueUrl, "Message 1", awsTraceHeader = Some("123456789"))
22+
23+
val message = testClient
24+
.receiveMessage(queueUrl, systemAttributes = List("All"), maxNumberOfMessages = Some(1))
25+
.head
26+
message.attributes.get(AWSTraceHeader) shouldBe Some("123456789")
27+
}
28+
29+
test("Trace ID should be returned if it was assigned to message (via sendMessage request header)") {
30+
val queueUrl = testClient.createQueue("testQueue1").toOption.get
31+
32+
testClient.sendMessage(queueUrl, "Message 1", customHeaders = Map("X-Amzn-Trace-Id" -> "987654321"))
33+
34+
val message = testClient
35+
.receiveMessage(queueUrl, systemAttributes = List("All"), maxNumberOfMessages = Some(1))
36+
.head
37+
message.attributes.get(AWSTraceHeader) shouldBe Some("987654321")
38+
}
39+
40+
test(
41+
"Sending several messages in batch request and applying trace ID in system attributes per message should result in different traces assigned to different messages"
42+
) {
43+
val queueUrl = testClient.createQueue("testQueue1").toOption.get
44+
45+
testClient.sendMessageBatch(
46+
queueUrl,
47+
List(
48+
SendMessageBatchEntry("id1", "message 1", awsTraceHeader = Some("1")),
49+
SendMessageBatchEntry("id2", "message 2", awsTraceHeader = Some("2"))
50+
)
51+
)
52+
53+
val messages = testClient.receiveMessage(queueUrl, systemAttributes = List("All"), maxNumberOfMessages = Some(2))
54+
55+
messages.find(_.body == "message 1").get.attributes.get(AWSTraceHeader) shouldBe Some("1")
56+
messages.find(_.body == "message 2").get.attributes.get(AWSTraceHeader) shouldBe Some("2")
57+
}
58+
59+
test(
60+
"Sending several messages in batch request and applying trace ID as a header to request, should result in assigning same trace ID to all messages in batch"
61+
) {
62+
val queueUrl = testClient.createQueue("testQueue1").toOption.get
63+
64+
testClient.sendMessageBatch(
65+
queueUrl,
66+
List(
67+
SendMessageBatchEntry("id1", "message 1"),
68+
SendMessageBatchEntry("id2", "message 2")
69+
),
70+
customHeaders = Map("X-Amzn-Trace-Id" -> "987654321")
71+
)
72+
73+
val messages = testClient.receiveMessage(queueUrl, systemAttributes = List("All"), maxNumberOfMessages = Some(2))
74+
75+
messages.find(_.body == "message 1").get.attributes.get(AWSTraceHeader) shouldBe Some("987654321")
76+
messages.find(_.body == "message 2").get.attributes.get(AWSTraceHeader) shouldBe Some("987654321")
77+
}
78+
79+
test("Trace ID provided as a system attribute should have precedence over trace ID provided in request header") {
80+
val queueUrl = testClient.createQueue("testQueue1").toOption.get
81+
82+
testClient.sendMessage(
83+
queueUrl,
84+
"Message 1",
85+
awsTraceHeader = Some("123456789"),
86+
customHeaders = Map("X-Amzn-Trace-Id" -> "987654321")
87+
)
88+
89+
val message = testClient
90+
.receiveMessage(queueUrl, systemAttributes = List("All"), maxNumberOfMessages = Some(1))
91+
.head
92+
message.attributes.get(AWSTraceHeader) shouldBe Some("123456789")
93+
}
94+
95+
test("Client should be able to ask for Trace ID attribute") {
96+
val queueUrl = testClient.createQueue("testQueue1").toOption.get
97+
98+
testClient.sendMessage(
99+
queueUrl,
100+
"Message 1",
101+
awsTraceHeader = Some("123456789"),
102+
customHeaders = Map("X-Amzn-Trace-Id" -> "987654321")
103+
)
104+
105+
val message = testClient
106+
.receiveMessage(queueUrl, systemAttributes = List("AWSTraceHeader"), maxNumberOfMessages = Some(1))
107+
.head
108+
109+
message.attributes should have size 1
110+
message.attributes.get(AWSTraceHeader) shouldBe Some("123456789")
111+
}
112+
}

0 commit comments

Comments
 (0)