JAMES-2597 Using RabbitMQDockerSingleton in DockerRabbitMQRule

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

Branch: refs/heads/master
Commit: 92a41825d3cd252ea0559827ed22f4710a8c9392
Parents: d9169bb
Author: tran tien duc <[email protected]>
Authored: Fri Nov 23 12:01:10 2018 +0700
Committer: Benoit Tellier <[email protected]>
Committed: Mon Nov 26 16:41:05 2018 +0700

----------------------------------------------------------------------
 .../james/modules/DockerRabbitMQRule.java       | 21 +++--
 ...assandraRabbitMQLdapJmapJamesServerTest.java | 81 ++++++--------------
 2 files changed, 33 insertions(+), 69 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/james-project/blob/92a41825/server/container/guice/cassandra-rabbitmq-guice/src/test/java/org/apache/james/modules/DockerRabbitMQRule.java
----------------------------------------------------------------------
diff --git 
a/server/container/guice/cassandra-rabbitmq-guice/src/test/java/org/apache/james/modules/DockerRabbitMQRule.java
 
b/server/container/guice/cassandra-rabbitmq-guice/src/test/java/org/apache/james/modules/DockerRabbitMQRule.java
index 5356b6c..3e701a6 100644
--- 
a/server/container/guice/cassandra-rabbitmq-guice/src/test/java/org/apache/james/modules/DockerRabbitMQRule.java
+++ 
b/server/container/guice/cassandra-rabbitmq-guice/src/test/java/org/apache/james/modules/DockerRabbitMQRule.java
@@ -21,22 +21,22 @@ package org.apache.james.modules;
 
 import static 
org.apache.james.backend.rabbitmq.RabbitMQFixture.DEFAULT_MANAGEMENT_CREDENTIAL;
 
-import com.google.inject.Module;
-import com.google.inject.multibindings.Multibinder;
-import com.google.inject.util.Modules;
+import java.net.URISyntaxException;
+
 import org.apache.james.CleanupTasksPerformer;
 import org.apache.james.GuiceModuleTestRule;
 import org.apache.james.backend.rabbitmq.DockerRabbitMQ;
+import org.apache.james.backend.rabbitmq.DockerRabbitMQSingleton;
 import org.apache.james.backend.rabbitmq.RabbitMQConfiguration;
 import org.junit.runner.Description;
 import org.junit.runners.model.Statement;
 
-import java.net.URISyntaxException;
+import com.google.inject.Module;
+import com.google.inject.multibindings.Multibinder;
+import com.google.inject.util.Modules;
 
 public class DockerRabbitMQRule implements GuiceModuleTestRule {
 
-    private DockerRabbitMQ rabbitMQ = DockerRabbitMQ.withoutCookie();
-
     @Override
     public Statement apply(Statement base, Description description) {
         return base;
@@ -52,8 +52,8 @@ public class DockerRabbitMQRule implements 
GuiceModuleTestRule {
                 try {
                     binder.bind(RabbitMQConfiguration.class)
                         .toInstance(RabbitMQConfiguration.builder()
-                            .amqpUri(rabbitMQ.amqpUri())
-                            .managementUri(rabbitMQ.managementUri())
+                            
.amqpUri(DockerRabbitMQSingleton.SINGLETON.amqpUri())
+                            
.managementUri(DockerRabbitMQSingleton.SINGLETON.managementUri())
                             
.managementCredentials(DEFAULT_MANAGEMENT_CREDENTIAL)
                             .build());
                 } catch (URISyntaxException e) {
@@ -66,14 +66,13 @@ public class DockerRabbitMQRule implements 
GuiceModuleTestRule {
     }
 
     public DockerRabbitMQ dockerRabbitMQ() {
-        return rabbitMQ;
+        return DockerRabbitMQSingleton.SINGLETON;
     }
 
     public void start() {
-        rabbitMQ.start();
+        DockerRabbitMQSingleton.SINGLETON.start();
     }
 
     public void stop() {
-        rabbitMQ.stop();
     }
 }

http://git-wip-us.apache.org/repos/asf/james-project/blob/92a41825/server/container/guice/cassandra-rabbitmq-ldap-guice/src/test/java/org/apache/james/CassandraRabbitMQLdapJmapJamesServerTest.java
----------------------------------------------------------------------
diff --git 
a/server/container/guice/cassandra-rabbitmq-ldap-guice/src/test/java/org/apache/james/CassandraRabbitMQLdapJmapJamesServerTest.java
 
b/server/container/guice/cassandra-rabbitmq-ldap-guice/src/test/java/org/apache/james/CassandraRabbitMQLdapJmapJamesServerTest.java
index 62284a5..7fdb315 100644
--- 
a/server/container/guice/cassandra-rabbitmq-ldap-guice/src/test/java/org/apache/james/CassandraRabbitMQLdapJmapJamesServerTest.java
+++ 
b/server/container/guice/cassandra-rabbitmq-ldap-guice/src/test/java/org/apache/james/CassandraRabbitMQLdapJmapJamesServerTest.java
@@ -20,25 +20,19 @@
 package org.apache.james;
 
 import static org.apache.james.JmapJamesServerContract.JAMES_SERVER_HOST;
+import static org.apache.james.user.ldap.DockerLdapSingleton.JAMES_USER;
+import static org.apache.james.user.ldap.DockerLdapSingleton.PASSWORD;
 import static org.assertj.core.api.Assertions.assertThat;
-import static org.awaitility.Duration.ONE_HUNDRED_MILLISECONDS;
 
 import java.io.IOException;
 
 import org.apache.commons.net.imap.IMAPClient;
-import org.apache.james.core.Domain;
 import org.apache.james.modules.RabbitMQExtension;
 import org.apache.james.modules.SwiftBlobStoreExtension;
 import org.apache.james.modules.TestJMAPServerModule;
 import org.apache.james.modules.blobstore.BlobStoreChoosingConfiguration;
 import org.apache.james.modules.protocols.ImapGuiceProbe;
-import org.apache.james.modules.protocols.SmtpGuiceProbe;
-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.apache.james.server.core.configuration.Configuration;
 import org.junit.jupiter.api.Nested;
 import org.junit.jupiter.api.Test;
 import org.junit.jupiter.api.TestInstance;
@@ -46,33 +40,6 @@ import org.junit.jupiter.api.extension.RegisterExtension;
 
 class CassandraRabbitMQLdapJmapJamesServerTest {
     private static final int LIMIT_TO_10_MESSAGES = 10;
-    private static final String JAMES_USER = "james-user";
-    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();
-
-    interface MailsShouldBeWellReceived {
-        @RegisterExtension
-        IMAPMessageReader imapMessageReader = new IMAPMessageReader();
-        SMTPMessageSender messageSender = new 
SMTPMessageSender(Domain.LOCALHOST.asString());
-
-        @Test
-        default void mailsShouldBeWellReceived(GuiceJamesServer server) throws 
Exception {
-            messageSender.connect(JAMES_SERVER_HOST, 
server.getProbe(SmtpGuiceProbe.class).getSmtpPort())
-                .sendMessage("[email protected]", JAMES_USER + "@localhost");
-
-            calmlyAwait.until(() -> 
server.getProbe(SpoolerProbe.class).processingFinished());
-
-            imapMessageReader.connect(JAMES_SERVER_HOST, 
server.getProbe(ImapGuiceProbe.class).getImapPort())
-                .login(JAMES_USER, PASSWORD)
-                .select("INBOX")
-                .awaitMessage(calmlyAwait);
-        }
-    }
 
     interface UserFromLdapShouldLogin {
 
@@ -85,25 +52,15 @@ class CassandraRabbitMQLdapJmapJamesServerTest {
         }
     }
 
-    interface ContractSuite extends JmapJamesServerContract, 
MailsShouldBeWellReceived,
-        UserFromLdapShouldLogin, JamesServerContract {}
+    interface ContractSuite extends JmapJamesServerContract, 
UserFromLdapShouldLogin, JamesServerContract {}
 
     @Nested
     @TestInstance(TestInstance.Lifecycle.PER_CLASS)
     class WithSwift implements ContractSuite {
         @RegisterExtension
-        JamesServerExtension testExtension = new JamesServerExtensionBuilder()
-            .extension(new EmbeddedElasticSearchExtension())
-            .extension(new CassandraExtension())
-            .extension(new RabbitMQExtension())
-            .extension(new LdapTestExtension())
+        JamesServerExtension testExtension = baseJamesServerExtensionBuilder()
             .extension(new SwiftBlobStoreExtension())
-            .server(configuration -> 
GuiceJamesServer.forConfiguration(configuration)
-                .combineWith(CassandraRabbitMQLdapJamesServerMain.MODULES)
-                .overrideWith(binder -> 
binder.bind(BlobStoreChoosingConfiguration.class)
-                    
.toInstance(BlobStoreChoosingConfiguration.objectStorage()))
-                .overrideWith(new TestJMAPServerModule(LIMIT_TO_10_MESSAGES))
-                
.overrideWith(JmapJamesServerContract.DOMAIN_LIST_CONFIGURATION_MODULE))
+            .server(configuration -> buildGuiceServer(configuration, 
BlobStoreChoosingConfiguration.objectStorage()))
             .build();
     }
 
@@ -111,17 +68,25 @@ class CassandraRabbitMQLdapJmapJamesServerTest {
     @TestInstance(TestInstance.Lifecycle.PER_CLASS)
     class WithoutSwift implements ContractSuite {
         @RegisterExtension
-        JamesServerExtension testExtension = new JamesServerExtensionBuilder()
+        JamesServerExtension testExtension = baseJamesServerExtensionBuilder()
+            .server(configuration -> buildGuiceServer(configuration, 
BlobStoreChoosingConfiguration.cassandra()))
+            .build();
+    }
+
+    JamesServerExtensionBuilder baseJamesServerExtensionBuilder() {
+        return new JamesServerExtensionBuilder()
             .extension(new EmbeddedElasticSearchExtension())
             .extension(new CassandraExtension())
             .extension(new RabbitMQExtension())
-            .extension(new LdapTestExtension())
-            .server(configuration -> 
GuiceJamesServer.forConfiguration(configuration)
-                .combineWith(CassandraRabbitMQLdapJamesServerMain.MODULES)
-                .overrideWith(binder -> 
binder.bind(BlobStoreChoosingConfiguration.class)
-                    .toInstance(BlobStoreChoosingConfiguration.cassandra()))
-                .overrideWith(new TestJMAPServerModule(LIMIT_TO_10_MESSAGES))
-                
.overrideWith(JmapJamesServerContract.DOMAIN_LIST_CONFIGURATION_MODULE))
-            .build();
+            .extension(new LdapTestExtension());
+    }
+
+    GuiceJamesServer buildGuiceServer(Configuration configuration, 
BlobStoreChoosingConfiguration choosingConfiguration) {
+        return GuiceJamesServer.forConfiguration(configuration)
+            .combineWith(CassandraRabbitMQLdapJamesServerMain.MODULES)
+            .overrideWith(binder -> 
binder.bind(BlobStoreChoosingConfiguration.class)
+                .toInstance(choosingConfiguration))
+            .overrideWith(new TestJMAPServerModule(LIMIT_TO_10_MESSAGES))
+            
.overrideWith(JmapJamesServerContract.DOMAIN_LIST_CONFIGURATION_MODULE);
     }
 }


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to