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/12/10 02:30:23 UTC

[james-project] 20/27: JAMES-2979 add test to demonstrate spooler issue with activeMQ

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 1c67aca05f4a3904317fc3e3cde3488bb71fe53d
Author: RĂ©mi KOWALSKI <rk...@linagora.com>
AuthorDate: Wed Nov 20 16:16:11 2019 +0100

    JAMES-2979 add test to demonstrate spooler issue with activeMQ
---
 .../apache/james/WithCassandraBlobStoreTest.java   |  6 ++++
 .../apache/james/MailsShouldBeWellReceived.java    | 34 ++++++++++++++++++++++
 2 files changed, 40 insertions(+)

diff --git a/server/container/guice/cassandra-guice/src/test/java/org/apache/james/WithCassandraBlobStoreTest.java b/server/container/guice/cassandra-guice/src/test/java/org/apache/james/WithCassandraBlobStoreTest.java
index 7157928..39790a7 100644
--- a/server/container/guice/cassandra-guice/src/test/java/org/apache/james/WithCassandraBlobStoreTest.java
+++ b/server/container/guice/cassandra-guice/src/test/java/org/apache/james/WithCassandraBlobStoreTest.java
@@ -22,6 +22,7 @@ package org.apache.james;
 import org.apache.james.jmap.draft.JmapJamesServerContract;
 import org.apache.james.jmap.draft.methods.integration.SpamAssassinModuleExtension;
 import org.apache.james.modules.TestJMAPServerModule;
+import org.junit.jupiter.api.Disabled;
 import org.junit.jupiter.api.extension.RegisterExtension;
 
 class WithCassandraBlobStoreTest implements JmapJamesServerContract, MailsShouldBeWellReceived, JamesServerContract {
@@ -40,4 +41,9 @@ class WithCassandraBlobStoreTest implements JmapJamesServerContract, MailsShould
             .overrideWith(JmapJamesServerContract.DOMAIN_LIST_CONFIGURATION_MODULE))
         .build();
 
+
+    @Override
+    @Disabled("Fail to spool some mail at the same time with activeMQ")
+    public void twoHundredMailsShouldBeWellReceived(GuiceJamesServer server) throws Exception {
+    }
 }
diff --git a/server/container/guice/guice-common/src/test/java/org/apache/james/MailsShouldBeWellReceived.java b/server/container/guice/guice-common/src/test/java/org/apache/james/MailsShouldBeWellReceived.java
index 99822cc..0088658 100644
--- a/server/container/guice/guice-common/src/test/java/org/apache/james/MailsShouldBeWellReceived.java
+++ b/server/container/guice/guice-common/src/test/java/org/apache/james/MailsShouldBeWellReceived.java
@@ -19,6 +19,8 @@
 
 package org.apache.james;
 
+import java.util.UUID;
+
 import org.apache.james.core.Domain;
 import org.apache.james.modules.protocols.ImapGuiceProbe;
 import org.apache.james.modules.protocols.SmtpGuiceProbe;
@@ -31,6 +33,10 @@ import org.awaitility.Duration;
 import org.awaitility.core.ConditionFactory;
 import org.junit.jupiter.api.Test;
 
+import com.github.fge.lambdas.runnable.ThrowingRunnable;
+import reactor.core.publisher.Mono;
+import reactor.core.scheduler.Schedulers;
+
 interface MailsShouldBeWellReceived {
 
     String JAMES_SERVER_HOST = "127.0.0.1";
@@ -42,6 +48,8 @@ interface MailsShouldBeWellReceived {
         .and().pollDelay(Duration.ONE_HUNDRED_MILLISECONDS)
         .await();
 
+    ConditionFactory CALMLY_AWAIT_FIVE_MINUTE = CALMLY_AWAIT.timeout(Duration.FIVE_MINUTES);
+
     @Test
     default void mailsShouldBeWellReceived(GuiceJamesServer server) throws Exception {
         server.getProbe(DataProbeImpl.class).fluent()
@@ -63,4 +71,30 @@ interface MailsShouldBeWellReceived {
         }
     }
 
+    @Test
+    default void twoHundredMailsShouldBeWellReceived(GuiceJamesServer server) throws Exception {
+        server.getProbe(DataProbeImpl.class).fluent()
+            .addDomain(DOMAIN)
+            .addUser(JAMES_USER, PASSWORD);
+
+        int messageCount = 200;
+
+        try (SMTPMessageSender sender = new SMTPMessageSender(Domain.LOCALHOST.asString())) {
+            Mono.fromRunnable(((ThrowingRunnable) () ->
+                sender.connect(JAMES_SERVER_HOST, server.getProbe(SmtpGuiceProbe.class).getSmtpPort())
+                    .sendMessageWithHeaders("bob@any.com", JAMES_USER, "UUID " + UUID.randomUUID().toString())))
+                .repeat(messageCount - 1)
+                .subscribeOn(Schedulers.elastic())
+                .blockLast();
+        }
+
+        CALMLY_AWAIT_FIVE_MINUTE.until(() -> server.getProbe(SpoolerProbe.class).processingFinished());
+
+        try (IMAPMessageReader reader = new IMAPMessageReader()) {
+            reader.connect(JAMES_SERVER_HOST, server.getProbe(ImapGuiceProbe.class).getImapPort())
+                .login(JAMES_USER, PASSWORD)
+                .select(IMAPMessageReader.INBOX)
+                .awaitMessageCount(CALMLY_AWAIT_FIVE_MINUTE, messageCount);
+        }
+    }
 }


---------------------------------------------------------------------
To unsubscribe, e-mail: server-dev-unsubscribe@james.apache.org
For additional commands, e-mail: server-dev-help@james.apache.org