You are viewing a plain text version of this content. The canonical link for it is here.
Posted to server-dev@james.apache.org by bt...@apache.org on 2019/11/04 11:23:54 UTC

[james-project] 18/30: JAMES-2937 Dequeue should work after network outage

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 <bt...@linagora.com>
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: server-dev-unsubscribe@james.apache.org
For additional commands, e-mail: server-dev-help@james.apache.org