diff --git a/README.md b/README.md index b081ebb..a91cfc6 100644 --- a/README.md +++ b/README.md @@ -25,7 +25,7 @@ For more information on using the amazon-sqs-java-extended-client-lib, see our g com.amazonaws amazon-sqs-java-extended-client-lib - 2.0.1 + 2.0.2 jar ``` diff --git a/pom.xml b/pom.xml index 489c34c..7c4fb2a 100644 --- a/pom.xml +++ b/pom.xml @@ -6,7 +6,7 @@ com.amazonaws amazon-sqs-java-extended-client-lib - 2.0.1 + 2.0.2 jar Amazon SQS Extended Client Library for Java An extension to the Amazon SQS client that enables sending and receiving messages up to 2GB via Amazon S3. diff --git a/src/test/java/com/amazon/sqs/javamessaging/AmazonSQSExtendedClientTest.java b/src/test/java/com/amazon/sqs/javamessaging/AmazonSQSExtendedClientTest.java index c2f5451..d2e7798 100644 --- a/src/test/java/com/amazon/sqs/javamessaging/AmazonSQSExtendedClientTest.java +++ b/src/test/java/com/amazon/sqs/javamessaging/AmazonSQSExtendedClientTest.java @@ -59,6 +59,7 @@ import static com.amazon.sqs.javamessaging.AmazonSQSExtendedClient.USER_AGENT_NAME; import static com.amazon.sqs.javamessaging.AmazonSQSExtendedClient.USER_AGENT_VERSION; import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertNotEquals; import static org.mockito.Matchers.any; import static org.mockito.Matchers.eq; import static org.mockito.Mockito.doThrow; @@ -429,6 +430,34 @@ public void testWhenMessageBatchIsSentThenOnlyMessagesLargerThanThresholdAreStor verify(mockS3, times(8)).putObject(isA(PutObjectRequest.class), isA(RequestBody.class)); } + @Test + public void testWhenMessageBatchIsLargeS3PointerIsCorrectlySentToSQSAndNotOriginalMessage() { + String messageBody = generateStringWithLength(LESS_THAN_SQS_SIZE_LIMIT); + ExtendedClientConfiguration extendedClientConfiguration = new ExtendedClientConfiguration() + .withPayloadSupportEnabled(mockS3, S3_BUCKET_NAME).withAlwaysThroughS3(true); + + SqsClient sqsExtended = spy(new AmazonSQSExtendedClient(mockSqsBackend, extendedClientConfiguration)); + + List batchEntries = new ArrayList(); + for (int i = 0; i < 10; i++) { + SendMessageBatchRequestEntry entry = SendMessageBatchRequestEntry.builder() + .id("entry_" + i) + .messageBody(messageBody) + .build(); + batchEntries.add(entry); + } + SendMessageBatchRequest batchRequest = SendMessageBatchRequest.builder().queueUrl(SQS_QUEUE_URL).entries(batchEntries).build(); + + sqsExtended.sendMessageBatch(batchRequest); + + ArgumentCaptor sendMessageRequestCaptor = ArgumentCaptor.forClass(SendMessageBatchRequest.class); + verify(mockSqsBackend).sendMessageBatch(sendMessageRequestCaptor.capture()); + + for (SendMessageBatchRequestEntry entry : sendMessageRequestCaptor.getValue().entries()) { + assertNotEquals(messageBody, entry.messageBody()); + } + } + @Test public void testWhenSmallMessageIsSentThenNoAttributeIsAdded() { String messageBody = generateStringWithLength(LESS_THAN_SQS_SIZE_LIMIT);