You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@james.apache.org by bt...@apache.org on 2022/08/22 15:59:14 UTC
[james-project] 02/02: JAMES-3774 MPT tests should rely on CassandraClusterExtension
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 b26a9d82eeceedf6f34e1a0aa5d59473e51b0b3d
Author: Benoit Tellier <bt...@linagora.com>
AuthorDate: Mon Aug 22 12:11:47 2022 +0700
JAMES-3774 MPT tests should rely on CassandraClusterExtension
Allows reusing of CqlSession across tests, significantly fasting the MPT tests up (by an order of magnitude!)
---
.../cassandra/host/CassandraHostSystem.java | 16 +++----------
.../host/CassandraHostSystemExtension.java | 10 ++++----
.../cassandra/CassandraManageSieveMPTTest.java | 25 +++++++++++---------
.../cassandra/host/CassandraHostSystem.java | 27 +++-------------------
4 files changed, 26 insertions(+), 52 deletions(-)
diff --git a/mpt/impl/imap-mailbox/cassandra/src/test/java/org/apache/james/mpt/imapmailbox/cassandra/host/CassandraHostSystem.java b/mpt/impl/imap-mailbox/cassandra/src/test/java/org/apache/james/mpt/imapmailbox/cassandra/host/CassandraHostSystem.java
index 60e8b0b911..aec693c450 100644
--- a/mpt/impl/imap-mailbox/cassandra/src/test/java/org/apache/james/mpt/imapmailbox/cassandra/host/CassandraHostSystem.java
+++ b/mpt/impl/imap-mailbox/cassandra/src/test/java/org/apache/james/mpt/imapmailbox/cassandra/host/CassandraHostSystem.java
@@ -35,7 +35,6 @@ import org.apache.james.mailbox.cassandra.CassandraMailboxManager;
import org.apache.james.mailbox.cassandra.CassandraMailboxSessionMapperFactory;
import org.apache.james.mailbox.cassandra.TestCassandraMailboxSessionMapperFactory;
import org.apache.james.mailbox.cassandra.ids.CassandraMessageId;
-import org.apache.james.mailbox.cassandra.mail.MailboxAggregateModule;
import org.apache.james.mailbox.cassandra.quota.CassandraCurrentQuotaManager;
import org.apache.james.mailbox.cassandra.quota.CassandraGlobalMaxQuotaDao;
import org.apache.james.mailbox.cassandra.quota.CassandraPerDomainMaxQuotaDao;
@@ -66,7 +65,6 @@ import org.apache.james.metrics.tests.RecordingMetricFactory;
import org.apache.james.mpt.api.ImapFeatures;
import org.apache.james.mpt.api.ImapFeatures.Feature;
import org.apache.james.mpt.host.JamesImapHostSystem;
-import org.apache.james.util.Host;
import com.datastax.oss.driver.api.core.CqlSession;
@@ -79,13 +77,12 @@ public class CassandraHostSystem extends JamesImapHostSystem {
Feature.ANNOTATION_SUPPORT,
Feature.MOD_SEQ_SEARCH);
- private final Host cassandraHost;
+ private final CassandraCluster cassandra;
private CassandraMailboxManager mailboxManager;
- private CassandraCluster cassandra;
private CassandraPerUserMaxQuotaManager perUserMaxQuotaManager;
- public CassandraHostSystem(Host cassandraHost) {
- this.cassandraHost = cassandraHost;
+ public CassandraHostSystem(CassandraCluster cluster) {
+ this.cassandra = cluster;
}
public CassandraCluster getCassandra() {
@@ -95,7 +92,6 @@ public class CassandraHostSystem extends JamesImapHostSystem {
@Override
public void beforeTest() throws Exception {
super.beforeTest();
- cassandra = CassandraCluster.create(MailboxAggregateModule.MODULE_WITH_QUOTA, cassandraHost);
CqlSession session = cassandra.getConf();
CassandraMessageId.Factory messageIdFactory = new CassandraMessageId.Factory();
ThreadIdGuessingAlgorithm threadIdGuessingAlgorithm = new NaiveThreadIdGuessingAlgorithm();
@@ -138,12 +134,6 @@ public class CassandraHostSystem extends JamesImapHostSystem {
DefaultImapProcessorFactory.createDefaultProcessor(mailboxManager, eventBus, subscriptionManager, quotaManager, quotaRootResolver, new DefaultMetricFactory()));
}
- @Override
- public void afterTest() throws Exception {
- super.afterTest();
- cassandra.close();
- }
-
@Override
public boolean supports(Feature... features) {
return IMAP_FEATURES.supports(features);
diff --git a/mpt/impl/imap-mailbox/cassandra/src/test/java/org/apache/james/mpt/imapmailbox/cassandra/host/CassandraHostSystemExtension.java b/mpt/impl/imap-mailbox/cassandra/src/test/java/org/apache/james/mpt/imapmailbox/cassandra/host/CassandraHostSystemExtension.java
index 1c329229a4..b329f93dad 100644
--- a/mpt/impl/imap-mailbox/cassandra/src/test/java/org/apache/james/mpt/imapmailbox/cassandra/host/CassandraHostSystemExtension.java
+++ b/mpt/impl/imap-mailbox/cassandra/src/test/java/org/apache/james/mpt/imapmailbox/cassandra/host/CassandraHostSystemExtension.java
@@ -18,7 +18,8 @@
****************************************************************/
package org.apache.james.mpt.imapmailbox.cassandra.host;
-import org.apache.james.backends.cassandra.DockerCassandraExtension;
+import org.apache.james.backends.cassandra.CassandraClusterExtension;
+import org.apache.james.mailbox.cassandra.mail.MailboxAggregateModule;
import org.apache.james.mpt.host.JamesImapHostSystem;
import org.junit.jupiter.api.extension.AfterAllCallback;
import org.junit.jupiter.api.extension.AfterEachCallback;
@@ -27,11 +28,11 @@ import org.junit.jupiter.api.extension.BeforeEachCallback;
import org.junit.jupiter.api.extension.ExtensionContext;
public class CassandraHostSystemExtension implements BeforeAllCallback, AfterAllCallback, BeforeEachCallback, AfterEachCallback {
- private final DockerCassandraExtension cassandraExtension;
+ private final CassandraClusterExtension cassandraExtension;
private CassandraHostSystem system;
public CassandraHostSystemExtension() {
- this.cassandraExtension = new DockerCassandraExtension();
+ this.cassandraExtension = new CassandraClusterExtension(MailboxAggregateModule.MODULE_WITH_QUOTA);
}
@Override
@@ -42,6 +43,7 @@ public class CassandraHostSystemExtension implements BeforeAllCallback, AfterAll
@Override
public void afterEach(ExtensionContext extensionContext) throws Exception {
system.afterTest();
+ cassandraExtension.afterEach(extensionContext);
}
@Override
@@ -52,7 +54,7 @@ public class CassandraHostSystemExtension implements BeforeAllCallback, AfterAll
@Override
public void beforeEach(ExtensionContext extensionContext) throws Exception {
cassandraExtension.beforeEach(extensionContext);
- system = new CassandraHostSystem(cassandraExtension.getDockerCassandra().getHost());
+ system = new CassandraHostSystem(cassandraExtension.getCassandraCluster());
system.beforeTest();
}
diff --git a/mpt/impl/managesieve/cassandra/src/test/java/org/apache/james/mpt/managesieve/cassandra/CassandraManageSieveMPTTest.java b/mpt/impl/managesieve/cassandra/src/test/java/org/apache/james/mpt/managesieve/cassandra/CassandraManageSieveMPTTest.java
index d31ffcfc6d..0064a456d7 100644
--- a/mpt/impl/managesieve/cassandra/src/test/java/org/apache/james/mpt/managesieve/cassandra/CassandraManageSieveMPTTest.java
+++ b/mpt/impl/managesieve/cassandra/src/test/java/org/apache/james/mpt/managesieve/cassandra/CassandraManageSieveMPTTest.java
@@ -19,21 +19,29 @@
package org.apache.james.mpt.managesieve.cassandra;
-import org.apache.james.backends.cassandra.DockerCassandraExtension;
+import org.apache.james.backends.cassandra.CassandraClusterExtension;
+import org.apache.james.backends.cassandra.components.CassandraModule;
+import org.apache.james.domainlist.cassandra.CassandraDomainListModule;
import org.apache.james.mpt.ManageSieveMPTContract;
import org.apache.james.mpt.host.ManageSieveHostSystem;
import org.apache.james.mpt.managesieve.cassandra.host.CassandraHostSystem;
-import org.junit.jupiter.api.AfterEach;
+import org.apache.james.sieve.cassandra.CassandraSieveRepositoryModule;
+import org.apache.james.user.cassandra.CassandraUsersRepositoryModule;
import org.junit.jupiter.api.BeforeEach;
-import org.junit.jupiter.api.extension.ExtendWith;
+import org.junit.jupiter.api.extension.RegisterExtension;
-@ExtendWith(DockerCassandraExtension.class)
class CassandraManageSieveMPTTest implements ManageSieveMPTContract {
+ @RegisterExtension
+ static CassandraClusterExtension cassandra = new CassandraClusterExtension(CassandraModule.aggregateModules(
+ CassandraDomainListModule.MODULE,
+ CassandraSieveRepositoryModule.MODULE,
+ CassandraUsersRepositoryModule.MODULE));
+
private ManageSieveHostSystem system;
@BeforeEach
- void setUp(DockerCassandraExtension.DockerCassandra dockerCassandra) throws Exception {
- system = new CassandraHostSystem(dockerCassandra.getHost());
+ void setUp() throws Exception {
+ system = new CassandraHostSystem(cassandra.getCassandraCluster());
system.beforeTest();
}
@@ -41,9 +49,4 @@ class CassandraManageSieveMPTTest implements ManageSieveMPTContract {
public ManageSieveHostSystem hostSystem() {
return system;
}
-
- @AfterEach
- void tearDown() throws Exception {
- hostSystem().afterTest();
- }
}
diff --git a/mpt/impl/managesieve/cassandra/src/test/java/org/apache/james/mpt/managesieve/cassandra/host/CassandraHostSystem.java b/mpt/impl/managesieve/cassandra/src/test/java/org/apache/james/mpt/managesieve/cassandra/host/CassandraHostSystem.java
index ca0fd9fb4a..7684e3dfb1 100644
--- a/mpt/impl/managesieve/cassandra/src/test/java/org/apache/james/mpt/managesieve/cassandra/host/CassandraHostSystem.java
+++ b/mpt/impl/managesieve/cassandra/src/test/java/org/apache/james/mpt/managesieve/cassandra/host/CassandraHostSystem.java
@@ -20,39 +20,23 @@
package org.apache.james.mpt.managesieve.cassandra.host;
import org.apache.james.backends.cassandra.CassandraCluster;
-import org.apache.james.backends.cassandra.components.CassandraModule;
import org.apache.james.domainlist.api.DomainList;
-import org.apache.james.domainlist.cassandra.CassandraDomainListModule;
import org.apache.james.mpt.host.JamesManageSieveHostSystem;
import org.apache.james.sieve.cassandra.CassandraActiveScriptDAO;
import org.apache.james.sieve.cassandra.CassandraSieveDAO;
import org.apache.james.sieve.cassandra.CassandraSieveQuotaDAO;
import org.apache.james.sieve.cassandra.CassandraSieveRepository;
-import org.apache.james.sieve.cassandra.CassandraSieveRepositoryModule;
import org.apache.james.sieverepository.api.SieveRepository;
import org.apache.james.user.api.UsersRepository;
import org.apache.james.user.cassandra.CassandraUsersDAO;
-import org.apache.james.user.cassandra.CassandraUsersRepositoryModule;
import org.apache.james.user.lib.UsersRepositoryImpl;
-import org.apache.james.util.Host;
public class CassandraHostSystem extends JamesManageSieveHostSystem {
private static final DomainList NO_DOMAIN_LIST = null;
- private final Host cassandraHost;
- private CassandraCluster cassandra;
+ private final CassandraCluster cassandra;
- public CassandraHostSystem(Host cassandraHost) {
- this.cassandraHost = cassandraHost;
- }
-
- @Override
- public void beforeTest() throws Exception {
- CassandraModule modules = CassandraModule.aggregateModules(
- CassandraDomainListModule.MODULE,
- CassandraSieveRepositoryModule.MODULE,
- CassandraUsersRepositoryModule.MODULE);
- cassandra = CassandraCluster.create(modules, cassandraHost);
- super.beforeTest();
+ public CassandraHostSystem(CassandraCluster cassandra) {
+ this.cassandra = cassandra;
}
@Override
@@ -70,9 +54,4 @@ public class CassandraHostSystem extends JamesManageSieveHostSystem {
usersRepository.setEnableVirtualHosting(false);
return usersRepository;
}
-
- @Override
- public void afterTest() {
- cassandra.close();
- }
}
---------------------------------------------------------------------
To unsubscribe, e-mail: notifications-unsubscribe@james.apache.org
For additional commands, e-mail: notifications-help@james.apache.org