This is an automated email from the ASF dual-hosted git repository. btellier pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/james-project.git
commit 00acb85935ef99c0a262aa3f2a94a57e79d0c507 Author: Benoit Tellier <[email protected]> AuthorDate: Thu Oct 31 14:34:20 2019 +0700 JAMES-2937 Dequeue should work after network outage --- .../queue/rabbitmq/RabbitMQMailQueueTest.java | 32 ++++++++++++++++++++++ 1 file changed, 32 insertions(+) diff --git a/server/queue/queue-rabbitmq/src/test/java/org/apache/james/queue/rabbitmq/RabbitMQMailQueueTest.java b/server/queue/queue-rabbitmq/src/test/java/org/apache/james/queue/rabbitmq/RabbitMQMailQueueTest.java index 9ba2b50..f8f7bd3 100644 --- a/server/queue/queue-rabbitmq/src/test/java/org/apache/james/queue/rabbitmq/RabbitMQMailQueueTest.java +++ b/server/queue/queue-rabbitmq/src/test/java/org/apache/james/queue/rabbitmq/RabbitMQMailQueueTest.java @@ -29,6 +29,7 @@ import static org.mockito.Mockito.verify; import java.time.Duration; import java.time.Instant; +import java.util.List; import java.util.function.Function; import java.util.stream.IntStream; import java.util.stream.Stream; @@ -218,6 +219,37 @@ class RabbitMQMailQueueTest { } + @Test + void dequeueShouldWorkAfterNetworkOutage() throws Exception { + String name1 = "myMail1"; + String name2 = "myMail2"; + String name3 = "myMail3"; + Flux<MailQueue.MailQueueItem> dequeueFlux = Flux.from(getMailQueue().deQueue()); + getMailQueue().enQueue(defaultMail() + .name(name1) + .build()); + + rabbitMQExtension.getRabbitMQ().pause(); + Thread.sleep(2000); + + getMailQueue().enQueue(defaultMail() + .name(name2) + .build()); + + rabbitMQExtension.getRabbitMQ().unpause(); + Thread.sleep(100); + + getMailQueue().enQueue(defaultMail() + .name(name3) + .build()); + + List<MailQueue.MailQueueItem> items = dequeueFlux.take(3).collectList().block(Duration.ofSeconds(10)); + + assertThat(items) + .extracting(item -> item.getMail().getName()) + .containsExactly(name1, name2, name3); + } + private void enqueueSomeMails(Function<Integer, String> namePattern, int emailCount) { IntStream.rangeClosed(1, emailCount) .forEach(Throwing.intConsumer(i -> enQueue(defaultMail() --------------------------------------------------------------------- To unsubscribe, e-mail: [email protected] For additional commands, e-mail: [email protected]
