Repository: james-project
Updated Branches:
  refs/heads/master 62fd4a1aa -> f96114bf2


JAMES-2589 bind BlobStoreChoosingModule and test fallback case


Project: http://git-wip-us.apache.org/repos/asf/james-project/repo
Commit: http://git-wip-us.apache.org/repos/asf/james-project/commit/9d8b5f80
Tree: http://git-wip-us.apache.org/repos/asf/james-project/tree/9d8b5f80
Diff: http://git-wip-us.apache.org/repos/asf/james-project/diff/9d8b5f80

Branch: refs/heads/master
Commit: 9d8b5f800550ed3eb111b68b6299dc573023c202
Parents: 62fd4a1
Author: Matthieu Baechler <matth...@apache.org>
Authored: Wed Nov 14 15:11:55 2018 +0100
Committer: Benoit Tellier <btell...@linagora.com>
Committed: Thu Nov 15 09:02:51 2018 +0700

----------------------------------------------------------------------
 .../james/CassandraRabbitMQJamesServerMain.java |  4 +-
 .../james/CassandraRabbitMQJamesServerTest.java | 88 +++++++++++++-------
 .../CassandraRabbitMQJmapJamesServerTest.java   | 42 ----------
 3 files changed, 58 insertions(+), 76 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/james-project/blob/9d8b5f80/server/container/guice/cassandra-rabbitmq-guice/src/main/java/org/apache/james/CassandraRabbitMQJamesServerMain.java
----------------------------------------------------------------------
diff --git 
a/server/container/guice/cassandra-rabbitmq-guice/src/main/java/org/apache/james/CassandraRabbitMQJamesServerMain.java
 
b/server/container/guice/cassandra-rabbitmq-guice/src/main/java/org/apache/james/CassandraRabbitMQJamesServerMain.java
index 6a2038c..21cee59 100644
--- 
a/server/container/guice/cassandra-rabbitmq-guice/src/main/java/org/apache/james/CassandraRabbitMQJamesServerMain.java
+++ 
b/server/container/guice/cassandra-rabbitmq-guice/src/main/java/org/apache/james/CassandraRabbitMQJamesServerMain.java
@@ -21,7 +21,7 @@ package org.apache.james;
 
 import static 
org.apache.james.CassandraJamesServerMain.ALL_BUT_JMX_CASSANDRA_MODULE;
 
-import org.apache.james.modules.objectstorage.ObjectStorageBlobStoreModule;
+import org.apache.james.modules.objectstore.BlobStoreChoosingModule;
 import org.apache.james.modules.rabbitmq.RabbitMQModule;
 import org.apache.james.modules.server.JMXServerModule;
 import org.apache.james.server.core.configuration.Configuration;
@@ -33,7 +33,7 @@ public class CassandraRabbitMQJamesServerMain {
     public static final Module MODULES =
         Modules
             .override(Modules.combine(ALL_BUT_JMX_CASSANDRA_MODULE))
-            .with(new RabbitMQModule(), new ObjectStorageBlobStoreModule());
+            .with(new RabbitMQModule(), new BlobStoreChoosingModule());
 
     public static void main(String[] args) throws Exception {
         Configuration configuration = Configuration.builder()

http://git-wip-us.apache.org/repos/asf/james-project/blob/9d8b5f80/server/container/guice/cassandra-rabbitmq-guice/src/test/java/org/apache/james/CassandraRabbitMQJamesServerTest.java
----------------------------------------------------------------------
diff --git 
a/server/container/guice/cassandra-rabbitmq-guice/src/test/java/org/apache/james/CassandraRabbitMQJamesServerTest.java
 
b/server/container/guice/cassandra-rabbitmq-guice/src/test/java/org/apache/james/CassandraRabbitMQJamesServerTest.java
index 64c4e8a..1bf3aaf 100644
--- 
a/server/container/guice/cassandra-rabbitmq-guice/src/test/java/org/apache/james/CassandraRabbitMQJamesServerTest.java
+++ 
b/server/container/guice/cassandra-rabbitmq-guice/src/test/java/org/apache/james/CassandraRabbitMQJamesServerTest.java
@@ -20,6 +20,7 @@
 package org.apache.james;
 
 import static org.awaitility.Duration.ONE_HUNDRED_MILLISECONDS;
+import static org.junit.jupiter.api.TestInstance.*;
 
 import org.apache.james.core.Domain;
 import org.apache.james.modules.RabbitMQExtension;
@@ -32,53 +33,76 @@ import org.apache.james.utils.IMAPMessageReader;
 import org.apache.james.utils.SMTPMessageSender;
 import org.apache.james.utils.SpoolerProbe;
 import org.awaitility.Awaitility;
-import org.awaitility.Duration;
 import org.awaitility.core.ConditionFactory;
+import org.junit.jupiter.api.Nested;
 import org.junit.jupiter.api.Test;
+import org.junit.jupiter.api.TestInstance;
 import org.junit.jupiter.api.extension.RegisterExtension;
 
-class CassandraRabbitMQJamesServerTest implements JmapJamesServerContract {
+class CassandraRabbitMQJamesServerTest {
+
+    interface MailsShouldBeWellReceived {
+        String JAMES_SERVER_HOST = "127.0.0.1";
+
+        @Test
+        default void mailsShouldBeWellReceived(GuiceJamesServer server) throws 
Exception {
+            server.getProbe(DataProbeImpl.class).fluent()
+                .addDomain(DOMAIN)
+                .addUser(JAMES_USER, PASSWORD);
+
+            new 
SMTPMessageSender(Domain.LOCALHOST.asString()).connect(JAMES_SERVER_HOST, 
server.getProbe(SmtpGuiceProbe.class).getSmtpPort())
+                .sendMessage("b...@any.com", JAMES_USER);
+
+            CALMLY_AWAIT.until(() -> 
server.getProbe(SpoolerProbe.class).processingFinished());
+
+            new IMAPMessageReader().connect(JAMES_SERVER_HOST, 
server.getProbe(ImapGuiceProbe.class).getImapPort())
+                .login(JAMES_USER, PASSWORD)
+                .select(IMAPMessageReader.INBOX)
+                .awaitMessage(CALMLY_AWAIT);
+        }
+    }
+
+    interface ContratSuite extends JmapJamesServerContract, 
MailsShouldBeWellReceived, JamesServerContract {}
+
     private static final String DOMAIN = "domain";
     private static final String JAMES_USER = "james-user@" + DOMAIN;
     private static final String PASSWORD = "secret";
-    private static Duration slowPacedPollInterval = ONE_HUNDRED_MILLISECONDS;
-    private static ConditionFactory calmlyAwait = Awaitility.with()
-        .pollInterval(slowPacedPollInterval)
-        .and()
-        .with()
-        .pollDelay(slowPacedPollInterval)
-        .await();
     private static final int LIMIT_TO_10_MESSAGES = 10;
 
-    private IMAPMessageReader imapMessageReader = new IMAPMessageReader();
-    private SMTPMessageSender messageSender = new 
SMTPMessageSender(Domain.LOCALHOST.asString());
+    private static final ConditionFactory CALMLY_AWAIT = Awaitility
+        .with().pollInterval(ONE_HUNDRED_MILLISECONDS)
+        .and().pollDelay(ONE_HUNDRED_MILLISECONDS)
+        .await();
 
-    @RegisterExtension
-    static JamesServerExtension testExtension = new 
JamesServerExtensionBuilder()
+    private static final JamesServerExtensionBuilder.ServerProvider 
CONFIGURATION_BUILDER =
+        configuration -> GuiceJamesServer
+            .forConfiguration(configuration)
+            .combineWith(CassandraRabbitMQJamesServerMain.MODULES)
+            .overrideWith(new TestJMAPServerModule(LIMIT_TO_10_MESSAGES))
+            
.overrideWith(JmapJamesServerContract.DOMAIN_LIST_CONFIGURATION_MODULE);
+
+    @Nested
+    @TestInstance(Lifecycle.PER_CLASS)
+    class WithSwift implements ContratSuite {
+        @RegisterExtension
+        JamesServerExtension testExtension = new JamesServerExtensionBuilder()
             .extension(new EmbeddedElasticSearchExtension())
             .extension(new CassandraExtension())
             .extension(new RabbitMQExtension())
             .extension(new SwiftBlobStoreExtension())
-            .server(configuration -> 
GuiceJamesServer.forConfiguration(configuration)
-                    .combineWith(CassandraRabbitMQJamesServerMain.MODULES)
-                    .overrideWith(new 
TestJMAPServerModule(LIMIT_TO_10_MESSAGES))
-                    .overrideWith(DOMAIN_LIST_CONFIGURATION_MODULE))
+            .server(CONFIGURATION_BUILDER)
             .build();
+    }
 
-    @Test
-    void mailsShouldBeWellReceived(GuiceJamesServer server) throws Exception {
-        server.getProbe(DataProbeImpl.class).fluent()
-            .addDomain(DOMAIN)
-            .addUser(JAMES_USER, PASSWORD);
-
-        messageSender.connect(JAMES_SERVER_HOST, 
server.getProbe(SmtpGuiceProbe.class).getSmtpPort())
-            .sendMessage("b...@any.com", JAMES_USER);
-
-        calmlyAwait.until(() -> 
server.getProbe(SpoolerProbe.class).processingFinished());
-
-        imapMessageReader.connect(JAMES_SERVER_HOST, 
server.getProbe(ImapGuiceProbe.class).getImapPort())
-            .login(JAMES_USER, PASSWORD)
-            .select(IMAPMessageReader.INBOX)
-            .awaitMessage(calmlyAwait);
+    @Nested
+    @TestInstance(Lifecycle.PER_CLASS)
+    class WithoutSwift implements ContratSuite {
+        @RegisterExtension
+        JamesServerExtension testExtension = new JamesServerExtensionBuilder()
+            .extension(new EmbeddedElasticSearchExtension())
+            .extension(new CassandraExtension())
+            .extension(new RabbitMQExtension())
+            .server(CONFIGURATION_BUILDER)
+            .build();
     }
 }

http://git-wip-us.apache.org/repos/asf/james-project/blob/9d8b5f80/server/container/guice/cassandra-rabbitmq-guice/src/test/java/org/apache/james/CassandraRabbitMQJmapJamesServerTest.java
----------------------------------------------------------------------
diff --git 
a/server/container/guice/cassandra-rabbitmq-guice/src/test/java/org/apache/james/CassandraRabbitMQJmapJamesServerTest.java
 
b/server/container/guice/cassandra-rabbitmq-guice/src/test/java/org/apache/james/CassandraRabbitMQJmapJamesServerTest.java
deleted file mode 100644
index 775bc3d..0000000
--- 
a/server/container/guice/cassandra-rabbitmq-guice/src/test/java/org/apache/james/CassandraRabbitMQJmapJamesServerTest.java
+++ /dev/null
@@ -1,42 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-
-package org.apache.james;
-
-import org.apache.james.modules.RabbitMQExtension;
-import org.apache.james.modules.SwiftBlobStoreExtension;
-import org.apache.james.modules.TestJMAPServerModule;
-import org.junit.jupiter.api.extension.RegisterExtension;
-
-public class CassandraRabbitMQJmapJamesServerTest implements 
JmapJamesServerContract {
-    private static final int LIMIT_TO_10_MESSAGES = 10;
-
-    @RegisterExtension
-    static JamesServerExtension testExtension = new 
JamesServerExtensionBuilder()
-            .extension(new EmbeddedElasticSearchExtension())
-            .extension(new CassandraExtension())
-            .extension(new RabbitMQExtension())
-            .extension(new SwiftBlobStoreExtension())
-            .server(configuration -> 
GuiceJamesServer.forConfiguration(configuration)
-                    .combineWith(CassandraRabbitMQJamesServerMain.MODULES)
-                    .overrideWith(new 
TestJMAPServerModule(LIMIT_TO_10_MESSAGES))
-                    .overrideWith(DOMAIN_LIST_CONFIGURATION_MODULE))
-            .build();
-
-}


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

Reply via email to