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