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 2020/06/24 10:57:15 UTC

[james-project] branch master updated (addf601 -> 56618ac)

This is an automated email from the ASF dual-hosted git repository.

btellier pushed a change to branch master
in repository https://gitbox.apache.org/repos/asf/james-project.git.


    from addf601  JAMES-3249: Correcting webadmin documentation
     new f7fc914  JAMES-3267 Stop forcefully delete ImapRequestFrameDecoder.decode temporary file
     new a6d4c7f  JAMES-3263 Optimize RecipientRewriteTable::getMappingsForType
     new ad0323b  JAMES-3252 Fix Changelog typo
     new 076c4c6  JAMES-3254 Provide sane examples for dnsservice.xml
     new 819bf96  JAMES-3177 Add tests to demonstrate SelectedMailboxImpl is not thread safe
     new 1996931  JAMES-3029 add test to check that mail is well received by all recipients
     new 56618ac  JAMES-3029 add test to check that mail is well received with 10 recipients

The 7 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails.  The revisions
listed as "add" were already present in the repository and have only
been added to this reference.


Summary of changes:
 CHANGELOG.md                                       |   2 +-
 .../cassandra-ldap/destination/conf/dnsservice.xml |   6 +-
 .../destination/conf/dnsservice.xml                |   6 +-
 .../destination/conf/dnsservice.xml                |   6 +-
 .../cassandra/destination/conf/dnsservice.xml      |   6 +-
 .../guice/jpa-smtp/destination/conf/dnsservice.xml |   6 +-
 .../run/guice/jpa/destination/conf/dnsservice.xml  |   6 +-
 .../guice/memory/destination/conf/dnsservice.xml   |   6 +-
 .../run/spring/destination/conf/dnsservice.xml     |   6 +-
 .../src/test/resources/dnsservice.xml              |   6 +-
 .../cassandra/src/test/resources/dnsservice.xml    |   6 +-
 .../processor/base/SelectedMailboxImplTest.java    |  60 +++++++++++-
 .../src/test/resources/dnsservice.xml              |   6 +-
 .../src/test/resources/dnsservice.xml              |   6 +-
 .../src/test/resources/dnsservice.xml              |   6 +-
 .../src/test/resources/dnsservice.xml              |   6 +-
 .../src/test/resources/dnsservice.xml              |   6 +-
 .../apache/james/MailsShouldBeWellReceived.java    | 108 +++++++++++++++++++--
 .../jpa-guice/src/test/resources/dnsservice.xml    |   6 +-
 .../sample-configuration/dnsservice.xml            |   6 +-
 .../src/test/resources/dnsservice.xml              |   6 +-
 .../jpa-smtp/sample-configuration/dnsservice.xml   |   6 +-
 .../jpa-smtp/src/test/resources/dnsservice.xml     |   6 +-
 .../sample-configuration/dnsservice.xml            |   6 +-
 .../memory-guice/src/test/resources/dnsservice.xml |   6 +-
 .../james/rrt/api/RecipientRewriteTable.java       |  10 +-
 .../src/test/resources/dnsservice.xml              |   6 +-
 .../src/test/resources/dnsservice.xml              |   6 +-
 .../src/test/resources/dnsservice.xml              |   6 +-
 .../src/test/resources/dnsservice.xml              |   6 +-
 .../src/test/resources/dnsservice.xml              |   6 +-
 .../src/test/resources/dnsservice.xml              |   6 +-
 .../imapserver/netty/ImapRequestFrameDecoder.java  |   8 +-
 .../src/test/resources/dnsservice.xml              |   6 +-
 .../src/test/resources/dnsservice.xml              |   6 +-
 .../org/apache/james/utils/SMTPMessageSender.java  |  30 +++---
 36 files changed, 214 insertions(+), 184 deletions(-)


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


[james-project] 06/07: JAMES-3029 add test to check that mail is well received by all recipients

Posted by bt...@apache.org.
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 1996931071e56850299ceda37623f060669486be
Author: Rémi KOWALSKI <rk...@linagora.com>
AuthorDate: Thu Jan 23 11:56:57 2020 +0100

    JAMES-3029 add test to check that mail is well received by all recipients
---
 .../apache/james/MailsShouldBeWellReceived.java    | 51 +++++++++++++++++++---
 .../org/apache/james/utils/SMTPMessageSender.java  | 30 +++++++------
 2 files changed, 60 insertions(+), 21 deletions(-)

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 2ddecad..f119167 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
@@ -48,6 +48,7 @@ import org.awaitility.Awaitility;
 import org.awaitility.Duration;
 import org.awaitility.core.ConditionFactory;
 import org.junit.jupiter.api.Test;
+import org.testcontainers.shaded.com.google.common.collect.ImmutableList;
 
 import com.github.fge.lambdas.Throwing;
 import com.google.common.io.Resources;
@@ -60,7 +61,9 @@ interface MailsShouldBeWellReceived {
     String JAMES_SERVER_HOST = "127.0.0.1";
     String DOMAIN = "apache.org";
     String JAMES_USER = "james-user@" + DOMAIN;
+    String OTHER_USER = "other-user@" + DOMAIN;
     String PASSWORD = "secret";
+    String PASSWORD_OTHER = "other-secret";
     ConditionFactory CALMLY_AWAIT = Awaitility
         .with().pollInterval(Duration.ONE_HUNDRED_MILLISECONDS)
         .and().pollDelay(Duration.ONE_HUNDRED_MILLISECONDS)
@@ -125,13 +128,8 @@ interface MailsShouldBeWellReceived {
         String message = Resources.toString(Resources.getResource("eml/htmlMail.eml"), StandardCharsets.UTF_8);
 
         try (SMTPMessageSender sender = new SMTPMessageSender(Domain.LOCALHOST.asString())) {
-            Mono.fromRunnable(
-                Throwing.runnable(() -> {
-                    sender.connect(JAMES_SERVER_HOST, smtpPort);
-                    sendUniqueMessage(sender, message);
-                }))
-                .subscribeOn(Schedulers.elastic())
-                .block();
+            sender.connect(JAMES_SERVER_HOST, smtpPort);
+            sendUniqueMessage(sender, message);
         }
 
         CALMLY_AWAIT.until(() -> server.getProbe(SpoolerProbe.class).processingFinished());
@@ -146,6 +144,40 @@ interface MailsShouldBeWellReceived {
     }
 
     @Test
+    default void mailsShouldBeWellReceivedByBothRecipient(GuiceJamesServer server) throws Exception {
+        server.getProbe(DataProbeImpl.class).fluent()
+            .addDomain(DOMAIN)
+            .addUser(JAMES_USER, PASSWORD)
+            .addUser(OTHER_USER, PASSWORD_OTHER);
+
+        MailboxProbeImpl mailboxProbe = server.getProbe(MailboxProbeImpl.class);
+        mailboxProbe.createMailbox("#private", JAMES_USER, DefaultMailboxes.INBOX);
+        mailboxProbe.createMailbox("#private", OTHER_USER, DefaultMailboxes.INBOX);
+
+        Port smtpPort = server.getProbe(SmtpGuiceProbe.class).getSmtpPort();
+        String message = Resources.toString(Resources.getResource("eml/htmlMail.eml"), StandardCharsets.UTF_8);
+
+        try (SMTPMessageSender sender = new SMTPMessageSender(Domain.LOCALHOST.asString())) {
+            sender.connect(JAMES_SERVER_HOST, smtpPort);
+            sendUniqueMessageToTwoUsers(sender, message);
+        }
+
+        CALMLY_AWAIT.untilAsserted(() -> assertThat(server.getProbe(SpoolerProbe.class).processingFinished()).isTrue());
+
+        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, 1);
+            reader.connect(JAMES_SERVER_HOST, server.getProbe(ImapGuiceProbe.class).getImapPort())
+                .login(OTHER_USER, PASSWORD_OTHER)
+                .select(IMAPMessageReader.INBOX)
+                .awaitMessageCount(CALMLY_AWAIT, 1);
+        }
+
+    }
+
+    @Test
     default void oneHundredMailsShouldBeWellReceived(GuiceJamesServer server) throws Exception {
         server.getProbe(DataProbeImpl.class).fluent()
             .addDomain(DOMAIN)
@@ -184,4 +216,9 @@ interface MailsShouldBeWellReceived {
         String uniqueMessage = message.replace("banana", "UUID " + UUID.randomUUID().toString());
         sender.sendMessageWithHeaders("bob@apache.org", JAMES_USER, uniqueMessage);
     }
+
+    default void sendUniqueMessageToTwoUsers(SMTPMessageSender sender, String message) throws IOException {
+        String uniqueMessage = message.replace("banana", "UUID " + UUID.randomUUID().toString());
+        sender.sendMessageWithHeaders("bob@apache.org", ImmutableList.of(JAMES_USER, OTHER_USER), uniqueMessage);
+    }
 }
diff --git a/server/testing/src/main/java/org/apache/james/utils/SMTPMessageSender.java b/server/testing/src/main/java/org/apache/james/utils/SMTPMessageSender.java
index fc699aa..655023b 100644
--- a/server/testing/src/main/java/org/apache/james/utils/SMTPMessageSender.java
+++ b/server/testing/src/main/java/org/apache/james/utils/SMTPMessageSender.java
@@ -26,6 +26,7 @@ import java.nio.charset.StandardCharsets;
 import java.security.InvalidKeyException;
 import java.security.NoSuchAlgorithmException;
 import java.security.spec.InvalidKeySpecException;
+import java.util.List;
 
 import javax.mail.Message;
 import javax.mail.MessagingException;
@@ -40,6 +41,8 @@ import org.junit.jupiter.api.extension.ExtensionContext;
 import org.junit.rules.ExternalResource;
 
 import com.github.fge.lambdas.Throwing;
+import com.github.steveash.guavate.Guavate;
+import com.google.common.collect.ImmutableList;
 
 public class SMTPMessageSender extends ExternalResource implements Closeable, AfterEachCallback {
 
@@ -91,15 +94,12 @@ public class SMTPMessageSender extends ExternalResource implements Closeable, Af
     }
 
     public SMTPMessageSender sendMessage(String from, String recipient) throws IOException {
-        doHelo();
-        doSetSender(from);
-        doRCPT("<" + recipient + ">");
-        doData("FROM: " + from + "\r\n" +
+        String message = "FROM: " + from + "\r\n" +
             "subject: test\r\n" +
             "\r\n" +
             "content\r\n" +
-            ".\r\n");
-        return this;
+            ".\r\n";
+        return sendMessageWithHeaders(from, ImmutableList.of(recipient), message);
     }
 
     public SMTPMessageSender sendMessageNoBracket(String from, String recipient) throws IOException {
@@ -115,22 +115,24 @@ public class SMTPMessageSender extends ExternalResource implements Closeable, Af
     }
 
     public SMTPMessageSender sendMessageWithHeaders(String from, String recipient, String message) throws IOException {
+        return sendMessageWithHeaders(from, ImmutableList.of(recipient), message);
+    }
+
+    public SMTPMessageSender sendMessageWithHeaders(String from, List<String> recipients, String message) throws IOException {
         doHelo();
         doSetSender(from);
-        doRCPT("<" + recipient + ">");
+        recipients.forEach(Throwing.consumer(this::doAddRcpt).sneakyThrow());
         doData(message);
         return this;
     }
 
     public SMTPMessageSender sendMessage(Mail mail) throws MessagingException, IOException {
         String from = mail.getMaybeSender().asString();
-        doHelo();
-        doSetSender(from);
-        mail.getRecipients().stream()
-            .map(MailAddress::asString)
-            .forEach(Throwing.consumer(this::doAddRcpt).sneakyThrow());
-        doData(asString(mail.getMessage()));
-        return this;
+        ImmutableList<String> recipients = mail.getRecipients().stream()
+            .map(MailAddress::asString).collect(Guavate.toImmutableList());
+        String message = asString(mail.getMessage());
+
+        return sendMessageWithHeaders(from, recipients, message);
     }
 
     public SMTPMessageSender sendMessage(FakeMail.Builder mail) throws MessagingException, IOException {


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


[james-project] 04/07: JAMES-3254 Provide sane examples for dnsservice.xml

Posted by bt...@apache.org.
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 076c4c6b57fb32507fbdd815f374a937a1b8483f
Author: Benoit Tellier <bt...@linagora.com>
AuthorDate: Fri Jun 19 13:59:07 2020 +0700

    JAMES-3254 Provide sane examples for dnsservice.xml
---
 .../run/guice/cassandra-ldap/destination/conf/dnsservice.xml        | 6 +-----
 .../guice/cassandra-rabbitmq-ldap/destination/conf/dnsservice.xml   | 6 +-----
 .../run/guice/cassandra-rabbitmq/destination/conf/dnsservice.xml    | 6 +-----
 dockerfiles/run/guice/cassandra/destination/conf/dnsservice.xml     | 6 +-----
 dockerfiles/run/guice/jpa-smtp/destination/conf/dnsservice.xml      | 6 +-----
 dockerfiles/run/guice/jpa/destination/conf/dnsservice.xml           | 6 +-----
 dockerfiles/run/guice/memory/destination/conf/dnsservice.xml        | 6 +-----
 dockerfiles/run/spring/destination/conf/dnsservice.xml              | 6 +-----
 .../src/test/resources/dnsservice.xml                               | 6 +-----
 mpt/impl/smtp/cassandra/src/test/resources/dnsservice.xml           | 6 +-----
 server/container/cli-integration/src/test/resources/dnsservice.xml  | 6 +-----
 .../guice/cassandra-guice/src/test/resources/dnsservice.xml         | 6 +-----
 .../guice/cassandra-ldap-guice/src/test/resources/dnsservice.xml    | 6 +-----
 .../cassandra-rabbitmq-guice/src/test/resources/dnsservice.xml      | 6 +-----
 .../cassandra-rabbitmq-ldap-guice/src/test/resources/dnsservice.xml | 6 +-----
 server/container/guice/jpa-guice/src/test/resources/dnsservice.xml  | 6 +-----
 .../guice/jpa-smtp-mariadb/sample-configuration/dnsservice.xml      | 6 +-----
 .../guice/jpa-smtp-mariadb/src/test/resources/dnsservice.xml        | 6 +-----
 server/container/guice/jpa-smtp/sample-configuration/dnsservice.xml | 6 +-----
 server/container/guice/jpa-smtp/src/test/resources/dnsservice.xml   | 6 +-----
 .../guice/memory-guice/sample-configuration/dnsservice.xml          | 6 +-----
 .../container/guice/memory-guice/src/test/resources/dnsservice.xml  | 6 +-----
 server/mailet/integration-testing/src/test/resources/dnsservice.xml | 6 +-----
 .../src/test/resources/dnsservice.xml                               | 6 +-----
 .../src/test/resources/dnsservice.xml                               | 6 +-----
 .../src/test/resources/dnsservice.xml                               | 6 +-----
 .../src/test/resources/dnsservice.xml                               | 6 +-----
 .../src/test/resources/dnsservice.xml                               | 6 +-----
 .../src/test/resources/dnsservice.xml                               | 6 +-----
 .../src/test/resources/dnsservice.xml                               | 6 +-----
 30 files changed, 30 insertions(+), 150 deletions(-)

diff --git a/dockerfiles/run/guice/cassandra-ldap/destination/conf/dnsservice.xml b/dockerfiles/run/guice/cassandra-ldap/destination/conf/dnsservice.xml
index 92896a1..1c4fb9e 100644
--- a/dockerfiles/run/guice/cassandra-ldap/destination/conf/dnsservice.xml
+++ b/dockerfiles/run/guice/cassandra-ldap/destination/conf/dnsservice.xml
@@ -21,11 +21,7 @@
 <!-- Read https://james.apache.org/server/config-dnsservice.html for further details -->
 
 <dnsservice>
-  <servers>
-    <server>8.8.8.8</server>
-    <server>62.210.16.6</server>
-  </servers>
-  <autodiscover>false</autodiscover>
+  <autodiscover>true</autodiscover>
   <authoritative>false</authoritative>
   <maxcachesize>50000</maxcachesize>
 </dnsservice>
diff --git a/dockerfiles/run/guice/cassandra-rabbitmq-ldap/destination/conf/dnsservice.xml b/dockerfiles/run/guice/cassandra-rabbitmq-ldap/destination/conf/dnsservice.xml
index 92896a1..1c4fb9e 100644
--- a/dockerfiles/run/guice/cassandra-rabbitmq-ldap/destination/conf/dnsservice.xml
+++ b/dockerfiles/run/guice/cassandra-rabbitmq-ldap/destination/conf/dnsservice.xml
@@ -21,11 +21,7 @@
 <!-- Read https://james.apache.org/server/config-dnsservice.html for further details -->
 
 <dnsservice>
-  <servers>
-    <server>8.8.8.8</server>
-    <server>62.210.16.6</server>
-  </servers>
-  <autodiscover>false</autodiscover>
+  <autodiscover>true</autodiscover>
   <authoritative>false</authoritative>
   <maxcachesize>50000</maxcachesize>
 </dnsservice>
diff --git a/dockerfiles/run/guice/cassandra-rabbitmq/destination/conf/dnsservice.xml b/dockerfiles/run/guice/cassandra-rabbitmq/destination/conf/dnsservice.xml
index 92896a1..1c4fb9e 100644
--- a/dockerfiles/run/guice/cassandra-rabbitmq/destination/conf/dnsservice.xml
+++ b/dockerfiles/run/guice/cassandra-rabbitmq/destination/conf/dnsservice.xml
@@ -21,11 +21,7 @@
 <!-- Read https://james.apache.org/server/config-dnsservice.html for further details -->
 
 <dnsservice>
-  <servers>
-    <server>8.8.8.8</server>
-    <server>62.210.16.6</server>
-  </servers>
-  <autodiscover>false</autodiscover>
+  <autodiscover>true</autodiscover>
   <authoritative>false</authoritative>
   <maxcachesize>50000</maxcachesize>
 </dnsservice>
diff --git a/dockerfiles/run/guice/cassandra/destination/conf/dnsservice.xml b/dockerfiles/run/guice/cassandra/destination/conf/dnsservice.xml
index 92896a1..1c4fb9e 100644
--- a/dockerfiles/run/guice/cassandra/destination/conf/dnsservice.xml
+++ b/dockerfiles/run/guice/cassandra/destination/conf/dnsservice.xml
@@ -21,11 +21,7 @@
 <!-- Read https://james.apache.org/server/config-dnsservice.html for further details -->
 
 <dnsservice>
-  <servers>
-    <server>8.8.8.8</server>
-    <server>62.210.16.6</server>
-  </servers>
-  <autodiscover>false</autodiscover>
+  <autodiscover>true</autodiscover>
   <authoritative>false</authoritative>
   <maxcachesize>50000</maxcachesize>
 </dnsservice>
diff --git a/dockerfiles/run/guice/jpa-smtp/destination/conf/dnsservice.xml b/dockerfiles/run/guice/jpa-smtp/destination/conf/dnsservice.xml
index 92896a1..1c4fb9e 100644
--- a/dockerfiles/run/guice/jpa-smtp/destination/conf/dnsservice.xml
+++ b/dockerfiles/run/guice/jpa-smtp/destination/conf/dnsservice.xml
@@ -21,11 +21,7 @@
 <!-- Read https://james.apache.org/server/config-dnsservice.html for further details -->
 
 <dnsservice>
-  <servers>
-    <server>8.8.8.8</server>
-    <server>62.210.16.6</server>
-  </servers>
-  <autodiscover>false</autodiscover>
+  <autodiscover>true</autodiscover>
   <authoritative>false</authoritative>
   <maxcachesize>50000</maxcachesize>
 </dnsservice>
diff --git a/dockerfiles/run/guice/jpa/destination/conf/dnsservice.xml b/dockerfiles/run/guice/jpa/destination/conf/dnsservice.xml
index 88ee0ef..863de0e 100644
--- a/dockerfiles/run/guice/jpa/destination/conf/dnsservice.xml
+++ b/dockerfiles/run/guice/jpa/destination/conf/dnsservice.xml
@@ -21,11 +21,7 @@
 
 
 <dnsservice>
-  <servers>
-    <server>8.8.8.8</server>
-    <server>62.210.16.6</server>
-  </servers>
-  <autodiscover>false</autodiscover>
+  <autodiscover>true</autodiscover>
   <authoritative>false</authoritative>
   <maxcachesize>50000</maxcachesize>
 </dnsservice>
diff --git a/dockerfiles/run/guice/memory/destination/conf/dnsservice.xml b/dockerfiles/run/guice/memory/destination/conf/dnsservice.xml
index f7decd0..b44a502 100644
--- a/dockerfiles/run/guice/memory/destination/conf/dnsservice.xml
+++ b/dockerfiles/run/guice/memory/destination/conf/dnsservice.xml
@@ -20,11 +20,7 @@
 <!-- Read https://james.apache.org/server/config-dnsservice.html for further details -->
 
 <dnsservice>
-  <servers>
-    <server>8.8.8.8</server>
-    <server>62.210.16.6</server>
-  </servers>
-  <autodiscover>false</autodiscover>
+  <autodiscover>true</autodiscover>
   <authoritative>false</authoritative>
   <maxcachesize>50000</maxcachesize>
 </dnsservice>
diff --git a/dockerfiles/run/spring/destination/conf/dnsservice.xml b/dockerfiles/run/spring/destination/conf/dnsservice.xml
index 0978a00..6e4fbd2 100644
--- a/dockerfiles/run/spring/destination/conf/dnsservice.xml
+++ b/dockerfiles/run/spring/destination/conf/dnsservice.xml
@@ -19,11 +19,7 @@
  -->
 
 <dnsservice>
-  <servers>
-    <server>8.8.8.8</server>
-    <server>62.210.16.6</server>
-  </servers>
-  <autodiscover>false</autodiscover>
+  <autodiscover>true</autodiscover>
   <authoritative>false</authoritative>
   <maxcachesize>50000</maxcachesize>
 </dnsservice>
diff --git a/mpt/impl/smtp/cassandra-rabbitmq-object-storage/src/test/resources/dnsservice.xml b/mpt/impl/smtp/cassandra-rabbitmq-object-storage/src/test/resources/dnsservice.xml
index 0978a00..6e4fbd2 100644
--- a/mpt/impl/smtp/cassandra-rabbitmq-object-storage/src/test/resources/dnsservice.xml
+++ b/mpt/impl/smtp/cassandra-rabbitmq-object-storage/src/test/resources/dnsservice.xml
@@ -19,11 +19,7 @@
  -->
 
 <dnsservice>
-  <servers>
-    <server>8.8.8.8</server>
-    <server>62.210.16.6</server>
-  </servers>
-  <autodiscover>false</autodiscover>
+  <autodiscover>true</autodiscover>
   <authoritative>false</authoritative>
   <maxcachesize>50000</maxcachesize>
 </dnsservice>
diff --git a/mpt/impl/smtp/cassandra/src/test/resources/dnsservice.xml b/mpt/impl/smtp/cassandra/src/test/resources/dnsservice.xml
index 0978a00..6e4fbd2 100644
--- a/mpt/impl/smtp/cassandra/src/test/resources/dnsservice.xml
+++ b/mpt/impl/smtp/cassandra/src/test/resources/dnsservice.xml
@@ -19,11 +19,7 @@
  -->
 
 <dnsservice>
-  <servers>
-    <server>8.8.8.8</server>
-    <server>62.210.16.6</server>
-  </servers>
-  <autodiscover>false</autodiscover>
+  <autodiscover>true</autodiscover>
   <authoritative>false</authoritative>
   <maxcachesize>50000</maxcachesize>
 </dnsservice>
diff --git a/server/container/cli-integration/src/test/resources/dnsservice.xml b/server/container/cli-integration/src/test/resources/dnsservice.xml
index 0978a00..6e4fbd2 100644
--- a/server/container/cli-integration/src/test/resources/dnsservice.xml
+++ b/server/container/cli-integration/src/test/resources/dnsservice.xml
@@ -19,11 +19,7 @@
  -->
 
 <dnsservice>
-  <servers>
-    <server>8.8.8.8</server>
-    <server>62.210.16.6</server>
-  </servers>
-  <autodiscover>false</autodiscover>
+  <autodiscover>true</autodiscover>
   <authoritative>false</authoritative>
   <maxcachesize>50000</maxcachesize>
 </dnsservice>
diff --git a/server/container/guice/cassandra-guice/src/test/resources/dnsservice.xml b/server/container/guice/cassandra-guice/src/test/resources/dnsservice.xml
index 0978a00..6e4fbd2 100644
--- a/server/container/guice/cassandra-guice/src/test/resources/dnsservice.xml
+++ b/server/container/guice/cassandra-guice/src/test/resources/dnsservice.xml
@@ -19,11 +19,7 @@
  -->
 
 <dnsservice>
-  <servers>
-    <server>8.8.8.8</server>
-    <server>62.210.16.6</server>
-  </servers>
-  <autodiscover>false</autodiscover>
+  <autodiscover>true</autodiscover>
   <authoritative>false</authoritative>
   <maxcachesize>50000</maxcachesize>
 </dnsservice>
diff --git a/server/container/guice/cassandra-ldap-guice/src/test/resources/dnsservice.xml b/server/container/guice/cassandra-ldap-guice/src/test/resources/dnsservice.xml
index 0978a00..6e4fbd2 100644
--- a/server/container/guice/cassandra-ldap-guice/src/test/resources/dnsservice.xml
+++ b/server/container/guice/cassandra-ldap-guice/src/test/resources/dnsservice.xml
@@ -19,11 +19,7 @@
  -->
 
 <dnsservice>
-  <servers>
-    <server>8.8.8.8</server>
-    <server>62.210.16.6</server>
-  </servers>
-  <autodiscover>false</autodiscover>
+  <autodiscover>true</autodiscover>
   <authoritative>false</authoritative>
   <maxcachesize>50000</maxcachesize>
 </dnsservice>
diff --git a/server/container/guice/cassandra-rabbitmq-guice/src/test/resources/dnsservice.xml b/server/container/guice/cassandra-rabbitmq-guice/src/test/resources/dnsservice.xml
index 0978a00..6e4fbd2 100644
--- a/server/container/guice/cassandra-rabbitmq-guice/src/test/resources/dnsservice.xml
+++ b/server/container/guice/cassandra-rabbitmq-guice/src/test/resources/dnsservice.xml
@@ -19,11 +19,7 @@
  -->
 
 <dnsservice>
-  <servers>
-    <server>8.8.8.8</server>
-    <server>62.210.16.6</server>
-  </servers>
-  <autodiscover>false</autodiscover>
+  <autodiscover>true</autodiscover>
   <authoritative>false</authoritative>
   <maxcachesize>50000</maxcachesize>
 </dnsservice>
diff --git a/server/container/guice/cassandra-rabbitmq-ldap-guice/src/test/resources/dnsservice.xml b/server/container/guice/cassandra-rabbitmq-ldap-guice/src/test/resources/dnsservice.xml
index 0978a00..6e4fbd2 100644
--- a/server/container/guice/cassandra-rabbitmq-ldap-guice/src/test/resources/dnsservice.xml
+++ b/server/container/guice/cassandra-rabbitmq-ldap-guice/src/test/resources/dnsservice.xml
@@ -19,11 +19,7 @@
  -->
 
 <dnsservice>
-  <servers>
-    <server>8.8.8.8</server>
-    <server>62.210.16.6</server>
-  </servers>
-  <autodiscover>false</autodiscover>
+  <autodiscover>true</autodiscover>
   <authoritative>false</authoritative>
   <maxcachesize>50000</maxcachesize>
 </dnsservice>
diff --git a/server/container/guice/jpa-guice/src/test/resources/dnsservice.xml b/server/container/guice/jpa-guice/src/test/resources/dnsservice.xml
index 0978a00..6e4fbd2 100644
--- a/server/container/guice/jpa-guice/src/test/resources/dnsservice.xml
+++ b/server/container/guice/jpa-guice/src/test/resources/dnsservice.xml
@@ -19,11 +19,7 @@
  -->
 
 <dnsservice>
-  <servers>
-    <server>8.8.8.8</server>
-    <server>62.210.16.6</server>
-  </servers>
-  <autodiscover>false</autodiscover>
+  <autodiscover>true</autodiscover>
   <authoritative>false</authoritative>
   <maxcachesize>50000</maxcachesize>
 </dnsservice>
diff --git a/server/container/guice/jpa-smtp-mariadb/sample-configuration/dnsservice.xml b/server/container/guice/jpa-smtp-mariadb/sample-configuration/dnsservice.xml
index 0978a00..6e4fbd2 100644
--- a/server/container/guice/jpa-smtp-mariadb/sample-configuration/dnsservice.xml
+++ b/server/container/guice/jpa-smtp-mariadb/sample-configuration/dnsservice.xml
@@ -19,11 +19,7 @@
  -->
 
 <dnsservice>
-  <servers>
-    <server>8.8.8.8</server>
-    <server>62.210.16.6</server>
-  </servers>
-  <autodiscover>false</autodiscover>
+  <autodiscover>true</autodiscover>
   <authoritative>false</authoritative>
   <maxcachesize>50000</maxcachesize>
 </dnsservice>
diff --git a/server/container/guice/jpa-smtp-mariadb/src/test/resources/dnsservice.xml b/server/container/guice/jpa-smtp-mariadb/src/test/resources/dnsservice.xml
index 0978a00..6e4fbd2 100644
--- a/server/container/guice/jpa-smtp-mariadb/src/test/resources/dnsservice.xml
+++ b/server/container/guice/jpa-smtp-mariadb/src/test/resources/dnsservice.xml
@@ -19,11 +19,7 @@
  -->
 
 <dnsservice>
-  <servers>
-    <server>8.8.8.8</server>
-    <server>62.210.16.6</server>
-  </servers>
-  <autodiscover>false</autodiscover>
+  <autodiscover>true</autodiscover>
   <authoritative>false</authoritative>
   <maxcachesize>50000</maxcachesize>
 </dnsservice>
diff --git a/server/container/guice/jpa-smtp/sample-configuration/dnsservice.xml b/server/container/guice/jpa-smtp/sample-configuration/dnsservice.xml
index 0978a00..6e4fbd2 100644
--- a/server/container/guice/jpa-smtp/sample-configuration/dnsservice.xml
+++ b/server/container/guice/jpa-smtp/sample-configuration/dnsservice.xml
@@ -19,11 +19,7 @@
  -->
 
 <dnsservice>
-  <servers>
-    <server>8.8.8.8</server>
-    <server>62.210.16.6</server>
-  </servers>
-  <autodiscover>false</autodiscover>
+  <autodiscover>true</autodiscover>
   <authoritative>false</authoritative>
   <maxcachesize>50000</maxcachesize>
 </dnsservice>
diff --git a/server/container/guice/jpa-smtp/src/test/resources/dnsservice.xml b/server/container/guice/jpa-smtp/src/test/resources/dnsservice.xml
index 0978a00..6e4fbd2 100644
--- a/server/container/guice/jpa-smtp/src/test/resources/dnsservice.xml
+++ b/server/container/guice/jpa-smtp/src/test/resources/dnsservice.xml
@@ -19,11 +19,7 @@
  -->
 
 <dnsservice>
-  <servers>
-    <server>8.8.8.8</server>
-    <server>62.210.16.6</server>
-  </servers>
-  <autodiscover>false</autodiscover>
+  <autodiscover>true</autodiscover>
   <authoritative>false</authoritative>
   <maxcachesize>50000</maxcachesize>
 </dnsservice>
diff --git a/server/container/guice/memory-guice/sample-configuration/dnsservice.xml b/server/container/guice/memory-guice/sample-configuration/dnsservice.xml
index 0978a00..6e4fbd2 100644
--- a/server/container/guice/memory-guice/sample-configuration/dnsservice.xml
+++ b/server/container/guice/memory-guice/sample-configuration/dnsservice.xml
@@ -19,11 +19,7 @@
  -->
 
 <dnsservice>
-  <servers>
-    <server>8.8.8.8</server>
-    <server>62.210.16.6</server>
-  </servers>
-  <autodiscover>false</autodiscover>
+  <autodiscover>true</autodiscover>
   <authoritative>false</authoritative>
   <maxcachesize>50000</maxcachesize>
 </dnsservice>
diff --git a/server/container/guice/memory-guice/src/test/resources/dnsservice.xml b/server/container/guice/memory-guice/src/test/resources/dnsservice.xml
index 0978a00..6e4fbd2 100644
--- a/server/container/guice/memory-guice/src/test/resources/dnsservice.xml
+++ b/server/container/guice/memory-guice/src/test/resources/dnsservice.xml
@@ -19,11 +19,7 @@
  -->
 
 <dnsservice>
-  <servers>
-    <server>8.8.8.8</server>
-    <server>62.210.16.6</server>
-  </servers>
-  <autodiscover>false</autodiscover>
+  <autodiscover>true</autodiscover>
   <authoritative>false</authoritative>
   <maxcachesize>50000</maxcachesize>
 </dnsservice>
diff --git a/server/mailet/integration-testing/src/test/resources/dnsservice.xml b/server/mailet/integration-testing/src/test/resources/dnsservice.xml
index 0978a00..6e4fbd2 100644
--- a/server/mailet/integration-testing/src/test/resources/dnsservice.xml
+++ b/server/mailet/integration-testing/src/test/resources/dnsservice.xml
@@ -19,11 +19,7 @@
  -->
 
 <dnsservice>
-  <servers>
-    <server>8.8.8.8</server>
-    <server>62.210.16.6</server>
-  </servers>
-  <autodiscover>false</autodiscover>
+  <autodiscover>true</autodiscover>
   <authoritative>false</authoritative>
   <maxcachesize>50000</maxcachesize>
 </dnsservice>
diff --git a/server/protocols/jmap-draft-integration-testing/cassandra-jmap-draft-integration-testing/src/test/resources/dnsservice.xml b/server/protocols/jmap-draft-integration-testing/cassandra-jmap-draft-integration-testing/src/test/resources/dnsservice.xml
index 0978a00..6e4fbd2 100644
--- a/server/protocols/jmap-draft-integration-testing/cassandra-jmap-draft-integration-testing/src/test/resources/dnsservice.xml
+++ b/server/protocols/jmap-draft-integration-testing/cassandra-jmap-draft-integration-testing/src/test/resources/dnsservice.xml
@@ -19,11 +19,7 @@
  -->
 
 <dnsservice>
-  <servers>
-    <server>8.8.8.8</server>
-    <server>62.210.16.6</server>
-  </servers>
-  <autodiscover>false</autodiscover>
+  <autodiscover>true</autodiscover>
   <authoritative>false</authoritative>
   <maxcachesize>50000</maxcachesize>
 </dnsservice>
diff --git a/server/protocols/jmap-draft-integration-testing/memory-jmap-draft-integration-testing/src/test/resources/dnsservice.xml b/server/protocols/jmap-draft-integration-testing/memory-jmap-draft-integration-testing/src/test/resources/dnsservice.xml
index 0978a00..6e4fbd2 100644
--- a/server/protocols/jmap-draft-integration-testing/memory-jmap-draft-integration-testing/src/test/resources/dnsservice.xml
+++ b/server/protocols/jmap-draft-integration-testing/memory-jmap-draft-integration-testing/src/test/resources/dnsservice.xml
@@ -19,11 +19,7 @@
  -->
 
 <dnsservice>
-  <servers>
-    <server>8.8.8.8</server>
-    <server>62.210.16.6</server>
-  </servers>
-  <autodiscover>false</autodiscover>
+  <autodiscover>true</autodiscover>
   <authoritative>false</authoritative>
   <maxcachesize>50000</maxcachesize>
 </dnsservice>
diff --git a/server/protocols/jmap-draft-integration-testing/rabbitmq-jmap-draft-integration-testing/src/test/resources/dnsservice.xml b/server/protocols/jmap-draft-integration-testing/rabbitmq-jmap-draft-integration-testing/src/test/resources/dnsservice.xml
index 0978a00..6e4fbd2 100644
--- a/server/protocols/jmap-draft-integration-testing/rabbitmq-jmap-draft-integration-testing/src/test/resources/dnsservice.xml
+++ b/server/protocols/jmap-draft-integration-testing/rabbitmq-jmap-draft-integration-testing/src/test/resources/dnsservice.xml
@@ -19,11 +19,7 @@
  -->
 
 <dnsservice>
-  <servers>
-    <server>8.8.8.8</server>
-    <server>62.210.16.6</server>
-  </servers>
-  <autodiscover>false</autodiscover>
+  <autodiscover>true</autodiscover>
   <authoritative>false</authoritative>
   <maxcachesize>50000</maxcachesize>
 </dnsservice>
diff --git a/server/protocols/jmap-rfc-8621-integration-tests/distributed-jmap-rfc-8621-integration-tests/src/test/resources/dnsservice.xml b/server/protocols/jmap-rfc-8621-integration-tests/distributed-jmap-rfc-8621-integration-tests/src/test/resources/dnsservice.xml
index 0978a00..6e4fbd2 100644
--- a/server/protocols/jmap-rfc-8621-integration-tests/distributed-jmap-rfc-8621-integration-tests/src/test/resources/dnsservice.xml
+++ b/server/protocols/jmap-rfc-8621-integration-tests/distributed-jmap-rfc-8621-integration-tests/src/test/resources/dnsservice.xml
@@ -19,11 +19,7 @@
  -->
 
 <dnsservice>
-  <servers>
-    <server>8.8.8.8</server>
-    <server>62.210.16.6</server>
-  </servers>
-  <autodiscover>false</autodiscover>
+  <autodiscover>true</autodiscover>
   <authoritative>false</authoritative>
   <maxcachesize>50000</maxcachesize>
 </dnsservice>
diff --git a/server/protocols/jmap-rfc-8621-integration-tests/memory-jmap-rfc-8621-integration-tests/src/test/resources/dnsservice.xml b/server/protocols/jmap-rfc-8621-integration-tests/memory-jmap-rfc-8621-integration-tests/src/test/resources/dnsservice.xml
index 0978a00..6e4fbd2 100644
--- a/server/protocols/jmap-rfc-8621-integration-tests/memory-jmap-rfc-8621-integration-tests/src/test/resources/dnsservice.xml
+++ b/server/protocols/jmap-rfc-8621-integration-tests/memory-jmap-rfc-8621-integration-tests/src/test/resources/dnsservice.xml
@@ -19,11 +19,7 @@
  -->
 
 <dnsservice>
-  <servers>
-    <server>8.8.8.8</server>
-    <server>62.210.16.6</server>
-  </servers>
-  <autodiscover>false</autodiscover>
+  <autodiscover>true</autodiscover>
   <authoritative>false</authoritative>
   <maxcachesize>50000</maxcachesize>
 </dnsservice>
diff --git a/server/protocols/webadmin-integration-test/distributed-webadmin-integration-test/src/test/resources/dnsservice.xml b/server/protocols/webadmin-integration-test/distributed-webadmin-integration-test/src/test/resources/dnsservice.xml
index 0978a00..6e4fbd2 100644
--- a/server/protocols/webadmin-integration-test/distributed-webadmin-integration-test/src/test/resources/dnsservice.xml
+++ b/server/protocols/webadmin-integration-test/distributed-webadmin-integration-test/src/test/resources/dnsservice.xml
@@ -19,11 +19,7 @@
  -->
 
 <dnsservice>
-  <servers>
-    <server>8.8.8.8</server>
-    <server>62.210.16.6</server>
-  </servers>
-  <autodiscover>false</autodiscover>
+  <autodiscover>true</autodiscover>
   <authoritative>false</authoritative>
   <maxcachesize>50000</maxcachesize>
 </dnsservice>
diff --git a/server/protocols/webadmin-integration-test/memory-webadmin-integration-test/src/test/resources/dnsservice.xml b/server/protocols/webadmin-integration-test/memory-webadmin-integration-test/src/test/resources/dnsservice.xml
index 0978a00..6e4fbd2 100644
--- a/server/protocols/webadmin-integration-test/memory-webadmin-integration-test/src/test/resources/dnsservice.xml
+++ b/server/protocols/webadmin-integration-test/memory-webadmin-integration-test/src/test/resources/dnsservice.xml
@@ -19,11 +19,7 @@
  -->
 
 <dnsservice>
-  <servers>
-    <server>8.8.8.8</server>
-    <server>62.210.16.6</server>
-  </servers>
-  <autodiscover>false</autodiscover>
+  <autodiscover>true</autodiscover>
   <authoritative>false</authoritative>
   <maxcachesize>50000</maxcachesize>
 </dnsservice>


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


[james-project] 03/07: JAMES-3252 Fix Changelog typo

Posted by bt...@apache.org.
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 ad0323bef8606e31c43910ed143ce8bff8ca6889
Author: Benoit Tellier <bt...@linagora.com>
AuthorDate: Tue Jun 23 09:06:40 2020 +0700

    JAMES-3252 Fix Changelog typo
---
 CHANGELOG.md | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/CHANGELOG.md b/CHANGELOG.md
index 37d30f9..2ca72fb 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -38,7 +38,7 @@ of tasks being currently executed.
 - Differentiation between domain alias and domain mapping. Read upgrade instructions.
 - JAMES-3122 Log4J2 adoption for Spring product. Log file configuration needs to be updated. See upgrade instructions.
 - JAMES-2760 mailqueue.size.metricsEnabled should be false by default
-- JAMES-3252 DomainList autoDection should be turned off by default. Operators relying on implicit values for enabling DomainList autoDection now needs to explicitly configure it.
+- JAMES-3252 DomainList autoDetection should be turned off by default. Operators relying on implicit values for enabling DomainList autoDetection now needs to explicitly configure it.
 
 ### Fixed
 - JAMES-2828 & JAMES-2929 bugs affecting JDBCMailRepository usage with PostgresSQL thanks to Jörg Thomas & Sergey B


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


[james-project] 05/07: JAMES-3177 Add tests to demonstrate SelectedMailboxImpl is not thread safe

Posted by bt...@apache.org.
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 819bf96bb28604a0dfca559d2aa606cdc6f31e5f
Author: Benoit Tellier <bt...@linagora.com>
AuthorDate: Wed Jun 24 09:18:29 2020 +0700

    JAMES-3177 Add tests to demonstrate SelectedMailboxImpl is not thread safe
---
 .../processor/base/SelectedMailboxImplTest.java    | 60 ++++++++++++++++++++--
 1 file changed, 56 insertions(+), 4 deletions(-)

diff --git a/protocols/imap/src/test/java/org/apache/james/imap/processor/base/SelectedMailboxImplTest.java b/protocols/imap/src/test/java/org/apache/james/imap/processor/base/SelectedMailboxImplTest.java
index 1e0cd54..b62b654 100644
--- a/protocols/imap/src/test/java/org/apache/james/imap/processor/base/SelectedMailboxImplTest.java
+++ b/protocols/imap/src/test/java/org/apache/james/imap/processor/base/SelectedMailboxImplTest.java
@@ -43,6 +43,7 @@ import org.apache.james.mailbox.MailboxSessionUtil;
 import org.apache.james.mailbox.MessageManager;
 import org.apache.james.mailbox.MessageUid;
 import org.apache.james.mailbox.ModSeq;
+import org.apache.james.mailbox.events.Event;
 import org.apache.james.mailbox.events.EventBus;
 import org.apache.james.mailbox.events.MailboxIdRegistrationKey;
 import org.apache.james.mailbox.events.MailboxListener;
@@ -52,11 +53,13 @@ import org.apache.james.mailbox.model.MailboxPath;
 import org.apache.james.mailbox.model.MessageMetaData;
 import org.apache.james.mailbox.model.SearchQuery;
 import org.apache.james.mailbox.model.TestId;
+import org.apache.james.mailbox.model.UpdatedFlags;
 import org.apache.james.mailbox.store.event.EventFactory;
 import org.apache.james.mailbox.store.mail.model.DefaultMessageId;
 import org.apache.james.util.concurrent.NamedThreadFactory;
 import org.junit.After;
 import org.junit.Before;
+import org.junit.Ignore;
 import org.junit.Test;
 import org.mockito.stubbing.Answer;
 import org.slf4j.Logger;
@@ -71,6 +74,7 @@ public class SelectedMailboxImplTest {
     private static final MessageUid EMITTED_EVENT_UID = MessageUid.of(5);
     private static final ModSeq MOD_SEQ = ModSeq.of(12);
     private static final int SIZE = 38;
+    private static final String CUSTOM_FLAG = "custom";
 
     private ExecutorService executorService;
     private MailboxManager mailboxManager;
@@ -129,6 +133,32 @@ public class SelectedMailboxImplTest {
         assertThat(selectedMailbox.getLastUid().get()).isEqualTo(EMITTED_EVENT_UID);
     }
 
+    @Ignore("JAMES-3177 SelectedMailboxImpl is not thread safe")
+    @Test
+    public void customFlagsEventShouldNotFailWhenConcurrentWithCreation() throws Exception {
+        AtomicInteger successCount = new AtomicInteger(0);
+        doAnswer(generateEmitCustomFlagEventAnswer(successCount))
+            .when(eventBus)
+            .register(any(MailboxListener.class), eq(mailboxIdRegistrationKey));
+
+        new SelectedMailboxImpl(mailboxManager, eventBus, imapSession, messageManager);
+
+        assertThat(successCount.get()).isEqualTo(1);
+    }
+
+    @Ignore("JAMES-3177 SelectedMailboxImpl is not thread safe")
+    @Test
+    public void applicableFlagsShouldBeWellUpdatedWhenConcurrentWithCreation() throws Exception {
+        AtomicInteger successCount = new AtomicInteger(0);
+        doAnswer(generateEmitCustomFlagEventAnswer(successCount))
+            .when(eventBus)
+            .register(any(MailboxListener.class), eq(mailboxIdRegistrationKey));
+
+        SelectedMailboxImpl selectedMailbox = new SelectedMailboxImpl(mailboxManager, eventBus, imapSession, messageManager);
+
+        assertThat(selectedMailbox.getApplicableFlags().getUserFlags()).containsOnly(CUSTOM_FLAG);
+    }
+
     @Test
     public void concurrentEventShouldBeProcessedSuccessfullyDuringInitialisation() throws Exception {
         AtomicInteger successCount = new AtomicInteger(0);
@@ -155,12 +185,20 @@ public class SelectedMailboxImplTest {
     }
 
     private Answer<Mono<Registration>> generateEmitEventAnswer(AtomicInteger success) {
+        return generateEmitEventAnswer(event(), success);
+    }
+
+    private Answer<Mono<Registration>> generateEmitCustomFlagEventAnswer(AtomicInteger success) {
+        return generateEmitEventAnswer(customFlagEvent(), success);
+    }
+
+    private Answer<Mono<Registration>> generateEmitEventAnswer(Event event, AtomicInteger success) {
         return invocation -> {
             Object[] args = invocation.getArguments();
             MailboxListener mailboxListener = (MailboxListener) args[0];
             executorService.submit(() -> {
                 try {
-                    emitEvent(mailboxListener);
+                    mailboxListener.event(event);
                     success.incrementAndGet();
                 } catch (Exception e) {
                     LOGGER.error("Error while processing event on a concurrent thread", e);
@@ -170,12 +208,26 @@ public class SelectedMailboxImplTest {
         };
     }
 
-    private void emitEvent(MailboxListener mailboxListener) throws Exception {
-        mailboxListener.event(EventFactory.added()
+    private Event event() {
+        return EventFactory.added()
             .randomEventId()
             .mailboxSession(MailboxSessionUtil.create(Username.of("user")))
             .mailbox(mailbox)
             .addMetaData(new MessageMetaData(EMITTED_EVENT_UID, MOD_SEQ, new Flags(), SIZE, new Date(), new DefaultMessageId()))
-            .build());
+            .build();
+    }
+
+    private Event customFlagEvent() {
+        return EventFactory.flagsUpdated()
+            .randomEventId()
+            .mailboxSession(MailboxSessionUtil.create(Username.of("user")))
+            .mailbox(mailbox)
+            .updatedFlag(UpdatedFlags.builder()
+                .modSeq(ModSeq.of(36))
+                .newFlags(new Flags(CUSTOM_FLAG))
+                .oldFlags(new Flags())
+                .uid(MessageUid.of(12))
+                .build())
+            .build();
     }
 }


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


[james-project] 07/07: JAMES-3029 add test to check that mail is well received with 10 recipients

Posted by bt...@apache.org.
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 56618acb1e1c8a8cfdebdefbc337ad460ac9c64b
Author: Rémi Kowalski <rk...@linagora.com>
AuthorDate: Mon Apr 20 18:30:52 2020 +0200

    JAMES-3029 add test to check that mail is well received with 10 recipients
---
 .../apache/james/MailsShouldBeWellReceived.java    | 67 ++++++++++++++++++++--
 1 file changed, 62 insertions(+), 5 deletions(-)

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 f119167..1bd32e2 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
@@ -24,6 +24,7 @@ import static org.assertj.core.api.Assertions.assertThat;
 import java.io.IOException;
 import java.nio.charset.StandardCharsets;
 import java.util.UUID;
+import java.util.stream.IntStream;
 
 import javax.mail.Flags;
 import javax.mail.Folder;
@@ -48,9 +49,11 @@ import org.awaitility.Awaitility;
 import org.awaitility.Duration;
 import org.awaitility.core.ConditionFactory;
 import org.junit.jupiter.api.Test;
-import org.testcontainers.shaded.com.google.common.collect.ImmutableList;
 
 import com.github.fge.lambdas.Throwing;
+import com.github.fge.lambdas.consumers.ThrowingConsumer;
+import com.github.steveash.guavate.Guavate;
+import com.google.common.collect.ImmutableList;
 import com.google.common.io.Resources;
 
 import reactor.core.publisher.Mono;
@@ -164,20 +167,62 @@ interface MailsShouldBeWellReceived {
 
         CALMLY_AWAIT.untilAsserted(() -> assertThat(server.getProbe(SpoolerProbe.class).processingFinished()).isTrue());
 
-        try (IMAPMessageReader reader = new IMAPMessageReader()) {
+        try (TestIMAPClient reader = new TestIMAPClient()) {
             reader.connect(JAMES_SERVER_HOST, server.getProbe(ImapGuiceProbe.class).getImapPort())
                 .login(JAMES_USER, PASSWORD)
-                .select(IMAPMessageReader.INBOX)
+                .select(TestIMAPClient.INBOX)
                 .awaitMessageCount(CALMLY_AWAIT, 1);
             reader.connect(JAMES_SERVER_HOST, server.getProbe(ImapGuiceProbe.class).getImapPort())
                 .login(OTHER_USER, PASSWORD_OTHER)
-                .select(IMAPMessageReader.INBOX)
+                .select(TestIMAPClient.INBOX)
                 .awaitMessageCount(CALMLY_AWAIT, 1);
         }
 
     }
 
     @Test
+    default void mailsShouldBeWellReceivedByTenRecipient(GuiceJamesServer server) throws Exception {
+        server.getProbe(DataProbeImpl.class).fluent()
+                .addDomain(DOMAIN)
+                .addUser(JAMES_USER, PASSWORD);
+
+        ImmutableList<String> users = generateNUsers(10);
+
+        users.forEach((ThrowingConsumer<String>) user -> server.getProbe(DataProbeImpl.class)
+                        .fluent()
+                        .addUser(user, PASSWORD));
+
+        MailboxProbeImpl mailboxProbe = server.getProbe(MailboxProbeImpl.class);
+        mailboxProbe.createMailbox("#private", JAMES_USER, DefaultMailboxes.INBOX);
+        users.forEach((ThrowingConsumer<String>) user ->
+                        mailboxProbe.createMailbox("#private", user, DefaultMailboxes.INBOX));
+
+
+        Port smtpPort = server.getProbe(SmtpGuiceProbe.class).getSmtpPort();
+        String message = Resources.toString(Resources.getResource("eml/htmlMail.eml"), StandardCharsets.UTF_8);
+
+        try (SMTPMessageSender sender = new SMTPMessageSender(Domain.LOCALHOST.asString())) {
+            sender.connect(JAMES_SERVER_HOST, smtpPort);
+            sendUniqueMessageToUsers(sender, message, users);
+        }
+
+        CALMLY_AWAIT_FIVE_MINUTE.untilAsserted(() ->
+            assertThat(
+                server
+                    .getProbe(SpoolerProbe.class)
+                    .processingFinished()
+            ).isTrue());
+
+        try (TestIMAPClient reader = new TestIMAPClient()) {
+            users.forEach((ThrowingConsumer<String>) user -> reader
+                .connect(JAMES_SERVER_HOST, server.getProbe(ImapGuiceProbe.class).getImapPort())
+                .login(user, PASSWORD)
+                .select(TestIMAPClient.INBOX)
+                .awaitMessageCount(CALMLY_AWAIT, 1));
+        }
+    }
+
+    @Test
     default void oneHundredMailsShouldBeWellReceived(GuiceJamesServer server) throws Exception {
         server.getProbe(DataProbeImpl.class).fluent()
             .addDomain(DOMAIN)
@@ -218,7 +263,19 @@ interface MailsShouldBeWellReceived {
     }
 
     default void sendUniqueMessageToTwoUsers(SMTPMessageSender sender, String message) throws IOException {
+        sendUniqueMessageToUsers(sender, message, ImmutableList.of(JAMES_USER, OTHER_USER));
+    }
+
+    default void sendUniqueMessageToUsers(SMTPMessageSender sender, String message, ImmutableList<String> users) throws IOException {
         String uniqueMessage = message.replace("banana", "UUID " + UUID.randomUUID().toString());
-        sender.sendMessageWithHeaders("bob@apache.org", ImmutableList.of(JAMES_USER, OTHER_USER), uniqueMessage);
+        sender.sendMessageWithHeaders("bob@apache.org", users, uniqueMessage);
     }
+
+    default ImmutableList<String> generateNUsers(int nbUsers) {
+        return IntStream.range(0, nbUsers)
+                .boxed()
+                .map(index -> "user" + index + "@" + DOMAIN)
+                .collect(Guavate.toImmutableList());
+    }
+
 }


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


[james-project] 01/07: JAMES-3267 Stop forcefully delete ImapRequestFrameDecoder.decode temporary file

Posted by bt...@apache.org.
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 f7fc914f01538a7dc318e6b5cf5ba125862dc52b
Author: Gautier DI FOLCO <gd...@linagora.com>
AuthorDate: Tue Jun 23 16:03:50 2020 +0200

    JAMES-3267 Stop forcefully delete ImapRequestFrameDecoder.decode temporary file
---
 .../apache/james/imapserver/netty/ImapRequestFrameDecoder.java    | 8 +++++---
 1 file changed, 5 insertions(+), 3 deletions(-)

diff --git a/server/protocols/protocols-imap4/src/main/java/org/apache/james/imapserver/netty/ImapRequestFrameDecoder.java b/server/protocols/protocols-imap4/src/main/java/org/apache/james/imapserver/netty/ImapRequestFrameDecoder.java
index bebc259..fe77950 100644
--- a/server/protocols/protocols-imap4/src/main/java/org/apache/james/imapserver/netty/ImapRequestFrameDecoder.java
+++ b/server/protocols/protocols-imap4/src/main/java/org/apache/james/imapserver/netty/ImapRequestFrameDecoder.java
@@ -28,7 +28,6 @@ import java.io.OutputStream;
 import java.util.HashMap;
 import java.util.Map;
 
-import org.apache.commons.io.FileUtils;
 import org.apache.james.imap.api.ImapMessage;
 import org.apache.james.imap.api.ImapSessionState;
 import org.apache.james.imap.api.process.ImapSession;
@@ -141,8 +140,11 @@ public class ImapRequestFrameDecoder extends FrameDecoder implements NettyConsta
                              */
                             @Override
                             public void close() throws IOException {
-                                super.close();
-                                FileUtils.forceDelete(f);
+                                try {
+                                    super.close();
+                                } finally {
+                                    f.delete();
+                                }
                             }
 
                         }, retry);


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


[james-project] 02/07: JAMES-3263 Optimize RecipientRewriteTable::getMappingsForType

Posted by bt...@apache.org.
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 a6d4c7f443f6338e7697908c8102e3e34752ddc9
Author: Benoit Tellier <bt...@linagora.com>
AuthorDate: Tue Jun 23 10:05:03 2020 +0700

    JAMES-3263 Optimize RecipientRewriteTable::getMappingsForType
    
    The heavy use of intermediate objects did lead to unoptimized execution.
    
    This change-set unlocks a x100 performance improvement for memory micro benchmarks with 10.000 entries.
    
    Here is the micro benchmark code snipset:
    
    ```
        @Test
        public void test() throws Exception {
            AbstractRecipientRewriteTable recipientRewriteTable = getRecipientRewriteTable();
            IntStream.range(0, 10000)
                .forEach(Throwing.intConsumer(i -> recipientRewriteTable
                    .addMapping(
                        MappingSource.fromUser("bob" + i, SUPPORTED_DOMAIN),
                        Mapping.alias("bob-alias" + i + "@" + SUPPORTED_DOMAIN))));
            for (int i = 0; i < 10; i++) {
                System.out.println("Warmup " + i);
                recipientRewriteTable.getMappingsForType(Mapping.Type.Alias).collect(Guavate.toImmutableList());
            }
            for (int i = 0; i < 10; i++) {
                Stopwatch started = Stopwatch.createStarted();
                recipientRewriteTable.getMappingsForType(Mapping.Type.Alias).collect(Guavate.toImmutableList());
                System.out.println(started.elapsed(TimeUnit.MILLISECONDS));
            }
        }
    ```
---
 .../java/org/apache/james/rrt/api/RecipientRewriteTable.java   | 10 +++++-----
 1 file changed, 5 insertions(+), 5 deletions(-)

diff --git a/server/data/data-api/src/main/java/org/apache/james/rrt/api/RecipientRewriteTable.java b/server/data/data-api/src/main/java/org/apache/james/rrt/api/RecipientRewriteTable.java
index be173e9..e7506b2 100644
--- a/server/data/data-api/src/main/java/org/apache/james/rrt/api/RecipientRewriteTable.java
+++ b/server/data/data-api/src/main/java/org/apache/james/rrt/api/RecipientRewriteTable.java
@@ -30,7 +30,6 @@ import org.apache.james.rrt.lib.Mappings;
 import org.apache.james.rrt.lib.MappingsImpl;
 
 import com.google.common.base.Preconditions;
-import com.google.common.collect.ImmutableSet;
 
 /**
  * Interface which should be implemented of classes which map recipients.
@@ -148,12 +147,13 @@ public interface RecipientRewriteTable {
     }
 
     default Stream<Mapping> getMappingsForType(Mapping.Type type) throws RecipientRewriteTableException {
-        return ImmutableSet.copyOf(getAllMappings()
+        return getAllMappings()
             .values().stream()
             .map(mappings -> mappings.select(type))
-            .reduce(Mappings::union)
-            .orElse(MappingsImpl.empty()))
-            .stream();
+            .reduce(MappingsImpl.builder(), MappingsImpl.Builder::addAll, (builder1, builder2) -> builder1.addAll(builder2.build()))
+            .build()
+            .asStream()
+            .distinct();
     }
 
 }


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