|
20 | 20 | import static org.mockito.ArgumentMatchers.any;
|
21 | 21 | import static org.mockito.BDDMockito.given;
|
22 | 22 | import static org.mockito.BDDMockito.then;
|
23 |
| -import static org.mockito.Mockito.mock; |
24 |
| -import static org.mockito.Mockito.never; |
| 23 | +import static org.mockito.Mockito.*; |
25 | 24 |
|
26 | 25 | import com.fasterxml.jackson.databind.ObjectMapper;
|
27 | 26 | import io.awspring.cloud.sqs.QueueAttributesResolvingException;
|
|
47 | 46 | import org.springframework.messaging.MessageHeaders;
|
48 | 47 | import org.springframework.messaging.support.MessageBuilder;
|
49 | 48 | import software.amazon.awssdk.services.sqs.SqsAsyncClient;
|
50 |
| -import software.amazon.awssdk.services.sqs.model.CreateQueueResponse; |
51 |
| -import software.amazon.awssdk.services.sqs.model.DeleteMessageBatchRequest; |
52 |
| -import software.amazon.awssdk.services.sqs.model.DeleteMessageBatchResponse; |
53 |
| -import software.amazon.awssdk.services.sqs.model.GetQueueAttributesRequest; |
54 |
| -import software.amazon.awssdk.services.sqs.model.GetQueueAttributesResponse; |
55 |
| -import software.amazon.awssdk.services.sqs.model.GetQueueUrlRequest; |
56 |
| -import software.amazon.awssdk.services.sqs.model.GetQueueUrlResponse; |
57 |
| -import software.amazon.awssdk.services.sqs.model.MessageSystemAttributeName; |
58 |
| -import software.amazon.awssdk.services.sqs.model.QueueAttributeName; |
59 |
| -import software.amazon.awssdk.services.sqs.model.QueueDoesNotExistException; |
60 |
| -import software.amazon.awssdk.services.sqs.model.ReceiveMessageRequest; |
61 |
| -import software.amazon.awssdk.services.sqs.model.ReceiveMessageResponse; |
62 |
| -import software.amazon.awssdk.services.sqs.model.SendMessageBatchRequest; |
63 |
| -import software.amazon.awssdk.services.sqs.model.SendMessageBatchRequestEntry; |
64 |
| -import software.amazon.awssdk.services.sqs.model.SendMessageBatchResponse; |
65 |
| -import software.amazon.awssdk.services.sqs.model.SendMessageRequest; |
66 |
| -import software.amazon.awssdk.services.sqs.model.SendMessageResponse; |
| 49 | +import software.amazon.awssdk.services.sqs.model.*; |
67 | 50 |
|
68 | 51 | /**
|
69 | 52 | * @author Tomaz Fernandes
|
@@ -1208,4 +1191,35 @@ void shouldReceiveBatchFifo() {
|
1208 | 1191 |
|
1209 | 1192 | }
|
1210 | 1193 |
|
| 1194 | + @Test |
| 1195 | + void shouldPropagateTracingAsMessageSystemAttribute() { |
| 1196 | + String queue = "test-queue"; |
| 1197 | + GetQueueUrlResponse urlResponse = GetQueueUrlResponse.builder().queueUrl(queue).build(); |
| 1198 | + given(mockClient.getQueueUrl(any(GetQueueUrlRequest.class))) |
| 1199 | + .willReturn(CompletableFuture.completedFuture(urlResponse)); |
| 1200 | + mockQueueAttributes(mockClient, Map.of()); |
| 1201 | + SendMessageResponse response = SendMessageResponse.builder().messageId(UUID.randomUUID().toString()) |
| 1202 | + .sequenceNumber("123").build(); |
| 1203 | + given(mockClient.sendMessage(any(SendMessageRequest.class))) |
| 1204 | + .willReturn(CompletableFuture.completedFuture(response)); |
| 1205 | + |
| 1206 | + SqsOperations sqsOperations = SqsTemplate.newSyncTemplate(mockClient); |
| 1207 | + SendResult<Object> result = sqsOperations.send(options -> options |
| 1208 | + .queue(queue) |
| 1209 | + .header(SqsHeaders.MessageSystemAttributes.SQS_AWS_TRACE_HEADER, "abc") |
| 1210 | + .payload("test") |
| 1211 | + ); |
| 1212 | + |
| 1213 | + assertThat(result).isNotNull(); |
| 1214 | + |
| 1215 | + ArgumentCaptor<SendMessageRequest> captor = ArgumentCaptor.forClass(SendMessageRequest.class); |
| 1216 | + then(mockClient).should().sendMessage(captor.capture()); |
| 1217 | + SendMessageRequest sendMessageRequest = captor.getValue(); |
| 1218 | + |
| 1219 | + assertThat(sendMessageRequest.messageSystemAttributes()).hasEntrySatisfying( |
| 1220 | + MessageSystemAttributeNameForSends.AWS_TRACE_HEADER, |
| 1221 | + value -> assertThat(value.stringValue()).isEqualTo("abc") |
| 1222 | + ); |
| 1223 | + } |
| 1224 | + |
1211 | 1225 | }
|
0 commit comments