|
56 | 56 | import java.util.ArrayList;
|
57 | 57 | import java.util.Arrays;
|
58 | 58 | import java.util.Collections;
|
| 59 | +import java.util.Iterator; |
59 | 60 | import java.util.List;
|
60 | 61 | import java.util.UUID;
|
61 | 62 | import java.util.concurrent.atomic.AtomicInteger;
|
| 63 | +import java.util.regex.Matcher; |
| 64 | +import java.util.regex.Pattern; |
62 | 65 | import java.util.stream.IntStream;
|
63 | 66 |
|
64 | 67 | import static com.azure.core.util.tracing.Tracer.AZ_TRACING_NAMESPACE_KEY;
|
@@ -487,7 +490,6 @@ void sendMessagesListWithTransaction() {
|
487 | 490 | void sendMessagesList() {
|
488 | 491 | // Arrange
|
489 | 492 | final int count = 4;
|
490 |
| - final byte[] contents = TEST_CONTENTS.toBytes(); |
491 | 493 | final List<ServiceBusMessage> messages = TestUtils.getServiceBusMessages(count, UUID.randomUUID().toString());
|
492 | 494 |
|
493 | 495 | when(connection.createSendLink(eq(ENTITY_NAME), eq(ENTITY_NAME), eq(retryOptions), isNull()))
|
@@ -701,6 +703,48 @@ void cancelScheduleMessages() {
|
701 | 703 | Assertions.assertEquals(sequenceNumbers.size(), actualTotal.get());
|
702 | 704 | }
|
703 | 705 |
|
| 706 | + /** |
| 707 | + * Verifies that sending multiple message will result in calling sender.send(Message...). |
| 708 | + */ |
| 709 | + @Test |
| 710 | + void verifyMessageOrdering() { |
| 711 | + // Arrange |
| 712 | + final ServiceBusMessage firstMessage = new ServiceBusMessage("First message " + UUID.randomUUID()); |
| 713 | + final ServiceBusMessage secondMessage = new ServiceBusMessage("Second message " + UUID.randomUUID()); |
| 714 | + final ServiceBusMessage thirdMessage = new ServiceBusMessage("Third message " + UUID.randomUUID()); |
| 715 | + final ServiceBusMessage fourthMessage = new ServiceBusMessage("Fourth message " + UUID.randomUUID()); |
| 716 | + final ServiceBusMessage fifthMessage = new ServiceBusMessage("Fifth message " + UUID.randomUUID()); |
| 717 | + final List<ServiceBusMessage> messages = new ArrayList<>(); |
| 718 | + messages.add(firstMessage); |
| 719 | + messages.add(secondMessage); |
| 720 | + messages.add(thirdMessage); |
| 721 | + messages.add(fourthMessage); |
| 722 | + messages.add(fifthMessage); |
| 723 | + |
| 724 | + when(connection.createSendLink(eq(ENTITY_NAME), eq(ENTITY_NAME), eq(retryOptions), isNull())) |
| 725 | + .thenReturn(Mono.just(sendLink)); |
| 726 | + when(sendLink.send(anyList())).thenReturn(Mono.empty()); |
| 727 | + |
| 728 | + // Act |
| 729 | + StepVerifier.create(sender.sendMessages(messages)) |
| 730 | + .verifyComplete(); |
| 731 | + |
| 732 | + // Assert |
| 733 | + verify(sendLink).send(messagesCaptor.capture()); |
| 734 | + |
| 735 | + final List<Message> messagesSent = messagesCaptor.getValue(); |
| 736 | + Assertions.assertEquals(messages.size(), messagesSent.size()); |
| 737 | + |
| 738 | + Iterator<ServiceBusMessage> iterator = messages.iterator(); |
| 739 | + Pattern regex = Pattern.compile("\\{(.*)\\}"); |
| 740 | + for (Message message : messagesSent) { |
| 741 | + Matcher matcher = regex.matcher(message.getBody().toString()); |
| 742 | + String content = matcher.find() ? matcher.group(1) : ""; |
| 743 | + Assertions.assertEquals(content, iterator.next().getBody().toString()); |
| 744 | + } |
| 745 | + messagesSent.forEach(message -> Assertions.assertEquals(Section.SectionType.Data, message.getBody().getType())); |
| 746 | + } |
| 747 | + |
704 | 748 | /**
|
705 | 749 | * Verifies that the onClientClose is called.
|
706 | 750 | */
|
|
0 commit comments