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