You are viewing a plain text version of this content. The canonical link for it is here.
Posted to server-dev@james.apache.org by bt...@apache.org on 2018/07/25 10:08:03 UTC

[01/15] james-project git commit: JAMES-2484 Upgrade jackrabbit & xercesImpl

Repository: james-project
Updated Branches:
  refs/heads/master 2da051c65 -> 0271026d6


JAMES-2484 Upgrade jackrabbit & xercesImpl

Down grade xml-apis to 1.4.01 because 2.0.2 was moved to 1.0.b2, then 1.4.01 is newest


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

Branch: refs/heads/master
Commit: e38b96a0ce3c6f13798d123ea4eefe3067b3b00e
Parents: 58d5d9c
Author: duc <dt...@linagora.com>
Authored: Fri Jul 20 11:35:31 2018 +0700
Committer: benwa <bt...@linagora.com>
Committed: Wed Jul 25 16:39:14 2018 +0700

----------------------------------------------------------------------
 mpt/pom.xml | 1 -
 pom.xml     | 6 +++---
 2 files changed, 3 insertions(+), 4 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/james-project/blob/e38b96a0/mpt/pom.xml
----------------------------------------------------------------------
diff --git a/mpt/pom.xml b/mpt/pom.xml
index 7231b2c..738b653 100644
--- a/mpt/pom.xml
+++ b/mpt/pom.xml
@@ -58,7 +58,6 @@
         <h2.version>1.3.170</h2.version>
         <hadoop.version>1.0.1</hadoop.version>
         <hbase.version>0.94.27</hbase.version>
-        <jackrabbit-core.version>2.5.2</jackrabbit-core.version>
         <jmock.version>2.6.0</jmock.version>
         <junit.version>4.11</junit.version>
         <log4j.version>1.2.16</log4j.version>

http://git-wip-us.apache.org/repos/asf/james-project/blob/e38b96a0/pom.xml
----------------------------------------------------------------------
diff --git a/pom.xml b/pom.xml
index d50c659..9cc73f9 100644
--- a/pom.xml
+++ b/pom.xml
@@ -593,7 +593,7 @@
         <javax.inject.version>1</javax.inject.version>
         <javax.activation.groupId>javax.activation</javax.activation.groupId>
         <javax.activation.artifactId>activation</javax.activation.artifactId>
-        <jackrabbit.version>2.5.2</jackrabbit.version>
+        <jackrabbit.version>2.17.4</jackrabbit.version>
         <jsieve.version>0.7</jsieve.version>
         <spring.version>3.2.18.RELEASE</spring.version>
         <geronimo-jms-spec.version>1.1.1</geronimo-jms-spec.version>
@@ -658,8 +658,8 @@
         <javax.activation.artifactId>activation</javax.activation.artifactId>
         <javax.persistence.version>1.0.2</javax.persistence.version>
         <lucene.version>3.6.2</lucene.version>
-        <xercesImpl.version>2.9.1</xercesImpl.version>
-        <xml-apis.version>2.0.2</xml-apis.version>
+        <xercesImpl.version>2.12.0</xercesImpl.version>
+        <xml-apis.version>1.4.01</xml-apis.version>
         <geronimo-activation-spec.version>1.1</geronimo-activation-spec.version>
         <mockito-core.version>1.9.0</mockito-core.version>
         <jasypt.version>1.9.2</jasypt.version>


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


[05/15] james-project git commit: JAMES-2470 Use a single Cassandra Cluster for a full test class

Posted by bt...@apache.org.
http://git-wip-us.apache.org/repos/asf/james-project/blob/61b8caa3/server/mailrepository/mailrepository-cassandra/src/test/java/org/apache/james/mailrepository/cassandra/CassandraMailRepositoryTest.java
----------------------------------------------------------------------
diff --git a/server/mailrepository/mailrepository-cassandra/src/test/java/org/apache/james/mailrepository/cassandra/CassandraMailRepositoryTest.java b/server/mailrepository/mailrepository-cassandra/src/test/java/org/apache/james/mailrepository/cassandra/CassandraMailRepositoryTest.java
index bfbed2c..2d73711 100644
--- a/server/mailrepository/mailrepository-cassandra/src/test/java/org/apache/james/mailrepository/cassandra/CassandraMailRepositoryTest.java
+++ b/server/mailrepository/mailrepository-cassandra/src/test/java/org/apache/james/mailrepository/cassandra/CassandraMailRepositoryTest.java
@@ -29,7 +29,9 @@ import org.apache.james.blob.cassandra.CassandraBlobsDAO;
 import org.apache.james.mailrepository.MailRepositoryContract;
 import org.apache.james.mailrepository.api.MailRepository;
 import org.apache.james.mailrepository.api.MailRepositoryUrl;
+import org.junit.jupiter.api.AfterAll;
 import org.junit.jupiter.api.AfterEach;
+import org.junit.jupiter.api.BeforeAll;
 import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.Disabled;
 import org.junit.jupiter.api.Test;
@@ -41,16 +43,18 @@ class CassandraMailRepositoryTest implements MailRepositoryContract {
     static final CassandraBlobId.Factory BLOB_ID_FACTORY = new CassandraBlobId.Factory();
 
     CassandraMailRepository cassandraMailRepository;
-    CassandraCluster cassandra;
+    static CassandraCluster cassandra;
 
-    @BeforeEach
-    void setup(DockerCassandraExtension.DockerCassandra dockerCassandra) {
-        cassandra = CassandraCluster.create(
-            new CassandraModuleComposite(
-                new CassandraMailRepositoryModule(),
-                new CassandraBlobModule()),
-            dockerCassandra.getIp(), dockerCassandra.getBindingPort());
+    @BeforeAll
+    static void setUpClass(DockerCassandraExtension.DockerCassandra dockerCassandra) {
+        CassandraModuleComposite modules = new CassandraModuleComposite(
+            new CassandraMailRepositoryModule(),
+            new CassandraBlobModule());
+        cassandra = CassandraCluster.create(modules, dockerCassandra.getIp(), dockerCassandra.getBindingPort());
+    }
 
+    @BeforeEach
+    void setup() {
         CassandraMailRepositoryMailDAO mailDAO = new CassandraMailRepositoryMailDAO(cassandra.getConf(), BLOB_ID_FACTORY, cassandra.getTypesProvider());
         CassandraMailRepositoryKeysDAO keysDAO = new CassandraMailRepositoryKeysDAO(cassandra.getConf(), CassandraUtils.WITH_DEFAULT_CONFIGURATION);
         CassandraMailRepositoryCountDAO countDAO = new CassandraMailRepositoryCountDAO(cassandra.getConf());
@@ -61,8 +65,13 @@ class CassandraMailRepositoryTest implements MailRepositoryContract {
     }
 
     @AfterEach
-    public void tearDown() {
-        cassandra.close();
+    void tearDown() {
+        cassandra.clearTables();
+    }
+
+    @AfterAll
+    static void tearDownClass() {
+        cassandra.closeCluster();
     }
 
     @Override


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


[02/15] james-project git commit: JAMES-2484 Upgrade ical4j & xml-apis & zalando

Posted by bt...@apache.org.
JAMES-2484 Upgrade ical4j & xml-apis & zalando


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

Branch: refs/heads/master
Commit: 58d5d9ca0449346d923a72b739fda624ef38c0a4
Parents: 2da051c
Author: duc <dt...@linagora.com>
Authored: Thu Jul 19 19:02:00 2018 +0700
Committer: benwa <bt...@linagora.com>
Committed: Wed Jul 25 16:39:14 2018 +0700

----------------------------------------------------------------------
 mailet/icalendar/pom.xml                        |  7 ++++
 .../james/transport/mailets/ICALToHeader.java   |  4 +++
 .../transport/mailets/ICALToJsonAttribute.java  |  4 +++
 .../transport/mailets/ICal4JConfigurator.java   | 36 ++++++++++++++++++++
 .../transport/mailets/ICalendarParser.java      |  9 ++---
 .../james/transport/mailets/model/ICALTest.java |  7 ++++
 pom.xml                                         |  8 +----
 server/protocols/jmap/pom.xml                   |  8 +++--
 8 files changed, 67 insertions(+), 16 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/james-project/blob/58d5d9ca/mailet/icalendar/pom.xml
----------------------------------------------------------------------
diff --git a/mailet/icalendar/pom.xml b/mailet/icalendar/pom.xml
index e589af9..d3a4a21 100644
--- a/mailet/icalendar/pom.xml
+++ b/mailet/icalendar/pom.xml
@@ -109,6 +109,13 @@
         <dependency>
             <groupId>org.mnode.ical4j</groupId>
             <artifactId>ical4j</artifactId>
+            <version>3.0.0</version>
+        </dependency>
+        <dependency>
+            <groupId>javax.cache</groupId>
+            <artifactId>cache-api</artifactId>
+            <version>1.1.0</version>
+            <!-- JSR-107 JCache is used by ICAl4J version 3.0.0 -->
         </dependency>
         <dependency>
             <groupId>org.slf4j</groupId>

http://git-wip-us.apache.org/repos/asf/james-project/blob/58d5d9ca/mailet/icalendar/src/main/java/org/apache/james/transport/mailets/ICALToHeader.java
----------------------------------------------------------------------
diff --git a/mailet/icalendar/src/main/java/org/apache/james/transport/mailets/ICALToHeader.java b/mailet/icalendar/src/main/java/org/apache/james/transport/mailets/ICALToHeader.java
index 1b87bd4..1087374 100644
--- a/mailet/icalendar/src/main/java/org/apache/james/transport/mailets/ICALToHeader.java
+++ b/mailet/icalendar/src/main/java/org/apache/james/transport/mailets/ICALToHeader.java
@@ -69,6 +69,10 @@ public class ICALToHeader extends GenericMailet {
     public static final String X_MEETING_SEQUENCE_HEADER = "X-MEETING-SEQUENCE";
     public static final String X_MEETING_DTSTAMP_HEADER = "X-MEETING-DTSTAMP";
 
+    static {
+        ICal4JConfigurator.configure();
+    }
+
     private String attribute;
 
     @Override

http://git-wip-us.apache.org/repos/asf/james-project/blob/58d5d9ca/mailet/icalendar/src/main/java/org/apache/james/transport/mailets/ICALToJsonAttribute.java
----------------------------------------------------------------------
diff --git a/mailet/icalendar/src/main/java/org/apache/james/transport/mailets/ICALToJsonAttribute.java b/mailet/icalendar/src/main/java/org/apache/james/transport/mailets/ICALToJsonAttribute.java
index e09bbfd..5b95106 100644
--- a/mailet/icalendar/src/main/java/org/apache/james/transport/mailets/ICALToJsonAttribute.java
+++ b/mailet/icalendar/src/main/java/org/apache/james/transport/mailets/ICALToJsonAttribute.java
@@ -91,6 +91,10 @@ public class ICALToJsonAttribute extends GenericMailet {
     public static final String DEFAULT_RAW_SOURCE_ATTRIBUTE_NAME = "attachments";
     public static final String DEFAULT_DESTINATION_ATTRIBUTE_NAME = "icalendarJson";
 
+    static {
+        ICal4JConfigurator.configure();
+    }
+
     private final ObjectMapper objectMapper;
     private String sourceAttributeName;
     private String rawSourceAttributeName;

http://git-wip-us.apache.org/repos/asf/james-project/blob/58d5d9ca/mailet/icalendar/src/main/java/org/apache/james/transport/mailets/ICal4JConfigurator.java
----------------------------------------------------------------------
diff --git a/mailet/icalendar/src/main/java/org/apache/james/transport/mailets/ICal4JConfigurator.java b/mailet/icalendar/src/main/java/org/apache/james/transport/mailets/ICal4JConfigurator.java
new file mode 100644
index 0000000..4d2d3e6
--- /dev/null
+++ b/mailet/icalendar/src/main/java/org/apache/james/transport/mailets/ICal4JConfigurator.java
@@ -0,0 +1,36 @@
+/****************************************************************
+ * 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.transport.mailets;
+
+import net.fortuna.ical4j.util.CompatibilityHints;
+import net.fortuna.ical4j.util.MapTimeZoneCache;
+
+public class ICal4JConfigurator {
+    public static void configure() {
+        CompatibilityHints.setHintEnabled(CompatibilityHints.KEY_RELAXED_PARSING, true);
+        CompatibilityHints.setHintEnabled(CompatibilityHints.KEY_RELAXED_UNFOLDING, true);
+        CompatibilityHints.setHintEnabled(CompatibilityHints.KEY_RELAXED_VALIDATION, true);
+        CompatibilityHints.setHintEnabled(CompatibilityHints.KEY_OUTLOOK_COMPATIBILITY, true);
+        CompatibilityHints.setHintEnabled(CompatibilityHints.KEY_NOTES_COMPATIBILITY, true);
+        CompatibilityHints.setHintEnabled(CompatibilityHints.KEY_VCARD_COMPATIBILITY, true);
+
+        System.setProperty("net.fortuna.ical4j.timezone.cache.impl", MapTimeZoneCache.class.getName());
+    }
+}

http://git-wip-us.apache.org/repos/asf/james-project/blob/58d5d9ca/mailet/icalendar/src/main/java/org/apache/james/transport/mailets/ICalendarParser.java
----------------------------------------------------------------------
diff --git a/mailet/icalendar/src/main/java/org/apache/james/transport/mailets/ICalendarParser.java b/mailet/icalendar/src/main/java/org/apache/james/transport/mailets/ICalendarParser.java
index 5755f55..650a530 100644
--- a/mailet/icalendar/src/main/java/org/apache/james/transport/mailets/ICalendarParser.java
+++ b/mailet/icalendar/src/main/java/org/apache/james/transport/mailets/ICalendarParser.java
@@ -36,10 +36,10 @@ import org.slf4j.LoggerFactory;
 import com.github.steveash.guavate.Guavate;
 import com.google.common.annotations.VisibleForTesting;
 import com.google.common.base.Strings;
+
 import net.fortuna.ical4j.data.CalendarBuilder;
 import net.fortuna.ical4j.data.ParserException;
 import net.fortuna.ical4j.model.Calendar;
-import net.fortuna.ical4j.util.CompatibilityHints;
 
 /**
  * <p>
@@ -73,12 +73,7 @@ public class ICalendarParser extends GenericMailet {
     public static final String DESTINATION_ATTRIBUTE_PARAMETER_DEFAULT_VALUE = "calendars";
 
     static {
-        CompatibilityHints.setHintEnabled(CompatibilityHints.KEY_RELAXED_PARSING, true);
-        CompatibilityHints.setHintEnabled(CompatibilityHints.KEY_RELAXED_UNFOLDING, true);
-        CompatibilityHints.setHintEnabled(CompatibilityHints.KEY_RELAXED_VALIDATION, true);
-        CompatibilityHints.setHintEnabled(CompatibilityHints.KEY_OUTLOOK_COMPATIBILITY, true);
-        CompatibilityHints.setHintEnabled(CompatibilityHints.KEY_NOTES_COMPATIBILITY, true);
-        CompatibilityHints.setHintEnabled(CompatibilityHints.KEY_VCARD_COMPATIBILITY, true);
+        ICal4JConfigurator.configure();
     }
 
     private String sourceAttributeName;

http://git-wip-us.apache.org/repos/asf/james-project/blob/58d5d9ca/mailet/icalendar/src/test/java/org/apache/james/transport/mailets/model/ICALTest.java
----------------------------------------------------------------------
diff --git a/mailet/icalendar/src/test/java/org/apache/james/transport/mailets/model/ICALTest.java b/mailet/icalendar/src/test/java/org/apache/james/transport/mailets/model/ICALTest.java
index 878aa72..dc530a1 100644
--- a/mailet/icalendar/src/test/java/org/apache/james/transport/mailets/model/ICALTest.java
+++ b/mailet/icalendar/src/test/java/org/apache/james/transport/mailets/model/ICALTest.java
@@ -24,8 +24,10 @@ import static org.assertj.core.api.Assertions.assertThat;
 import java.io.ByteArrayInputStream;
 
 import org.apache.james.core.MailAddress;
+import org.apache.james.transport.mailets.ICal4JConfigurator;
 import org.apache.james.util.ClassLoaderUtils;
 import org.apache.mailet.base.MailAddressFixture;
+import org.junit.BeforeClass;
 import org.junit.Rule;
 import org.junit.Test;
 import org.junit.rules.ExpectedException;
@@ -36,6 +38,11 @@ import nl.jqno.equalsverifier.EqualsVerifier;
 
 public class ICALTest {
 
+    @BeforeClass
+    public static void setUpIcal4J() {
+        ICal4JConfigurator.configure();
+    }
+
     @Rule
     public ExpectedException expectedException = ExpectedException.none();
 

http://git-wip-us.apache.org/repos/asf/james-project/blob/58d5d9ca/pom.xml
----------------------------------------------------------------------
diff --git a/pom.xml b/pom.xml
index 140d1e8..d50c659 100644
--- a/pom.xml
+++ b/pom.xml
@@ -653,14 +653,13 @@
         <maven-reporting-impl.version>2.2</maven-reporting-impl.version>
         <maven-reporting-api.version>3.0</maven-reporting-api.version>
         <qdox.version>1.12.1</qdox.version>
-        <ical4j.version>2.0.2</ical4j.version>
         <guavate.version>1.0.0</guavate.version>
         <javax.activation.groupId>javax.activation</javax.activation.groupId>
         <javax.activation.artifactId>activation</javax.activation.artifactId>
         <javax.persistence.version>1.0.2</javax.persistence.version>
         <lucene.version>3.6.2</lucene.version>
         <xercesImpl.version>2.9.1</xercesImpl.version>
-        <xml-apis.version>1.3.04</xml-apis.version>
+        <xml-apis.version>2.0.2</xml-apis.version>
         <geronimo-activation-spec.version>1.1</geronimo-activation-spec.version>
         <mockito-core.version>1.9.0</mockito-core.version>
         <jasypt.version>1.9.2</jasypt.version>
@@ -2314,11 +2313,6 @@
                 <version>${junit.vintage.version}</version>
             </dependency>
             <dependency>
-                <groupId>org.mnode.ical4j</groupId>
-                <artifactId>ical4j</artifactId>
-                <version>${ical4j.version}</version>
-            </dependency>
-            <dependency>
                 <groupId>org.mockito</groupId>
                 <artifactId>mockito-core</artifactId>
                 <version>${mockito-core.version}</version>

http://git-wip-us.apache.org/repos/asf/james-project/blob/58d5d9ca/server/protocols/jmap/pom.xml
----------------------------------------------------------------------
diff --git a/server/protocols/jmap/pom.xml b/server/protocols/jmap/pom.xml
index 716accc..74375b9 100644
--- a/server/protocols/jmap/pom.xml
+++ b/server/protocols/jmap/pom.xml
@@ -32,6 +32,10 @@
 
     <name>Apache James :: Server :: JMAP</name>
 
+    <properties>
+        <zalando.version>1.9.0</zalando.version>
+    </properties>
+
     <dependencies>
         <dependency>
             <groupId>${james.groupId}</groupId>
@@ -299,12 +303,12 @@
         <dependency>
             <groupId>org.zalando</groupId>
             <artifactId>logbook-core</artifactId>
-            <version>1.2.1</version>
+            <version>${zalando.version}</version>
         </dependency>
         <dependency>
             <groupId>org.zalando</groupId>
             <artifactId>logbook-servlet</artifactId>
-            <version>1.2.1</version>
+            <version>${zalando.version}</version>
         </dependency>
     </dependencies>
 


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


[12/15] james-project git commit: JAMES-2489 Parallel test execution when possible

Posted by bt...@apache.org.
JAMES-2489 Parallel test execution when possible


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

Branch: refs/heads/master
Commit: 6bbf57d92aee40c3bd5f1d79d0e70f1fc27184ae
Parents: 25b41ec
Author: benwa <bt...@linagora.com>
Authored: Mon Jul 23 16:44:13 2018 +0700
Committer: benwa <bt...@linagora.com>
Committed: Wed Jul 25 16:44:50 2018 +0700

----------------------------------------------------------------------
 mailbox/api/pom.xml                                   | 13 +++++++++++++
 mailbox/backup/pom.xml                                | 13 +++++++++++++
 mailbox/memory/pom.xml                                | 13 +++++++++++++
 mailbox/store/pom.xml                                 | 13 +++++++++++++
 mailet/standard/pom.xml                               |  8 ++++++++
 mdn/pom.xml                                           | 13 +++++++++++++
 mpt/impl/imap-mailbox/inmemory/pom.xml                | 13 +++++++++++++
 protocols/imap/pom.xml                                | 14 ++++++++++++++
 protocols/smtp/pom.xml                                | 13 +++++++++++++
 server/container/core/pom.xml                         |  8 ++++++++
 server/container/util-java8/pom.xml                   |  8 ++++++++
 server/data/data-file/pom.xml                         |  8 ++++++++
 server/mailet/mailets/pom.xml                         |  8 ++++++++
 server/protocols/jmap/pom.xml                         | 12 ++++++++++++
 server/protocols/webadmin/webadmin-core/pom.xml       | 13 +++++++++++++
 server/protocols/webadmin/webadmin-data/pom.xml       |  9 +++++++++
 server/protocols/webadmin/webadmin-mailbox/pom.xml    |  8 ++++++++
 server/protocols/webadmin/webadmin-mailqueue/pom.xml  |  8 ++++++++
 .../webadmin/webadmin-mailrepository/pom.xml          | 11 ++++++++++-
 19 files changed, 205 insertions(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/james-project/blob/6bbf57d9/mailbox/api/pom.xml
----------------------------------------------------------------------
diff --git a/mailbox/api/pom.xml b/mailbox/api/pom.xml
index 0461346..be9f011 100644
--- a/mailbox/api/pom.xml
+++ b/mailbox/api/pom.xml
@@ -123,4 +123,17 @@
             <scope>test</scope>
         </dependency>
     </dependencies>
+
+    <build>
+        <plugins>
+            <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-surefire-plugin</artifactId>
+                <configuration>
+                    <reuseForks>true</reuseForks>
+                    <forkCount>1C</forkCount>
+                </configuration>
+            </plugin>
+        </plugins>
+    </build>
 </project>

http://git-wip-us.apache.org/repos/asf/james-project/blob/6bbf57d9/mailbox/backup/pom.xml
----------------------------------------------------------------------
diff --git a/mailbox/backup/pom.xml b/mailbox/backup/pom.xml
index b412882..7118ae5 100644
--- a/mailbox/backup/pom.xml
+++ b/mailbox/backup/pom.xml
@@ -81,5 +81,18 @@
             <scope>test</scope>
         </dependency>
     </dependencies>
+
+    <build>
+        <plugins>
+            <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-surefire-plugin</artifactId>
+                <configuration>
+                    <reuseForks>true</reuseForks>
+                    <forkCount>1C</forkCount>
+                </configuration>
+            </plugin>
+        </plugins>
+    </build>
     
 </project>

http://git-wip-us.apache.org/repos/asf/james-project/blob/6bbf57d9/mailbox/memory/pom.xml
----------------------------------------------------------------------
diff --git a/mailbox/memory/pom.xml b/mailbox/memory/pom.xml
index 6162f1d..f5b565e 100644
--- a/mailbox/memory/pom.xml
+++ b/mailbox/memory/pom.xml
@@ -96,4 +96,17 @@
             <scope>test</scope>
         </dependency>
     </dependencies>
+
+    <build>
+        <plugins>
+            <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-surefire-plugin</artifactId>
+                <configuration>
+                    <reuseForks>true</reuseForks>
+                    <forkCount>1C</forkCount>
+                </configuration>
+            </plugin>
+        </plugins>
+    </build>
 </project>

http://git-wip-us.apache.org/repos/asf/james-project/blob/6bbf57d9/mailbox/store/pom.xml
----------------------------------------------------------------------
diff --git a/mailbox/store/pom.xml b/mailbox/store/pom.xml
index aafca39..754b6e7 100644
--- a/mailbox/store/pom.xml
+++ b/mailbox/store/pom.xml
@@ -150,4 +150,17 @@
             <scope>test</scope>
         </dependency>
     </dependencies>
+
+    <build>
+        <plugins>
+            <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-surefire-plugin</artifactId>
+                <configuration>
+                    <reuseForks>true</reuseForks>
+                    <forkCount>1C</forkCount>
+                </configuration>
+            </plugin>
+        </plugins>
+    </build>
 </project>

http://git-wip-us.apache.org/repos/asf/james-project/blob/6bbf57d9/mailet/standard/pom.xml
----------------------------------------------------------------------
diff --git a/mailet/standard/pom.xml b/mailet/standard/pom.xml
index 640db3c..62e4fd3 100644
--- a/mailet/standard/pom.xml
+++ b/mailet/standard/pom.xml
@@ -146,6 +146,14 @@
                 <groupId>${james.groupId}</groupId>
                 <artifactId>maven-mailetdocs-plugin</artifactId>
             </plugin>
+            <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-surefire-plugin</artifactId>
+                <configuration>
+                    <reuseForks>true</reuseForks>
+                    <forkCount>1C</forkCount>
+                </configuration>
+            </plugin>
         </plugins>
     </build>
 </project>

http://git-wip-us.apache.org/repos/asf/james-project/blob/6bbf57d9/mdn/pom.xml
----------------------------------------------------------------------
diff --git a/mdn/pom.xml b/mdn/pom.xml
index e867566..f04a46d 100644
--- a/mdn/pom.xml
+++ b/mdn/pom.xml
@@ -73,4 +73,17 @@
         </dependency>
     </dependencies>
 
+    <build>
+        <plugins>
+            <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-surefire-plugin</artifactId>
+                <configuration>
+                    <reuseForks>true</reuseForks>
+                    <forkCount>1C</forkCount>
+                </configuration>
+            </plugin>
+        </plugins>
+    </build>
+
 </project>
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/james-project/blob/6bbf57d9/mpt/impl/imap-mailbox/inmemory/pom.xml
----------------------------------------------------------------------
diff --git a/mpt/impl/imap-mailbox/inmemory/pom.xml b/mpt/impl/imap-mailbox/inmemory/pom.xml
index 4723d55..d75e463 100644
--- a/mpt/impl/imap-mailbox/inmemory/pom.xml
+++ b/mpt/impl/imap-mailbox/inmemory/pom.xml
@@ -53,4 +53,17 @@
             <artifactId>apache-james-mpt-imapmailbox-core</artifactId>
         </dependency>
     </dependencies>
+
+    <build>
+        <plugins>
+            <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-surefire-plugin</artifactId>
+                <configuration>
+                    <reuseForks>true</reuseForks>
+                    <forkCount>1C</forkCount>
+                </configuration>
+            </plugin>
+        </plugins>
+    </build>
 </project>

http://git-wip-us.apache.org/repos/asf/james-project/blob/6bbf57d9/protocols/imap/pom.xml
----------------------------------------------------------------------
diff --git a/protocols/imap/pom.xml b/protocols/imap/pom.xml
index 4144ec6..a14726a 100644
--- a/protocols/imap/pom.xml
+++ b/protocols/imap/pom.xml
@@ -141,4 +141,18 @@
         </dependency>
     </dependencies>
 
+
+    <build>
+        <plugins>
+            <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-surefire-plugin</artifactId>
+                <configuration>
+                    <reuseForks>true</reuseForks>
+                    <forkCount>1C</forkCount>
+                </configuration>
+            </plugin>
+        </plugins>
+    </build>
+
 </project>

http://git-wip-us.apache.org/repos/asf/james-project/blob/6bbf57d9/protocols/smtp/pom.xml
----------------------------------------------------------------------
diff --git a/protocols/smtp/pom.xml b/protocols/smtp/pom.xml
index 117e175..8809609 100644
--- a/protocols/smtp/pom.xml
+++ b/protocols/smtp/pom.xml
@@ -101,4 +101,17 @@
         </dependency>
     </dependencies>
 
+    <build>
+        <plugins>
+            <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-surefire-plugin</artifactId>
+                <configuration>
+                    <reuseForks>true</reuseForks>
+                    <forkCount>1C</forkCount>
+                </configuration>
+            </plugin>
+        </plugins>
+    </build>
+
 </project>

http://git-wip-us.apache.org/repos/asf/james-project/blob/6bbf57d9/server/container/core/pom.xml
----------------------------------------------------------------------
diff --git a/server/container/core/pom.xml b/server/container/core/pom.xml
index 97a9d77..6f64917 100644
--- a/server/container/core/pom.xml
+++ b/server/container/core/pom.xml
@@ -122,6 +122,14 @@
                 <artifactId>maven-bundle-plugin</artifactId>
                 <extensions>true</extensions>
             </plugin>
+            <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-surefire-plugin</artifactId>
+                <configuration>
+                    <reuseForks>true</reuseForks>
+                    <forkCount>1C</forkCount>
+                </configuration>
+            </plugin>
         </plugins>
     </build>
 

http://git-wip-us.apache.org/repos/asf/james-project/blob/6bbf57d9/server/container/util-java8/pom.xml
----------------------------------------------------------------------
diff --git a/server/container/util-java8/pom.xml b/server/container/util-java8/pom.xml
index 863fa46..5a3e2d0 100644
--- a/server/container/util-java8/pom.xml
+++ b/server/container/util-java8/pom.xml
@@ -96,6 +96,14 @@
                 <groupId>org.apache.felix</groupId>
                 <artifactId>maven-bundle-plugin</artifactId>
             </plugin>
+            <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-surefire-plugin</artifactId>
+                <configuration>
+                    <reuseForks>true</reuseForks>
+                    <forkCount>1C</forkCount>
+                </configuration>
+            </plugin>
         </plugins>
     </build>
 

http://git-wip-us.apache.org/repos/asf/james-project/blob/6bbf57d9/server/data/data-file/pom.xml
----------------------------------------------------------------------
diff --git a/server/data/data-file/pom.xml b/server/data/data-file/pom.xml
index 6c8beab..7ff64b8 100644
--- a/server/data/data-file/pom.xml
+++ b/server/data/data-file/pom.xml
@@ -159,6 +159,14 @@
                 <artifactId>maven-bundle-plugin</artifactId>
                 <extensions>true</extensions>
             </plugin>
+            <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-surefire-plugin</artifactId>
+                <configuration>
+                    <reuseForks>true</reuseForks>
+                    <forkCount>1C</forkCount>
+                </configuration>
+            </plugin>
         </plugins>
     </build>
 

http://git-wip-us.apache.org/repos/asf/james-project/blob/6bbf57d9/server/mailet/mailets/pom.xml
----------------------------------------------------------------------
diff --git a/server/mailet/mailets/pom.xml b/server/mailet/mailets/pom.xml
index 61ee063..5c2dd1e 100644
--- a/server/mailet/mailets/pom.xml
+++ b/server/mailet/mailets/pom.xml
@@ -285,6 +285,14 @@
                 <groupId>org.apache.felix</groupId>
                 <artifactId>maven-bundle-plugin</artifactId>
             </plugin>
+            <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-surefire-plugin</artifactId>
+                <configuration>
+                    <reuseForks>true</reuseForks>
+                    <forkCount>1C</forkCount>
+                </configuration>
+            </plugin>
         </plugins>
     </build>
 

http://git-wip-us.apache.org/repos/asf/james-project/blob/6bbf57d9/server/protocols/jmap/pom.xml
----------------------------------------------------------------------
diff --git a/server/protocols/jmap/pom.xml b/server/protocols/jmap/pom.xml
index 74375b9..03cafb4 100644
--- a/server/protocols/jmap/pom.xml
+++ b/server/protocols/jmap/pom.xml
@@ -312,4 +312,16 @@
         </dependency>
     </dependencies>
 
+    <build>
+        <plugins>
+            <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-surefire-plugin</artifactId>
+                <configuration>
+                    <reuseForks>true</reuseForks>
+                    <forkCount>1C</forkCount>
+                </configuration>
+            </plugin>
+        </plugins>
+    </build>
 </project>

http://git-wip-us.apache.org/repos/asf/james-project/blob/6bbf57d9/server/protocols/webadmin/webadmin-core/pom.xml
----------------------------------------------------------------------
diff --git a/server/protocols/webadmin/webadmin-core/pom.xml b/server/protocols/webadmin/webadmin-core/pom.xml
index 3755875..b94ba11 100644
--- a/server/protocols/webadmin/webadmin-core/pom.xml
+++ b/server/protocols/webadmin/webadmin-core/pom.xml
@@ -141,4 +141,17 @@
         </dependency>
     </dependencies>
 
+    <build>
+        <plugins>
+            <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-surefire-plugin</artifactId>
+                <configuration>
+                    <reuseForks>true</reuseForks>
+                    <forkCount>1C</forkCount>
+                </configuration>
+            </plugin>
+        </plugins>
+    </build>
+
 </project>

http://git-wip-us.apache.org/repos/asf/james-project/blob/6bbf57d9/server/protocols/webadmin/webadmin-data/pom.xml
----------------------------------------------------------------------
diff --git a/server/protocols/webadmin/webadmin-data/pom.xml b/server/protocols/webadmin/webadmin-data/pom.xml
index 69bbd37..548e422 100644
--- a/server/protocols/webadmin/webadmin-data/pom.xml
+++ b/server/protocols/webadmin/webadmin-data/pom.xml
@@ -170,6 +170,15 @@
                     </execution>
                 </executions>
             </plugin>
+            <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-surefire-plugin</artifactId>
+                <configuration>
+                    <reuseForks>true</reuseForks>
+                    <forkCount>1C</forkCount>
+                </configuration>
+            </plugin>
+
         </plugins>
     </build>
 

http://git-wip-us.apache.org/repos/asf/james-project/blob/6bbf57d9/server/protocols/webadmin/webadmin-mailbox/pom.xml
----------------------------------------------------------------------
diff --git a/server/protocols/webadmin/webadmin-mailbox/pom.xml b/server/protocols/webadmin/webadmin-mailbox/pom.xml
index 033f413..40828c8 100644
--- a/server/protocols/webadmin/webadmin-mailbox/pom.xml
+++ b/server/protocols/webadmin/webadmin-mailbox/pom.xml
@@ -211,6 +211,14 @@
                     </execution>
                 </executions>
             </plugin>
+            <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-surefire-plugin</artifactId>
+                <configuration>
+                    <reuseForks>true</reuseForks>
+                    <forkCount>1C</forkCount>
+                </configuration>
+            </plugin>
         </plugins>
     </build>
 

http://git-wip-us.apache.org/repos/asf/james-project/blob/6bbf57d9/server/protocols/webadmin/webadmin-mailqueue/pom.xml
----------------------------------------------------------------------
diff --git a/server/protocols/webadmin/webadmin-mailqueue/pom.xml b/server/protocols/webadmin/webadmin-mailqueue/pom.xml
index 962b011..032fba8 100644
--- a/server/protocols/webadmin/webadmin-mailqueue/pom.xml
+++ b/server/protocols/webadmin/webadmin-mailqueue/pom.xml
@@ -122,6 +122,14 @@
                     </execution>
                 </executions>
             </plugin>
+            <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-surefire-plugin</artifactId>
+                <configuration>
+                    <reuseForks>true</reuseForks>
+                    <forkCount>1C</forkCount>
+                </configuration>
+            </plugin>
         </plugins>
     </build>
 

http://git-wip-us.apache.org/repos/asf/james-project/blob/6bbf57d9/server/protocols/webadmin/webadmin-mailrepository/pom.xml
----------------------------------------------------------------------
diff --git a/server/protocols/webadmin/webadmin-mailrepository/pom.xml b/server/protocols/webadmin/webadmin-mailrepository/pom.xml
index 1c30113..aa21785 100644
--- a/server/protocols/webadmin/webadmin-mailrepository/pom.xml
+++ b/server/protocols/webadmin/webadmin-mailrepository/pom.xml
@@ -86,7 +86,7 @@
             <artifactId>jackson-databind</artifactId>
         </dependency>
         <dependency>
-            <groupId>${james.groupId}</groupId>
+            <groupId>${project.groupId}</groupId>
             <artifactId>javax-mail-extension</artifactId>
             <type>test-jar</type>
             <scope>test</scope>
@@ -163,6 +163,15 @@
                     </execution>
                 </executions>
             </plugin>
+            <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-surefire-plugin</artifactId>
+                <configuration>
+                    <reuseForks>true</reuseForks>
+                    <forkCount>1C</forkCount>
+                </configuration>
+            </plugin>
+
         </plugins>
     </build>
 


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


[06/15] james-project git commit: JAMES-2470 Use a single Cassandra Cluster for a full test class

Posted by bt...@apache.org.
http://git-wip-us.apache.org/repos/asf/james-project/blob/61b8caa3/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraMailboxRecentDAOTest.java
----------------------------------------------------------------------
diff --git a/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraMailboxRecentDAOTest.java b/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraMailboxRecentDAOTest.java
index f4b7639..a8935db 100644
--- a/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraMailboxRecentDAOTest.java
+++ b/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraMailboxRecentDAOTest.java
@@ -29,7 +29,9 @@ import org.apache.james.mailbox.MessageUid;
 import org.apache.james.mailbox.cassandra.ids.CassandraId;
 import org.apache.james.mailbox.cassandra.modules.CassandraMailboxRecentsModule;
 import org.junit.After;
+import org.junit.AfterClass;
 import org.junit.Before;
+import org.junit.BeforeClass;
 import org.junit.ClassRule;
 import org.junit.Test;
 
@@ -41,19 +43,29 @@ public class CassandraMailboxRecentDAOTest {
     public static final CassandraId CASSANDRA_ID = CassandraId.timeBased();
 
     @ClassRule public static DockerCassandraRule cassandraServer = new DockerCassandraRule();
-    
-    private CassandraCluster cassandra;
+
+    private static CassandraCluster cassandra;
+
     private CassandraMailboxRecentsDAO testee;
 
+    @BeforeClass
+    public static void setUpClass() {
+        cassandra = CassandraCluster.create(new CassandraMailboxRecentsModule(), cassandraServer.getHost());
+    }
+
     @Before
     public void setUp() {
-        cassandra = CassandraCluster.create(new CassandraMailboxRecentsModule(), cassandraServer.getIp(), cassandraServer.getBindingPort());
         testee = new CassandraMailboxRecentsDAO(cassandra.getConf());
     }
 
     @After
     public void tearDown() {
-        cassandra.close();
+        cassandra.clearTables();
+    }
+
+    @AfterClass
+    public static void tearDownClass() {
+        cassandra.closeCluster();
     }
 
     @Test

http://git-wip-us.apache.org/repos/asf/james-project/blob/61b8caa3/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraMapperProvider.java
----------------------------------------------------------------------
diff --git a/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraMapperProvider.java b/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraMapperProvider.java
index 968d72d..e894802 100644
--- a/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraMapperProvider.java
+++ b/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraMapperProvider.java
@@ -96,11 +96,6 @@ public class CassandraMapperProvider implements MapperProvider {
     }
 
     @Override
-    public void clearMapper() {
-        cassandra.close();
-    }
-
-    @Override
     public boolean supportPartialAttachmentFetch() {
         return true;
     }

http://git-wip-us.apache.org/repos/asf/james-project/blob/61b8caa3/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraMessageDAOTest.java
----------------------------------------------------------------------
diff --git a/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraMessageDAOTest.java b/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraMessageDAOTest.java
index 8d4c963..1230441 100644
--- a/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraMessageDAOTest.java
+++ b/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraMessageDAOTest.java
@@ -56,7 +56,9 @@ import org.apache.james.mailbox.store.mail.model.impl.PropertyBuilder;
 import org.apache.james.mailbox.store.mail.model.impl.SimpleMailboxMessage;
 import org.apache.james.util.streams.Limit;
 import org.junit.After;
+import org.junit.AfterClass;
 import org.junit.Before;
+import org.junit.BeforeClass;
 import org.junit.ClassRule;
 import org.junit.Test;
 
@@ -74,8 +76,7 @@ public class CassandraMessageDAOTest {
     private static final List<MessageAttachment> NO_ATTACHMENT = ImmutableList.of();
 
     @ClassRule public static DockerCassandraRule cassandraServer = new DockerCassandraRule();
-
-    private CassandraCluster cassandra;
+    private static CassandraCluster cassandra;
 
     private CassandraMessageDAO testee;
     private CassandraMessageId.Factory messageIdFactory;
@@ -84,9 +85,14 @@ public class CassandraMessageDAOTest {
     private CassandraMessageId messageId;
     private List<ComposedMessageIdWithMetaData> messageIds;
 
+    @BeforeClass
+    public static void setUpClass() {
+        CassandraModuleComposite modules = new CassandraModuleComposite(new CassandraMessageModule(), new CassandraBlobModule());
+        cassandra = CassandraCluster.create(modules, cassandraServer.getHost());
+    }
+
     @Before
     public void setUp() {
-        cassandra = CassandraCluster.create(new CassandraModuleComposite(new CassandraMessageModule(), new CassandraBlobModule()), cassandraServer.getIp(), cassandraServer.getBindingPort());
         messageIdFactory = new CassandraMessageId.Factory();
         messageId = messageIdFactory.generate();
         CassandraBlobsDAO blobsDAO = new CassandraBlobsDAO(cassandra.getConf());
@@ -103,7 +109,12 @@ public class CassandraMessageDAOTest {
 
     @After
     public void tearDown() {
-        cassandra.close();
+        cassandra.clearTables();
+    }
+
+    @AfterClass
+    public static void tearDownClass() {
+        cassandra.closeCluster();
     }
 
     @Test

http://git-wip-us.apache.org/repos/asf/james-project/blob/61b8caa3/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraMessageIdDAOTest.java
----------------------------------------------------------------------
diff --git a/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraMessageIdDAOTest.java b/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraMessageIdDAOTest.java
index b56db70..13ec4b2 100644
--- a/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraMessageIdDAOTest.java
+++ b/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraMessageIdDAOTest.java
@@ -38,30 +38,40 @@ import org.apache.james.mailbox.model.ComposedMessageId;
 import org.apache.james.mailbox.model.ComposedMessageIdWithMetaData;
 import org.apache.james.mailbox.model.MessageRange;
 import org.junit.After;
+import org.junit.AfterClass;
 import org.junit.Before;
+import org.junit.BeforeClass;
 import org.junit.ClassRule;
 import org.junit.Test;
 
 public class CassandraMessageIdDAOTest {
 
     @ClassRule public static DockerCassandraRule cassandraServer = new DockerCassandraRule();
-    
-    private CassandraCluster cassandra;
+
+    private static CassandraCluster cassandra;
 
     private CassandraMessageId.Factory messageIdFactory;
     private CassandraMessageIdDAO testee;
 
+    @BeforeClass
+    public static void setUpClass() {
+        cassandra = CassandraCluster.create(new CassandraMessageModule(), cassandraServer.getHost());
+    }
 
     @Before
     public void setUp() {
-        cassandra = CassandraCluster.create(new CassandraMessageModule(), cassandraServer.getIp(), cassandraServer.getBindingPort());
         messageIdFactory = new CassandraMessageId.Factory();
         testee = new CassandraMessageIdDAO(cassandra.getConf(), messageIdFactory);
     }
 
     @After
     public void tearDown() {
-        cassandra.close();
+        cassandra.clearTables();
+    }
+
+    @AfterClass
+    public static void tearDownClass() {
+        cassandra.closeCluster();
     }
 
     @Test

http://git-wip-us.apache.org/repos/asf/james-project/blob/61b8caa3/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraMessageIdMapperTest.java
----------------------------------------------------------------------
diff --git a/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraMessageIdMapperTest.java b/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraMessageIdMapperTest.java
index f0ab6ae..ea978e1 100644
--- a/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraMessageIdMapperTest.java
+++ b/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraMessageIdMapperTest.java
@@ -49,7 +49,9 @@ import org.apache.james.mailbox.store.mail.MessageMapper;
 import org.apache.james.mailbox.store.mail.model.MailboxMessage;
 import org.apache.james.mailbox.store.mail.model.MessageIdMapperTest;
 import org.junit.After;
+import org.junit.AfterClass;
 import org.junit.Before;
+import org.junit.BeforeClass;
 import org.junit.ClassRule;
 import org.junit.Test;
 
@@ -59,33 +61,42 @@ public class CassandraMessageIdMapperTest extends MessageIdMapperTest {
 
     public static final MockMailboxSession MAILBOX_SESSION = new MockMailboxSession("benwa");
     @ClassRule public static DockerCassandraRule cassandraServer = new DockerCassandraRule();
-    
-    private CassandraCluster cassandra;
+
+    private static CassandraCluster cassandra;
+
+    @BeforeClass
+    public static void setUpClass() {
+        CassandraModuleComposite modules = new CassandraModuleComposite(
+            new CassandraAclModule(),
+            new CassandraMailboxModule(),
+            new CassandraMessageModule(),
+            new CassandraMailboxCounterModule(),
+            new CassandraMailboxRecentsModule(),
+            new CassandraModSeqModule(),
+            new CassandraUidModule(),
+            new CassandraAttachmentModule(),
+            new CassandraAnnotationModule(),
+            new CassandraFirstUnseenModule(),
+            new CassandraApplicableFlagsModule(),
+            new CassandraDeletedMessageModule(),
+            new CassandraBlobModule());
+        cassandra = CassandraCluster.create(modules, cassandraServer.getHost());
+    }
 
     @Override
     @Before
     public void setUp() throws MailboxException {
-        CassandraModuleComposite modules = new CassandraModuleComposite(
-                new CassandraAclModule(),
-                new CassandraMailboxModule(),
-                new CassandraMessageModule(),
-                new CassandraMailboxCounterModule(),
-                new CassandraMailboxRecentsModule(),
-                new CassandraModSeqModule(),
-                new CassandraUidModule(),
-                new CassandraAttachmentModule(),
-                new CassandraAnnotationModule(),
-                new CassandraFirstUnseenModule(),
-                new CassandraApplicableFlagsModule(),
-                new CassandraDeletedMessageModule(),
-                new CassandraBlobModule());
-        this.cassandra = CassandraCluster.create(modules, cassandraServer.getIp(), cassandraServer.getBindingPort());
         super.setUp();
     }
     
     @After
     public void tearDown() {
-        cassandra.close();
+        cassandra.clearTables();
+    }
+
+    @AfterClass
+    public static void tearDownClass() {
+        cassandra.closeCluster();
     }
     
     @Override

http://git-wip-us.apache.org/repos/asf/james-project/blob/61b8caa3/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraMessageIdToImapUidDAOTest.java
----------------------------------------------------------------------
diff --git a/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraMessageIdToImapUidDAOTest.java b/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraMessageIdToImapUidDAOTest.java
index dc37b7f..0c57801 100644
--- a/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraMessageIdToImapUidDAOTest.java
+++ b/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraMessageIdToImapUidDAOTest.java
@@ -36,7 +36,9 @@ import org.apache.james.mailbox.cassandra.modules.CassandraMessageModule;
 import org.apache.james.mailbox.model.ComposedMessageId;
 import org.apache.james.mailbox.model.ComposedMessageIdWithMetaData;
 import org.junit.After;
+import org.junit.AfterClass;
 import org.junit.Before;
+import org.junit.BeforeClass;
 import org.junit.ClassRule;
 import org.junit.Test;
 
@@ -46,22 +48,32 @@ import com.github.steveash.guavate.Guavate;
 public class CassandraMessageIdToImapUidDAOTest {
 
     @ClassRule public static DockerCassandraRule cassandraServer = new DockerCassandraRule();
-    
-    private CassandraCluster cassandra;
+
+    private static CassandraCluster cassandra;
+
     private CassandraMessageId.Factory messageIdFactory;
 
     private CassandraMessageIdToImapUidDAO testee;
 
+    @BeforeClass
+    public static void setUpClass() {
+        cassandra = CassandraCluster.create(new CassandraMessageModule(), cassandraServer.getHost());
+    }
+
     @Before
     public void setUp() {
-        cassandra = CassandraCluster.create(new CassandraMessageModule(), cassandraServer.getIp(), cassandraServer.getBindingPort());
         messageIdFactory = new CassandraMessageId.Factory();
         testee = new CassandraMessageIdToImapUidDAO(cassandra.getConf(), messageIdFactory);
     }
 
     @After
     public void tearDown() {
-        cassandra.close();
+        cassandra.clearTables();
+    }
+
+    @AfterClass
+    public static void tearDownClass() {
+        cassandra.closeCluster();
     }
 
     @Test

http://git-wip-us.apache.org/repos/asf/james-project/blob/61b8caa3/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraMessageMapperTest.java
----------------------------------------------------------------------
diff --git a/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraMessageMapperTest.java b/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraMessageMapperTest.java
index 572b8c7..56cb3ba 100644
--- a/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraMessageMapperTest.java
+++ b/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraMessageMapperTest.java
@@ -38,39 +38,50 @@ import org.apache.james.mailbox.cassandra.modules.CassandraUidModule;
 import org.apache.james.mailbox.store.mail.model.MapperProvider;
 import org.apache.james.mailbox.store.mail.model.MessageMapperTest;
 import org.junit.After;
+import org.junit.AfterClass;
 import org.junit.Before;
+import org.junit.BeforeClass;
 import org.junit.ClassRule;
 
 public class CassandraMessageMapperTest extends MessageMapperTest {
     
     @ClassRule public static DockerCassandraRule cassandraServer = new DockerCassandraRule();
 
-    private CassandraCluster cassandra;
+    private static CassandraCluster cassandra;
+
+    @BeforeClass
+    public static void setUpClass() {
+        CassandraModuleComposite modules = new CassandraModuleComposite(
+            new CassandraAclModule(),
+            new CassandraMailboxModule(),
+            new CassandraMessageModule(),
+            new CassandraMailboxCounterModule(),
+            new CassandraMailboxRecentsModule(),
+            new CassandraModSeqModule(),
+            new CassandraUidModule(),
+            new CassandraAttachmentModule(),
+            new CassandraAnnotationModule(),
+            new CassandraFirstUnseenModule(),
+            new CassandraApplicableFlagsModule(),
+            new CassandraDeletedMessageModule(),
+            new CassandraBlobModule());
+        cassandra = CassandraCluster.create(modules, cassandraServer.getIp(), cassandraServer.getBindingPort());
+    }
 
     @Override
     @Before
     public void setUp() throws Exception {
-        CassandraModuleComposite modules = new CassandraModuleComposite(
-                new CassandraAclModule(),
-                new CassandraMailboxModule(),
-                new CassandraMessageModule(),
-                new CassandraMailboxCounterModule(),
-                new CassandraMailboxRecentsModule(),
-                new CassandraModSeqModule(),
-                new CassandraUidModule(),
-                new CassandraAttachmentModule(),
-                new CassandraAnnotationModule(),
-                new CassandraFirstUnseenModule(),
-                new CassandraApplicableFlagsModule(),
-                new CassandraDeletedMessageModule(),
-                new CassandraBlobModule());
-        this.cassandra = CassandraCluster.create(modules, cassandraServer.getIp(), cassandraServer.getBindingPort());
         super.setUp();
     }
     
     @After
     public void tearDown() {
-        cassandra.close();
+        cassandra.clearTables();
+    }
+
+    @AfterClass
+    public static void tearDownClass() {
+        cassandra.closeCluster();
     }
     
     @Override

http://git-wip-us.apache.org/repos/asf/james-project/blob/61b8caa3/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraMessageMoveTest.java
----------------------------------------------------------------------
diff --git a/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraMessageMoveTest.java b/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraMessageMoveTest.java
index b2a1021..53a6b5f 100644
--- a/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraMessageMoveTest.java
+++ b/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraMessageMoveTest.java
@@ -38,39 +38,50 @@ import org.apache.james.mailbox.cassandra.modules.CassandraUidModule;
 import org.apache.james.mailbox.store.mail.model.MapperProvider;
 import org.apache.james.mailbox.store.mail.model.MessageMoveTest;
 import org.junit.After;
+import org.junit.AfterClass;
 import org.junit.Before;
+import org.junit.BeforeClass;
 import org.junit.ClassRule;
 
 public class CassandraMessageMoveTest extends MessageMoveTest {
     
     @ClassRule public static DockerCassandraRule cassandraServer = new DockerCassandraRule();
-    
-    private CassandraCluster cassandra;
+
+    private static CassandraCluster cassandra;
+
+    @BeforeClass
+    public static void setUpClass() {
+        CassandraModuleComposite modules = new CassandraModuleComposite(
+            new CassandraAclModule(),
+            new CassandraMailboxModule(),
+            new CassandraMessageModule(),
+            new CassandraMailboxCounterModule(),
+            new CassandraMailboxRecentsModule(),
+            new CassandraModSeqModule(),
+            new CassandraUidModule(),
+            new CassandraAttachmentModule(),
+            new CassandraAnnotationModule(),
+            new CassandraFirstUnseenModule(),
+            new CassandraApplicableFlagsModule(),
+            new CassandraDeletedMessageModule(),
+            new CassandraBlobModule());
+        cassandra = CassandraCluster.create(modules, cassandraServer.getHost());
+    }
 
     @Override
     @Before
     public void setUp() throws Exception {
-        CassandraModuleComposite modules = new CassandraModuleComposite(
-                new CassandraAclModule(),
-                new CassandraMailboxModule(),
-                new CassandraMessageModule(),
-                new CassandraMailboxCounterModule(),
-                new CassandraMailboxRecentsModule(),
-                new CassandraModSeqModule(),
-                new CassandraUidModule(),
-                new CassandraAttachmentModule(),
-                new CassandraAnnotationModule(),
-                new CassandraFirstUnseenModule(),
-                new CassandraApplicableFlagsModule(),
-                new CassandraDeletedMessageModule(),
-                new CassandraBlobModule());
-        this.cassandra = CassandraCluster.create(modules, cassandraServer.getIp(), cassandraServer.getBindingPort());
         super.setUp();
     }
     
     @After
     public void tearDown() {
-        cassandra.close();
+        cassandra.clearTables();
+    }
+
+    @AfterClass
+    public static void tearDownClass() {
+        cassandra.closeCluster();
     }
     
     @Override

http://git-wip-us.apache.org/repos/asf/james-project/blob/61b8caa3/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraMessageWithAttachmentMapperTest.java
----------------------------------------------------------------------
diff --git a/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraMessageWithAttachmentMapperTest.java b/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraMessageWithAttachmentMapperTest.java
index 4dbba4f..bdbb3db 100644
--- a/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraMessageWithAttachmentMapperTest.java
+++ b/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraMessageWithAttachmentMapperTest.java
@@ -38,39 +38,50 @@ import org.apache.james.mailbox.cassandra.modules.CassandraUidModule;
 import org.apache.james.mailbox.store.mail.model.MapperProvider;
 import org.apache.james.mailbox.store.mail.model.MessageWithAttachmentMapperTest;
 import org.junit.After;
+import org.junit.AfterClass;
 import org.junit.Before;
+import org.junit.BeforeClass;
 import org.junit.ClassRule;
 
 public class CassandraMessageWithAttachmentMapperTest extends MessageWithAttachmentMapperTest {
     
     @ClassRule public static DockerCassandraRule cassandraServer = new DockerCassandraRule();
     
-    private CassandraCluster cassandra;
+    private static CassandraCluster cassandra;
+
+    @BeforeClass
+    public static void setUpClass() {
+        CassandraModuleComposite modules = new CassandraModuleComposite(
+            new CassandraAclModule(),
+            new CassandraMailboxModule(),
+            new CassandraMessageModule(),
+            new CassandraMailboxCounterModule(),
+            new CassandraMailboxRecentsModule(),
+            new CassandraModSeqModule(),
+            new CassandraUidModule(),
+            new CassandraAttachmentModule(),
+            new CassandraAnnotationModule(),
+            new CassandraFirstUnseenModule(),
+            new CassandraApplicableFlagsModule(),
+            new CassandraDeletedMessageModule(),
+            new CassandraBlobModule());
+        cassandra = CassandraCluster.create(modules, cassandraServer.getHost());
+    }
 
     @Override
     @Before
     public void setUp() throws Exception {
-        CassandraModuleComposite modules = new CassandraModuleComposite(
-                new CassandraAclModule(),
-                new CassandraMailboxModule(),
-                new CassandraMessageModule(),
-                new CassandraMailboxCounterModule(),
-                new CassandraMailboxRecentsModule(),
-                new CassandraModSeqModule(),
-                new CassandraUidModule(),
-                new CassandraAttachmentModule(),
-                new CassandraAnnotationModule(),
-                new CassandraFirstUnseenModule(),
-                new CassandraApplicableFlagsModule(),
-                new CassandraDeletedMessageModule(),
-                new CassandraBlobModule());
-        this.cassandra = CassandraCluster.create(modules, cassandraServer.getIp(), cassandraServer.getBindingPort());
         super.setUp();
     }
     
     @After
     public void tearDown() {
-        cassandra.close();
+        cassandra.clearTables();
+    }
+
+    @AfterClass
+    public static void tearDownClass() {
+        cassandra.closeCluster();
     }
     
     @Override

http://git-wip-us.apache.org/repos/asf/james-project/blob/61b8caa3/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraModSeqProviderTest.java
----------------------------------------------------------------------
diff --git a/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraModSeqProviderTest.java b/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraModSeqProviderTest.java
index c2c0c76..f044385 100644
--- a/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraModSeqProviderTest.java
+++ b/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraModSeqProviderTest.java
@@ -30,7 +30,9 @@ import org.apache.james.mailbox.cassandra.modules.CassandraModSeqModule;
 import org.apache.james.mailbox.model.MailboxPath;
 import org.apache.james.mailbox.store.mail.model.impl.SimpleMailbox;
 import org.junit.After;
+import org.junit.AfterClass;
 import org.junit.Before;
+import org.junit.BeforeClass;
 import org.junit.ClassRule;
 import org.junit.Test;
 
@@ -41,17 +43,18 @@ public class CassandraModSeqProviderTest {
 
     @ClassRule public static DockerCassandraRule cassandraServer = new DockerCassandraRule();
     
-    private CassandraCluster cassandra;
+    private static CassandraCluster cassandra;
     
     private CassandraModSeqProvider modSeqProvider;
     private SimpleMailbox mailbox;
 
+    @BeforeClass
+    public static void setUpClass() {
+        cassandra = CassandraCluster.create(new CassandraModSeqModule(), cassandraServer.getHost());
+    }
+
     @Before
     public void setUp() throws Exception {
-        cassandra = CassandraCluster.create(
-            new CassandraModSeqModule(),
-            cassandraServer.getIp(),
-            cassandraServer.getBindingPort());
         modSeqProvider = new CassandraModSeqProvider(cassandra.getConf());
         MailboxPath path = new MailboxPath("gsoc", "ieugen", "Trash");
         mailbox = new SimpleMailbox(path, 1234);
@@ -60,7 +63,12 @@ public class CassandraModSeqProviderTest {
     
     @After
     public void cleanUp() {
-        cassandra.close();
+        cassandra.clearTables();
+    }
+
+    @AfterClass
+    public static void tearDownClass() {
+        cassandra.closeCluster();
     }
 
     @Test

http://git-wip-us.apache.org/repos/asf/james-project/blob/61b8caa3/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraUidProviderTest.java
----------------------------------------------------------------------
diff --git a/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraUidProviderTest.java b/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraUidProviderTest.java
index dd7b239..45b75b7 100644
--- a/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraUidProviderTest.java
+++ b/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraUidProviderTest.java
@@ -31,7 +31,9 @@ import org.apache.james.mailbox.cassandra.modules.CassandraUidModule;
 import org.apache.james.mailbox.model.MailboxPath;
 import org.apache.james.mailbox.store.mail.model.impl.SimpleMailbox;
 import org.junit.After;
+import org.junit.AfterClass;
 import org.junit.Before;
+import org.junit.BeforeClass;
 import org.junit.ClassRule;
 import org.junit.Test;
 
@@ -41,14 +43,19 @@ public class CassandraUidProviderTest {
     private static final CassandraId CASSANDRA_ID = new CassandraId.Factory().fromString("e22b3ac0-a80b-11e7-bb00-777268d65503");
 
     @ClassRule public static DockerCassandraRule cassandraServer = new DockerCassandraRule();
-    
-    private final CassandraCluster cassandra = CassandraCluster.create(new CassandraUidModule(), cassandraServer.getIp(), cassandraServer.getBindingPort());
-    
+
+    private static CassandraCluster cassandra;
+
     private CassandraUidProvider uidProvider;
     private SimpleMailbox mailbox;
 
+    @BeforeClass
+    public static void setUpClass() {
+        cassandra = CassandraCluster.create(new CassandraUidModule(), cassandraServer.getHost());
+    }
+
     @Before
-    public void setUpClass() throws Exception {
+    public void setUp() {
         uidProvider = new CassandraUidProvider(cassandra.getConf());
         MailboxPath path = new MailboxPath("gsoc", "ieugen", "Trash");
         mailbox = new SimpleMailbox(path, 1234);
@@ -57,7 +64,12 @@ public class CassandraUidProviderTest {
     
     @After
     public void cleanUp() {
-        cassandra.close();
+        cassandra.clearTables();
+    }
+
+    @AfterClass
+    public static void tearDownClass() {
+        cassandra.closeCluster();
     }
 
     @Test

http://git-wip-us.apache.org/repos/asf/james-project/blob/61b8caa3/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraUserMailboxRightsDAOTest.java
----------------------------------------------------------------------
diff --git a/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraUserMailboxRightsDAOTest.java b/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraUserMailboxRightsDAOTest.java
index bb309cd..2d57219 100644
--- a/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraUserMailboxRightsDAOTest.java
+++ b/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraUserMailboxRightsDAOTest.java
@@ -32,7 +32,9 @@ import org.apache.james.mailbox.model.MailboxACL.EntryKey;
 import org.apache.james.mailbox.model.MailboxACL.Rfc4314Rights;
 import org.apache.james.mailbox.model.MailboxACL.Right;
 import org.junit.After;
+import org.junit.AfterClass;
 import org.junit.Before;
+import org.junit.BeforeClass;
 import org.junit.ClassRule;
 import org.junit.Test;
 
@@ -45,20 +47,29 @@ public class CassandraUserMailboxRightsDAOTest {
     private static final Rfc4314Rights OTHER_RIGHTS = new Rfc4314Rights(Right.Administer, Right.Read);
 
     @ClassRule public static DockerCassandraRule cassandraServer = new DockerCassandraRule();
-    
-    private CassandraCluster cassandra;
+
+    private static CassandraCluster cassandra;
 
     private CassandraUserMailboxRightsDAO testee;
 
+    @BeforeClass
+    public static void setUpClass() {
+        cassandra = CassandraCluster.create(new CassandraAclModule(), cassandraServer.getHost());
+    }
+
     @Before
     public void setUp() throws Exception {
-        cassandra = CassandraCluster.create(new CassandraAclModule(), cassandraServer.getIp(), cassandraServer.getBindingPort());
         testee = new CassandraUserMailboxRightsDAO(cassandra.getConf(), CassandraUtils.WITH_DEFAULT_CONFIGURATION);
     }
 
     @After
     public void tearDown() throws Exception {
-        cassandra.close();
+        cassandra.clearTables();
+    }
+
+    @AfterClass
+    public static void tearDownClass() {
+        cassandra.closeCluster();
     }
 
     @Test

http://git-wip-us.apache.org/repos/asf/james-project/blob/61b8caa3/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/migration/AttachmentMessageIdCreationTest.java
----------------------------------------------------------------------
diff --git a/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/migration/AttachmentMessageIdCreationTest.java b/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/migration/AttachmentMessageIdCreationTest.java
index 1a491fd..1c9b135 100644
--- a/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/migration/AttachmentMessageIdCreationTest.java
+++ b/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/migration/AttachmentMessageIdCreationTest.java
@@ -55,7 +55,10 @@ import org.apache.james.mailbox.model.MessageAttachment;
 import org.apache.james.mailbox.model.MessageId;
 import org.apache.james.mailbox.store.mail.model.impl.PropertyBuilder;
 import org.apache.james.mailbox.store.mail.model.impl.SimpleMailboxMessage;
+import org.junit.After;
+import org.junit.AfterClass;
 import org.junit.Before;
+import org.junit.BeforeClass;
 import org.junit.ClassRule;
 import org.junit.Test;
 
@@ -65,6 +68,7 @@ import com.google.common.collect.ImmutableSet;
 public class AttachmentMessageIdCreationTest {
     @ClassRule
     public static DockerCassandraRule cassandraServer = new DockerCassandraRule();
+    private static CassandraCluster cassandra;
 
     private CassandraBlobsDAO blobsDAO;
     private CassandraMessageDAO cassandraMessageDAO;
@@ -75,15 +79,17 @@ public class AttachmentMessageIdCreationTest {
     private SimpleMailboxMessage message;
     private CassandraMessageId messageId;
 
+    @BeforeClass
+    public static void setUpClass() {
+        CassandraModuleComposite modules = new CassandraModuleComposite(
+            new CassandraMessageModule(),
+            new CassandraAttachmentModule(),
+            new CassandraBlobModule());
+        cassandra = CassandraCluster.create(modules, cassandraServer.getHost());
+    }
+
     @Before
     public void setUp() {
-        CassandraCluster cassandra = CassandraCluster.create(
-            new CassandraModuleComposite(
-                new CassandraMessageModule(),
-                new CassandraAttachmentModule(),
-                new CassandraBlobModule()),
-            cassandraServer.getIp(),
-            cassandraServer.getBindingPort());
         CassandraMessageId.Factory messageIdFactory = new CassandraMessageId.Factory();
 
         blobsDAO = new CassandraBlobsDAO(cassandra.getConf());
@@ -98,6 +104,16 @@ public class AttachmentMessageIdCreationTest {
         messageId = messageIdFactory.generate();
     }
 
+    @After
+    public void tearDown() {
+        cassandra.clearTables();
+    }
+
+    @AfterClass
+    public static void tearDownClass() {
+        cassandra.closeCluster();
+    }
+
     @Test
     public void emptyMigrationShouldSucceed() {
         assertThat(migration.run())

http://git-wip-us.apache.org/repos/asf/james-project/blob/61b8caa3/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/migration/AttachmentV2MigrationTest.java
----------------------------------------------------------------------
diff --git a/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/migration/AttachmentV2MigrationTest.java b/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/migration/AttachmentV2MigrationTest.java
index e98f59b..a110fe8 100644
--- a/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/migration/AttachmentV2MigrationTest.java
+++ b/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/migration/AttachmentV2MigrationTest.java
@@ -42,7 +42,10 @@ import org.apache.james.mailbox.cassandra.mail.CassandraAttachmentDAOV2;
 import org.apache.james.mailbox.cassandra.modules.CassandraAttachmentModule;
 import org.apache.james.mailbox.model.Attachment;
 import org.apache.james.mailbox.model.AttachmentId;
+import org.junit.After;
+import org.junit.AfterClass;
 import org.junit.Before;
+import org.junit.BeforeClass;
 import org.junit.ClassRule;
 import org.junit.Test;
 
@@ -53,6 +56,7 @@ public class AttachmentV2MigrationTest {
 
     @ClassRule
     public static DockerCassandraRule cassandraServer = new DockerCassandraRule();
+    private static CassandraCluster cassandra;
 
     private CassandraAttachmentDAO attachmentDAO;
     private CassandraAttachmentDAOV2 attachmentDAOV2;
@@ -61,15 +65,16 @@ public class AttachmentV2MigrationTest {
     private Attachment attachment1;
     private Attachment attachment2;
 
-    @Before
-    public void setUp() {
-        CassandraCluster cassandra = CassandraCluster.create(
-            new CassandraModuleComposite(
+    @BeforeClass
+    public static void setUpClass() {
+        CassandraModuleComposite modules = new CassandraModuleComposite(
                 new CassandraAttachmentModule(),
-                new CassandraBlobModule()),
-            cassandraServer.getIp(),
-            cassandraServer.getBindingPort());
+                new CassandraBlobModule());
+        cassandra = CassandraCluster.create(modules, cassandraServer.getHost());
+    }
 
+    @Before
+    public void setUp() {
         attachmentDAO = new CassandraAttachmentDAO(cassandra.getConf(),
             CassandraUtils.WITH_DEFAULT_CONFIGURATION,
             CassandraConfiguration.DEFAULT_CONFIGURATION);
@@ -89,6 +94,16 @@ public class AttachmentV2MigrationTest {
             .build();
     }
 
+    @After
+    public void tearDown() {
+        cassandra.clearTables();
+    }
+
+    @AfterClass
+    public static void tearDownClass() {
+        cassandra.closeCluster();
+    }
+
     @Test
     public void emptyMigrationShouldSucceed() {
         assertThat(migration.run())

http://git-wip-us.apache.org/repos/asf/james-project/blob/61b8caa3/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/migration/MailboxPathV2MigrationTest.java
----------------------------------------------------------------------
diff --git a/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/migration/MailboxPathV2MigrationTest.java b/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/migration/MailboxPathV2MigrationTest.java
index 85af4a4..2d64288 100644
--- a/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/migration/MailboxPathV2MigrationTest.java
+++ b/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/migration/MailboxPathV2MigrationTest.java
@@ -40,6 +40,7 @@ import org.apache.james.mailbox.model.MailboxPath;
 import org.apache.james.mailbox.store.mail.model.impl.SimpleMailbox;
 import org.assertj.core.api.SoftAssertions;
 import org.junit.After;
+import org.junit.AfterClass;
 import org.junit.Before;
 import org.junit.BeforeClass;
 import org.junit.ClassRule;
@@ -51,30 +52,30 @@ public class MailboxPathV2MigrationTest {
     private static final int UID_VALIDITY_1 = 452;
     private static final SimpleMailbox MAILBOX_1 = new SimpleMailbox(MAILBOX_PATH_1, UID_VALIDITY_1);
     private static final CassandraId MAILBOX_ID_1 = CassandraId.timeBased();
-    private CassandraCluster cassandra;
-
-    @BeforeClass
-    public static void setUpClass() {
-        MAILBOX_1.setMailboxId(MAILBOX_ID_1);
-    }
 
     @ClassRule
     public static DockerCassandraRule cassandraServer = new DockerCassandraRule();
+    private static CassandraCluster cassandra;
 
     private CassandraMailboxPathDAOImpl daoV1;
     private CassandraMailboxPathV2DAO daoV2;
     private CassandraMailboxMapper mailboxMapper;
     private CassandraMailboxDAO mailboxDAO;
 
-    @Before
-    public void setUp() {
+    @BeforeClass
+    public static void setUpClass() {
+        MAILBOX_1.setMailboxId(MAILBOX_ID_1);
+
         cassandra = CassandraCluster.create(
             new CassandraModuleComposite(
                 new CassandraMailboxModule(),
                 new CassandraAclModule()),
             cassandraServer.getIp(),
             cassandraServer.getBindingPort());
+    }
 
+    @Before
+    public void setUp() {
         daoV1 = new CassandraMailboxPathDAOImpl(
             cassandra.getConf(),
             cassandra.getTypesProvider(),
@@ -95,7 +96,12 @@ public class MailboxPathV2MigrationTest {
 
     @After
     public void tearDown() {
-        cassandra.close();
+        cassandra.clearTables();
+    }
+
+    @AfterClass
+    public static void tearDownClass() {
+        cassandra.closeCluster();
     }
 
     @Test

http://git-wip-us.apache.org/repos/asf/james-project/blob/61b8caa3/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/quota/CassandraCurrentQuotaManagerTest.java
----------------------------------------------------------------------
diff --git a/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/quota/CassandraCurrentQuotaManagerTest.java b/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/quota/CassandraCurrentQuotaManagerTest.java
index 836cd09..80ed628 100644
--- a/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/quota/CassandraCurrentQuotaManagerTest.java
+++ b/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/quota/CassandraCurrentQuotaManagerTest.java
@@ -25,13 +25,20 @@ import org.apache.james.mailbox.cassandra.modules.CassandraQuotaModule;
 import org.apache.james.mailbox.store.quota.StoreCurrentQuotaManager;
 import org.apache.james.mailbox.store.quota.StoreCurrentQuotaManagerTest;
 import org.junit.After;
+import org.junit.AfterClass;
+import org.junit.BeforeClass;
 import org.junit.ClassRule;
 
 public class CassandraCurrentQuotaManagerTest extends StoreCurrentQuotaManagerTest {
 
     @ClassRule public static DockerCassandraRule cassandraServer = new DockerCassandraRule();
-    
-    private final CassandraCluster cassandra = CassandraCluster.create(new CassandraQuotaModule(), cassandraServer.getIp(), cassandraServer.getBindingPort());
+
+    private static CassandraCluster cassandra;
+
+    @BeforeClass
+    public static void setUpClass() {
+        cassandra = CassandraCluster.create(new CassandraQuotaModule(), cassandraServer.getIp(), cassandraServer.getBindingPort());
+    }
 
     @Override
     protected StoreCurrentQuotaManager provideTestee() {
@@ -40,7 +47,12 @@ public class CassandraCurrentQuotaManagerTest extends StoreCurrentQuotaManagerTe
 
     @After
     public void tearDown() {
-        cassandra.close();
+        cassandra.clearTables();
+    }
+
+    @AfterClass
+    public static void tearDownClass() {
+        cassandra.closeCluster();
     }
 
 }

http://git-wip-us.apache.org/repos/asf/james-project/blob/61b8caa3/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/quota/CassandraPerUserMaxQuotaManagerTest.java
----------------------------------------------------------------------
diff --git a/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/quota/CassandraPerUserMaxQuotaManagerTest.java b/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/quota/CassandraPerUserMaxQuotaManagerTest.java
index 0ffb069..e22e333 100644
--- a/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/quota/CassandraPerUserMaxQuotaManagerTest.java
+++ b/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/quota/CassandraPerUserMaxQuotaManagerTest.java
@@ -26,24 +26,35 @@ import org.apache.james.mailbox.cassandra.modules.CassandraQuotaModule;
 import org.apache.james.mailbox.quota.MaxQuotaManager;
 import org.apache.james.mailbox.store.quota.GenericMaxQuotaManagerTest;
 import org.junit.After;
+import org.junit.AfterClass;
+import org.junit.BeforeClass;
 import org.junit.ClassRule;
 
 public class CassandraPerUserMaxQuotaManagerTest extends GenericMaxQuotaManagerTest {
 
     @ClassRule public static DockerCassandraRule cassandraServer = new DockerCassandraRule();
-    
-    private CassandraCluster cassandra;
+
+    private static CassandraCluster cassandra;
+
+    @BeforeClass
+    public static void setUpClass() {
+        cassandra = CassandraCluster.create(new CassandraQuotaModule(), cassandraServer.getHost());
+    }
 
     @Override
     protected MaxQuotaManager provideMaxQuotaManager() {
-        cassandra = CassandraCluster.create(new CassandraQuotaModule(), cassandraServer.getIp(), cassandraServer.getBindingPort());
         return GuiceUtils.testInjector(cassandra)
             .getInstance(CassandraPerUserMaxQuotaManager.class);
     }
 
     @After
     public void cleanUp() {
-        cassandra.close();
+        cassandra.clearTables();
+    }
+
+    @AfterClass
+    public static void tearDownClass() {
+        cassandra.closeCluster();
     }
 
 }

http://git-wip-us.apache.org/repos/asf/james-project/blob/61b8caa3/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/user/CassandraSubscriptionMapperTest.java
----------------------------------------------------------------------
diff --git a/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/user/CassandraSubscriptionMapperTest.java b/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/user/CassandraSubscriptionMapperTest.java
index a8bca0e..0b0d817 100644
--- a/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/user/CassandraSubscriptionMapperTest.java
+++ b/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/user/CassandraSubscriptionMapperTest.java
@@ -25,14 +25,20 @@ import org.apache.james.mailbox.cassandra.modules.CassandraSubscriptionModule;
 import org.apache.james.mailbox.store.user.SubscriptionMapper;
 import org.apache.james.mailbox.store.user.SubscriptionMapperTest;
 import org.junit.After;
+import org.junit.AfterClass;
+import org.junit.BeforeClass;
 import org.junit.ClassRule;
 
 public class CassandraSubscriptionMapperTest extends SubscriptionMapperTest {
 
     @ClassRule public static DockerCassandraRule cassandraServer = new DockerCassandraRule();
-    
-    private final CassandraCluster cassandra = CassandraCluster.create(new CassandraSubscriptionModule(), cassandraServer.getIp(), cassandraServer.getBindingPort());
 
+    private static CassandraCluster cassandra;
+
+    @BeforeClass
+    public static void setUpClass() {
+        cassandra = CassandraCluster.create(new CassandraSubscriptionModule(), cassandraServer.getIp(), cassandraServer.getBindingPort());
+    }
     @Override
     protected SubscriptionMapper createSubscriptionMapper() {
         return new CassandraSubscriptionMapper(cassandra.getConf(), CassandraUtils.WITH_DEFAULT_CONFIGURATION);
@@ -40,7 +46,12 @@ public class CassandraSubscriptionMapperTest extends SubscriptionMapperTest {
 
     @After
     public void tearDown() {
-        cassandra.close();
+        cassandra.clearTables();
+    }
+
+    @AfterClass
+    public static void tearDownClass() {
+        cassandra.closeCluster();
     }
 
 }

http://git-wip-us.apache.org/repos/asf/james-project/blob/61b8caa3/mailbox/jpa/src/test/java/org/apache/james/mailbox/jpa/mail/JPAMapperProvider.java
----------------------------------------------------------------------
diff --git a/mailbox/jpa/src/test/java/org/apache/james/mailbox/jpa/mail/JPAMapperProvider.java b/mailbox/jpa/src/test/java/org/apache/james/mailbox/jpa/mail/JPAMapperProvider.java
index a3f1b01..4327739 100644
--- a/mailbox/jpa/src/test/java/org/apache/james/mailbox/jpa/mail/JPAMapperProvider.java
+++ b/mailbox/jpa/src/test/java/org/apache/james/mailbox/jpa/mail/JPAMapperProvider.java
@@ -92,11 +92,6 @@ public class JPAMapperProvider implements MapperProvider {
     }
 
     @Override
-    public void clearMapper() throws MailboxException {
-        jpaTestCluster.clear(JPAMailboxFixture.MAILBOX_TABLE_NAMES);
-    }
-
-    @Override
     public boolean supportPartialAttachmentFetch() {
         return false;
     }

http://git-wip-us.apache.org/repos/asf/james-project/blob/61b8caa3/mailbox/memory/src/test/java/org/apache/james/mailbox/inmemory/mail/InMemoryMapperProvider.java
----------------------------------------------------------------------
diff --git a/mailbox/memory/src/test/java/org/apache/james/mailbox/inmemory/mail/InMemoryMapperProvider.java b/mailbox/memory/src/test/java/org/apache/james/mailbox/inmemory/mail/InMemoryMapperProvider.java
index 14701bc..bbf7406 100644
--- a/mailbox/memory/src/test/java/org/apache/james/mailbox/inmemory/mail/InMemoryMapperProvider.java
+++ b/mailbox/memory/src/test/java/org/apache/james/mailbox/inmemory/mail/InMemoryMapperProvider.java
@@ -90,11 +90,6 @@ public class InMemoryMapperProvider implements MapperProvider {
     }
 
     @Override
-    public void clearMapper() throws MailboxException {
-        inMemoryMailboxSessionMapperFactory.deleteAll();
-    }
-
-    @Override
     public boolean supportPartialAttachmentFetch() {
         return false;
     }

http://git-wip-us.apache.org/repos/asf/james-project/blob/61b8caa3/mailbox/store/src/test/java/org/apache/james/mailbox/store/mail/model/MapperProvider.java
----------------------------------------------------------------------
diff --git a/mailbox/store/src/test/java/org/apache/james/mailbox/store/mail/model/MapperProvider.java b/mailbox/store/src/test/java/org/apache/james/mailbox/store/mail/model/MapperProvider.java
index 1b7deec..288186b 100644
--- a/mailbox/store/src/test/java/org/apache/james/mailbox/store/mail/model/MapperProvider.java
+++ b/mailbox/store/src/test/java/org/apache/james/mailbox/store/mail/model/MapperProvider.java
@@ -64,8 +64,6 @@ public interface MapperProvider {
 
     long highestModSeq(Mailbox mailbox) throws MailboxException;
 
-    void clearMapper() throws MailboxException;
-
     boolean supportPartialAttachmentFetch();
     
     MessageId generateMessageId();

http://git-wip-us.apache.org/repos/asf/james-project/blob/61b8caa3/server/blob/blob-cassandra/src/test/java/org/apache/james/blob/cassandra/CassandraBlobsDAOTest.java
----------------------------------------------------------------------
diff --git a/server/blob/blob-cassandra/src/test/java/org/apache/james/blob/cassandra/CassandraBlobsDAOTest.java b/server/blob/blob-cassandra/src/test/java/org/apache/james/blob/cassandra/CassandraBlobsDAOTest.java
index 9eab5eb..6f7ecb4 100644
--- a/server/blob/blob-cassandra/src/test/java/org/apache/james/blob/cassandra/CassandraBlobsDAOTest.java
+++ b/server/blob/blob-cassandra/src/test/java/org/apache/james/blob/cassandra/CassandraBlobsDAOTest.java
@@ -31,7 +31,9 @@ import org.apache.james.backends.cassandra.init.configuration.CassandraConfigura
 import org.apache.james.blob.api.BlobId;
 import org.apache.james.blob.api.ObjectStore;
 import org.apache.james.blob.api.ObjectStoreContract;
+import org.junit.jupiter.api.AfterAll;
 import org.junit.jupiter.api.AfterEach;
+import org.junit.jupiter.api.BeforeAll;
 import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.Test;
 import org.junit.jupiter.api.extension.ExtendWith;
@@ -44,14 +46,16 @@ public class CassandraBlobsDAOTest implements ObjectStoreContract {
     private static final int CHUNK_SIZE = 10240;
     private static final int MULTIPLE_CHUNK_SIZE = 3;
 
-    private CassandraCluster cassandra;
+    private static CassandraCluster cassandra;
     private CassandraBlobsDAO testee;
 
+    @BeforeAll
+    static void setUpClass(DockerCassandra dockerCassandra) {
+        cassandra = CassandraCluster.create(new CassandraBlobModule(), dockerCassandra.getIp(), dockerCassandra.getBindingPort());
+    }
+
     @BeforeEach
-    public void setUp(DockerCassandra dockerCassandra) {
-        cassandra = CassandraCluster.create(
-                new CassandraBlobModule(), dockerCassandra.getIp(), dockerCassandra.getBindingPort());
-        
+    void setUp() {
         testee = new CassandraBlobsDAO(cassandra.getConf(),
             CassandraConfiguration.builder()
                 .blobPartSize(CHUNK_SIZE)
@@ -60,8 +64,13 @@ public class CassandraBlobsDAOTest implements ObjectStoreContract {
     }
 
     @AfterEach
-    public void tearDown() {
-        cassandra.close();
+    void tearDown() {
+        cassandra.clearTables();
+    }
+
+    @AfterAll
+    public static void tearDownClass() {
+        cassandra.closeCluster();
     }
 
     @Override

http://git-wip-us.apache.org/repos/asf/james-project/blob/61b8caa3/server/data/data-cassandra/src/test/java/org/apache/james/dlp/eventsourcing/cassandra/CassandraEventSourcingDLPConfigurationStoreExtension.java
----------------------------------------------------------------------
diff --git a/server/data/data-cassandra/src/test/java/org/apache/james/dlp/eventsourcing/cassandra/CassandraEventSourcingDLPConfigurationStoreExtension.java b/server/data/data-cassandra/src/test/java/org/apache/james/dlp/eventsourcing/cassandra/CassandraEventSourcingDLPConfigurationStoreExtension.java
index ba2d72a..6d45afd 100644
--- a/server/data/data-cassandra/src/test/java/org/apache/james/dlp/eventsourcing/cassandra/CassandraEventSourcingDLPConfigurationStoreExtension.java
+++ b/server/data/data-cassandra/src/test/java/org/apache/james/dlp/eventsourcing/cassandra/CassandraEventSourcingDLPConfigurationStoreExtension.java
@@ -31,14 +31,13 @@ import org.apache.james.eventsourcing.eventstore.cassandra.JsonEventSerializer;
 import org.junit.jupiter.api.extension.AfterAllCallback;
 import org.junit.jupiter.api.extension.AfterEachCallback;
 import org.junit.jupiter.api.extension.BeforeAllCallback;
-import org.junit.jupiter.api.extension.BeforeEachCallback;
 import org.junit.jupiter.api.extension.ExtensionContext;
 import org.junit.jupiter.api.extension.ParameterContext;
 import org.junit.jupiter.api.extension.ParameterResolutionException;
 import org.junit.jupiter.api.extension.ParameterResolver;
 import org.testcontainers.shaded.com.google.common.collect.ImmutableSet;
 
-public class CassandraEventSourcingDLPConfigurationStoreExtension implements BeforeAllCallback, AfterAllCallback, BeforeEachCallback, AfterEachCallback, ParameterResolver {
+public class CassandraEventSourcingDLPConfigurationStoreExtension implements BeforeAllCallback, AfterAllCallback, AfterEachCallback, ParameterResolver {
 
     private final DockerCassandraExtension dockerCassandraExtension;
     private CassandraCluster cassandra;
@@ -50,15 +49,6 @@ public class CassandraEventSourcingDLPConfigurationStoreExtension implements Bef
     @Override
     public void beforeAll(ExtensionContext context) throws Exception {
         dockerCassandraExtension.beforeAll(context);
-    }
-
-    @Override
-    public void afterAll(ExtensionContext context) throws Exception {
-        dockerCassandraExtension.afterAll(context);
-    }
-
-    @Override
-    public void beforeEach(ExtensionContext context) {
         cassandra = CassandraCluster.create(
             new CassandraEventStoreModule(),
             dockerCassandraExtension.getDockerCassandra().getIp(),
@@ -67,7 +57,13 @@ public class CassandraEventSourcingDLPConfigurationStoreExtension implements Bef
 
     @Override
     public void afterEach(ExtensionContext context) {
-        cassandra.close();
+        cassandra.clearTables();
+    }
+
+    @Override
+    public void afterAll(ExtensionContext context) throws Exception {
+        cassandra.closeCluster();
+        dockerCassandraExtension.afterAll(context);
     }
 
     @Override

http://git-wip-us.apache.org/repos/asf/james-project/blob/61b8caa3/server/data/data-cassandra/src/test/java/org/apache/james/domainlist/cassandra/CassandraDomainListTest.java
----------------------------------------------------------------------
diff --git a/server/data/data-cassandra/src/test/java/org/apache/james/domainlist/cassandra/CassandraDomainListTest.java b/server/data/data-cassandra/src/test/java/org/apache/james/domainlist/cassandra/CassandraDomainListTest.java
index 033a2e0..af722d1 100644
--- a/server/data/data-cassandra/src/test/java/org/apache/james/domainlist/cassandra/CassandraDomainListTest.java
+++ b/server/data/data-cassandra/src/test/java/org/apache/james/domainlist/cassandra/CassandraDomainListTest.java
@@ -24,25 +24,36 @@ import org.apache.james.backends.cassandra.DockerCassandraRule;
 import org.apache.james.domainlist.api.DomainList;
 import org.apache.james.domainlist.lib.AbstractDomainListTest;
 import org.junit.After;
+import org.junit.AfterClass;
 import org.junit.Before;
+import org.junit.BeforeClass;
 import org.junit.ClassRule;
 
 public class CassandraDomainListTest extends AbstractDomainListTest {
 
     @ClassRule public static DockerCassandraRule cassandraServer = new DockerCassandraRule();
 
-    private CassandraCluster cassandra;
+    private static CassandraCluster cassandra;
+
+    @BeforeClass
+    public static void setUpClass() {
+        cassandra = CassandraCluster.create(new CassandraDomainListModule(), cassandraServer.getHost());
+    }
 
     @Override
     @Before
     public void setUp() throws Exception {
-        cassandra = CassandraCluster.create(new CassandraDomainListModule(), cassandraServer.getIp(), cassandraServer.getBindingPort());
         super.setUp();
     }
 
     @After
     public void tearDown() {
-        cassandra.close();
+        cassandra.clearTables();
+    }
+
+    @AfterClass
+    public static void tearDownClass() {
+        cassandra.closeCluster();
     }
 
     @Override

http://git-wip-us.apache.org/repos/asf/james-project/blob/61b8caa3/server/data/data-cassandra/src/test/java/org/apache/james/mailrepository/cassandra/CassandraMailRepositoryUrlStoreExtension.java
----------------------------------------------------------------------
diff --git a/server/data/data-cassandra/src/test/java/org/apache/james/mailrepository/cassandra/CassandraMailRepositoryUrlStoreExtension.java b/server/data/data-cassandra/src/test/java/org/apache/james/mailrepository/cassandra/CassandraMailRepositoryUrlStoreExtension.java
index 7d9bee9..282a525 100644
--- a/server/data/data-cassandra/src/test/java/org/apache/james/mailrepository/cassandra/CassandraMailRepositoryUrlStoreExtension.java
+++ b/server/data/data-cassandra/src/test/java/org/apache/james/mailrepository/cassandra/CassandraMailRepositoryUrlStoreExtension.java
@@ -26,13 +26,12 @@ import org.apache.james.mailrepository.api.MailRepositoryUrlStore;
 import org.junit.jupiter.api.extension.AfterAllCallback;
 import org.junit.jupiter.api.extension.AfterEachCallback;
 import org.junit.jupiter.api.extension.BeforeAllCallback;
-import org.junit.jupiter.api.extension.BeforeEachCallback;
 import org.junit.jupiter.api.extension.ExtensionContext;
 import org.junit.jupiter.api.extension.ParameterContext;
 import org.junit.jupiter.api.extension.ParameterResolutionException;
 import org.junit.jupiter.api.extension.ParameterResolver;
 
-public class CassandraMailRepositoryUrlStoreExtension implements ParameterResolver, BeforeAllCallback, AfterAllCallback, AfterEachCallback, BeforeEachCallback {
+public class CassandraMailRepositoryUrlStoreExtension implements ParameterResolver, BeforeAllCallback, AfterAllCallback, AfterEachCallback {
     private final DockerCassandraRule cassandra;
     private CassandraCluster cassandraCluster;
 
@@ -43,10 +42,6 @@ public class CassandraMailRepositoryUrlStoreExtension implements ParameterResolv
     @Override
     public void beforeAll(ExtensionContext context) {
         cassandra.start();
-    }
-
-    @Override
-    public void beforeEach(ExtensionContext context) {
         cassandraCluster = CassandraCluster.create(
             new CassandraMailRepositoryUrlModule(),
             cassandra.getHost());
@@ -54,11 +49,12 @@ public class CassandraMailRepositoryUrlStoreExtension implements ParameterResolv
 
     @Override
     public void afterEach(ExtensionContext context) {
-        cassandraCluster.close();
+        cassandraCluster.clearTables();
     }
 
     @Override
     public void afterAll(ExtensionContext context) {
+        cassandraCluster.closeCluster();
         cassandra.stop();
     }
 

http://git-wip-us.apache.org/repos/asf/james-project/blob/61b8caa3/server/data/data-cassandra/src/test/java/org/apache/james/rrt/cassandra/CassandraRecipientRewriteTableTest.java
----------------------------------------------------------------------
diff --git a/server/data/data-cassandra/src/test/java/org/apache/james/rrt/cassandra/CassandraRecipientRewriteTableTest.java b/server/data/data-cassandra/src/test/java/org/apache/james/rrt/cassandra/CassandraRecipientRewriteTableTest.java
index b53e60d..4b6ae00 100644
--- a/server/data/data-cassandra/src/test/java/org/apache/james/rrt/cassandra/CassandraRecipientRewriteTableTest.java
+++ b/server/data/data-cassandra/src/test/java/org/apache/james/rrt/cassandra/CassandraRecipientRewriteTableTest.java
@@ -25,19 +25,25 @@ import org.apache.james.backends.cassandra.utils.CassandraUtils;
 import org.apache.james.rrt.lib.AbstractRecipientRewriteTable;
 import org.apache.james.rrt.lib.AbstractRecipientRewriteTableTest;
 import org.junit.After;
+import org.junit.AfterClass;
 import org.junit.Before;
+import org.junit.BeforeClass;
 import org.junit.ClassRule;
 
 public class CassandraRecipientRewriteTableTest extends AbstractRecipientRewriteTableTest {
 
     @ClassRule public static DockerCassandraRule cassandraServer = new DockerCassandraRule();
 
-    private CassandraCluster cassandra;
+    private static CassandraCluster cassandra;
+
+    @BeforeClass
+    public static void setUpClass() {
+        cassandra = CassandraCluster.create(new CassandraRRTModule(), cassandraServer.getHost());
+    }
 
     @Override
     @Before
     public void setUp() throws Exception {
-        cassandra = CassandraCluster.create(new CassandraRRTModule(), cassandraServer.getIp(), cassandraServer.getBindingPort());
         super.setUp();
     }
 
@@ -45,9 +51,13 @@ public class CassandraRecipientRewriteTableTest extends AbstractRecipientRewrite
     @After
     public void tearDown() throws Exception {
         super.tearDown();
-        cassandra.close();
+        cassandra.clearTables();
     }
 
+    @AfterClass
+    public static void tearDownClass() {
+        cassandra.closeCluster();
+    }
 
     @Override
     protected AbstractRecipientRewriteTable getRecipientRewriteTable() throws Exception {

http://git-wip-us.apache.org/repos/asf/james-project/blob/61b8caa3/server/data/data-cassandra/src/test/java/org/apache/james/rrt/cassandra/CassandraStepdefs.java
----------------------------------------------------------------------
diff --git a/server/data/data-cassandra/src/test/java/org/apache/james/rrt/cassandra/CassandraStepdefs.java b/server/data/data-cassandra/src/test/java/org/apache/james/rrt/cassandra/CassandraStepdefs.java
index a1c8138..b62707c 100644
--- a/server/data/data-cassandra/src/test/java/org/apache/james/rrt/cassandra/CassandraStepdefs.java
+++ b/server/data/data-cassandra/src/test/java/org/apache/james/rrt/cassandra/CassandraStepdefs.java
@@ -40,7 +40,7 @@ public class CassandraStepdefs {
     @Before
     public void setup() throws Throwable {
         cassandra = CassandraCluster.create(new CassandraRRTModule(), RewriteTablesTest.cassandraServer.getIp(), RewriteTablesTest.cassandraServer.getBindingPort());
-        mainStepdefs.rewriteTable = getRecipientRewriteTable(); 
+        mainStepdefs.rewriteTable = getRecipientRewriteTable();
     }
 
     @After

http://git-wip-us.apache.org/repos/asf/james-project/blob/61b8caa3/server/data/data-cassandra/src/test/java/org/apache/james/sieve/cassandra/CassandraActiveScriptDAOTest.java
----------------------------------------------------------------------
diff --git a/server/data/data-cassandra/src/test/java/org/apache/james/sieve/cassandra/CassandraActiveScriptDAOTest.java b/server/data/data-cassandra/src/test/java/org/apache/james/sieve/cassandra/CassandraActiveScriptDAOTest.java
index 8c7b6ae..d0ff1db 100644
--- a/server/data/data-cassandra/src/test/java/org/apache/james/sieve/cassandra/CassandraActiveScriptDAOTest.java
+++ b/server/data/data-cassandra/src/test/java/org/apache/james/sieve/cassandra/CassandraActiveScriptDAOTest.java
@@ -29,7 +29,9 @@ import org.apache.james.core.User;
 import org.apache.james.sieve.cassandra.model.ActiveScriptInfo;
 import org.apache.james.sieverepository.api.ScriptName;
 import org.junit.After;
+import org.junit.AfterClass;
 import org.junit.Before;
+import org.junit.BeforeClass;
 import org.junit.ClassRule;
 import org.junit.Test;
 
@@ -40,19 +42,28 @@ public class CassandraActiveScriptDAOTest {
     public static final ScriptName NEW_SCRIPT_NAME = new ScriptName("newScriptName");
 
     @ClassRule public static DockerCassandraRule cassandraServer = new DockerCassandraRule();
-    
-    private CassandraCluster cassandra;
+    private static CassandraCluster cassandra;
+
     private CassandraActiveScriptDAO activeScriptDAO;
 
+    @BeforeClass
+    public static void setUpClass() {
+        cassandra = CassandraCluster.create(new CassandraSieveRepositoryModule(), cassandraServer.getHost());
+    }
+
     @Before
     public void setUp() throws Exception {
-        cassandra = CassandraCluster.create(new CassandraSieveRepositoryModule(), cassandraServer.getIp(), cassandraServer.getBindingPort());
         activeScriptDAO = new CassandraActiveScriptDAO(cassandra.getConf());
     }
 
     @After
     public void tearDown() {
-        cassandra.close();
+        cassandra.clearTables();
+    }
+
+    @AfterClass
+    public static void tearDownClass() {
+        cassandra.closeCluster();
     }
 
     @Test

http://git-wip-us.apache.org/repos/asf/james-project/blob/61b8caa3/server/data/data-cassandra/src/test/java/org/apache/james/sieve/cassandra/CassandraSieveDAOTest.java
----------------------------------------------------------------------
diff --git a/server/data/data-cassandra/src/test/java/org/apache/james/sieve/cassandra/CassandraSieveDAOTest.java b/server/data/data-cassandra/src/test/java/org/apache/james/sieve/cassandra/CassandraSieveDAOTest.java
index 0c29873..2601263 100644
--- a/server/data/data-cassandra/src/test/java/org/apache/james/sieve/cassandra/CassandraSieveDAOTest.java
+++ b/server/data/data-cassandra/src/test/java/org/apache/james/sieve/cassandra/CassandraSieveDAOTest.java
@@ -31,7 +31,9 @@ import org.apache.james.sieve.cassandra.model.Script;
 import org.apache.james.sieverepository.api.ScriptName;
 import org.apache.james.sieverepository.api.ScriptSummary;
 import org.junit.After;
+import org.junit.AfterClass;
 import org.junit.Before;
+import org.junit.BeforeClass;
 import org.junit.ClassRule;
 import org.junit.Test;
 
@@ -60,19 +62,28 @@ public class CassandraSieveDAOTest {
         .build();
 
     @ClassRule public static DockerCassandraRule cassandraServer = new DockerCassandraRule();
-    
-    private CassandraCluster cassandra;
+    private static CassandraCluster cassandra;
+
     private CassandraSieveDAO sieveDAO;
 
+    @BeforeClass
+    public static void setUpClass() {
+        cassandra = CassandraCluster.create(new CassandraSieveRepositoryModule(), cassandraServer.getHost());
+    }
+
     @Before
     public void setUp() throws Exception {
-        cassandra = CassandraCluster.create(new CassandraSieveRepositoryModule(), cassandraServer.getIp(), cassandraServer.getBindingPort());
         sieveDAO = new CassandraSieveDAO(cassandra.getConf());
     }
 
     @After
     public void tearDown() {
-        cassandra.close();
+        cassandra.clearTables();
+    }
+
+    @AfterClass
+    public static void tearDownClass() {
+        cassandra.closeCluster();
     }
     
      @Test

http://git-wip-us.apache.org/repos/asf/james-project/blob/61b8caa3/server/data/data-cassandra/src/test/java/org/apache/james/sieve/cassandra/CassandraSieveQuotaDAOTest.java
----------------------------------------------------------------------
diff --git a/server/data/data-cassandra/src/test/java/org/apache/james/sieve/cassandra/CassandraSieveQuotaDAOTest.java b/server/data/data-cassandra/src/test/java/org/apache/james/sieve/cassandra/CassandraSieveQuotaDAOTest.java
index 869a257..95880eb 100644
--- a/server/data/data-cassandra/src/test/java/org/apache/james/sieve/cassandra/CassandraSieveQuotaDAOTest.java
+++ b/server/data/data-cassandra/src/test/java/org/apache/james/sieve/cassandra/CassandraSieveQuotaDAOTest.java
@@ -26,7 +26,9 @@ import org.apache.james.backends.cassandra.DockerCassandraRule;
 import org.apache.james.core.User;
 import org.apache.james.core.quota.QuotaSize;
 import org.junit.After;
+import org.junit.AfterClass;
 import org.junit.Before;
+import org.junit.BeforeClass;
 import org.junit.ClassRule;
 import org.junit.Test;
 
@@ -36,19 +38,28 @@ public class CassandraSieveQuotaDAOTest {
     public static final QuotaSize QUOTA_SIZE = QuotaSize.size(15L);
 
     @ClassRule public static DockerCassandraRule cassandraServer = new DockerCassandraRule();
-    
-    private CassandraCluster cassandra;
+    private static CassandraCluster cassandra;
+
     private CassandraSieveQuotaDAO sieveQuotaDAO;
 
+    @BeforeClass
+    public static void setUpClass() {
+        cassandra = CassandraCluster.create(new CassandraSieveRepositoryModule(), cassandraServer.getHost());
+    }
+
     @Before
     public void setUp() throws Exception {
-        cassandra = CassandraCluster.create(new CassandraSieveRepositoryModule(), cassandraServer.getIp(), cassandraServer.getBindingPort());
         sieveQuotaDAO = new CassandraSieveQuotaDAO(cassandra.getConf());
     }
 
     @After
     public void tearDown() {
-        cassandra.close();
+        cassandra.clearTables();
+    }
+
+    @AfterClass
+    public static void tearDownClass() {
+        cassandra.closeCluster();
     }
 
     @Test

http://git-wip-us.apache.org/repos/asf/james-project/blob/61b8caa3/server/data/data-cassandra/src/test/java/org/apache/james/sieve/cassandra/CassandraSieveRepositoryTest.java
----------------------------------------------------------------------
diff --git a/server/data/data-cassandra/src/test/java/org/apache/james/sieve/cassandra/CassandraSieveRepositoryTest.java b/server/data/data-cassandra/src/test/java/org/apache/james/sieve/cassandra/CassandraSieveRepositoryTest.java
index 93352ee..6696d96 100644
--- a/server/data/data-cassandra/src/test/java/org/apache/james/sieve/cassandra/CassandraSieveRepositoryTest.java
+++ b/server/data/data-cassandra/src/test/java/org/apache/james/sieve/cassandra/CassandraSieveRepositoryTest.java
@@ -24,30 +24,40 @@ import org.apache.james.backends.cassandra.DockerCassandraRule;
 import org.apache.james.sieverepository.api.SieveRepository;
 import org.apache.james.sieverepository.lib.AbstractSieveRepositoryTest;
 import org.junit.After;
+import org.junit.AfterClass;
 import org.junit.Before;
+import org.junit.BeforeClass;
 import org.junit.ClassRule;
 
 public class CassandraSieveRepositoryTest extends AbstractSieveRepositoryTest {
-    
 
     @ClassRule public static DockerCassandraRule cassandraServer = new DockerCassandraRule();
     
-    private CassandraCluster cassandra;
+    private static CassandraCluster cassandra;
+
+    @BeforeClass
+    public static void setUpClass() {
+        cassandra = CassandraCluster.create(new CassandraSieveRepositoryModule(), cassandraServer.getHost());
+    }
 
     @Override
     @Before
     public void setUp() throws Exception {
-        cassandra = CassandraCluster.create(new CassandraSieveRepositoryModule(), cassandraServer.getIp(), cassandraServer.getBindingPort());
         super.setUp();
     }
     
     @After
-    public void tearDown() throws Exception {
-        cassandra.close();
+    public void tearDown() {
+        cassandra.clearTables();
+    }
+
+    @AfterClass
+    public static void tearDownClass() {
+        cassandra.closeCluster();
     }
     
     @Override
-    protected SieveRepository createSieveRepository() throws Exception {
+    protected SieveRepository createSieveRepository() {
         return new CassandraSieveRepository(
             new CassandraSieveDAO(cassandra.getConf()),
             new CassandraSieveQuotaDAO(cassandra.getConf()),

http://git-wip-us.apache.org/repos/asf/james-project/blob/61b8caa3/server/data/data-cassandra/src/test/java/org/apache/james/user/cassandra/CassandraUsersRepositoryTest.java
----------------------------------------------------------------------
diff --git a/server/data/data-cassandra/src/test/java/org/apache/james/user/cassandra/CassandraUsersRepositoryTest.java b/server/data/data-cassandra/src/test/java/org/apache/james/user/cassandra/CassandraUsersRepositoryTest.java
index a3e5955..818bf8b 100644
--- a/server/data/data-cassandra/src/test/java/org/apache/james/user/cassandra/CassandraUsersRepositoryTest.java
+++ b/server/data/data-cassandra/src/test/java/org/apache/james/user/cassandra/CassandraUsersRepositoryTest.java
@@ -25,19 +25,25 @@ import org.apache.james.backends.cassandra.utils.CassandraUtils;
 import org.apache.james.user.lib.AbstractUsersRepository;
 import org.apache.james.user.lib.AbstractUsersRepositoryTest;
 import org.junit.After;
+import org.junit.AfterClass;
 import org.junit.Before;
+import org.junit.BeforeClass;
 import org.junit.ClassRule;
 
 public class CassandraUsersRepositoryTest extends AbstractUsersRepositoryTest {
 
     @ClassRule public static DockerCassandraRule cassandraServer = new DockerCassandraRule();
     
-    private CassandraCluster cassandra;
+    private static CassandraCluster cassandra;
+
+    @BeforeClass
+    public static void setUpClass() {
+        cassandra = CassandraCluster.create(new CassandraUsersRepositoryModule(), cassandraServer.getHost());
+    }
 
     @Override
     @Before
     public void setUp() throws Exception {
-        cassandra = CassandraCluster.create(new CassandraUsersRepositoryModule(), cassandraServer.getIp(), cassandraServer.getBindingPort());
         super.setUp();
     }
     
@@ -45,11 +51,16 @@ public class CassandraUsersRepositoryTest extends AbstractUsersRepositoryTest {
     @After
     public void tearDown() throws Exception {
         super.tearDown();
-        cassandra.close();
+        cassandra.clearTables();
+    }
+
+    @AfterClass
+    public static void tearDownClass() {
+        cassandra.closeCluster();
     }
 
     @Override
-    protected AbstractUsersRepository getUsersRepository() throws Exception {
+    protected AbstractUsersRepository getUsersRepository() {
         return new CassandraUsersRepository(cassandra.getConf(), CassandraUtils.WITH_DEFAULT_CONFIGURATION);
     }
 }

http://git-wip-us.apache.org/repos/asf/james-project/blob/61b8caa3/server/data/data-jmap-cassandra/src/test/java/org/apache/james/jmap/cassandra/access/CassandraAccessTokenRepositoryTest.java
----------------------------------------------------------------------
diff --git a/server/data/data-jmap-cassandra/src/test/java/org/apache/james/jmap/cassandra/access/CassandraAccessTokenRepositoryTest.java b/server/data/data-jmap-cassandra/src/test/java/org/apache/james/jmap/cassandra/access/CassandraAccessTokenRepositoryTest.java
index 1725390..c0164cb 100644
--- a/server/data/data-jmap-cassandra/src/test/java/org/apache/james/jmap/cassandra/access/CassandraAccessTokenRepositoryTest.java
+++ b/server/data/data-jmap-cassandra/src/test/java/org/apache/james/jmap/cassandra/access/CassandraAccessTokenRepositoryTest.java
@@ -24,26 +24,36 @@ import org.apache.james.backends.cassandra.DockerCassandraRule;
 import org.apache.james.jmap.api.access.AccessTokenRepository;
 import org.apache.james.jmap.api.access.AccessTokenRepositoryTest;
 import org.junit.After;
+import org.junit.AfterClass;
 import org.junit.Before;
+import org.junit.BeforeClass;
 import org.junit.ClassRule;
 
 public class CassandraAccessTokenRepositoryTest extends AccessTokenRepositoryTest {
-    
 
     @ClassRule public static DockerCassandraRule cassandraServer = new DockerCassandraRule();
     
-    private CassandraCluster cassandra;
+    private static CassandraCluster cassandra;
+
+    @BeforeClass
+    public static void setUpClass() {
+        cassandra = CassandraCluster.create(new CassandraAccessModule(), cassandraServer.getHost());
+    }
 
     @Override
     @Before
     public void setUp() throws Exception {
-        cassandra = CassandraCluster.create(new CassandraAccessModule(), cassandraServer.getIp(), cassandraServer.getBindingPort());
         super.setUp();
     }
     
     @After
-    public void tearDown() throws Exception {
-        cassandra.close();
+    public void tearDown() {
+        cassandra.clearTables();
+    }
+
+    @AfterClass
+    public static void tearDownClass() {
+        cassandra.closeCluster();
     }
     
     @Override

http://git-wip-us.apache.org/repos/asf/james-project/blob/61b8caa3/server/data/data-jmap-cassandra/src/test/java/org/apache/james/jmap/cassandra/vacation/CassandraNotificationRegistryTest.java
----------------------------------------------------------------------
diff --git a/server/data/data-jmap-cassandra/src/test/java/org/apache/james/jmap/cassandra/vacation/CassandraNotificationRegistryTest.java b/server/data/data-jmap-cassandra/src/test/java/org/apache/james/jmap/cassandra/vacation/CassandraNotificationRegistryTest.java
index a736d32..b1d8175 100644
--- a/server/data/data-jmap-cassandra/src/test/java/org/apache/james/jmap/cassandra/vacation/CassandraNotificationRegistryTest.java
+++ b/server/data/data-jmap-cassandra/src/test/java/org/apache/james/jmap/cassandra/vacation/CassandraNotificationRegistryTest.java
@@ -25,14 +25,21 @@ import org.apache.james.jmap.api.vacation.AbstractNotificationRegistryTest;
 import org.apache.james.jmap.api.vacation.NotificationRegistry;
 import org.apache.james.util.date.ZonedDateTimeProvider;
 import org.junit.After;
+import org.junit.AfterClass;
 import org.junit.Before;
+import org.junit.BeforeClass;
 import org.junit.ClassRule;
 
 public class CassandraNotificationRegistryTest extends AbstractNotificationRegistryTest {
 
     @ClassRule public static DockerCassandraRule cassandraServer = new DockerCassandraRule();
     
-    private CassandraCluster cassandra;
+    private static CassandraCluster cassandra;
+
+    @BeforeClass
+    public static void setUpClass() {
+        cassandra = CassandraCluster.create(new CassandraNotificationRegistryModule(), cassandraServer.getHost());
+    }
 
     @Override
     @Before
@@ -43,7 +50,12 @@ public class CassandraNotificationRegistryTest extends AbstractNotificationRegis
 
     @After
     public void tearDown() {
-        cassandra.close();
+        cassandra.clearTables();
+    }
+
+    @AfterClass
+    public static void tearDownClass() {
+        cassandra.closeCluster();
     }
     
     @Override

http://git-wip-us.apache.org/repos/asf/james-project/blob/61b8caa3/server/data/data-jmap-cassandra/src/test/java/org/apache/james/jmap/cassandra/vacation/CassandraVacationRepositoryTest.java
----------------------------------------------------------------------
diff --git a/server/data/data-jmap-cassandra/src/test/java/org/apache/james/jmap/cassandra/vacation/CassandraVacationRepositoryTest.java b/server/data/data-jmap-cassandra/src/test/java/org/apache/james/jmap/cassandra/vacation/CassandraVacationRepositoryTest.java
index 0fbe8b8..6c18a27 100644
--- a/server/data/data-jmap-cassandra/src/test/java/org/apache/james/jmap/cassandra/vacation/CassandraVacationRepositoryTest.java
+++ b/server/data/data-jmap-cassandra/src/test/java/org/apache/james/jmap/cassandra/vacation/CassandraVacationRepositoryTest.java
@@ -26,26 +26,37 @@ import org.apache.james.backends.cassandra.init.CassandraZonedDateTimeModule;
 import org.apache.james.jmap.api.vacation.AbstractVacationRepositoryTest;
 import org.apache.james.jmap.api.vacation.VacationRepository;
 import org.junit.After;
+import org.junit.AfterClass;
 import org.junit.Before;
+import org.junit.BeforeClass;
 import org.junit.ClassRule;
 
 public class CassandraVacationRepositoryTest extends AbstractVacationRepositoryTest {
 
     @ClassRule public static DockerCassandraRule cassandraServer = new DockerCassandraRule();
     
-    private CassandraCluster cassandra;
+    private static CassandraCluster cassandra;
+
+    @BeforeClass
+    public static void setUpClass() {
+        CassandraModuleComposite module = new CassandraModuleComposite(new CassandraVacationModule(), new CassandraZonedDateTimeModule());
+        cassandra = CassandraCluster.create(module, cassandraServer.getHost());
+    }
 
     @Override
     @Before
     public void setUp() throws Exception {
-        CassandraModuleComposite module = new CassandraModuleComposite(new CassandraVacationModule(), new CassandraZonedDateTimeModule());
-        cassandra = CassandraCluster.create(module, cassandraServer.getIp(), cassandraServer.getBindingPort());
         super.setUp();
     }
 
     @After
     public void tearDown() {
-        cassandra.close();
+        cassandra.clearTables();
+    }
+
+    @AfterClass
+    public static void tearDownClass() {
+        cassandra.closeCluster();
     }
     
     @Override

http://git-wip-us.apache.org/repos/asf/james-project/blob/61b8caa3/server/mailrepository/mailrepository-cassandra/src/test/java/org/apache/james/mailrepository/cassandra/CassandraMailRepositoryCountDAOTest.java
----------------------------------------------------------------------
diff --git a/server/mailrepository/mailrepository-cassandra/src/test/java/org/apache/james/mailrepository/cassandra/CassandraMailRepositoryCountDAOTest.java b/server/mailrepository/mailrepository-cassandra/src/test/java/org/apache/james/mailrepository/cassandra/CassandraMailRepositoryCountDAOTest.java
index e6ba146..7212899 100644
--- a/server/mailrepository/mailrepository-cassandra/src/test/java/org/apache/james/mailrepository/cassandra/CassandraMailRepositoryCountDAOTest.java
+++ b/server/mailrepository/mailrepository-cassandra/src/test/java/org/apache/james/mailrepository/cassandra/CassandraMailRepositoryCountDAOTest.java
@@ -24,7 +24,9 @@ import static org.assertj.core.api.Assertions.assertThat;
 import org.apache.james.backends.cassandra.CassandraCluster;
 import org.apache.james.backends.cassandra.DockerCassandraExtension;
 import org.apache.james.mailrepository.api.MailRepositoryUrl;
+import org.junit.jupiter.api.AfterAll;
 import org.junit.jupiter.api.AfterEach;
+import org.junit.jupiter.api.BeforeAll;
 import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.Test;
 import org.junit.jupiter.api.extension.ExtendWith;
@@ -34,20 +36,28 @@ public class CassandraMailRepositoryCountDAOTest {
     static final MailRepositoryUrl URL = MailRepositoryUrl.from("proto://url");
     static final MailRepositoryUrl URL2 = MailRepositoryUrl.from("proto://url2");
 
-    CassandraCluster cassandra;
+    static CassandraCluster cassandra;
     CassandraMailRepositoryCountDAO testee;
 
+    @BeforeAll
+    static void setUpClass(DockerCassandraExtension.DockerCassandra dockerCassandra) {
+        cassandra = CassandraCluster.create(new CassandraMailRepositoryModule(), dockerCassandra.getIp(), dockerCassandra.getBindingPort());
+    }
+
     @BeforeEach
-    public void setUp(DockerCassandraExtension.DockerCassandra dockerCassandra) {
-        cassandra = CassandraCluster.create(
-            new CassandraMailRepositoryModule(), dockerCassandra.getIp(), dockerCassandra.getBindingPort());
+    public void setUp() {
 
         testee = new CassandraMailRepositoryCountDAO(cassandra.getConf());
     }
 
     @AfterEach
-    public void tearDown() {
-        cassandra.close();
+    void tearDown() {
+        cassandra.clearTables();
+    }
+
+    @AfterAll
+    static void tearDownClass() {
+        cassandra.closeCluster();
     }
 
     @Test

http://git-wip-us.apache.org/repos/asf/james-project/blob/61b8caa3/server/mailrepository/mailrepository-cassandra/src/test/java/org/apache/james/mailrepository/cassandra/CassandraMailRepositoryKeysDAOTest.java
----------------------------------------------------------------------
diff --git a/server/mailrepository/mailrepository-cassandra/src/test/java/org/apache/james/mailrepository/cassandra/CassandraMailRepositoryKeysDAOTest.java b/server/mailrepository/mailrepository-cassandra/src/test/java/org/apache/james/mailrepository/cassandra/CassandraMailRepositoryKeysDAOTest.java
index e22b234..39aba93 100644
--- a/server/mailrepository/mailrepository-cassandra/src/test/java/org/apache/james/mailrepository/cassandra/CassandraMailRepositoryKeysDAOTest.java
+++ b/server/mailrepository/mailrepository-cassandra/src/test/java/org/apache/james/mailrepository/cassandra/CassandraMailRepositoryKeysDAOTest.java
@@ -26,7 +26,9 @@ import org.apache.james.backends.cassandra.DockerCassandraExtension;
 import org.apache.james.backends.cassandra.utils.CassandraUtils;
 import org.apache.james.mailrepository.api.MailKey;
 import org.apache.james.mailrepository.api.MailRepositoryUrl;
+import org.junit.jupiter.api.AfterAll;
 import org.junit.jupiter.api.AfterEach;
+import org.junit.jupiter.api.BeforeAll;
 import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.Test;
 import org.junit.jupiter.api.extension.ExtendWith;
@@ -40,20 +42,27 @@ public class CassandraMailRepositoryKeysDAOTest {
     static final MailKey KEY_2 = new MailKey("key2");
     static final MailKey KEY_3 = new MailKey("key3");
 
-    CassandraCluster cassandra;
+    static CassandraCluster cassandra;
     CassandraMailRepositoryKeysDAO testee;
 
-    @BeforeEach
-    public void setUp(DockerCassandraExtension.DockerCassandra dockerCassandra) {
-        cassandra = CassandraCluster.create(
-            new CassandraMailRepositoryModule(), dockerCassandra.getIp(), dockerCassandra.getBindingPort());
+    @BeforeAll
+    static void setUpClass(DockerCassandraExtension.DockerCassandra dockerCassandra) {
+        cassandra = CassandraCluster.create(new CassandraMailRepositoryModule(), dockerCassandra.getIp(), dockerCassandra.getBindingPort());
+    }
 
+    @BeforeEach
+    public void setUp() {
         testee = new CassandraMailRepositoryKeysDAO(cassandra.getConf(), CassandraUtils.WITH_DEFAULT_CONFIGURATION);
     }
 
     @AfterEach
-    public void tearDown() {
-        cassandra.close();
+    void tearDown() {
+        cassandra.clearTables();
+    }
+
+    @AfterAll
+    static void tearDownClass() {
+        cassandra.closeCluster();
     }
 
     @Test

http://git-wip-us.apache.org/repos/asf/james-project/blob/61b8caa3/server/mailrepository/mailrepository-cassandra/src/test/java/org/apache/james/mailrepository/cassandra/CassandraMailRepositoryMailDAOTest.java
----------------------------------------------------------------------
diff --git a/server/mailrepository/mailrepository-cassandra/src/test/java/org/apache/james/mailrepository/cassandra/CassandraMailRepositoryMailDAOTest.java b/server/mailrepository/mailrepository-cassandra/src/test/java/org/apache/james/mailrepository/cassandra/CassandraMailRepositoryMailDAOTest.java
index b6f738f..0888706 100644
--- a/server/mailrepository/mailrepository-cassandra/src/test/java/org/apache/james/mailrepository/cassandra/CassandraMailRepositoryMailDAOTest.java
+++ b/server/mailrepository/mailrepository-cassandra/src/test/java/org/apache/james/mailrepository/cassandra/CassandraMailRepositoryMailDAOTest.java
@@ -32,7 +32,9 @@ import org.apache.mailet.Mail;
 import org.apache.mailet.PerRecipientHeaders;
 import org.apache.mailet.base.MailAddressFixture;
 import org.apache.mailet.base.test.FakeMail;
+import org.junit.jupiter.api.AfterAll;
 import org.junit.jupiter.api.AfterEach;
+import org.junit.jupiter.api.BeforeAll;
 import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.Test;
 import org.junit.jupiter.api.extension.ExtendWith;
@@ -45,20 +47,27 @@ public class CassandraMailRepositoryMailDAOTest {
     static final MailKey KEY_1 = new MailKey("key1");
     static final TestBlobId.Factory BLOB_ID_FACTORY = new TestBlobId.Factory();
 
-    CassandraCluster cassandra;
+    static CassandraCluster cassandra;
     CassandraMailRepositoryMailDAO testee;
 
-    @BeforeEach
-    public void setUp(DockerCassandraExtension.DockerCassandra dockerCassandra) {
-        cassandra = CassandraCluster.create(
-            new CassandraMailRepositoryModule(), dockerCassandra.getIp(), dockerCassandra.getBindingPort());
+    @BeforeAll
+    static void setUpClass(DockerCassandraExtension.DockerCassandra dockerCassandra) {
+        cassandra = CassandraCluster.create(new CassandraMailRepositoryModule(), dockerCassandra.getIp(), dockerCassandra.getBindingPort());
+    }
 
+    @BeforeEach
+    public void setUp() {
         testee = new CassandraMailRepositoryMailDAO(cassandra.getConf(), BLOB_ID_FACTORY, cassandra.getTypesProvider());
     }
 
     @AfterEach
-    public void tearDown() {
-        cassandra.close();
+    void tearDown() {
+        cassandra.clearTables();
+    }
+
+    @AfterAll
+    static void tearDownClass() {
+        cassandra.closeCluster();
     }
 
     @Test


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


[15/15] james-project git commit: MAILBOX-342 Create a ManageSieveMPTContract

Posted by bt...@apache.org.
MAILBOX-342 Create a ManageSieveMPTContract

File implementation should also rely on this contract


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

Branch: refs/heads/master
Commit: 0271026d693e7a1218e8f881f466ad8a8c0a4afc
Parents: 2862b0b
Author: benwa <bt...@linagora.com>
Authored: Wed Jul 25 10:19:30 2018 +0700
Committer: benwa <bt...@linagora.com>
Committed: Wed Jul 25 16:56:27 2018 +0700

----------------------------------------------------------------------
 .../cassandra/CassandraManageSieveMPTTest.java  | 21 +-------
 .../james/mpt/ManageSieveMPTContract.java       | 52 ++++++++++++++++++++
 .../managesieve/file/FileAuthenticateTest.java  | 49 ------------------
 .../managesieve/file/FileCapabilityTest.java    | 49 ------------------
 .../managesieve/file/FileCheckScriptTest.java   | 49 ------------------
 .../managesieve/file/FileDeleteScriptTest.java  | 49 ------------------
 .../mpt/managesieve/file/FileGetScriptTest.java | 49 ------------------
 .../mpt/managesieve/file/FileHaveSpaceTest.java | 49 ------------------
 .../managesieve/file/FileListScriptsTest.java   | 49 ------------------
 .../mpt/managesieve/file/FileLogoutTest.java    | 49 ------------------
 .../file/FileManageSieveMPTTest.java            | 46 +++++++++++++++++
 .../mpt/managesieve/file/FileNoopTest.java      | 49 ------------------
 .../mpt/managesieve/file/FilePutScriptTest.java | 49 ------------------
 .../managesieve/file/FileRenameScriptTest.java  | 49 ------------------
 .../mpt/managesieve/file/FileSetActiveTest.java | 49 ------------------
 .../mpt/managesieve/file/FileStartTlsTest.java  | 49 ------------------
 .../file/FileUnauthenticatedTest.java           | 49 ------------------
 17 files changed, 100 insertions(+), 705 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/james-project/blob/0271026d/mpt/impl/managesieve/cassandra/src/test/java/org/apache/james/mpt/managesieve/cassandra/CassandraManageSieveMPTTest.java
----------------------------------------------------------------------
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 110ea85..d31ffcf 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
@@ -20,32 +20,15 @@
 package org.apache.james.mpt.managesieve.cassandra;
 
 import org.apache.james.backends.cassandra.DockerCassandraExtension;
+import org.apache.james.mpt.ManageSieveMPTContract;
 import org.apache.james.mpt.host.ManageSieveHostSystem;
 import org.apache.james.mpt.managesieve.cassandra.host.CassandraHostSystem;
-import org.apache.james.mpt.testsuite.AuthenticateContract;
-import org.apache.james.mpt.testsuite.CapabilityContract;
-import org.apache.james.mpt.testsuite.CheckScriptContract;
-import org.apache.james.mpt.testsuite.DeleteScriptContract;
-import org.apache.james.mpt.testsuite.GetScriptContract;
-import org.apache.james.mpt.testsuite.HaveSpaceContract;
-import org.apache.james.mpt.testsuite.ListScriptsContract;
-import org.apache.james.mpt.testsuite.LogoutContract;
-import org.apache.james.mpt.testsuite.NoopContract;
-import org.apache.james.mpt.testsuite.PutScriptContract;
-import org.apache.james.mpt.testsuite.RenameScriptContract;
-import org.apache.james.mpt.testsuite.SetActiveContract;
-import org.apache.james.mpt.testsuite.StartTlsContract;
-import org.apache.james.mpt.testsuite.UnauthenticatedContract;
 import org.junit.jupiter.api.AfterEach;
 import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.extension.ExtendWith;
 
 @ExtendWith(DockerCassandraExtension.class)
-class CassandraManageSieveMPTTest implements AuthenticateContract, CapabilityContract, CheckScriptContract,
-                                             DeleteScriptContract, GetScriptContract, HaveSpaceContract,
-                                             ListScriptsContract, LogoutContract, NoopContract, PutScriptContract,
-                                             RenameScriptContract, SetActiveContract, StartTlsContract,
-                                             UnauthenticatedContract {
+class CassandraManageSieveMPTTest implements ManageSieveMPTContract {
     private ManageSieveHostSystem system;
 
     @BeforeEach

http://git-wip-us.apache.org/repos/asf/james-project/blob/0271026d/mpt/impl/managesieve/core/src/main/java/org/apache/james/mpt/ManageSieveMPTContract.java
----------------------------------------------------------------------
diff --git a/mpt/impl/managesieve/core/src/main/java/org/apache/james/mpt/ManageSieveMPTContract.java b/mpt/impl/managesieve/core/src/main/java/org/apache/james/mpt/ManageSieveMPTContract.java
new file mode 100644
index 0000000..8da488e
--- /dev/null
+++ b/mpt/impl/managesieve/core/src/main/java/org/apache/james/mpt/ManageSieveMPTContract.java
@@ -0,0 +1,52 @@
+/****************************************************************
+ * 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.mpt;
+
+import org.apache.james.mpt.testsuite.AuthenticateContract;
+import org.apache.james.mpt.testsuite.CapabilityContract;
+import org.apache.james.mpt.testsuite.CheckScriptContract;
+import org.apache.james.mpt.testsuite.DeleteScriptContract;
+import org.apache.james.mpt.testsuite.GetScriptContract;
+import org.apache.james.mpt.testsuite.HaveSpaceContract;
+import org.apache.james.mpt.testsuite.ListScriptsContract;
+import org.apache.james.mpt.testsuite.LogoutContract;
+import org.apache.james.mpt.testsuite.NoopContract;
+import org.apache.james.mpt.testsuite.PutScriptContract;
+import org.apache.james.mpt.testsuite.RenameScriptContract;
+import org.apache.james.mpt.testsuite.SetActiveContract;
+import org.apache.james.mpt.testsuite.StartTlsContract;
+import org.apache.james.mpt.testsuite.UnauthenticatedContract;
+
+public interface ManageSieveMPTContract extends AuthenticateContract,
+    CapabilityContract,
+    CheckScriptContract,
+    DeleteScriptContract,
+    GetScriptContract,
+    HaveSpaceContract,
+    ListScriptsContract,
+    LogoutContract,
+    NoopContract,
+    PutScriptContract,
+    RenameScriptContract,
+    SetActiveContract,
+    StartTlsContract,
+    UnauthenticatedContract {
+
+}

http://git-wip-us.apache.org/repos/asf/james-project/blob/0271026d/mpt/impl/managesieve/file/src/test/java/org/apache/james/mpt/managesieve/file/FileAuthenticateTest.java
----------------------------------------------------------------------
diff --git a/mpt/impl/managesieve/file/src/test/java/org/apache/james/mpt/managesieve/file/FileAuthenticateTest.java b/mpt/impl/managesieve/file/src/test/java/org/apache/james/mpt/managesieve/file/FileAuthenticateTest.java
deleted file mode 100644
index 9b64e48..0000000
--- a/mpt/impl/managesieve/file/src/test/java/org/apache/james/mpt/managesieve/file/FileAuthenticateTest.java
+++ /dev/null
@@ -1,49 +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.mpt.managesieve.file;
-
-import org.apache.james.mpt.host.ManageSieveHostSystem;
-import org.apache.james.mpt.testsuite.AuthenticateContract;
-import org.junit.jupiter.api.AfterEach;
-import org.junit.jupiter.api.BeforeEach;
-
-import com.google.inject.Guice;
-import com.google.inject.Injector;
-
-public class FileAuthenticateTest implements AuthenticateContract {
-    private ManageSieveHostSystem system;
-
-    @BeforeEach
-    void createSystem() throws Exception {
-        Injector injector = Guice.createInjector(new FileModule());
-        system = injector.getInstance(ManageSieveHostSystem.class);
-        system.beforeTest();
-    }
-
-    @Override
-    public ManageSieveHostSystem hostSystem() {
-        return system;
-    }
-
-    @AfterEach
-    void tearDown() throws Exception {
-        hostSystem().afterTest();
-    }
-}

http://git-wip-us.apache.org/repos/asf/james-project/blob/0271026d/mpt/impl/managesieve/file/src/test/java/org/apache/james/mpt/managesieve/file/FileCapabilityTest.java
----------------------------------------------------------------------
diff --git a/mpt/impl/managesieve/file/src/test/java/org/apache/james/mpt/managesieve/file/FileCapabilityTest.java b/mpt/impl/managesieve/file/src/test/java/org/apache/james/mpt/managesieve/file/FileCapabilityTest.java
deleted file mode 100644
index 44d7280..0000000
--- a/mpt/impl/managesieve/file/src/test/java/org/apache/james/mpt/managesieve/file/FileCapabilityTest.java
+++ /dev/null
@@ -1,49 +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.mpt.managesieve.file;
-
-import org.apache.james.mpt.host.ManageSieveHostSystem;
-import org.apache.james.mpt.testsuite.CapabilityContract;
-import org.junit.jupiter.api.AfterEach;
-import org.junit.jupiter.api.BeforeEach;
-
-import com.google.inject.Guice;
-import com.google.inject.Injector;
-
-public class FileCapabilityTest implements CapabilityContract {
-    private ManageSieveHostSystem system;
-
-    @BeforeEach
-    void setUp() throws Exception {
-        Injector injector = Guice.createInjector(new FileModule());
-        system = injector.getInstance(ManageSieveHostSystem.class);
-        system.beforeTest();
-    }
-
-    @Override
-    public ManageSieveHostSystem hostSystem() {
-        return system;
-    }
-
-    @AfterEach
-    void tearDown() throws Exception {
-        hostSystem().afterTest();
-    }
-}

http://git-wip-us.apache.org/repos/asf/james-project/blob/0271026d/mpt/impl/managesieve/file/src/test/java/org/apache/james/mpt/managesieve/file/FileCheckScriptTest.java
----------------------------------------------------------------------
diff --git a/mpt/impl/managesieve/file/src/test/java/org/apache/james/mpt/managesieve/file/FileCheckScriptTest.java b/mpt/impl/managesieve/file/src/test/java/org/apache/james/mpt/managesieve/file/FileCheckScriptTest.java
deleted file mode 100644
index 759f9eb..0000000
--- a/mpt/impl/managesieve/file/src/test/java/org/apache/james/mpt/managesieve/file/FileCheckScriptTest.java
+++ /dev/null
@@ -1,49 +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.mpt.managesieve.file;
-
-import org.apache.james.mpt.host.ManageSieveHostSystem;
-import org.apache.james.mpt.testsuite.CheckScriptContract;
-import org.junit.jupiter.api.AfterEach;
-import org.junit.jupiter.api.BeforeEach;
-
-import com.google.inject.Guice;
-import com.google.inject.Injector;
-
-public class FileCheckScriptTest implements CheckScriptContract {
-    private ManageSieveHostSystem system;
-
-    @BeforeEach
-    void setUp() throws Exception {
-        Injector injector = Guice.createInjector(new FileModule());
-        system = injector.getInstance(ManageSieveHostSystem.class);
-        system.beforeTest();
-    }
-
-    @Override
-    public ManageSieveHostSystem hostSystem() {
-        return system;
-    }
-
-    @AfterEach
-    void tearDown() throws Exception {
-        hostSystem().afterTest();
-    }
-}

http://git-wip-us.apache.org/repos/asf/james-project/blob/0271026d/mpt/impl/managesieve/file/src/test/java/org/apache/james/mpt/managesieve/file/FileDeleteScriptTest.java
----------------------------------------------------------------------
diff --git a/mpt/impl/managesieve/file/src/test/java/org/apache/james/mpt/managesieve/file/FileDeleteScriptTest.java b/mpt/impl/managesieve/file/src/test/java/org/apache/james/mpt/managesieve/file/FileDeleteScriptTest.java
deleted file mode 100644
index eef900d..0000000
--- a/mpt/impl/managesieve/file/src/test/java/org/apache/james/mpt/managesieve/file/FileDeleteScriptTest.java
+++ /dev/null
@@ -1,49 +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.mpt.managesieve.file;
-
-import org.apache.james.mpt.host.ManageSieveHostSystem;
-import org.apache.james.mpt.testsuite.DeleteScriptContract;
-import org.junit.jupiter.api.AfterEach;
-import org.junit.jupiter.api.BeforeEach;
-
-import com.google.inject.Guice;
-import com.google.inject.Injector;
-
-public class FileDeleteScriptTest implements DeleteScriptContract {
-    private ManageSieveHostSystem system;
-
-    @BeforeEach
-    void setUp() throws Exception {
-        Injector injector = Guice.createInjector(new FileModule());
-        system = injector.getInstance(ManageSieveHostSystem.class);
-        system.beforeTest();
-    }
-
-    @Override
-    public ManageSieveHostSystem hostSystem() {
-        return system;
-    }
-
-    @AfterEach
-    void tearDown() throws Exception {
-        hostSystem().afterTest();
-    }
-}

http://git-wip-us.apache.org/repos/asf/james-project/blob/0271026d/mpt/impl/managesieve/file/src/test/java/org/apache/james/mpt/managesieve/file/FileGetScriptTest.java
----------------------------------------------------------------------
diff --git a/mpt/impl/managesieve/file/src/test/java/org/apache/james/mpt/managesieve/file/FileGetScriptTest.java b/mpt/impl/managesieve/file/src/test/java/org/apache/james/mpt/managesieve/file/FileGetScriptTest.java
deleted file mode 100644
index a9c7b02..0000000
--- a/mpt/impl/managesieve/file/src/test/java/org/apache/james/mpt/managesieve/file/FileGetScriptTest.java
+++ /dev/null
@@ -1,49 +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.mpt.managesieve.file;
-
-import org.apache.james.mpt.host.ManageSieveHostSystem;
-import org.apache.james.mpt.testsuite.GetScriptContract;
-import org.junit.jupiter.api.AfterEach;
-import org.junit.jupiter.api.BeforeEach;
-
-import com.google.inject.Guice;
-import com.google.inject.Injector;
-
-public class FileGetScriptTest implements GetScriptContract {
-    private ManageSieveHostSystem system;
-
-    @BeforeEach
-    void setUp() throws Exception {
-        Injector injector = Guice.createInjector(new FileModule());
-        system = injector.getInstance(ManageSieveHostSystem.class);
-        system.beforeTest();
-    }
-
-    @Override
-    public ManageSieveHostSystem hostSystem() {
-        return system;
-    }
-
-    @AfterEach
-    void tearDown() throws Exception {
-        hostSystem().afterTest();
-    }
-}

http://git-wip-us.apache.org/repos/asf/james-project/blob/0271026d/mpt/impl/managesieve/file/src/test/java/org/apache/james/mpt/managesieve/file/FileHaveSpaceTest.java
----------------------------------------------------------------------
diff --git a/mpt/impl/managesieve/file/src/test/java/org/apache/james/mpt/managesieve/file/FileHaveSpaceTest.java b/mpt/impl/managesieve/file/src/test/java/org/apache/james/mpt/managesieve/file/FileHaveSpaceTest.java
deleted file mode 100644
index 2563215..0000000
--- a/mpt/impl/managesieve/file/src/test/java/org/apache/james/mpt/managesieve/file/FileHaveSpaceTest.java
+++ /dev/null
@@ -1,49 +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.mpt.managesieve.file;
-
-import org.apache.james.mpt.host.ManageSieveHostSystem;
-import org.apache.james.mpt.testsuite.HaveSpaceContract;
-import org.junit.jupiter.api.AfterEach;
-import org.junit.jupiter.api.BeforeEach;
-
-import com.google.inject.Guice;
-import com.google.inject.Injector;
-
-public class FileHaveSpaceTest implements HaveSpaceContract {
-    private ManageSieveHostSystem system;
-
-    @BeforeEach
-    void setUp() throws Exception {
-        Injector injector = Guice.createInjector(new FileModule());
-        system = injector.getInstance(ManageSieveHostSystem.class);
-        system.beforeTest();
-    }
-
-    @Override
-    public ManageSieveHostSystem hostSystem() {
-        return system;
-    }
-
-    @AfterEach
-    void tearDown() throws Exception {
-        hostSystem().afterTest();
-    }
-}

http://git-wip-us.apache.org/repos/asf/james-project/blob/0271026d/mpt/impl/managesieve/file/src/test/java/org/apache/james/mpt/managesieve/file/FileListScriptsTest.java
----------------------------------------------------------------------
diff --git a/mpt/impl/managesieve/file/src/test/java/org/apache/james/mpt/managesieve/file/FileListScriptsTest.java b/mpt/impl/managesieve/file/src/test/java/org/apache/james/mpt/managesieve/file/FileListScriptsTest.java
deleted file mode 100644
index ec59d66..0000000
--- a/mpt/impl/managesieve/file/src/test/java/org/apache/james/mpt/managesieve/file/FileListScriptsTest.java
+++ /dev/null
@@ -1,49 +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.mpt.managesieve.file;
-
-import org.apache.james.mpt.host.ManageSieveHostSystem;
-import org.apache.james.mpt.testsuite.ListScriptsContract;
-import org.junit.jupiter.api.AfterEach;
-import org.junit.jupiter.api.BeforeEach;
-
-import com.google.inject.Guice;
-import com.google.inject.Injector;
-
-public class FileListScriptsTest implements ListScriptsContract {
-    private ManageSieveHostSystem system;
-
-    @BeforeEach
-    void setUp() throws Exception {
-        Injector injector = Guice.createInjector(new FileModule());
-        system = injector.getInstance(ManageSieveHostSystem.class);
-        system.beforeTest();
-    }
-
-    @Override
-    public ManageSieveHostSystem hostSystem() {
-        return system;
-    }
-
-    @AfterEach
-    void tearDown() throws Exception {
-        hostSystem().afterTest();
-    }
-}

http://git-wip-us.apache.org/repos/asf/james-project/blob/0271026d/mpt/impl/managesieve/file/src/test/java/org/apache/james/mpt/managesieve/file/FileLogoutTest.java
----------------------------------------------------------------------
diff --git a/mpt/impl/managesieve/file/src/test/java/org/apache/james/mpt/managesieve/file/FileLogoutTest.java b/mpt/impl/managesieve/file/src/test/java/org/apache/james/mpt/managesieve/file/FileLogoutTest.java
deleted file mode 100644
index 15838ea..0000000
--- a/mpt/impl/managesieve/file/src/test/java/org/apache/james/mpt/managesieve/file/FileLogoutTest.java
+++ /dev/null
@@ -1,49 +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.mpt.managesieve.file;
-
-import org.apache.james.mpt.host.ManageSieveHostSystem;
-import org.apache.james.mpt.testsuite.LogoutContract;
-import org.junit.jupiter.api.AfterEach;
-import org.junit.jupiter.api.BeforeEach;
-
-import com.google.inject.Guice;
-import com.google.inject.Injector;
-
-public class FileLogoutTest implements LogoutContract {
-    private ManageSieveHostSystem system;
-
-    @BeforeEach
-    void setUp() throws Exception {
-        Injector injector = Guice.createInjector(new FileModule());
-        system = injector.getInstance(ManageSieveHostSystem.class);
-        system.beforeTest();
-    }
-
-    @Override
-    public ManageSieveHostSystem hostSystem() {
-        return system;
-    }
-
-    @AfterEach
-    void tearDown() throws Exception {
-        hostSystem().afterTest();
-    }
-}

http://git-wip-us.apache.org/repos/asf/james-project/blob/0271026d/mpt/impl/managesieve/file/src/test/java/org/apache/james/mpt/managesieve/file/FileManageSieveMPTTest.java
----------------------------------------------------------------------
diff --git a/mpt/impl/managesieve/file/src/test/java/org/apache/james/mpt/managesieve/file/FileManageSieveMPTTest.java b/mpt/impl/managesieve/file/src/test/java/org/apache/james/mpt/managesieve/file/FileManageSieveMPTTest.java
new file mode 100644
index 0000000..f8d3ebf
--- /dev/null
+++ b/mpt/impl/managesieve/file/src/test/java/org/apache/james/mpt/managesieve/file/FileManageSieveMPTTest.java
@@ -0,0 +1,46 @@
+/****************************************************************
+ * 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.mpt.managesieve.file;
+
+import org.apache.james.mpt.ManageSieveMPTContract;
+import org.apache.james.mpt.host.ManageSieveHostSystem;
+import org.apache.james.mpt.managesieve.file.host.FileHostSystem;
+import org.junit.jupiter.api.AfterEach;
+import org.junit.jupiter.api.BeforeEach;
+
+public class FileManageSieveMPTTest implements ManageSieveMPTContract {
+    private ManageSieveHostSystem system;
+
+    @BeforeEach
+    void createSystem() throws Exception {
+        system = new FileHostSystem();
+        system.beforeTest();
+    }
+
+    @Override
+    public ManageSieveHostSystem hostSystem() {
+        return system;
+    }
+
+    @AfterEach
+    void tearDown() throws Exception {
+        hostSystem().afterTest();
+    }
+}

http://git-wip-us.apache.org/repos/asf/james-project/blob/0271026d/mpt/impl/managesieve/file/src/test/java/org/apache/james/mpt/managesieve/file/FileNoopTest.java
----------------------------------------------------------------------
diff --git a/mpt/impl/managesieve/file/src/test/java/org/apache/james/mpt/managesieve/file/FileNoopTest.java b/mpt/impl/managesieve/file/src/test/java/org/apache/james/mpt/managesieve/file/FileNoopTest.java
deleted file mode 100644
index 95e3269..0000000
--- a/mpt/impl/managesieve/file/src/test/java/org/apache/james/mpt/managesieve/file/FileNoopTest.java
+++ /dev/null
@@ -1,49 +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.mpt.managesieve.file;
-
-import org.apache.james.mpt.host.ManageSieveHostSystem;
-import org.apache.james.mpt.testsuite.NoopContract;
-import org.junit.jupiter.api.AfterEach;
-import org.junit.jupiter.api.BeforeEach;
-
-import com.google.inject.Guice;
-import com.google.inject.Injector;
-
-public class FileNoopTest implements NoopContract {
-    private ManageSieveHostSystem system;
-
-    @BeforeEach
-    void setUp() throws Exception {
-        Injector injector = Guice.createInjector(new FileModule());
-        system = injector.getInstance(ManageSieveHostSystem.class);
-        system.beforeTest();
-    }
-
-    @Override
-    public ManageSieveHostSystem hostSystem() {
-        return system;
-    }
-
-    @AfterEach
-    void tearDown() throws Exception {
-        hostSystem().afterTest();
-    }
-}

http://git-wip-us.apache.org/repos/asf/james-project/blob/0271026d/mpt/impl/managesieve/file/src/test/java/org/apache/james/mpt/managesieve/file/FilePutScriptTest.java
----------------------------------------------------------------------
diff --git a/mpt/impl/managesieve/file/src/test/java/org/apache/james/mpt/managesieve/file/FilePutScriptTest.java b/mpt/impl/managesieve/file/src/test/java/org/apache/james/mpt/managesieve/file/FilePutScriptTest.java
deleted file mode 100644
index 11fd414..0000000
--- a/mpt/impl/managesieve/file/src/test/java/org/apache/james/mpt/managesieve/file/FilePutScriptTest.java
+++ /dev/null
@@ -1,49 +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.mpt.managesieve.file;
-
-import org.apache.james.mpt.host.ManageSieveHostSystem;
-import org.apache.james.mpt.testsuite.PutScriptContract;
-import org.junit.jupiter.api.AfterEach;
-import org.junit.jupiter.api.BeforeEach;
-
-import com.google.inject.Guice;
-import com.google.inject.Injector;
-
-public class FilePutScriptTest implements PutScriptContract {
-    private ManageSieveHostSystem system;
-
-    @BeforeEach
-    void setUp() throws Exception {
-        Injector injector = Guice.createInjector(new FileModule());
-        system = injector.getInstance(ManageSieveHostSystem.class);
-        system.beforeTest();
-    }
-
-    @Override
-    public ManageSieveHostSystem hostSystem() {
-        return system;
-    }
-
-    @AfterEach
-    void tearDown() throws Exception {
-        hostSystem().afterTest();
-    }
-}

http://git-wip-us.apache.org/repos/asf/james-project/blob/0271026d/mpt/impl/managesieve/file/src/test/java/org/apache/james/mpt/managesieve/file/FileRenameScriptTest.java
----------------------------------------------------------------------
diff --git a/mpt/impl/managesieve/file/src/test/java/org/apache/james/mpt/managesieve/file/FileRenameScriptTest.java b/mpt/impl/managesieve/file/src/test/java/org/apache/james/mpt/managesieve/file/FileRenameScriptTest.java
deleted file mode 100644
index f6ffbf4..0000000
--- a/mpt/impl/managesieve/file/src/test/java/org/apache/james/mpt/managesieve/file/FileRenameScriptTest.java
+++ /dev/null
@@ -1,49 +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.mpt.managesieve.file;
-
-import org.apache.james.mpt.host.ManageSieveHostSystem;
-import org.apache.james.mpt.testsuite.RenameScriptContract;
-import org.junit.jupiter.api.AfterEach;
-import org.junit.jupiter.api.BeforeEach;
-
-import com.google.inject.Guice;
-import com.google.inject.Injector;
-
-public class FileRenameScriptTest implements RenameScriptContract {
-    private ManageSieveHostSystem system;
-
-    @BeforeEach
-    void setUp() throws Exception {
-        Injector injector = Guice.createInjector(new FileModule());
-        system = injector.getInstance(ManageSieveHostSystem.class);
-        system.beforeTest();
-    }
-
-    @Override
-    public ManageSieveHostSystem hostSystem() {
-        return system;
-    }
-
-    @AfterEach
-    void tearDown() throws Exception {
-        hostSystem().afterTest();
-    }
-}

http://git-wip-us.apache.org/repos/asf/james-project/blob/0271026d/mpt/impl/managesieve/file/src/test/java/org/apache/james/mpt/managesieve/file/FileSetActiveTest.java
----------------------------------------------------------------------
diff --git a/mpt/impl/managesieve/file/src/test/java/org/apache/james/mpt/managesieve/file/FileSetActiveTest.java b/mpt/impl/managesieve/file/src/test/java/org/apache/james/mpt/managesieve/file/FileSetActiveTest.java
deleted file mode 100644
index 36ae166..0000000
--- a/mpt/impl/managesieve/file/src/test/java/org/apache/james/mpt/managesieve/file/FileSetActiveTest.java
+++ /dev/null
@@ -1,49 +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.mpt.managesieve.file;
-
-import org.apache.james.mpt.host.ManageSieveHostSystem;
-import org.apache.james.mpt.testsuite.SetActiveContract;
-import org.junit.jupiter.api.AfterEach;
-import org.junit.jupiter.api.BeforeEach;
-
-import com.google.inject.Guice;
-import com.google.inject.Injector;
-
-public class FileSetActiveTest implements SetActiveContract {
-    private ManageSieveHostSystem system;
-
-    @BeforeEach
-    void setUp() throws Exception {
-        Injector injector = Guice.createInjector(new FileModule());
-        system = injector.getInstance(ManageSieveHostSystem.class);
-        system.beforeTest();
-    }
-
-    @Override
-    public ManageSieveHostSystem hostSystem() {
-        return system;
-    }
-
-    @AfterEach
-    void tearDown() throws Exception {
-        hostSystem().afterTest();
-    }
-}

http://git-wip-us.apache.org/repos/asf/james-project/blob/0271026d/mpt/impl/managesieve/file/src/test/java/org/apache/james/mpt/managesieve/file/FileStartTlsTest.java
----------------------------------------------------------------------
diff --git a/mpt/impl/managesieve/file/src/test/java/org/apache/james/mpt/managesieve/file/FileStartTlsTest.java b/mpt/impl/managesieve/file/src/test/java/org/apache/james/mpt/managesieve/file/FileStartTlsTest.java
deleted file mode 100644
index f596b42..0000000
--- a/mpt/impl/managesieve/file/src/test/java/org/apache/james/mpt/managesieve/file/FileStartTlsTest.java
+++ /dev/null
@@ -1,49 +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.mpt.managesieve.file;
-
-import org.apache.james.mpt.host.ManageSieveHostSystem;
-import org.apache.james.mpt.testsuite.StartTlsContract;
-import org.junit.jupiter.api.AfterEach;
-import org.junit.jupiter.api.BeforeEach;
-
-import com.google.inject.Guice;
-import com.google.inject.Injector;
-
-public class FileStartTlsTest implements StartTlsContract {
-    private ManageSieveHostSystem system;
-
-    @BeforeEach
-    void setUp() throws Exception {
-        Injector injector = Guice.createInjector(new FileModule());
-        system = injector.getInstance(ManageSieveHostSystem.class);
-        system.beforeTest();
-    }
-
-    @Override
-    public ManageSieveHostSystem hostSystem() {
-        return system;
-    }
-
-    @AfterEach
-    void tearDown() throws Exception {
-        hostSystem().afterTest();
-    }
-}

http://git-wip-us.apache.org/repos/asf/james-project/blob/0271026d/mpt/impl/managesieve/file/src/test/java/org/apache/james/mpt/managesieve/file/FileUnauthenticatedTest.java
----------------------------------------------------------------------
diff --git a/mpt/impl/managesieve/file/src/test/java/org/apache/james/mpt/managesieve/file/FileUnauthenticatedTest.java b/mpt/impl/managesieve/file/src/test/java/org/apache/james/mpt/managesieve/file/FileUnauthenticatedTest.java
deleted file mode 100644
index cc5d22f..0000000
--- a/mpt/impl/managesieve/file/src/test/java/org/apache/james/mpt/managesieve/file/FileUnauthenticatedTest.java
+++ /dev/null
@@ -1,49 +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.mpt.managesieve.file;
-
-import org.apache.james.mpt.host.ManageSieveHostSystem;
-import org.apache.james.mpt.testsuite.UnauthenticatedContract;
-import org.junit.jupiter.api.AfterEach;
-import org.junit.jupiter.api.BeforeEach;
-
-import com.google.inject.Guice;
-import com.google.inject.Injector;
-
-public class FileUnauthenticatedTest implements UnauthenticatedContract {
-    private ManageSieveHostSystem system;
-
-    @BeforeEach
-    void setUp() throws Exception {
-        Injector injector = Guice.createInjector(new FileModule());
-        system = injector.getInstance(ManageSieveHostSystem.class);
-        system.beforeTest();
-    }
-
-    @Override
-    public ManageSieveHostSystem hostSystem() {
-        return system;
-    }
-
-    @AfterEach
-    void tearDown() throws Exception {
-        hostSystem().afterTest();
-    }
-}


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


[07/15] james-project git commit: JAMES-2470 Use a single Cassandra Cluster for a full test class

Posted by bt...@apache.org.
JAMES-2470 Use a single Cassandra Cluster for a full test class

Avoid establishing a new connection bases and leads to significant improvments


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

Branch: refs/heads/master
Commit: 61b8caa33d3d4d215148fdb9b4c6f36c08384687
Parents: 13d7655
Author: benwa <bt...@linagora.com>
Authored: Fri Jul 20 15:35:03 2018 +0700
Committer: benwa <bt...@linagora.com>
Committed: Wed Jul 25 16:44:13 2018 +0700

----------------------------------------------------------------------
 .../backends/cassandra/CassandraCluster.java    | 10 +++-
 .../backends/cassandra/utils/PaggingTest.java   | 22 ++++++--
 .../versions/CassandraSchemaVersionDAOTest.java | 18 +++++--
 .../CassandraGenericEventStoreExtension.java    |  8 +--
 .../CassandraCombinationManagerTest.java        | 51 +++++++++++-------
 .../CassandraMailboxManagerStressTest.java      | 54 ++++++++++++--------
 .../cassandra/CassandraMailboxManagerTest.java  | 52 +++++++++++--------
 .../CassandraMessageIdManagerQuotaTest.java     | 51 +++++++++++-------
 ...CassandraMessageIdManagerSideEffectTest.java | 45 ++++++++++------
 .../CassandraMessageIdManagerStorageTest.java   | 45 ++++++++++------
 .../CassandraSubscriptionManagerTest.java       | 21 ++++++--
 ...istributedMailboxDelegatingListenerTest.java | 17 +++++-
 ...CassandraMailboxPathRegistrerMapperTest.java | 17 +++++-
 .../cassandra/mail/CassandraACLMapperTest.java  | 20 ++++++--
 .../mail/CassandraAnnotationMapperTest.java     | 18 +++++--
 .../mail/CassandraApplicableFlagDAOTest.java    | 19 +++++--
 .../mail/CassandraAttachmentDAOTest.java        | 20 ++++++--
 .../mail/CassandraAttachmentDAOV2Test.java      | 23 ++++++---
 .../mail/CassandraAttachmentFallbackTest.java   | 28 ++++++----
 .../mail/CassandraAttachmentMapperTest.java     | 23 ++++++---
 .../mail/CassandraAttachmentOwnerDAOTest.java   | 18 +++++--
 .../mail/CassandraDeletedMessageDAOTest.java    | 20 ++++++--
 .../mail/CassandraFirstUnseenDAOTest.java       | 20 ++++++--
 .../mail/CassandraGenericMailboxMapperTest.java | 27 +++++++---
 .../mail/CassandraIndexTableHandlerTest.java    | 27 +++++++---
 .../mail/CassandraMailboxCounterDAOTest.java    | 18 +++++--
 .../cassandra/mail/CassandraMailboxDAOTest.java | 22 +++++---
 .../CassandraMailboxManagerAttachmentTest.java  | 47 ++++++++++-------
 .../mail/CassandraMailboxMapperAclTest.java     | 29 +++++++----
 .../CassandraMailboxMapperConcurrencyTest.java  | 21 ++++++--
 .../mail/CassandraMailboxMapperTest.java        | 20 ++++++--
 .../mail/CassandraMailboxPathDAOTest.java       | 18 +++++--
 .../mail/CassandraMailboxRecentDAOTest.java     | 20 ++++++--
 .../cassandra/mail/CassandraMapperProvider.java |  5 --
 .../cassandra/mail/CassandraMessageDAOTest.java | 19 +++++--
 .../mail/CassandraMessageIdDAOTest.java         | 18 +++++--
 .../mail/CassandraMessageIdMapperTest.java      | 47 ++++++++++-------
 .../CassandraMessageIdToImapUidDAOTest.java     | 20 ++++++--
 .../mail/CassandraMessageMapperTest.java        | 45 ++++++++++------
 .../mail/CassandraMessageMoveTest.java          | 47 ++++++++++-------
 ...assandraMessageWithAttachmentMapperTest.java | 45 ++++++++++------
 .../mail/CassandraModSeqProviderTest.java       | 20 +++++---
 .../mail/CassandraUidProviderTest.java          | 22 ++++++--
 .../mail/CassandraUserMailboxRightsDAOTest.java | 19 +++++--
 .../AttachmentMessageIdCreationTest.java        | 30 ++++++++---
 .../migration/AttachmentV2MigrationTest.java    | 29 ++++++++---
 .../migration/MailboxPathV2MigrationTest.java   | 24 +++++----
 .../quota/CassandraCurrentQuotaManagerTest.java | 18 +++++--
 .../CassandraPerUserMaxQuotaManagerTest.java    | 19 +++++--
 .../user/CassandraSubscriptionMapperTest.java   | 17 ++++--
 .../mailbox/jpa/mail/JPAMapperProvider.java     |  5 --
 .../inmemory/mail/InMemoryMapperProvider.java   |  5 --
 .../store/mail/model/MapperProvider.java        |  2 -
 .../blob/cassandra/CassandraBlobsDAOTest.java   | 23 ++++++---
 ...tSourcingDLPConfigurationStoreExtension.java | 20 +++-----
 .../cassandra/CassandraDomainListTest.java      | 17 ++++--
 ...assandraMailRepositoryUrlStoreExtension.java | 10 ++--
 .../CassandraRecipientRewriteTableTest.java     | 16 ++++--
 .../james/rrt/cassandra/CassandraStepdefs.java  |  2 +-
 .../cassandra/CassandraActiveScriptDAOTest.java | 19 +++++--
 .../sieve/cassandra/CassandraSieveDAOTest.java  | 19 +++++--
 .../cassandra/CassandraSieveQuotaDAOTest.java   | 19 +++++--
 .../cassandra/CassandraSieveRepositoryTest.java | 22 +++++---
 .../cassandra/CassandraUsersRepositoryTest.java | 19 +++++--
 .../CassandraAccessTokenRepositoryTest.java     | 20 ++++++--
 .../CassandraNotificationRegistryTest.java      | 16 +++++-
 .../CassandraVacationRepositoryTest.java        | 19 +++++--
 .../CassandraMailRepositoryCountDAOTest.java    | 22 +++++---
 .../CassandraMailRepositoryKeysDAOTest.java     | 23 ++++++---
 .../CassandraMailRepositoryMailDAOTest.java     | 23 ++++++---
 .../cassandra/CassandraMailRepositoryTest.java  | 29 +++++++----
 71 files changed, 1154 insertions(+), 509 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/james-project/blob/61b8caa3/backends-common/cassandra/src/test/java/org/apache/james/backends/cassandra/CassandraCluster.java
----------------------------------------------------------------------
diff --git a/backends-common/cassandra/src/test/java/org/apache/james/backends/cassandra/CassandraCluster.java b/backends-common/cassandra/src/test/java/org/apache/james/backends/cassandra/CassandraCluster.java
index 03490c9..3d0304b 100644
--- a/backends-common/cassandra/src/test/java/org/apache/james/backends/cassandra/CassandraCluster.java
+++ b/backends-common/cassandra/src/test/java/org/apache/james/backends/cassandra/CassandraCluster.java
@@ -86,7 +86,15 @@ public final class CassandraCluster implements AutoCloseable {
 
     @Override
     public void close() {
-        new CassandraTableManager(module, session).clearAllTables();
+        clearTables();
+        closeCluster();
+    }
+
+    public void closeCluster() {
         cluster.closeAsync();
     }
+
+    public void clearTables() {
+        new CassandraTableManager(module, session).clearAllTables();
+    }
 }

http://git-wip-us.apache.org/repos/asf/james-project/blob/61b8caa3/backends-common/cassandra/src/test/java/org/apache/james/backends/cassandra/utils/PaggingTest.java
----------------------------------------------------------------------
diff --git a/backends-common/cassandra/src/test/java/org/apache/james/backends/cassandra/utils/PaggingTest.java b/backends-common/cassandra/src/test/java/org/apache/james/backends/cassandra/utils/PaggingTest.java
index bc0f678..9fde48f 100644
--- a/backends-common/cassandra/src/test/java/org/apache/james/backends/cassandra/utils/PaggingTest.java
+++ b/backends-common/cassandra/src/test/java/org/apache/james/backends/cassandra/utils/PaggingTest.java
@@ -35,7 +35,9 @@ import org.apache.james.backends.cassandra.components.CassandraTable;
 import org.apache.james.backends.cassandra.components.CassandraType;
 import org.apache.james.util.CompletableFutureUtil;
 import org.junit.After;
+import org.junit.AfterClass;
 import org.junit.Before;
+import org.junit.BeforeClass;
 import org.junit.ClassRule;
 import org.junit.Test;
 
@@ -53,11 +55,12 @@ public class PaggingTest {
 
     @ClassRule public static DockerCassandraRule cassandraServer = new DockerCassandraRule();
     
-    private CassandraCluster cassandra;
+    private static CassandraCluster cassandra;
     private CassandraAsyncExecutor executor;
 
-    @Before
-    public void setUp() {
+
+    @BeforeClass
+    public static void setUpClass() {
         CassandraModule modules = new CassandraModule() {
             @Override
             public List<CassandraTable> moduleTables() {
@@ -73,13 +76,22 @@ public class PaggingTest {
                 return ImmutableList.of();
             }
         };
-        cassandra = CassandraCluster.create(modules, cassandraServer.getIp(), cassandraServer.getBindingPort());
+        cassandra = CassandraCluster.create(modules, cassandraServer.getHost());
+    }
+
+    @Before
+    public void setUp() {
         executor = new CassandraAsyncExecutor(cassandra.getConf());
     }
 
     @After
     public void tearDown() {
-        cassandra.close();
+        cassandra.clearTables();
+    }
+
+    @AfterClass
+    public static void tearDownClass() {
+        cassandra.closeCluster();
     }
 
     @Test

http://git-wip-us.apache.org/repos/asf/james-project/blob/61b8caa3/backends-common/cassandra/src/test/java/org/apache/james/backends/cassandra/versions/CassandraSchemaVersionDAOTest.java
----------------------------------------------------------------------
diff --git a/backends-common/cassandra/src/test/java/org/apache/james/backends/cassandra/versions/CassandraSchemaVersionDAOTest.java b/backends-common/cassandra/src/test/java/org/apache/james/backends/cassandra/versions/CassandraSchemaVersionDAOTest.java
index 5bd83b5..463fb63 100644
--- a/backends-common/cassandra/src/test/java/org/apache/james/backends/cassandra/versions/CassandraSchemaVersionDAOTest.java
+++ b/backends-common/cassandra/src/test/java/org/apache/james/backends/cassandra/versions/CassandraSchemaVersionDAOTest.java
@@ -27,7 +27,9 @@ import org.apache.james.backends.cassandra.CassandraCluster;
 import org.apache.james.backends.cassandra.DockerCassandraRule;
 import org.apache.james.backends.cassandra.utils.CassandraUtils;
 import org.junit.After;
+import org.junit.AfterClass;
 import org.junit.Before;
+import org.junit.BeforeClass;
 import org.junit.ClassRule;
 import org.junit.Test;
 
@@ -35,20 +37,28 @@ public class CassandraSchemaVersionDAOTest {
 
     @ClassRule public static DockerCassandraRule cassandraServer = new DockerCassandraRule();
 
-    private CassandraCluster cassandra;
+    private static CassandraCluster cassandra;
 
     private CassandraSchemaVersionDAO testee;
 
+    @BeforeClass
+    public static void setUpClass() {
+        cassandra = CassandraCluster.create(new CassandraSchemaVersionModule(), cassandraServer.getHost());
+    }
+
     @Before
     public void setUp() {
-        cassandra = CassandraCluster.create(new CassandraSchemaVersionModule(), cassandraServer.getIp(), cassandraServer.getBindingPort());
-
         testee = new CassandraSchemaVersionDAO(cassandra.getConf(), CassandraUtils.WITH_DEFAULT_CONFIGURATION);
     }
 
     @After
     public void tearDown() {
-        cassandra.close();
+        cassandra.clearTables();
+    }
+
+    @AfterClass
+    public static void tearDownClass() {
+        cassandra.closeCluster();
     }
 
     @Test

http://git-wip-us.apache.org/repos/asf/james-project/blob/61b8caa3/event-sourcing/event-store-cassandra/src/test/java/org/apache/james/eventsourcing/eventstore/cassandra/CassandraGenericEventStoreExtension.java
----------------------------------------------------------------------
diff --git a/event-sourcing/event-store-cassandra/src/test/java/org/apache/james/eventsourcing/eventstore/cassandra/CassandraGenericEventStoreExtension.java b/event-sourcing/event-store-cassandra/src/test/java/org/apache/james/eventsourcing/eventstore/cassandra/CassandraGenericEventStoreExtension.java
index 699153d..59d0248 100644
--- a/event-sourcing/event-store-cassandra/src/test/java/org/apache/james/eventsourcing/eventstore/cassandra/CassandraGenericEventStoreExtension.java
+++ b/event-sourcing/event-store-cassandra/src/test/java/org/apache/james/eventsourcing/eventstore/cassandra/CassandraGenericEventStoreExtension.java
@@ -52,18 +52,18 @@ public class CassandraGenericEventStoreExtension implements BeforeAllCallback, A
     public void beforeAll(ExtensionContext context) throws Exception {
         dockerCassandraExtension.beforeAll(context);
         dockerCassandra = dockerCassandraExtension.getDockerCassandra();
+        cassandra = CassandraCluster.create(
+            new CassandraEventStoreModule(), dockerCassandra.getIp(), dockerCassandra.getBindingPort());
     }
 
     @Override
     public void afterAll(ExtensionContext context) throws Exception {
+        cassandra.closeCluster();
         dockerCassandraExtension.afterAll(context);
     }
 
     @Override
     public void beforeEach(ExtensionContext context) {
-        cassandra = CassandraCluster.create(
-                new CassandraEventStoreModule(), dockerCassandra.getIp(), dockerCassandra.getBindingPort());
-
         JsonEventSerializer jsonEventSerializer = new JsonEventSerializer(modules);
 
         eventStoreDao = new EventStoreDao(cassandra.getConf(), CassandraUtils.WITH_DEFAULT_CONFIGURATION,
@@ -72,7 +72,7 @@ public class CassandraGenericEventStoreExtension implements BeforeAllCallback, A
 
     @Override
     public void afterEach(ExtensionContext context) {
-        cassandra.close();
+        cassandra.clearTables();
     }
 
     @Override

http://git-wip-us.apache.org/repos/asf/james-project/blob/61b8caa3/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/CassandraCombinationManagerTest.java
----------------------------------------------------------------------
diff --git a/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/CassandraCombinationManagerTest.java b/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/CassandraCombinationManagerTest.java
index ad412d5..2ad6deb 100644
--- a/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/CassandraCombinationManagerTest.java
+++ b/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/CassandraCombinationManagerTest.java
@@ -37,45 +37,58 @@ import org.apache.james.mailbox.cassandra.modules.CassandraMailboxModule;
 import org.apache.james.mailbox.cassandra.modules.CassandraMailboxRecentsModule;
 import org.apache.james.mailbox.cassandra.modules.CassandraMessageModule;
 import org.apache.james.mailbox.cassandra.modules.CassandraModSeqModule;
+import org.apache.james.mailbox.cassandra.modules.CassandraSubscriptionModule;
 import org.apache.james.mailbox.cassandra.modules.CassandraUidModule;
 import org.apache.james.mailbox.store.AbstractCombinationManagerTest;
 import org.apache.james.mailbox.store.CombinationManagerTestSystem;
 import org.apache.james.mailbox.store.event.MailboxEventDispatcher;
 import org.apache.james.mailbox.store.quota.NoQuotaManager;
 import org.junit.After;
+import org.junit.AfterClass;
 import org.junit.Before;
+import org.junit.BeforeClass;
 import org.junit.ClassRule;
 
 public class CassandraCombinationManagerTest extends AbstractCombinationManagerTest {
 
     @ClassRule public static DockerCassandraRule cassandraServer = new DockerCassandraRule();
-    
-    private CassandraCluster cassandra;
+
+    private static CassandraCluster cassandra;
+
+    @BeforeClass
+    public static void setUpClass() {
+        CassandraModuleComposite modules = new CassandraModuleComposite(
+            new CassandraAclModule(),
+            new CassandraMailboxModule(),
+            new CassandraMessageModule(),
+            new CassandraBlobModule(),
+            new CassandraMailboxCounterModule(),
+            new CassandraMailboxRecentsModule(),
+            new CassandraFirstUnseenModule(),
+            new CassandraUidModule(),
+            new CassandraModSeqModule(),
+            new CassandraSubscriptionModule(),
+            new CassandraAttachmentModule(),
+            new CassandraDeletedMessageModule(),
+            new CassandraAnnotationModule(),
+            new CassandraApplicableFlagsModule());
+        cassandra = CassandraCluster.create(modules, cassandraServer.getHost());
+    }
 
     @Override
     @Before
     public void setUp() throws Exception {
-        CassandraModuleComposite modules = new CassandraModuleComposite(
-                new CassandraAclModule(),
-                new CassandraMailboxModule(),
-                new CassandraMessageModule(),
-                new CassandraMailboxCounterModule(),
-                new CassandraMailboxRecentsModule(),
-                new CassandraFirstUnseenModule(),
-                new CassandraDeletedMessageModule(),
-                new CassandraUidModule(),
-                new CassandraModSeqModule(),
-                new CassandraAttachmentModule(),
-                new CassandraAnnotationModule(),
-                new CassandraApplicableFlagsModule(),
-                new CassandraBlobModule());
-        cassandra = CassandraCluster.create(modules, cassandraServer.getIp(), cassandraServer.getBindingPort());
         super.setUp();
     }
-    
+
     @After
     public void tearDown() {
-        cassandra.close();
+        cassandra.clearTables();
+    }
+
+    @AfterClass
+    public static void tearDownClass() {
+        cassandra.closeCluster();
     }
     
     @Override

http://git-wip-us.apache.org/repos/asf/james-project/blob/61b8caa3/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/CassandraMailboxManagerStressTest.java
----------------------------------------------------------------------
diff --git a/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/CassandraMailboxManagerStressTest.java b/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/CassandraMailboxManagerStressTest.java
index f511f06..f84be5a 100644
--- a/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/CassandraMailboxManagerStressTest.java
+++ b/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/CassandraMailboxManagerStressTest.java
@@ -40,34 +40,40 @@ import org.apache.james.mailbox.cassandra.modules.CassandraQuotaModule;
 import org.apache.james.mailbox.cassandra.modules.CassandraSubscriptionModule;
 import org.apache.james.mailbox.cassandra.modules.CassandraUidModule;
 import org.junit.After;
+import org.junit.AfterClass;
 import org.junit.Before;
+import org.junit.BeforeClass;
 import org.junit.ClassRule;
 
 public class CassandraMailboxManagerStressTest extends MailboxManagerStressTest {
     
     @ClassRule public static DockerCassandraRule cassandraServer = new DockerCassandraRule();
-    
-    private CassandraCluster cassandra;
+
+    private static CassandraCluster cassandra;
+
+    @BeforeClass
+    public static void setUpClass() {
+        CassandraModuleComposite modules = new CassandraModuleComposite(
+            new CassandraAclModule(),
+            new CassandraMailboxModule(),
+            new CassandraMessageModule(),
+            new CassandraBlobModule(),
+            new CassandraMailboxCounterModule(),
+            new CassandraMailboxRecentsModule(),
+            new CassandraFirstUnseenModule(),
+            new CassandraUidModule(),
+            new CassandraModSeqModule(),
+            new CassandraSubscriptionModule(),
+            new CassandraAttachmentModule(),
+            new CassandraDeletedMessageModule(),
+            new CassandraAnnotationModule(),
+            new CassandraApplicableFlagsModule(),
+            new CassandraQuotaModule());
+        cassandra = CassandraCluster.create(modules, cassandraServer.getIp(), cassandraServer.getBindingPort());
+    }
     
     @Before
     public void setup() throws Exception {
-        CassandraModuleComposite modules = new CassandraModuleComposite(
-                new CassandraAclModule(),
-                new CassandraMailboxModule(),
-                new CassandraMessageModule(),
-                new CassandraBlobModule(),
-                new CassandraMailboxCounterModule(),
-                new CassandraMailboxRecentsModule(),
-                new CassandraFirstUnseenModule(),
-                new CassandraUidModule(),
-                new CassandraModSeqModule(),
-                new CassandraSubscriptionModule(),
-                new CassandraAttachmentModule(),
-                new CassandraDeletedMessageModule(),
-                new CassandraAnnotationModule(),
-                new CassandraApplicableFlagsModule(),
-                new CassandraQuotaModule());
-        cassandra = CassandraCluster.create(modules, cassandraServer.getIp(), cassandraServer.getBindingPort());
         super.setUp();
     }
     
@@ -76,8 +82,14 @@ public class CassandraMailboxManagerStressTest extends MailboxManagerStressTest
         return CassandraMailboxManagerProvider.provideMailboxManager(cassandra.getConf(), cassandra.getTypesProvider());
     }
 
+
     @After
-    public void tearDown() {
-        cassandra.close();
+    public void tearDown() throws Exception {
+        cassandra.clearTables();
+    }
+
+    @AfterClass
+    public static void tearDownClass() {
+        cassandra.closeCluster();
     }
 }

http://git-wip-us.apache.org/repos/asf/james-project/blob/61b8caa3/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/CassandraMailboxManagerTest.java
----------------------------------------------------------------------
diff --git a/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/CassandraMailboxManagerTest.java b/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/CassandraMailboxManagerTest.java
index 4594300..0995257 100644
--- a/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/CassandraMailboxManagerTest.java
+++ b/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/CassandraMailboxManagerTest.java
@@ -39,37 +39,42 @@ import org.apache.james.mailbox.cassandra.modules.CassandraQuotaModule;
 import org.apache.james.mailbox.cassandra.modules.CassandraSubscriptionModule;
 import org.apache.james.mailbox.cassandra.modules.CassandraUidModule;
 import org.junit.After;
+import org.junit.AfterClass;
 import org.junit.Before;
+import org.junit.BeforeClass;
 import org.junit.ClassRule;
 
 public class CassandraMailboxManagerTest extends MailboxManagerTest {
 
     @ClassRule public static DockerCassandraRule cassandraServer = new DockerCassandraRule();
     
-    private CassandraCluster cassandra;
-    
-    @Before
-    public void setup() throws Exception {
+    private static CassandraCluster cassandra;
+
+    @BeforeClass
+    public static void setUpClass() {
         CassandraModuleComposite modules = new CassandraModuleComposite(
-                new CassandraAclModule(),
-                new CassandraMailboxModule(),
-                new CassandraMessageModule(),
-                new CassandraBlobModule(),
-                new CassandraMailboxCounterModule(),
-                new CassandraMailboxRecentsModule(),
-                new CassandraFirstUnseenModule(),
-                new CassandraUidModule(),
-                new CassandraModSeqModule(),
-                new CassandraSubscriptionModule(),
-                new CassandraAttachmentModule(),
-                new CassandraDeletedMessageModule(),
-                new CassandraAnnotationModule(),
-                new CassandraApplicableFlagsModule(),
-                new CassandraQuotaModule());
+            new CassandraAclModule(),
+            new CassandraMailboxModule(),
+            new CassandraMessageModule(),
+            new CassandraBlobModule(),
+            new CassandraMailboxCounterModule(),
+            new CassandraMailboxRecentsModule(),
+            new CassandraFirstUnseenModule(),
+            new CassandraUidModule(),
+            new CassandraModSeqModule(),
+            new CassandraSubscriptionModule(),
+            new CassandraAttachmentModule(),
+            new CassandraDeletedMessageModule(),
+            new CassandraAnnotationModule(),
+            new CassandraApplicableFlagsModule(),
+            new CassandraQuotaModule());
         cassandra = CassandraCluster.create(modules, cassandraServer.getIp(), cassandraServer.getBindingPort());
+    }
+
+    @Before
+    public void setup() throws Exception {
         super.setUp();
     }
-    
 
     @Override
     protected MailboxManager provideMailboxManager() {
@@ -80,7 +85,12 @@ public class CassandraMailboxManagerTest extends MailboxManagerTest {
     @After
     public void tearDown() throws Exception {
         super.tearDown();
-        cassandra.close();
+        cassandra.clearTables();
+    }
+
+    @AfterClass
+    public static void tearDownClass() {
+        cassandra.closeCluster();
     }
 
 }

http://git-wip-us.apache.org/repos/asf/james-project/blob/61b8caa3/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/CassandraMessageIdManagerQuotaTest.java
----------------------------------------------------------------------
diff --git a/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/CassandraMessageIdManagerQuotaTest.java b/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/CassandraMessageIdManagerQuotaTest.java
index 62ecd26..2103071 100644
--- a/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/CassandraMessageIdManagerQuotaTest.java
+++ b/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/CassandraMessageIdManagerQuotaTest.java
@@ -35,6 +35,7 @@ import org.apache.james.mailbox.cassandra.modules.CassandraMailboxRecentsModule;
 import org.apache.james.mailbox.cassandra.modules.CassandraMessageModule;
 import org.apache.james.mailbox.cassandra.modules.CassandraModSeqModule;
 import org.apache.james.mailbox.cassandra.modules.CassandraQuotaModule;
+import org.apache.james.mailbox.cassandra.modules.CassandraSubscriptionModule;
 import org.apache.james.mailbox.cassandra.modules.CassandraUidModule;
 import org.apache.james.mailbox.quota.CurrentQuotaManager;
 import org.apache.james.mailbox.quota.MaxQuotaManager;
@@ -43,40 +44,52 @@ import org.apache.james.mailbox.store.AbstractMessageIdManagerQuotaTest;
 import org.apache.james.mailbox.store.MessageIdManagerTestSystem;
 import org.apache.james.mailbox.store.quota.StoreQuotaManager;
 import org.junit.After;
+import org.junit.AfterClass;
 import org.junit.Before;
+import org.junit.BeforeClass;
 import org.junit.ClassRule;
 
 public class CassandraMessageIdManagerQuotaTest extends AbstractMessageIdManagerQuotaTest {
 
     @ClassRule public static DockerCassandraRule cassandraServer = new DockerCassandraRule();
 
-    private CassandraCluster cassandra;
+    private static CassandraCluster cassandra;
+
+    @BeforeClass
+    public static void setUpClass() {
+        CassandraModuleComposite modules = new CassandraModuleComposite(
+            new CassandraAclModule(),
+            new CassandraMailboxModule(),
+            new CassandraMessageModule(),
+            new CassandraBlobModule(),
+            new CassandraMailboxCounterModule(),
+            new CassandraMailboxRecentsModule(),
+            new CassandraFirstUnseenModule(),
+            new CassandraUidModule(),
+            new CassandraModSeqModule(),
+            new CassandraSubscriptionModule(),
+            new CassandraAttachmentModule(),
+            new CassandraDeletedMessageModule(),
+            new CassandraAnnotationModule(),
+            new CassandraApplicableFlagsModule(),
+            new CassandraQuotaModule());
+        cassandra = CassandraCluster.create(modules, cassandraServer.getHost());
+    }
 
     @Override
     @Before
     public void setUp() throws Exception {
-        CassandraModuleComposite modules = new CassandraModuleComposite(
-                new CassandraAclModule(),
-                new CassandraMailboxModule(),
-                new CassandraMessageModule(),
-                new CassandraMailboxCounterModule(),
-                new CassandraMailboxRecentsModule(),
-                new CassandraFirstUnseenModule(),
-                new CassandraDeletedMessageModule(),
-                new CassandraUidModule(),
-                new CassandraModSeqModule(),
-                new CassandraAttachmentModule(),
-                new CassandraAnnotationModule(),
-                new CassandraApplicableFlagsModule(),
-                new CassandraQuotaModule(),
-                new CassandraBlobModule());
-        cassandra = CassandraCluster.create(modules, cassandraServer.getIp(), cassandraServer.getBindingPort());
         super.setUp();
     }
-    
+
     @After
     public void tearDown() {
-        cassandra.close();
+        cassandra.clearTables();
+    }
+
+    @AfterClass
+    public static void tearDownClass() {
+        cassandra.closeCluster();
     }
 
     @Override

http://git-wip-us.apache.org/repos/asf/james-project/blob/61b8caa3/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/CassandraMessageIdManagerSideEffectTest.java
----------------------------------------------------------------------
diff --git a/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/CassandraMessageIdManagerSideEffectTest.java b/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/CassandraMessageIdManagerSideEffectTest.java
index 4326bf7..952f1f7 100644
--- a/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/CassandraMessageIdManagerSideEffectTest.java
+++ b/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/CassandraMessageIdManagerSideEffectTest.java
@@ -40,39 +40,50 @@ import org.apache.james.mailbox.store.AbstractMessageIdManagerSideEffectTest;
 import org.apache.james.mailbox.store.MessageIdManagerTestSystem;
 import org.apache.james.mailbox.store.event.MailboxEventDispatcher;
 import org.junit.After;
+import org.junit.AfterClass;
 import org.junit.Before;
+import org.junit.BeforeClass;
 import org.junit.ClassRule;
 
 public class CassandraMessageIdManagerSideEffectTest extends AbstractMessageIdManagerSideEffectTest {
 
     @ClassRule public static DockerCassandraRule cassandraServer = new DockerCassandraRule();
 
-    private CassandraCluster cassandra;
+    private static CassandraCluster cassandra;
+
+    @BeforeClass
+    public static void setUpClass() {
+        CassandraModuleComposite modules = new CassandraModuleComposite(
+            new CassandraAclModule(),
+            new CassandraMailboxModule(),
+            new CassandraMessageModule(),
+            new CassandraMailboxCounterModule(),
+            new CassandraMailboxRecentsModule(),
+            new CassandraFirstUnseenModule(),
+            new CassandraDeletedMessageModule(),
+            new CassandraUidModule(),
+            new CassandraModSeqModule(),
+            new CassandraAttachmentModule(),
+            new CassandraAnnotationModule(),
+            new CassandraApplicableFlagsModule(),
+            new CassandraBlobModule());
+        cassandra = CassandraCluster.create(modules, cassandraServer.getHost());
+    }
 
     @Override
     @Before
     public void setUp() throws Exception {
-        CassandraModuleComposite modules = new CassandraModuleComposite(
-                new CassandraAclModule(),
-                new CassandraMailboxModule(),
-                new CassandraMessageModule(),
-                new CassandraMailboxCounterModule(),
-                new CassandraMailboxRecentsModule(),
-                new CassandraFirstUnseenModule(),
-                new CassandraDeletedMessageModule(),
-                new CassandraUidModule(),
-                new CassandraModSeqModule(),
-                new CassandraAttachmentModule(),
-                new CassandraAnnotationModule(),
-                new CassandraApplicableFlagsModule(),
-                new CassandraBlobModule());
-        cassandra = CassandraCluster.create(modules, cassandraServer.getIp(), cassandraServer.getBindingPort());
         super.setUp();
     }
     
     @After
     public void tearDown() {
-        cassandra.close();
+        cassandra.clearTables();
+    }
+
+    @AfterClass
+    public static void tearDownClass() {
+        cassandra.closeCluster();
     }
 
     @Override

http://git-wip-us.apache.org/repos/asf/james-project/blob/61b8caa3/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/CassandraMessageIdManagerStorageTest.java
----------------------------------------------------------------------
diff --git a/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/CassandraMessageIdManagerStorageTest.java b/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/CassandraMessageIdManagerStorageTest.java
index 5e3b728..95cb7c7 100644
--- a/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/CassandraMessageIdManagerStorageTest.java
+++ b/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/CassandraMessageIdManagerStorageTest.java
@@ -43,39 +43,50 @@ import org.apache.james.mailbox.store.MessageIdManagerTestSystem;
 import org.apache.james.mailbox.store.event.MailboxEventDispatcher;
 import org.apache.james.mailbox.store.quota.NoQuotaManager;
 import org.junit.After;
+import org.junit.AfterClass;
 import org.junit.Before;
+import org.junit.BeforeClass;
 import org.junit.ClassRule;
 
 public class CassandraMessageIdManagerStorageTest extends AbstractMessageIdManagerStorageTest {
 
     @ClassRule public static DockerCassandraRule cassandraServer = new DockerCassandraRule();
 
-    private CassandraCluster cassandra;
+    private static CassandraCluster cassandra;
+
+    @BeforeClass
+    public static void setUpClass() {
+        CassandraModuleComposite modules = new CassandraModuleComposite(
+            new CassandraAclModule(),
+            new CassandraMailboxModule(),
+            new CassandraMessageModule(),
+            new CassandraMailboxCounterModule(),
+            new CassandraMailboxRecentsModule(),
+            new CassandraFirstUnseenModule(),
+            new CassandraDeletedMessageModule(),
+            new CassandraUidModule(),
+            new CassandraModSeqModule(),
+            new CassandraAttachmentModule(),
+            new CassandraAnnotationModule(),
+            new CassandraApplicableFlagsModule(),
+            new CassandraBlobModule());
+        cassandra = CassandraCluster.create(modules, cassandraServer.getHost());
+    }
 
     @Override
     @Before
     public void setUp() throws Exception {
-        CassandraModuleComposite modules = new CassandraModuleComposite(
-                new CassandraAclModule(),
-                new CassandraMailboxModule(),
-                new CassandraMessageModule(),
-                new CassandraMailboxCounterModule(),
-                new CassandraMailboxRecentsModule(),
-                new CassandraFirstUnseenModule(),
-                new CassandraDeletedMessageModule(),
-                new CassandraUidModule(),
-                new CassandraModSeqModule(),
-                new CassandraAttachmentModule(),
-                new CassandraAnnotationModule(),
-                new CassandraApplicableFlagsModule(),
-                new CassandraBlobModule());
-        cassandra = CassandraCluster.create(modules, cassandraServer.getIp(), cassandraServer.getBindingPort());
         super.setUp();
     }
     
     @After
     public void tearDown() {
-        cassandra.close();
+        cassandra.clearTables();
+    }
+
+    @AfterClass
+    public static void tearDownClass() {
+        cassandra.closeCluster();
     }
     
     @Override

http://git-wip-us.apache.org/repos/asf/james-project/blob/61b8caa3/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/CassandraSubscriptionManagerTest.java
----------------------------------------------------------------------
diff --git a/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/CassandraSubscriptionManagerTest.java b/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/CassandraSubscriptionManagerTest.java
index 2835838..b0df27d 100644
--- a/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/CassandraSubscriptionManagerTest.java
+++ b/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/CassandraSubscriptionManagerTest.java
@@ -50,7 +50,9 @@ import org.apache.james.mailbox.cassandra.modules.CassandraMailboxCounterModule;
 import org.apache.james.mailbox.cassandra.modules.CassandraSubscriptionModule;
 import org.apache.james.mailbox.exception.SubscriptionException;
 import org.junit.After;
+import org.junit.AfterClass;
 import org.junit.Before;
+import org.junit.BeforeClass;
 import org.junit.ClassRule;
 
 /**
@@ -59,22 +61,31 @@ import org.junit.ClassRule;
 public class CassandraSubscriptionManagerTest extends AbstractSubscriptionManagerTest {
 
     @ClassRule public static DockerCassandraRule cassandraServer = new DockerCassandraRule();
-    
-    private CassandraCluster cassandra;
 
-    @Before
-    public void init() {
+    private static CassandraCluster cassandra;
+
+    @BeforeClass
+    public static void setUpClass() {
         CassandraModuleComposite modules = new CassandraModuleComposite(
             new CassandraSubscriptionModule(),
             new CassandraMailboxCounterModule());
         cassandra = CassandraCluster.create(modules, cassandraServer.getHost());
+    }
+
+    @Before
+    public void init() {
         super.setup();
     }
 
     @After
     public void close() throws SubscriptionException {
         super.teardown();
-        cassandra.close();
+        cassandra.clearTables();
+    }
+
+    @AfterClass
+    public static void tearDownClass() {
+        cassandra.closeCluster();
     }
 
     @Override

http://git-wip-us.apache.org/repos/asf/james-project/blob/61b8caa3/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/event/distributed/CassandraBasedRegisteredDistributedMailboxDelegatingListenerTest.java
----------------------------------------------------------------------
diff --git a/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/event/distributed/CassandraBasedRegisteredDistributedMailboxDelegatingListenerTest.java b/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/event/distributed/CassandraBasedRegisteredDistributedMailboxDelegatingListenerTest.java
index 18d350a..ab2293f 100644
--- a/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/event/distributed/CassandraBasedRegisteredDistributedMailboxDelegatingListenerTest.java
+++ b/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/event/distributed/CassandraBasedRegisteredDistributedMailboxDelegatingListenerTest.java
@@ -47,7 +47,9 @@ import org.apache.james.mailbox.store.mail.model.MailboxMessage;
 import org.apache.james.mailbox.store.mail.model.impl.SimpleMailbox;
 import org.apache.james.mailbox.util.EventCollector;
 import org.junit.After;
+import org.junit.AfterClass;
 import org.junit.Before;
+import org.junit.BeforeClass;
 import org.junit.ClassRule;
 import org.junit.Test;
 
@@ -68,7 +70,8 @@ public class CassandraBasedRegisteredDistributedMailboxDelegatingListenerTest {
 
     @ClassRule public static DockerCassandraRule cassandraServer = new DockerCassandraRule();
     
-    private CassandraCluster cassandra = CassandraCluster.create(new CassandraRegistrationModule(), cassandraServer.getIp(), cassandraServer.getBindingPort());
+    private static CassandraCluster cassandra;
+
     private RegisteredDelegatingMailboxListener registeredDelegatingMailboxListener1;
     private RegisteredDelegatingMailboxListener registeredDelegatingMailboxListener2;
     private RegisteredDelegatingMailboxListener registeredDelegatingMailboxListener3;
@@ -80,6 +83,11 @@ public class CassandraBasedRegisteredDistributedMailboxDelegatingListenerTest {
     private EventCollector eventCollectorOnce3;
     private MailboxSession mailboxSession;
 
+    @BeforeClass
+    public static void setUpClass() {
+        cassandra = CassandraCluster.create(new CassandraRegistrationModule(), cassandraServer.getHost());
+    }
+
     @Before
     public void setUp() throws Exception {
         PublisherReceiver publisherReceiver = new PublisherReceiver();
@@ -145,7 +153,12 @@ public class CassandraBasedRegisteredDistributedMailboxDelegatingListenerTest {
 
     @After
     public void tearDown() {
-        cassandra.close();
+        cassandra.clearTables();
+    }
+
+    @AfterClass
+    public static void tearDownClass() {
+        cassandra.closeCluster();
     }
 
     @Test

http://git-wip-us.apache.org/repos/asf/james-project/blob/61b8caa3/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/event/distributed/CassandraMailboxPathRegistrerMapperTest.java
----------------------------------------------------------------------
diff --git a/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/event/distributed/CassandraMailboxPathRegistrerMapperTest.java b/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/event/distributed/CassandraMailboxPathRegistrerMapperTest.java
index 99b57da..1459edb 100644
--- a/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/event/distributed/CassandraMailboxPathRegistrerMapperTest.java
+++ b/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/event/distributed/CassandraMailboxPathRegistrerMapperTest.java
@@ -30,7 +30,9 @@ import org.apache.james.mailbox.cassandra.modules.CassandraRegistrationModule;
 import org.apache.james.mailbox.model.MailboxPath;
 import org.apache.james.mailbox.store.publisher.Topic;
 import org.junit.After;
+import org.junit.AfterClass;
 import org.junit.Before;
+import org.junit.BeforeClass;
 import org.junit.ClassRule;
 import org.junit.Test;
 
@@ -38,7 +40,8 @@ public class CassandraMailboxPathRegistrerMapperTest {
 
     @ClassRule public static DockerCassandraRule cassandraServer = new DockerCassandraRule();
     
-    private final CassandraCluster cassandra = CassandraCluster.create(new CassandraRegistrationModule(), cassandraServer.getIp(), cassandraServer.getBindingPort());
+    private static CassandraCluster cassandra;
+
     private static final MailboxPath MAILBOX_PATH = new MailboxPath("namespace", "user", "name");
     private static final MailboxPath MAILBOX_PATH_2 = new MailboxPath("namespace2", "user2", "name2");
     private static final Topic TOPIC = new Topic("topic");
@@ -47,6 +50,11 @@ public class CassandraMailboxPathRegistrerMapperTest {
 
     private CassandraMailboxPathRegisterMapper mapper;
 
+    @BeforeClass
+    public static void setUpClass() {
+        cassandra = CassandraCluster.create(new CassandraRegistrationModule(), cassandraServer.getHost());
+    }
+
     @Before
     public void setUp() {
         mapper = new CassandraMailboxPathRegisterMapper(cassandra.getConf(),
@@ -57,7 +65,12 @@ public class CassandraMailboxPathRegistrerMapperTest {
 
     @After
     public void tearDown() {
-        cassandra.close();
+        cassandra.clearTables();
+    }
+
+    @AfterClass
+    public static void tearDownClass() {
+        cassandra.closeCluster();
     }
 
     @Test

http://git-wip-us.apache.org/repos/asf/james-project/blob/61b8caa3/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraACLMapperTest.java
----------------------------------------------------------------------
diff --git a/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraACLMapperTest.java b/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraACLMapperTest.java
index 0bf13a7..c8169a8 100644
--- a/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraACLMapperTest.java
+++ b/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraACLMapperTest.java
@@ -41,22 +41,29 @@ import org.apache.james.mailbox.cassandra.table.CassandraACLTable;
 import org.apache.james.mailbox.exception.MailboxException;
 import org.apache.james.mailbox.model.MailboxACL;
 import org.junit.After;
+import org.junit.AfterClass;
 import org.junit.Before;
+import org.junit.BeforeClass;
 import org.junit.ClassRule;
 import org.junit.Test;
 
 public class CassandraACLMapperTest {
 
     public static final CassandraId MAILBOX_ID = CassandraId.of(UUID.fromString("464765a0-e4e7-11e4-aba4-710c1de3782b"));
+
+    @ClassRule public static DockerCassandraRule cassandraServer = new DockerCassandraRule();
+    private static CassandraCluster cassandra;
+
     private CassandraACLMapper cassandraACLMapper;
-    private CassandraCluster cassandra;
     private ExecutorService executor;
 
-    @ClassRule public static DockerCassandraRule cassandraServer = new DockerCassandraRule();
+    @BeforeClass
+    public static void setUpClass() {
+        cassandra = CassandraCluster.create(new CassandraAclModule(), cassandraServer.getHost());
+    }
 
     @Before
     public void setUp() {
-        cassandra = CassandraCluster.create(new CassandraAclModule(), cassandraServer.getIp(), cassandraServer.getBindingPort());
         cassandraACLMapper = GuiceUtils.testInjector(cassandra)
             .getInstance(CassandraACLMapper.class);
         executor = Executors.newFixedThreadPool(2);
@@ -65,7 +72,12 @@ public class CassandraACLMapperTest {
     @After
     public void tearDown() {
         executor.shutdownNow();
-        cassandra.close();
+        cassandra.clearTables();
+    }
+
+    @AfterClass
+    public static void tearDownClass() {
+        cassandra.closeCluster();
     }
 
     @Test

http://git-wip-us.apache.org/repos/asf/james-project/blob/61b8caa3/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraAnnotationMapperTest.java
----------------------------------------------------------------------
diff --git a/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraAnnotationMapperTest.java b/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraAnnotationMapperTest.java
index 53aca9e..7bde1a7 100644
--- a/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraAnnotationMapperTest.java
+++ b/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraAnnotationMapperTest.java
@@ -28,25 +28,35 @@ import org.apache.james.mailbox.model.MailboxId;
 import org.apache.james.mailbox.store.mail.AnnotationMapper;
 import org.apache.james.mailbox.store.mail.model.AnnotationMapperTest;
 import org.junit.After;
+import org.junit.AfterClass;
 import org.junit.Before;
+import org.junit.BeforeClass;
 import org.junit.ClassRule;
 
 public class CassandraAnnotationMapperTest extends AnnotationMapperTest {
     
     @ClassRule public static DockerCassandraRule cassandraServer = new DockerCassandraRule();
-    
-    private CassandraCluster cassandra;
+    private static CassandraCluster cassandra;
+
+    @BeforeClass
+    public static void setUpClass() {
+        cassandra = CassandraCluster.create(new CassandraAnnotationModule(), cassandraServer.getHost());
+    }
 
     @Override
     @Before
     public void setUp() throws Exception {
-        this.cassandra = CassandraCluster.create(new CassandraAnnotationModule(), cassandraServer.getHost());
         super.setUp();
     }
     
     @After
     public void tearDown() {
-        cassandra.close();
+        cassandra.clearTables();
+    }
+
+    @AfterClass
+    public static void tearDownClass() {
+        cassandra.closeCluster();
     }
 
     @Override

http://git-wip-us.apache.org/repos/asf/james-project/blob/61b8caa3/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraApplicableFlagDAOTest.java
----------------------------------------------------------------------
diff --git a/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraApplicableFlagDAOTest.java b/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraApplicableFlagDAOTest.java
index f6b4004..af07d23 100644
--- a/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraApplicableFlagDAOTest.java
+++ b/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraApplicableFlagDAOTest.java
@@ -29,7 +29,9 @@ import org.apache.james.mailbox.FlagsBuilder;
 import org.apache.james.mailbox.cassandra.ids.CassandraId;
 import org.apache.james.mailbox.cassandra.modules.CassandraApplicableFlagsModule;
 import org.junit.After;
+import org.junit.AfterClass;
 import org.junit.Before;
+import org.junit.BeforeClass;
 import org.junit.ClassRule;
 import org.junit.Test;
 
@@ -43,19 +45,28 @@ public class CassandraApplicableFlagDAOTest {
 
     @ClassRule public static DockerCassandraRule cassandraServer = new DockerCassandraRule();
     
-    private CassandraCluster cassandra;
+    private static CassandraCluster cassandra;
 
     private CassandraApplicableFlagDAO testee;
 
+    @BeforeClass
+    public static void setUpClass() {
+        cassandra = CassandraCluster.create(new CassandraApplicableFlagsModule(), cassandraServer.getIp(), cassandraServer.getBindingPort());
+    }
+
     @Before
     public void setUp() throws Exception {
-        cassandra = CassandraCluster.create(new CassandraApplicableFlagsModule(), cassandraServer.getIp(), cassandraServer.getBindingPort());
         testee = new CassandraApplicableFlagDAO(cassandra.getConf());
     }
 
     @After
-    public void tearDown() throws Exception {
-        cassandra.close();
+    public void tearDown() {
+        cassandra.clearTables();
+    }
+
+    @AfterClass
+    public static void tearDownClass() {
+        cassandra.closeCluster();
     }
 
     @Test

http://git-wip-us.apache.org/repos/asf/james-project/blob/61b8caa3/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraAttachmentDAOTest.java
----------------------------------------------------------------------
diff --git a/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraAttachmentDAOTest.java b/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraAttachmentDAOTest.java
index 6944618..eefdaff 100644
--- a/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraAttachmentDAOTest.java
+++ b/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraAttachmentDAOTest.java
@@ -32,7 +32,9 @@ import org.apache.james.mailbox.cassandra.modules.CassandraAttachmentModule;
 import org.apache.james.mailbox.model.Attachment;
 import org.apache.james.mailbox.model.AttachmentId;
 import org.junit.After;
+import org.junit.AfterClass;
 import org.junit.Before;
+import org.junit.BeforeClass;
 import org.junit.ClassRule;
 import org.junit.Test;
 
@@ -45,22 +47,30 @@ public class CassandraAttachmentDAOTest {
     @ClassRule
     public static DockerCassandraRule cassandraServer = new DockerCassandraRule();
 
-    private CassandraCluster cassandra;
+    private static CassandraCluster cassandra;
 
     private CassandraAttachmentDAO testee;
 
+    @BeforeClass
+    public static void setUpClass() {
+        cassandra = CassandraCluster.create(new CassandraAttachmentModule(), cassandraServer.getHost());
+    }
+
     @Before
     public void setUp() throws Exception {
-        cassandra = CassandraCluster.create(new CassandraAttachmentModule(),
-            cassandraServer.getIp(), cassandraServer.getBindingPort());
         testee = new CassandraAttachmentDAO(cassandra.getConf(),
             CassandraUtils.WITH_DEFAULT_CONFIGURATION,
             CassandraConfiguration.DEFAULT_CONFIGURATION);
     }
 
     @After
-    public void tearDown() throws Exception {
-        cassandra.close();
+    public void tearDown() {
+        cassandra.clearTables();
+    }
+
+    @AfterClass
+    public static void tearDownClass() {
+        cassandra.closeCluster();
     }
 
     @Test

http://git-wip-us.apache.org/repos/asf/james-project/blob/61b8caa3/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraAttachmentDAOV2Test.java
----------------------------------------------------------------------
diff --git a/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraAttachmentDAOV2Test.java b/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraAttachmentDAOV2Test.java
index d5f7ca4..38619d0 100644
--- a/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraAttachmentDAOV2Test.java
+++ b/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraAttachmentDAOV2Test.java
@@ -33,7 +33,9 @@ import org.apache.james.mailbox.cassandra.modules.CassandraAttachmentModule;
 import org.apache.james.mailbox.model.Attachment;
 import org.apache.james.mailbox.model.AttachmentId;
 import org.junit.After;
+import org.junit.AfterClass;
 import org.junit.Before;
+import org.junit.BeforeClass;
 import org.junit.ClassRule;
 import org.junit.Test;
 
@@ -44,23 +46,28 @@ public class CassandraAttachmentDAOV2Test {
     @ClassRule
     public static DockerCassandraRule cassandraServer = new DockerCassandraRule();
 
-    private CassandraCluster cassandra;
+    private static CassandraCluster cassandra;
 
     private CassandraAttachmentDAOV2 testee;
 
+    @BeforeClass
+    public static void setUpClass() {
+        cassandra = CassandraCluster.create(new CassandraAttachmentModule(), cassandraServer.getHost());
+    }
+
     @Before
     public void setUp() throws Exception {
-        cassandra = CassandraCluster.create(
-            new CassandraAttachmentModule(),
-            cassandraServer.getIp(),
-            cassandraServer.getBindingPort());
-
         testee = new CassandraAttachmentDAOV2(BLOB_ID_FACTORY, cassandra.getConf());
     }
 
     @After
-    public void tearDown() throws Exception {
-        cassandra.close();
+    public void tearDown() {
+        cassandra.clearTables();
+    }
+
+    @AfterClass
+    public static void tearDownClass() {
+        cassandra.closeCluster();
     }
 
     @Test

http://git-wip-us.apache.org/repos/asf/james-project/blob/61b8caa3/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraAttachmentFallbackTest.java
----------------------------------------------------------------------
diff --git a/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraAttachmentFallbackTest.java b/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraAttachmentFallbackTest.java
index 6a8517a..fc1794a 100644
--- a/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraAttachmentFallbackTest.java
+++ b/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraAttachmentFallbackTest.java
@@ -39,7 +39,9 @@ import org.apache.james.mailbox.exception.AttachmentNotFoundException;
 import org.apache.james.mailbox.model.Attachment;
 import org.apache.james.mailbox.model.AttachmentId;
 import org.junit.After;
+import org.junit.AfterClass;
 import org.junit.Before;
+import org.junit.BeforeClass;
 import org.junit.ClassRule;
 import org.junit.Test;
 import org.testcontainers.shaded.com.google.common.collect.ImmutableList;
@@ -52,7 +54,7 @@ public class CassandraAttachmentFallbackTest {
     @ClassRule
     public static DockerCassandraRule cassandraServer = new DockerCassandraRule();
 
-    private CassandraCluster cassandra;
+    private static CassandraCluster cassandra;
 
     private CassandraAttachmentDAOV2 attachmentDAOV2;
     private CassandraAttachmentDAO attachmentDAO;
@@ -60,17 +62,16 @@ public class CassandraAttachmentFallbackTest {
     private CassandraBlobsDAO blobsDAO;
     private CassandraAttachmentMessageIdDAO attachmentMessageIdDAO;
 
-    @Before
-    public void setUp() throws Exception {
-        CassandraModuleComposite compositeModule = new CassandraModuleComposite(
+    @BeforeClass
+    public static void setUpClass() {
+        CassandraModuleComposite modules = new CassandraModuleComposite(
             new CassandraAttachmentModule(),
             new CassandraBlobModule());
+        cassandra = CassandraCluster.create(modules, cassandraServer.getHost());
+    }
 
-        cassandra = CassandraCluster.create(
-            compositeModule,
-            cassandraServer.getIp(),
-            cassandraServer.getBindingPort());
-
+    @Before
+    public void setUp() throws Exception {
         attachmentDAOV2 = new CassandraAttachmentDAOV2(BLOB_ID_FACTORY, cassandra.getConf());
         attachmentDAO = new CassandraAttachmentDAO(cassandra.getConf(),
             CassandraUtils.WITH_DEFAULT_CONFIGURATION,
@@ -82,8 +83,13 @@ public class CassandraAttachmentFallbackTest {
     }
 
     @After
-    public void tearDown() throws Exception {
-        cassandra.close();
+    public void tearDown() {
+        cassandra.clearTables();
+    }
+
+    @AfterClass
+    public static void tearDownClass() {
+        cassandra.closeCluster();
     }
 
     @Test

http://git-wip-us.apache.org/repos/asf/james-project/blob/61b8caa3/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraAttachmentMapperTest.java
----------------------------------------------------------------------
diff --git a/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraAttachmentMapperTest.java b/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraAttachmentMapperTest.java
index 82a1ff2..745edbc 100644
--- a/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraAttachmentMapperTest.java
+++ b/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraAttachmentMapperTest.java
@@ -31,28 +31,39 @@ import org.apache.james.mailbox.model.MessageId;
 import org.apache.james.mailbox.store.mail.AttachmentMapper;
 import org.apache.james.mailbox.store.mail.model.AttachmentMapperTest;
 import org.junit.After;
+import org.junit.AfterClass;
 import org.junit.Before;
+import org.junit.BeforeClass;
 import org.junit.ClassRule;
 
 public class CassandraAttachmentMapperTest extends AttachmentMapperTest {
     
     @ClassRule public static DockerCassandraRule cassandraServer = new DockerCassandraRule();
     
-    private CassandraCluster cassandra;
+    private static CassandraCluster cassandra;
+
+    @BeforeClass
+    public static void setUpClass() {
+        CassandraModuleComposite modules = new CassandraModuleComposite(
+            new CassandraAttachmentModule(),
+            new CassandraBlobModule());
+        cassandra = CassandraCluster.create(modules, cassandraServer.getHost());
+    }
 
     @Override
     @Before
     public void setUp() throws MailboxException {
-        CassandraModuleComposite modules = new CassandraModuleComposite(
-                new CassandraAttachmentModule(),
-                new CassandraBlobModule());
-        this.cassandra = CassandraCluster.create(modules, cassandraServer.getHost());
         super.setUp();
     }
     
     @After
     public void tearDown() {
-        cassandra.close();
+        cassandra.clearTables();
+    }
+
+    @AfterClass
+    public static void tearDownClass() {
+        cassandra.closeCluster();
     }
 
     @Override

http://git-wip-us.apache.org/repos/asf/james-project/blob/61b8caa3/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraAttachmentOwnerDAOTest.java
----------------------------------------------------------------------
diff --git a/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraAttachmentOwnerDAOTest.java b/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraAttachmentOwnerDAOTest.java
index f96fdf2..adf73b1 100644
--- a/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraAttachmentOwnerDAOTest.java
+++ b/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraAttachmentOwnerDAOTest.java
@@ -32,7 +32,9 @@ import org.apache.james.mailbox.store.mail.model.Username;
 import org.apache.james.util.FluentFutureStream;
 import org.apache.james.util.streams.JamesCollectors;
 import org.junit.After;
+import org.junit.AfterClass;
 import org.junit.Before;
+import org.junit.BeforeClass;
 import org.junit.ClassRule;
 import org.junit.Test;
 
@@ -44,21 +46,29 @@ public class CassandraAttachmentOwnerDAOTest {
     @ClassRule
     public static DockerCassandraRule cassandraServer = new DockerCassandraRule();
 
-    private CassandraCluster cassandra;
+    private static CassandraCluster cassandra;
 
     private CassandraAttachmentOwnerDAO testee;
 
+    @BeforeClass
+    public static void setUpClass() {
+        cassandra = CassandraCluster.create(new CassandraAttachmentModule(), cassandraServer.getHost());
+    }
+
     @Before
     public void setUp() throws Exception {
-        cassandra = CassandraCluster.create(new CassandraAttachmentModule(),
-            cassandraServer.getIp(), cassandraServer.getBindingPort());
         testee = new CassandraAttachmentOwnerDAO(cassandra.getConf(),
             CassandraUtils.WITH_DEFAULT_CONFIGURATION);
     }
 
     @After
     public void tearDown() {
-        cassandra.close();
+        cassandra.clearTables();
+    }
+
+    @AfterClass
+    public static void tearDownClass() {
+        cassandra.closeCluster();
     }
 
     @Test

http://git-wip-us.apache.org/repos/asf/james-project/blob/61b8caa3/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraDeletedMessageDAOTest.java
----------------------------------------------------------------------
diff --git a/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraDeletedMessageDAOTest.java b/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraDeletedMessageDAOTest.java
index 98f6b28..4d2ae8d 100644
--- a/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraDeletedMessageDAOTest.java
+++ b/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraDeletedMessageDAOTest.java
@@ -31,7 +31,9 @@ import org.apache.james.mailbox.cassandra.ids.CassandraId;
 import org.apache.james.mailbox.cassandra.modules.CassandraDeletedMessageModule;
 import org.apache.james.mailbox.model.MessageRange;
 import org.junit.After;
+import org.junit.AfterClass;
 import org.junit.Before;
+import org.junit.BeforeClass;
 import org.junit.ClassRule;
 import org.junit.Test;
 
@@ -48,20 +50,28 @@ public class CassandraDeletedMessageDAOTest {
     public static final MessageUid UID_8 = MessageUid.of(8);
 
     @ClassRule public static DockerCassandraRule cassandraServer = new DockerCassandraRule();
-    
-    private CassandraCluster cassandra;
+    private static CassandraCluster cassandra;
+
     private CassandraDeletedMessageDAO testee;
 
+    @BeforeClass
+    public static void setUpClass() {
+        cassandra = CassandraCluster.create(new CassandraDeletedMessageModule(), cassandraServer.getHost());
+    }
+
     @Before
     public void setUp() {
-        cassandra = CassandraCluster.create(
-            new CassandraDeletedMessageModule(), cassandraServer.getIp(), cassandraServer.getBindingPort());
         testee = new CassandraDeletedMessageDAO(cassandra.getConf());
     }
 
     @After
     public void tearDown() {
-        cassandra.close();
+        cassandra.clearTables();
+    }
+
+    @AfterClass
+    public static void tearDownClass() {
+        cassandra.closeCluster();
     }
 
     @Test

http://git-wip-us.apache.org/repos/asf/james-project/blob/61b8caa3/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraFirstUnseenDAOTest.java
----------------------------------------------------------------------
diff --git a/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraFirstUnseenDAOTest.java b/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraFirstUnseenDAOTest.java
index a911b3e..e2bbeb0 100644
--- a/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraFirstUnseenDAOTest.java
+++ b/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraFirstUnseenDAOTest.java
@@ -27,7 +27,9 @@ import org.apache.james.mailbox.MessageUid;
 import org.apache.james.mailbox.cassandra.ids.CassandraId;
 import org.apache.james.mailbox.cassandra.modules.CassandraFirstUnseenModule;
 import org.junit.After;
+import org.junit.AfterClass;
 import org.junit.Before;
+import org.junit.BeforeClass;
 import org.junit.ClassRule;
 import org.junit.Test;
 
@@ -38,20 +40,28 @@ public class CassandraFirstUnseenDAOTest {
     public static final MessageUid UID_2 = MessageUid.of(2);
 
     @ClassRule public static DockerCassandraRule cassandraServer = new DockerCassandraRule();
-    
-    private CassandraCluster cassandra;
+    private static CassandraCluster cassandra;
+
     private CassandraFirstUnseenDAO testee;
 
+    @BeforeClass
+    public static void setUpClass() {
+        cassandra = CassandraCluster.create(new CassandraFirstUnseenModule(), cassandraServer.getHost());
+    }
+
     @Before
     public void setUp() {
-        cassandra = CassandraCluster.create(
-            new CassandraFirstUnseenModule(), cassandraServer.getIp(), cassandraServer.getBindingPort());
         testee = new CassandraFirstUnseenDAO(cassandra.getConf());
     }
 
     @After
     public void tearDown() {
-        cassandra.close();
+        cassandra.clearTables();
+    }
+
+    @AfterClass
+    public static void tearDownClass() {
+        cassandra.closeCluster();
     }
 
     @Test

http://git-wip-us.apache.org/repos/asf/james-project/blob/61b8caa3/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraGenericMailboxMapperTest.java
----------------------------------------------------------------------
diff --git a/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraGenericMailboxMapperTest.java b/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraGenericMailboxMapperTest.java
index c7dea0f..16e2620 100644
--- a/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraGenericMailboxMapperTest.java
+++ b/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraGenericMailboxMapperTest.java
@@ -32,30 +32,41 @@ import org.apache.james.mailbox.model.MailboxId;
 import org.apache.james.mailbox.store.mail.MailboxMapper;
 import org.apache.james.mailbox.store.mail.model.MailboxMapperTest;
 import org.junit.After;
+import org.junit.AfterClass;
 import org.junit.Before;
+import org.junit.BeforeClass;
 import org.junit.ClassRule;
 
 public class CassandraGenericMailboxMapperTest extends MailboxMapperTest {
     
     @ClassRule public static DockerCassandraRule cassandraServer = new DockerCassandraRule();
     
-    private CassandraCluster cassandra;
+    private static CassandraCluster cassandra;
+
+    @BeforeClass
+    public static void setUpClass() {
+        CassandraModuleComposite modules = new CassandraModuleComposite(
+            new CassandraAclModule(),
+            new CassandraMailboxModule(),
+            new CassandraModSeqModule(),
+            new CassandraUidModule());
+        cassandra = CassandraCluster.create(modules, cassandraServer.getHost());
+    }
 
     @Override
     @Before
     public void setUp() throws Exception {
-        CassandraModuleComposite modules = new CassandraModuleComposite(
-                new CassandraAclModule(),
-                new CassandraMailboxModule(),
-                new CassandraModSeqModule(),
-                new CassandraUidModule());
-        this.cassandra = CassandraCluster.create(modules, cassandraServer.getHost());
         super.setUp();
     }
     
     @After
     public void tearDown() {
-        cassandra.close();
+        cassandra.clearTables();
+    }
+
+    @AfterClass
+    public static void tearDownClass() {
+        cassandra.closeCluster();
     }
 
     @Override

http://git-wip-us.apache.org/repos/asf/james-project/blob/61b8caa3/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraIndexTableHandlerTest.java
----------------------------------------------------------------------
diff --git a/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraIndexTableHandlerTest.java b/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraIndexTableHandlerTest.java
index aee1922..8b6c3f2 100644
--- a/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraIndexTableHandlerTest.java
+++ b/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraIndexTableHandlerTest.java
@@ -48,7 +48,9 @@ import org.apache.james.mailbox.store.mail.model.Mailbox;
 import org.apache.james.mailbox.store.mail.model.MailboxMessage;
 import org.apache.james.mailbox.store.mail.model.impl.SimpleMailbox;
 import org.junit.After;
+import org.junit.AfterClass;
 import org.junit.Before;
+import org.junit.BeforeClass;
 import org.junit.ClassRule;
 import org.junit.Test;
 
@@ -63,8 +65,8 @@ public class CassandraIndexTableHandlerTest {
     public static final long MODSEQ = 17;
 
     @ClassRule public static DockerCassandraRule cassandraServer = new DockerCassandraRule();
-    
-    private CassandraCluster cassandra;
+    private static CassandraCluster cassandra;
+
     private CassandraMailboxCounterDAO mailboxCounterDAO;
     private CassandraMailboxRecentsDAO mailboxRecentsDAO;
     private CassandraApplicableFlagDAO applicableFlagDAO;
@@ -73,15 +75,19 @@ public class CassandraIndexTableHandlerTest {
     private CassandraDeletedMessageDAO deletedMessageDAO;
     private Mailbox mailbox;
 
-    @Before
-    public void setUp() {
-        cassandra = CassandraCluster.create(
-            new CassandraModuleComposite(
+    @BeforeClass
+    public static void setUpClass() {
+        CassandraModuleComposite modules = new CassandraModuleComposite(
                 new CassandraMailboxCounterModule(),
                 new CassandraMailboxRecentsModule(),
                 new CassandraFirstUnseenModule(),
                 new CassandraApplicableFlagsModule(),
-                new CassandraDeletedMessageModule()), cassandraServer.getIp(), cassandraServer.getBindingPort());
+                new CassandraDeletedMessageModule());
+        cassandra = CassandraCluster.create(modules, cassandraServer.getHost());
+    }
+
+    @Before
+    public void setUp() {
         mailboxCounterDAO = new CassandraMailboxCounterDAO(cassandra.getConf());
         mailboxRecentsDAO = new CassandraMailboxRecentsDAO(cassandra.getConf());
         firstUnseenDAO = new CassandraFirstUnseenDAO(cassandra.getConf());
@@ -101,7 +107,12 @@ public class CassandraIndexTableHandlerTest {
 
     @After
     public void tearDown() {
-        cassandra.close();
+        cassandra.clearTables();
+    }
+
+    @AfterClass
+    public static void tearDownClass() {
+        cassandra.closeCluster();
     }
 
     @Test

http://git-wip-us.apache.org/repos/asf/james-project/blob/61b8caa3/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraMailboxCounterDAOTest.java
----------------------------------------------------------------------
diff --git a/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraMailboxCounterDAOTest.java b/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraMailboxCounterDAOTest.java
index 2220008..7f0ac27 100644
--- a/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraMailboxCounterDAOTest.java
+++ b/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraMailboxCounterDAOTest.java
@@ -29,7 +29,9 @@ import org.apache.james.mailbox.model.MailboxCounters;
 import org.apache.james.mailbox.model.MailboxPath;
 import org.apache.james.mailbox.store.mail.model.impl.SimpleMailbox;
 import org.junit.After;
+import org.junit.AfterClass;
 import org.junit.Before;
+import org.junit.BeforeClass;
 import org.junit.ClassRule;
 import org.junit.Test;
 
@@ -38,14 +40,17 @@ public class CassandraMailboxCounterDAOTest {
     public static final CassandraId MAILBOX_ID = CassandraId.timeBased();
 
     @ClassRule public static DockerCassandraRule cassandraServer = new DockerCassandraRule();
-    
-    private CassandraCluster cassandra;
+    private static CassandraCluster cassandra;
     private CassandraMailboxCounterDAO testee;
     private SimpleMailbox mailbox;
 
+    @BeforeClass
+    public static void setUpClass() {
+        cassandra = CassandraCluster.create(new CassandraMailboxCounterModule(), cassandraServer.getHost());
+    }
+
     @Before
     public void setUp() {
-        cassandra = CassandraCluster.create(new CassandraMailboxCounterModule(), cassandraServer.getIp(), cassandraServer.getBindingPort());
         testee = new CassandraMailboxCounterDAO(cassandra.getConf());
 
         mailbox = new SimpleMailbox(MailboxPath.forUser("user", "name"), UID_VALIDITY, MAILBOX_ID);
@@ -53,7 +58,12 @@ public class CassandraMailboxCounterDAOTest {
 
     @After
     public void tearDown() {
-        cassandra.close();
+        cassandra.clearTables();
+    }
+
+    @AfterClass
+    public static void tearDownClass() {
+        cassandra.closeCluster();
     }
 
     @Test

http://git-wip-us.apache.org/repos/asf/james-project/blob/61b8caa3/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraMailboxDAOTest.java
----------------------------------------------------------------------
diff --git a/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraMailboxDAOTest.java b/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraMailboxDAOTest.java
index b04b360..35565e3 100644
--- a/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraMailboxDAOTest.java
+++ b/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraMailboxDAOTest.java
@@ -33,7 +33,9 @@ import org.apache.james.mailbox.cassandra.modules.CassandraMailboxModule;
 import org.apache.james.mailbox.model.MailboxPath;
 import org.apache.james.mailbox.store.mail.model.impl.SimpleMailbox;
 import org.junit.After;
+import org.junit.AfterClass;
 import org.junit.Before;
+import org.junit.BeforeClass;
 import org.junit.ClassRule;
 import org.junit.Test;
 
@@ -48,17 +50,20 @@ public class CassandraMailboxDAOTest {
     public static CassandraId CASSANDRA_ID_2 = CassandraId.timeBased();
 
     @ClassRule public static DockerCassandraRule cassandraServer = new DockerCassandraRule();
-    
-    private CassandraCluster cassandra;
+    private static CassandraCluster cassandra;
+
     private CassandraMailboxDAO testee;
     private SimpleMailbox mailbox1;
     private SimpleMailbox mailbox2;
 
-    @Before
-    public void setUp() {
+    @BeforeClass
+    public static void setUpClass() {
         CassandraModuleComposite modules = new CassandraModuleComposite(new CassandraMailboxModule(), new CassandraAclModule());
-        cassandra = CassandraCluster.create(modules, cassandraServer.getIp(), cassandraServer.getBindingPort());
+        cassandra = CassandraCluster.create(modules, cassandraServer.getHost());
+    }
 
+    @Before
+    public void setUp() {
         testee = new CassandraMailboxDAO(cassandra.getConf(), cassandra.getTypesProvider());
 
         mailbox1 = new SimpleMailbox(MailboxPath.forUser("user", "abcd"),
@@ -71,7 +76,12 @@ public class CassandraMailboxDAOTest {
 
     @After
     public void tearDown() {
-        cassandra.close();
+        cassandra.clearTables();
+    }
+
+    @AfterClass
+    public static void tearDownClass() {
+        cassandra.closeCluster();
     }
 
     @Test

http://git-wip-us.apache.org/repos/asf/james-project/blob/61b8caa3/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraMailboxManagerAttachmentTest.java
----------------------------------------------------------------------
diff --git a/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraMailboxManagerAttachmentTest.java b/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraMailboxManagerAttachmentTest.java
index d7f1a41..210911d 100644
--- a/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraMailboxManagerAttachmentTest.java
+++ b/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraMailboxManagerAttachmentTest.java
@@ -56,46 +56,55 @@ import org.apache.james.mailbox.store.event.MailboxEventDispatcher;
 import org.apache.james.mailbox.store.mail.AttachmentMapperFactory;
 import org.apache.james.mailbox.store.mail.model.impl.MessageParser;
 import org.junit.After;
+import org.junit.AfterClass;
 import org.junit.Before;
+import org.junit.BeforeClass;
 import org.junit.ClassRule;
 
 public class CassandraMailboxManagerAttachmentTest extends AbstractMailboxManagerAttachmentTest {
 
     @ClassRule public static DockerCassandraRule cassandraServer = new DockerCassandraRule();
+    private static CassandraCluster cassandra;
 
     private CassandraMailboxSessionMapperFactory mailboxSessionMapperFactory;
     private CassandraMailboxManager mailboxManager;
     private CassandraMailboxManager parseFailingMailboxManager;
-    private CassandraCluster cassandra;
+
+    @BeforeClass
+    public static void setUpClass() {
+        CassandraModuleComposite modules =
+            new CassandraModuleComposite(
+                new CassandraAclModule(),
+                new CassandraMailboxModule(),
+                new CassandraMessageModule(),
+                new CassandraBlobModule(),
+                new CassandraMailboxCounterModule(),
+                new CassandraMailboxRecentsModule(),
+                new CassandraFirstUnseenModule(),
+                new CassandraDeletedMessageModule(),
+                new CassandraModSeqModule(),
+                new CassandraUidModule(),
+                new CassandraAttachmentModule(),
+                new CassandraApplicableFlagsModule());
+        cassandra = CassandraCluster.create(modules, cassandraServer.getHost());
+    }
 
     @Before
     public void init() throws Exception {
-        
-        CassandraModuleComposite modules = 
-                new CassandraModuleComposite(
-                    new CassandraAclModule(),
-                    new CassandraMailboxModule(),
-                    new CassandraMessageModule(),
-                    new CassandraBlobModule(),
-                    new CassandraMailboxCounterModule(),
-                    new CassandraMailboxRecentsModule(),
-                    new CassandraFirstUnseenModule(),
-                    new CassandraDeletedMessageModule(),
-                    new CassandraModSeqModule(),
-                    new CassandraUidModule(),
-                    new CassandraAttachmentModule(),
-                    new CassandraApplicableFlagsModule());
-        cassandra = CassandraCluster.create(modules, cassandraServer.getIp(), cassandraServer.getBindingPort());
         initSystemUnderTest();
         super.setUp();
     }
 
     @After
     public void tearDown() {
-        cassandra.close();
+        cassandra.clearTables();
+    }
+
+    @AfterClass
+    public static void tearDownClass() {
+        cassandra.closeCluster();
     }
 
-    
     private void initSystemUnderTest() throws Exception {
         CassandraMessageId.Factory messageIdFactory = new CassandraMessageId.Factory();
 

http://git-wip-us.apache.org/repos/asf/james-project/blob/61b8caa3/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraMailboxMapperAclTest.java
----------------------------------------------------------------------
diff --git a/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraMailboxMapperAclTest.java b/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraMailboxMapperAclTest.java
index 6e65bac..d111653 100644
--- a/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraMailboxMapperAclTest.java
+++ b/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraMailboxMapperAclTest.java
@@ -26,36 +26,43 @@ import org.apache.james.mailbox.cassandra.ids.CassandraId;
 import org.apache.james.mailbox.cassandra.mail.utils.GuiceUtils;
 import org.apache.james.mailbox.cassandra.modules.CassandraAclModule;
 import org.apache.james.mailbox.cassandra.modules.CassandraMailboxModule;
-import org.apache.james.mailbox.cassandra.modules.CassandraModSeqModule;
-import org.apache.james.mailbox.cassandra.modules.CassandraUidModule;
 import org.apache.james.mailbox.model.MailboxId;
 import org.apache.james.mailbox.store.mail.MailboxMapper;
 import org.apache.james.mailbox.store.mail.model.MailboxMapperACLTest;
 import org.junit.After;
+import org.junit.AfterClass;
 import org.junit.Before;
+import org.junit.BeforeClass;
 import org.junit.ClassRule;
 
 public class CassandraMailboxMapperAclTest extends MailboxMapperACLTest {
     
     @ClassRule public static DockerCassandraRule cassandraServer = new DockerCassandraRule();
-    
-    private CassandraCluster cassandra;
+
+    private static CassandraCluster cassandra;
+
+    @BeforeClass
+    public static void setUpClass() {
+        CassandraModuleComposite modules = new CassandraModuleComposite(
+            new CassandraAclModule(),
+            new CassandraMailboxModule());
+        cassandra = CassandraCluster.create(modules, cassandraServer.getHost());
+    }
 
     @Override
     @Before
     public void setUp() throws Exception {
-        CassandraModuleComposite modules = new CassandraModuleComposite(
-            new CassandraAclModule(),
-            new CassandraMailboxModule(),
-            new CassandraModSeqModule(),
-            new CassandraUidModule());
-        this.cassandra = CassandraCluster.create(modules, cassandraServer.getHost());
         super.setUp();
     }
     
     @After
     public void tearDown() {
-        cassandra.close();
+        cassandra.clearTables();
+    }
+
+    @AfterClass
+    public static void tearDownClass() {
+        cassandra.closeCluster();
     }
 
     @Override

http://git-wip-us.apache.org/repos/asf/james-project/blob/61b8caa3/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraMailboxMapperConcurrencyTest.java
----------------------------------------------------------------------
diff --git a/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraMailboxMapperConcurrencyTest.java b/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraMailboxMapperConcurrencyTest.java
index 8f99a59..020dd22 100644
--- a/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraMailboxMapperConcurrencyTest.java
+++ b/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraMailboxMapperConcurrencyTest.java
@@ -35,7 +35,9 @@ import org.apache.james.mailbox.store.mail.model.Mailbox;
 import org.apache.james.mailbox.store.mail.model.impl.SimpleMailbox;
 import org.apache.james.util.concurrency.ConcurrentTestRunner;
 import org.junit.After;
+import org.junit.AfterClass;
 import org.junit.Before;
+import org.junit.BeforeClass;
 import org.junit.ClassRule;
 import org.junit.Test;
 
@@ -47,22 +49,31 @@ public class CassandraMailboxMapperConcurrencyTest {
     private static final int OPERATION_COUNT = 10;
 
     @ClassRule public static DockerCassandraRule cassandraServer = new DockerCassandraRule();
-    
-    private CassandraCluster cassandra;
+
+    private static CassandraCluster cassandra;
+
     private CassandraMailboxMapper testee;
 
-    @Before
-    public void setUp() {
+    @BeforeClass
+    public static void setUpClass() {
         CassandraModuleComposite modules = new CassandraModuleComposite(new CassandraMailboxModule(), new CassandraAclModule());
         cassandra = CassandraCluster.create(modules, cassandraServer.getHost());
+    }
 
+    @Before
+    public void setUp() {
         testee = GuiceUtils.testInjector(cassandra)
             .getInstance(CassandraMailboxMapper.class);
     }
 
     @After
     public void tearDown() {
-        cassandra.close();
+        cassandra.clearTables();
+    }
+
+    @AfterClass
+    public static void tearDownClass() {
+        cassandra.closeCluster();
     }
 
     @Test

http://git-wip-us.apache.org/repos/asf/james-project/blob/61b8caa3/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraMailboxMapperTest.java
----------------------------------------------------------------------
diff --git a/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraMailboxMapperTest.java b/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraMailboxMapperTest.java
index 8442e02..a849645 100644
--- a/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraMailboxMapperTest.java
+++ b/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraMailboxMapperTest.java
@@ -40,7 +40,9 @@ import org.apache.james.mailbox.model.MailboxPath;
 import org.apache.james.mailbox.store.mail.model.Mailbox;
 import org.apache.james.mailbox.store.mail.model.impl.SimpleMailbox;
 import org.junit.After;
+import org.junit.AfterClass;
 import org.junit.Before;
+import org.junit.BeforeClass;
 import org.junit.ClassRule;
 import org.junit.Test;
 
@@ -60,16 +62,21 @@ public class CassandraMailboxMapperTest {
 
     @ClassRule public static DockerCassandraRule cassandraServer = new DockerCassandraRule();
     
-    private CassandraCluster cassandra;
+    private static CassandraCluster cassandra;
+
     private CassandraMailboxDAO mailboxDAO;
     private CassandraMailboxPathDAOImpl mailboxPathDAO;
     private CassandraMailboxPathV2DAO mailboxPathV2DAO;
     private CassandraMailboxMapper testee;
 
-    @Before
-    public void setUp() {
+    @BeforeClass
+    public static void setUpClass() {
         CassandraModuleComposite modules = new CassandraModuleComposite(new CassandraMailboxModule(), new CassandraAclModule());
         cassandra = CassandraCluster.create(modules, cassandraServer.getIp(), cassandraServer.getBindingPort());
+    }
+
+    @Before
+    public void setUp() {
         mailboxDAO = new CassandraMailboxDAO(cassandra.getConf(), cassandra.getTypesProvider());
         mailboxPathDAO = new CassandraMailboxPathDAOImpl(cassandra.getConf(), cassandra.getTypesProvider());
         mailboxPathV2DAO = new CassandraMailboxPathV2DAO(cassandra.getConf(), CassandraUtils.WITH_DEFAULT_CONFIGURATION);
@@ -86,7 +93,12 @@ public class CassandraMailboxMapperTest {
 
     @After
     public void tearDown() {
-        cassandra.close();
+        cassandra.clearTables();
+    }
+
+    @AfterClass
+    public static void tearDownClass() {
+        cassandra.closeCluster();
     }
 
     @Test

http://git-wip-us.apache.org/repos/asf/james-project/blob/61b8caa3/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraMailboxPathDAOTest.java
----------------------------------------------------------------------
diff --git a/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraMailboxPathDAOTest.java b/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraMailboxPathDAOTest.java
index 14741a7..8468aa9 100644
--- a/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraMailboxPathDAOTest.java
+++ b/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraMailboxPathDAOTest.java
@@ -29,7 +29,9 @@ import org.apache.james.mailbox.cassandra.ids.CassandraId;
 import org.apache.james.mailbox.cassandra.modules.CassandraMailboxModule;
 import org.apache.james.mailbox.model.MailboxPath;
 import org.junit.After;
+import org.junit.AfterClass;
 import org.junit.Before;
+import org.junit.BeforeClass;
 import org.junit.ClassRule;
 import org.junit.Test;
 
@@ -50,22 +52,30 @@ public abstract class CassandraMailboxPathDAOTest {
     public static final MailboxPath OTHER_USER_MAILBOXPATH = MailboxPath.forUser(OTHER_USER, "INBOX");
 
     @ClassRule public static DockerCassandraRule cassandraServer = new DockerCassandraRule();
-    
-    protected CassandraCluster cassandra;
+
+    protected static CassandraCluster cassandra;
 
     protected CassandraMailboxPathDAO testee;
 
     abstract CassandraMailboxPathDAO testee();
+    @BeforeClass
+    public static void setUpClass() {
+        cassandra = CassandraCluster.create(new CassandraMailboxModule(), cassandraServer.getHost());
+    }
 
     @Before
     public void setUp() throws Exception {
-        cassandra = CassandraCluster.create(new CassandraMailboxModule(), cassandraServer.getIp(), cassandraServer.getBindingPort());
         testee = testee();
     }
 
     @After
     public void tearDown() {
-        cassandra.close();
+        cassandra.clearTables();
+    }
+
+    @AfterClass
+    public static void tearDownClass() {
+        cassandra.closeCluster();
     }
 
     @Test


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


[08/15] james-project git commit: JAMES-2470 Strong typing for Cassandra host

Posted by bt...@apache.org.
JAMES-2470 Strong typing for Cassandra host


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

Branch: refs/heads/master
Commit: fcf79c0fc4afb713a9d88c6fbb7b849bae391348
Parents: 61b8caa
Author: benwa <bt...@linagora.com>
Authored: Tue Jul 24 10:49:24 2018 +0700
Committer: benwa <bt...@linagora.com>
Committed: Wed Jul 25 16:44:13 2018 +0700

----------------------------------------------------------------------
 .../backends/cassandra/CassandraCluster.java    | 20 +++-----
 .../cassandra/DockerCassandraExtension.java     | 31 ++++-------
 .../init/CassandraTypeProviderTest.java         |  2 +-
 .../CassandraGenericEventStoreExtension.java    |  2 +-
 .../CassandraMailboxManagerStressTest.java      |  2 +-
 .../cassandra/CassandraMailboxManagerTest.java  |  2 +-
 .../mail/CassandraApplicableFlagDAOTest.java    |  2 +-
 .../mail/CassandraMailboxMapperTest.java        |  2 +-
 .../mail/CassandraMessageMapperTest.java        |  2 +-
 .../migration/MailboxPathV2MigrationTest.java   |  3 +-
 .../quota/CassandraCurrentQuotaManagerTest.java |  2 +-
 .../user/CassandraSubscriptionMapperTest.java   |  2 +-
 .../cassandra/host/CassandraHostSystem.java     |  9 ++--
 .../cassandra/host/CassandraHostSystemRule.java |  2 +-
 .../cassandra/CassandraAuthenticateTest.java    |  7 +--
 .../cassandra/CassandraCapabilityTest.java      |  7 +--
 .../cassandra/CassandraCheckScriptTest.java     |  7 +--
 .../cassandra/CassandraDeleteScriptTest.java    |  7 +--
 .../cassandra/CassandraGetScriptTest.java       |  7 +--
 .../cassandra/CassandraHaveSpaceTest.java       |  7 +--
 .../cassandra/CassandraListScriptsTest.java     |  7 +--
 .../cassandra/CassandraLogoutTest.java          |  7 +--
 .../managesieve/cassandra/CassandraModule.java  |  9 ++--
 .../cassandra/CassandraNoopTest.java            |  7 +--
 .../cassandra/CassandraPutScriptTest.java       |  7 +--
 .../cassandra/CassandraRenameScriptTest.java    |  7 +--
 .../cassandra/CassandraSetActiveTest.java       |  7 +--
 .../cassandra/CassandraStartTlsTest.java        |  7 +--
 .../cassandra/CassandraUnauthenticatedTest.java |  7 +--
 .../cassandra/host/CassandraHostSystem.java     |  9 ++--
 .../smtp/host/CassandraJamesSmtpHostSystem.java | 12 +++--
 .../blob/cassandra/CassandraBlobsDAOTest.java   |  2 +-
 .../james/modules/CassandraTestModule.java      | 54 --------------------
 ...tSourcingDLPConfigurationStoreExtension.java |  3 +-
 .../james/rrt/cassandra/CassandraStepdefs.java  |  2 +-
 .../CassandraMailRepositoryCountDAOTest.java    |  2 +-
 .../CassandraMailRepositoryKeysDAOTest.java     |  2 +-
 .../CassandraMailRepositoryMailDAOTest.java     |  2 +-
 .../cassandra/CassandraMailRepositoryTest.java  |  2 +-
 39 files changed, 82 insertions(+), 198 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/james-project/blob/fcf79c0f/backends-common/cassandra/src/test/java/org/apache/james/backends/cassandra/CassandraCluster.java
----------------------------------------------------------------------
diff --git a/backends-common/cassandra/src/test/java/org/apache/james/backends/cassandra/CassandraCluster.java b/backends-common/cassandra/src/test/java/org/apache/james/backends/cassandra/CassandraCluster.java
index 3d0304b..2db3b16 100644
--- a/backends-common/cassandra/src/test/java/org/apache/james/backends/cassandra/CassandraCluster.java
+++ b/backends-common/cassandra/src/test/java/org/apache/james/backends/cassandra/CassandraCluster.java
@@ -18,9 +18,6 @@
  ****************************************************************/
 package org.apache.james.backends.cassandra;
 
-import javax.inject.Inject;
-import javax.inject.Named;
-
 import org.apache.james.backends.cassandra.components.CassandraModule;
 import org.apache.james.backends.cassandra.init.CassandraTableManager;
 import org.apache.james.backends.cassandra.init.CassandraTypesProvider;
@@ -41,25 +38,20 @@ public final class CassandraCluster implements AutoCloseable {
     private CassandraTypesProvider typesProvider;
     private Cluster cluster;
 
-    public static CassandraCluster create(CassandraModule module, String host, int port) {
-        return new CassandraCluster(module, host, port);
-    }
-
     public static CassandraCluster create(CassandraModule module, Host host) {
-        return new CassandraCluster(module, host.getHostName(), host.getPort());
+        return new CassandraCluster(module, host);
     }
-    
-    @Inject
-    private CassandraCluster(CassandraModule module, @Named("cassandraHost") String host, @Named("cassandraPort") int port) throws RuntimeException {
+
+    private CassandraCluster(CassandraModule module, Host host) throws RuntimeException {
         this.module = module;
         try {
             cluster = ClusterBuilder.builder()
-                .host(host)
-                .port(port)
+                .host(host.getHostName())
+                .port(host.getPort())
                 .build();
             session = new SessionWithInitializedTablesFactory(
                 ClusterConfiguration.builder()
-                    .host(Host.from(host, port))
+                    .host(host)
                     .keyspace(KEYSPACE)
                     .replicationFactor(1)
                     .build(),

http://git-wip-us.apache.org/repos/asf/james-project/blob/fcf79c0f/backends-common/cassandra/src/test/java/org/apache/james/backends/cassandra/DockerCassandraExtension.java
----------------------------------------------------------------------
diff --git a/backends-common/cassandra/src/test/java/org/apache/james/backends/cassandra/DockerCassandraExtension.java b/backends-common/cassandra/src/test/java/org/apache/james/backends/cassandra/DockerCassandraExtension.java
index add70c8..7ad686a 100644
--- a/backends-common/cassandra/src/test/java/org/apache/james/backends/cassandra/DockerCassandraExtension.java
+++ b/backends-common/cassandra/src/test/java/org/apache/james/backends/cassandra/DockerCassandraExtension.java
@@ -19,13 +19,13 @@
 
 package org.apache.james.backends.cassandra;
 
+import org.apache.james.util.Host;
 import org.junit.jupiter.api.extension.AfterAllCallback;
 import org.junit.jupiter.api.extension.BeforeAllCallback;
 import org.junit.jupiter.api.extension.ExtensionContext;
 import org.junit.jupiter.api.extension.ParameterContext;
 import org.junit.jupiter.api.extension.ParameterResolutionException;
 import org.junit.jupiter.api.extension.ParameterResolver;
-import org.testcontainers.containers.GenericContainer;
 
 public class DockerCassandraExtension implements BeforeAllCallback, AfterAllCallback, ParameterResolver {
 
@@ -37,13 +37,13 @@ public class DockerCassandraExtension implements BeforeAllCallback, AfterAllCall
     }
 
     @Override
-    public void beforeAll(ExtensionContext context) throws Exception {
+    public void beforeAll(ExtensionContext context) {
         cassandraContainer.start();
-        dockerCassandra = DockerCassandra.from(cassandraContainer.getRawContainer());
+        dockerCassandra = new DockerCassandra(cassandraContainer.getHost());
     }
 
     @Override
-    public void afterAll(ExtensionContext context) throws Exception {
+    public void afterAll(ExtensionContext context) {
         cassandraContainer.stop();
     }
 
@@ -62,27 +62,14 @@ public class DockerCassandraExtension implements BeforeAllCallback, AfterAllCall
     }
     
     public static class DockerCassandra {
-        
-        private static final int CASSANDRA_PORT = 9042;
+        private final Host host;
 
-        public static DockerCassandra from(GenericContainer<?> cassandraContainer) {
-            return new DockerCassandra(cassandraContainer.getContainerIpAddress(), cassandraContainer.getMappedPort(CASSANDRA_PORT));
+        private DockerCassandra(Host host) {
+            this.host = host;
         }
 
-        private final String ip;
-        private final int bindingPort;
-
-        private DockerCassandra(String ip, int bindingPort) {
-            this.ip = ip;
-            this.bindingPort = bindingPort;
-        }
-
-        public String getIp() {
-            return ip;
-        }
-    
-        public int getBindingPort() {
-            return bindingPort;
+        public Host getHost() {
+            return host;
         }
     }
 

http://git-wip-us.apache.org/repos/asf/james-project/blob/fcf79c0f/backends-common/cassandra/src/test/java/org/apache/james/backends/cassandra/init/CassandraTypeProviderTest.java
----------------------------------------------------------------------
diff --git a/backends-common/cassandra/src/test/java/org/apache/james/backends/cassandra/init/CassandraTypeProviderTest.java b/backends-common/cassandra/src/test/java/org/apache/james/backends/cassandra/init/CassandraTypeProviderTest.java
index 4a3212b..1b48b22 100644
--- a/backends-common/cassandra/src/test/java/org/apache/james/backends/cassandra/init/CassandraTypeProviderTest.java
+++ b/backends-common/cassandra/src/test/java/org/apache/james/backends/cassandra/init/CassandraTypeProviderTest.java
@@ -62,7 +62,7 @@ public class CassandraTypeProviderTest {
                         .addColumn(PROPERTY, text()))));
             }
         };
-        cassandra = CassandraCluster.create(module, cassandraServer.getIp(), cassandraServer.getBindingPort());
+        cassandra = CassandraCluster.create(module, cassandraServer.getHost());
         cassandra.getTypesProvider();
     }
 

http://git-wip-us.apache.org/repos/asf/james-project/blob/fcf79c0f/event-sourcing/event-store-cassandra/src/test/java/org/apache/james/eventsourcing/eventstore/cassandra/CassandraGenericEventStoreExtension.java
----------------------------------------------------------------------
diff --git a/event-sourcing/event-store-cassandra/src/test/java/org/apache/james/eventsourcing/eventstore/cassandra/CassandraGenericEventStoreExtension.java b/event-sourcing/event-store-cassandra/src/test/java/org/apache/james/eventsourcing/eventstore/cassandra/CassandraGenericEventStoreExtension.java
index 59d0248..1db5f09 100644
--- a/event-sourcing/event-store-cassandra/src/test/java/org/apache/james/eventsourcing/eventstore/cassandra/CassandraGenericEventStoreExtension.java
+++ b/event-sourcing/event-store-cassandra/src/test/java/org/apache/james/eventsourcing/eventstore/cassandra/CassandraGenericEventStoreExtension.java
@@ -53,7 +53,7 @@ public class CassandraGenericEventStoreExtension implements BeforeAllCallback, A
         dockerCassandraExtension.beforeAll(context);
         dockerCassandra = dockerCassandraExtension.getDockerCassandra();
         cassandra = CassandraCluster.create(
-            new CassandraEventStoreModule(), dockerCassandra.getIp(), dockerCassandra.getBindingPort());
+            new CassandraEventStoreModule(), dockerCassandra.getHost());
     }
 
     @Override

http://git-wip-us.apache.org/repos/asf/james-project/blob/fcf79c0f/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/CassandraMailboxManagerStressTest.java
----------------------------------------------------------------------
diff --git a/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/CassandraMailboxManagerStressTest.java b/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/CassandraMailboxManagerStressTest.java
index f84be5a..33c263c 100644
--- a/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/CassandraMailboxManagerStressTest.java
+++ b/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/CassandraMailboxManagerStressTest.java
@@ -69,7 +69,7 @@ public class CassandraMailboxManagerStressTest extends MailboxManagerStressTest
             new CassandraAnnotationModule(),
             new CassandraApplicableFlagsModule(),
             new CassandraQuotaModule());
-        cassandra = CassandraCluster.create(modules, cassandraServer.getIp(), cassandraServer.getBindingPort());
+        cassandra = CassandraCluster.create(modules, cassandraServer.getHost());
     }
     
     @Before

http://git-wip-us.apache.org/repos/asf/james-project/blob/fcf79c0f/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/CassandraMailboxManagerTest.java
----------------------------------------------------------------------
diff --git a/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/CassandraMailboxManagerTest.java b/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/CassandraMailboxManagerTest.java
index 0995257..9e7e2e0 100644
--- a/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/CassandraMailboxManagerTest.java
+++ b/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/CassandraMailboxManagerTest.java
@@ -68,7 +68,7 @@ public class CassandraMailboxManagerTest extends MailboxManagerTest {
             new CassandraAnnotationModule(),
             new CassandraApplicableFlagsModule(),
             new CassandraQuotaModule());
-        cassandra = CassandraCluster.create(modules, cassandraServer.getIp(), cassandraServer.getBindingPort());
+        cassandra = CassandraCluster.create(modules, cassandraServer.getHost());
     }
 
     @Before

http://git-wip-us.apache.org/repos/asf/james-project/blob/fcf79c0f/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraApplicableFlagDAOTest.java
----------------------------------------------------------------------
diff --git a/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraApplicableFlagDAOTest.java b/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraApplicableFlagDAOTest.java
index af07d23..87b1701 100644
--- a/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraApplicableFlagDAOTest.java
+++ b/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraApplicableFlagDAOTest.java
@@ -51,7 +51,7 @@ public class CassandraApplicableFlagDAOTest {
 
     @BeforeClass
     public static void setUpClass() {
-        cassandra = CassandraCluster.create(new CassandraApplicableFlagsModule(), cassandraServer.getIp(), cassandraServer.getBindingPort());
+        cassandra = CassandraCluster.create(new CassandraApplicableFlagsModule(), cassandraServer.getHost());
     }
 
     @Before

http://git-wip-us.apache.org/repos/asf/james-project/blob/fcf79c0f/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraMailboxMapperTest.java
----------------------------------------------------------------------
diff --git a/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraMailboxMapperTest.java b/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraMailboxMapperTest.java
index a849645..7e3d439 100644
--- a/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraMailboxMapperTest.java
+++ b/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraMailboxMapperTest.java
@@ -72,7 +72,7 @@ public class CassandraMailboxMapperTest {
     @BeforeClass
     public static void setUpClass() {
         CassandraModuleComposite modules = new CassandraModuleComposite(new CassandraMailboxModule(), new CassandraAclModule());
-        cassandra = CassandraCluster.create(modules, cassandraServer.getIp(), cassandraServer.getBindingPort());
+        cassandra = CassandraCluster.create(modules, cassandraServer.getHost());
     }
 
     @Before

http://git-wip-us.apache.org/repos/asf/james-project/blob/fcf79c0f/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraMessageMapperTest.java
----------------------------------------------------------------------
diff --git a/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraMessageMapperTest.java b/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraMessageMapperTest.java
index 56cb3ba..f49f6d5 100644
--- a/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraMessageMapperTest.java
+++ b/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraMessageMapperTest.java
@@ -65,7 +65,7 @@ public class CassandraMessageMapperTest extends MessageMapperTest {
             new CassandraApplicableFlagsModule(),
             new CassandraDeletedMessageModule(),
             new CassandraBlobModule());
-        cassandra = CassandraCluster.create(modules, cassandraServer.getIp(), cassandraServer.getBindingPort());
+        cassandra = CassandraCluster.create(modules, cassandraServer.getHost());
     }
 
     @Override

http://git-wip-us.apache.org/repos/asf/james-project/blob/fcf79c0f/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/migration/MailboxPathV2MigrationTest.java
----------------------------------------------------------------------
diff --git a/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/migration/MailboxPathV2MigrationTest.java b/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/migration/MailboxPathV2MigrationTest.java
index 2d64288..f37259d 100644
--- a/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/migration/MailboxPathV2MigrationTest.java
+++ b/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/migration/MailboxPathV2MigrationTest.java
@@ -70,8 +70,7 @@ public class MailboxPathV2MigrationTest {
             new CassandraModuleComposite(
                 new CassandraMailboxModule(),
                 new CassandraAclModule()),
-            cassandraServer.getIp(),
-            cassandraServer.getBindingPort());
+            cassandraServer.getHost());
     }
 
     @Before

http://git-wip-us.apache.org/repos/asf/james-project/blob/fcf79c0f/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/quota/CassandraCurrentQuotaManagerTest.java
----------------------------------------------------------------------
diff --git a/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/quota/CassandraCurrentQuotaManagerTest.java b/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/quota/CassandraCurrentQuotaManagerTest.java
index 80ed628..004b76d 100644
--- a/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/quota/CassandraCurrentQuotaManagerTest.java
+++ b/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/quota/CassandraCurrentQuotaManagerTest.java
@@ -37,7 +37,7 @@ public class CassandraCurrentQuotaManagerTest extends StoreCurrentQuotaManagerTe
 
     @BeforeClass
     public static void setUpClass() {
-        cassandra = CassandraCluster.create(new CassandraQuotaModule(), cassandraServer.getIp(), cassandraServer.getBindingPort());
+        cassandra = CassandraCluster.create(new CassandraQuotaModule(), cassandraServer.getHost());
     }
 
     @Override

http://git-wip-us.apache.org/repos/asf/james-project/blob/fcf79c0f/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/user/CassandraSubscriptionMapperTest.java
----------------------------------------------------------------------
diff --git a/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/user/CassandraSubscriptionMapperTest.java b/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/user/CassandraSubscriptionMapperTest.java
index 0b0d817..84a5294 100644
--- a/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/user/CassandraSubscriptionMapperTest.java
+++ b/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/user/CassandraSubscriptionMapperTest.java
@@ -37,7 +37,7 @@ public class CassandraSubscriptionMapperTest extends SubscriptionMapperTest {
 
     @BeforeClass
     public static void setUpClass() {
-        cassandra = CassandraCluster.create(new CassandraSubscriptionModule(), cassandraServer.getIp(), cassandraServer.getBindingPort());
+        cassandra = CassandraCluster.create(new CassandraSubscriptionModule(), cassandraServer.getHost());
     }
     @Override
     protected SubscriptionMapper createSubscriptionMapper() {

http://git-wip-us.apache.org/repos/asf/james-project/blob/fcf79c0f/mpt/impl/imap-mailbox/cassandra/src/test/java/org/apache/james/mpt/imapmailbox/cassandra/host/CassandraHostSystem.java
----------------------------------------------------------------------
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 dbb2006..478ea37 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
@@ -70,6 +70,7 @@ import org.apache.james.metrics.logger.DefaultMetricFactory;
 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;
 
 public class CassandraHostSystem extends JamesImapHostSystem {
 
@@ -97,21 +98,19 @@ public class CassandraHostSystem extends JamesImapHostSystem {
             new CassandraAnnotationModule(),
             new CassandraApplicableFlagsModule());
 
-    private final String cassandraHost;
-    private final int cassandraPort;
+    private final Host cassandraHost;
     private CassandraMailboxManager mailboxManager;
     private CassandraCluster cassandra;
     private CassandraPerUserMaxQuotaManager perUserMaxQuotaManager;
     
-    public CassandraHostSystem(String cassandraHost, int cassandraPort) {
+    public CassandraHostSystem(Host cassandraHost) {
         this.cassandraHost = cassandraHost;
-        this.cassandraPort = cassandraPort;
     }
 
     @Override
     public void beforeTest() throws Exception {
         super.beforeTest();
-        cassandra = CassandraCluster.create(mailboxModule, cassandraHost, cassandraPort);
+        cassandra = CassandraCluster.create(mailboxModule, cassandraHost);
         com.datastax.driver.core.Session session = cassandra.getConf();
         CassandraMessageId.Factory messageIdFactory = new CassandraMessageId.Factory();
         CassandraMailboxSessionMapperFactory mapperFactory = TestCassandraMailboxSessionMapperFactory.forTests(

http://git-wip-us.apache.org/repos/asf/james-project/blob/fcf79c0f/mpt/impl/imap-mailbox/cassandra/src/test/java/org/apache/james/mpt/imapmailbox/cassandra/host/CassandraHostSystemRule.java
----------------------------------------------------------------------
diff --git a/mpt/impl/imap-mailbox/cassandra/src/test/java/org/apache/james/mpt/imapmailbox/cassandra/host/CassandraHostSystemRule.java b/mpt/impl/imap-mailbox/cassandra/src/test/java/org/apache/james/mpt/imapmailbox/cassandra/host/CassandraHostSystemRule.java
index 88358b6..f9cbcc5 100644
--- a/mpt/impl/imap-mailbox/cassandra/src/test/java/org/apache/james/mpt/imapmailbox/cassandra/host/CassandraHostSystemRule.java
+++ b/mpt/impl/imap-mailbox/cassandra/src/test/java/org/apache/james/mpt/imapmailbox/cassandra/host/CassandraHostSystemRule.java
@@ -32,7 +32,7 @@ public class CassandraHostSystemRule extends ExternalResource {
 
     @Override
     protected void before() throws Throwable {
-        system = new CassandraHostSystem(cassandraServer.getIp(), cassandraServer.getBindingPort());
+        system = new CassandraHostSystem(cassandraServer.getHost());
         system.beforeTest();
     }
 

http://git-wip-us.apache.org/repos/asf/james-project/blob/fcf79c0f/mpt/impl/managesieve/cassandra/src/test/java/org/apache/james/mpt/managesieve/cassandra/CassandraAuthenticateTest.java
----------------------------------------------------------------------
diff --git a/mpt/impl/managesieve/cassandra/src/test/java/org/apache/james/mpt/managesieve/cassandra/CassandraAuthenticateTest.java b/mpt/impl/managesieve/cassandra/src/test/java/org/apache/james/mpt/managesieve/cassandra/CassandraAuthenticateTest.java
index 38b8af9..7fc1f12 100644
--- a/mpt/impl/managesieve/cassandra/src/test/java/org/apache/james/mpt/managesieve/cassandra/CassandraAuthenticateTest.java
+++ b/mpt/impl/managesieve/cassandra/src/test/java/org/apache/james/mpt/managesieve/cassandra/CassandraAuthenticateTest.java
@@ -21,14 +21,12 @@ package org.apache.james.mpt.managesieve.cassandra;
 
 import org.apache.james.backends.cassandra.DockerCassandraRule;
 import org.apache.james.mpt.host.ManageSieveHostSystem;
+import org.apache.james.mpt.managesieve.cassandra.host.CassandraHostSystem;
 import org.apache.james.mpt.testsuite.AuthenticateTest;
 import org.junit.After;
 import org.junit.Before;
 import org.junit.ClassRule;
 
-import com.google.inject.Guice;
-import com.google.inject.Injector;
-
 public class CassandraAuthenticateTest extends AuthenticateTest {
 
     @ClassRule public static DockerCassandraRule cassandraServer = new DockerCassandraRule();
@@ -38,8 +36,7 @@ public class CassandraAuthenticateTest extends AuthenticateTest {
     @Override
     @Before
     public void setUp() throws Exception {
-        Injector injector = Guice.createInjector(new CassandraModule(cassandraServer.getIp(), cassandraServer.getBindingPort()));
-        system = injector.getInstance(ManageSieveHostSystem.class);
+        system = new CassandraHostSystem(cassandraServer.getHost());
         system.beforeTest();
         super.setUp();
     }

http://git-wip-us.apache.org/repos/asf/james-project/blob/fcf79c0f/mpt/impl/managesieve/cassandra/src/test/java/org/apache/james/mpt/managesieve/cassandra/CassandraCapabilityTest.java
----------------------------------------------------------------------
diff --git a/mpt/impl/managesieve/cassandra/src/test/java/org/apache/james/mpt/managesieve/cassandra/CassandraCapabilityTest.java b/mpt/impl/managesieve/cassandra/src/test/java/org/apache/james/mpt/managesieve/cassandra/CassandraCapabilityTest.java
index e9fc00a..7d26e5e 100644
--- a/mpt/impl/managesieve/cassandra/src/test/java/org/apache/james/mpt/managesieve/cassandra/CassandraCapabilityTest.java
+++ b/mpt/impl/managesieve/cassandra/src/test/java/org/apache/james/mpt/managesieve/cassandra/CassandraCapabilityTest.java
@@ -21,14 +21,12 @@ package org.apache.james.mpt.managesieve.cassandra;
 
 import org.apache.james.backends.cassandra.DockerCassandraRule;
 import org.apache.james.mpt.host.ManageSieveHostSystem;
+import org.apache.james.mpt.managesieve.cassandra.host.CassandraHostSystem;
 import org.apache.james.mpt.testsuite.CapabilityTest;
 import org.junit.After;
 import org.junit.Before;
 import org.junit.ClassRule;
 
-import com.google.inject.Guice;
-import com.google.inject.Injector;
-
 public class CassandraCapabilityTest extends CapabilityTest {
 
     @ClassRule public static DockerCassandraRule cassandraServer = new DockerCassandraRule();
@@ -38,8 +36,7 @@ public class CassandraCapabilityTest extends CapabilityTest {
     @Override
     @Before
     public void setUp() throws Exception {
-        Injector injector = Guice.createInjector(new CassandraModule(cassandraServer.getIp(), cassandraServer.getBindingPort()));
-        system = injector.getInstance(ManageSieveHostSystem.class);
+        system = new CassandraHostSystem(cassandraServer.getHost());
         system.beforeTest();
         super.setUp();
     }

http://git-wip-us.apache.org/repos/asf/james-project/blob/fcf79c0f/mpt/impl/managesieve/cassandra/src/test/java/org/apache/james/mpt/managesieve/cassandra/CassandraCheckScriptTest.java
----------------------------------------------------------------------
diff --git a/mpt/impl/managesieve/cassandra/src/test/java/org/apache/james/mpt/managesieve/cassandra/CassandraCheckScriptTest.java b/mpt/impl/managesieve/cassandra/src/test/java/org/apache/james/mpt/managesieve/cassandra/CassandraCheckScriptTest.java
index ad0362c..334fd8f 100644
--- a/mpt/impl/managesieve/cassandra/src/test/java/org/apache/james/mpt/managesieve/cassandra/CassandraCheckScriptTest.java
+++ b/mpt/impl/managesieve/cassandra/src/test/java/org/apache/james/mpt/managesieve/cassandra/CassandraCheckScriptTest.java
@@ -21,14 +21,12 @@ package org.apache.james.mpt.managesieve.cassandra;
 
 import org.apache.james.backends.cassandra.DockerCassandraRule;
 import org.apache.james.mpt.host.ManageSieveHostSystem;
+import org.apache.james.mpt.managesieve.cassandra.host.CassandraHostSystem;
 import org.apache.james.mpt.testsuite.CheckScriptTest;
 import org.junit.After;
 import org.junit.Before;
 import org.junit.ClassRule;
 
-import com.google.inject.Guice;
-import com.google.inject.Injector;
-
 public class CassandraCheckScriptTest extends CheckScriptTest {
 
     @ClassRule public static DockerCassandraRule cassandraServer = new DockerCassandraRule();
@@ -38,8 +36,7 @@ public class CassandraCheckScriptTest extends CheckScriptTest {
     @Override
     @Before
     public void setUp() throws Exception {
-        Injector injector = Guice.createInjector(new CassandraModule(cassandraServer.getIp(), cassandraServer.getBindingPort()));
-        system = injector.getInstance(ManageSieveHostSystem.class);
+        system = new CassandraHostSystem(cassandraServer.getHost());
         system.beforeTest();
         super.setUp();
     }

http://git-wip-us.apache.org/repos/asf/james-project/blob/fcf79c0f/mpt/impl/managesieve/cassandra/src/test/java/org/apache/james/mpt/managesieve/cassandra/CassandraDeleteScriptTest.java
----------------------------------------------------------------------
diff --git a/mpt/impl/managesieve/cassandra/src/test/java/org/apache/james/mpt/managesieve/cassandra/CassandraDeleteScriptTest.java b/mpt/impl/managesieve/cassandra/src/test/java/org/apache/james/mpt/managesieve/cassandra/CassandraDeleteScriptTest.java
index 27fe710..a6d635b 100644
--- a/mpt/impl/managesieve/cassandra/src/test/java/org/apache/james/mpt/managesieve/cassandra/CassandraDeleteScriptTest.java
+++ b/mpt/impl/managesieve/cassandra/src/test/java/org/apache/james/mpt/managesieve/cassandra/CassandraDeleteScriptTest.java
@@ -21,14 +21,12 @@ package org.apache.james.mpt.managesieve.cassandra;
 
 import org.apache.james.backends.cassandra.DockerCassandraRule;
 import org.apache.james.mpt.host.ManageSieveHostSystem;
+import org.apache.james.mpt.managesieve.cassandra.host.CassandraHostSystem;
 import org.apache.james.mpt.testsuite.DeleteScriptTest;
 import org.junit.After;
 import org.junit.Before;
 import org.junit.ClassRule;
 
-import com.google.inject.Guice;
-import com.google.inject.Injector;
-
 public class CassandraDeleteScriptTest extends DeleteScriptTest {
 
     @ClassRule public static DockerCassandraRule cassandraServer = new DockerCassandraRule();
@@ -38,8 +36,7 @@ public class CassandraDeleteScriptTest extends DeleteScriptTest {
     @Override
     @Before
     public void setUp() throws Exception {
-        Injector injector = Guice.createInjector(new CassandraModule(cassandraServer.getIp(), cassandraServer.getBindingPort()));
-        system = injector.getInstance(ManageSieveHostSystem.class);
+        system = new CassandraHostSystem(cassandraServer.getHost());
         system.beforeTest();
         super.setUp();
     }

http://git-wip-us.apache.org/repos/asf/james-project/blob/fcf79c0f/mpt/impl/managesieve/cassandra/src/test/java/org/apache/james/mpt/managesieve/cassandra/CassandraGetScriptTest.java
----------------------------------------------------------------------
diff --git a/mpt/impl/managesieve/cassandra/src/test/java/org/apache/james/mpt/managesieve/cassandra/CassandraGetScriptTest.java b/mpt/impl/managesieve/cassandra/src/test/java/org/apache/james/mpt/managesieve/cassandra/CassandraGetScriptTest.java
index cb2387f..01ee375 100644
--- a/mpt/impl/managesieve/cassandra/src/test/java/org/apache/james/mpt/managesieve/cassandra/CassandraGetScriptTest.java
+++ b/mpt/impl/managesieve/cassandra/src/test/java/org/apache/james/mpt/managesieve/cassandra/CassandraGetScriptTest.java
@@ -21,14 +21,12 @@ package org.apache.james.mpt.managesieve.cassandra;
 
 import org.apache.james.backends.cassandra.DockerCassandraRule;
 import org.apache.james.mpt.host.ManageSieveHostSystem;
+import org.apache.james.mpt.managesieve.cassandra.host.CassandraHostSystem;
 import org.apache.james.mpt.testsuite.GetScriptTest;
 import org.junit.After;
 import org.junit.Before;
 import org.junit.ClassRule;
 
-import com.google.inject.Guice;
-import com.google.inject.Injector;
-
 public class CassandraGetScriptTest extends GetScriptTest {
     
     @ClassRule public static DockerCassandraRule cassandraServer = new DockerCassandraRule();
@@ -38,8 +36,7 @@ public class CassandraGetScriptTest extends GetScriptTest {
     @Override
     @Before
     public void setUp() throws Exception {
-        Injector injector = Guice.createInjector(new CassandraModule(cassandraServer.getIp(), cassandraServer.getBindingPort()));
-        system = injector.getInstance(ManageSieveHostSystem.class);
+        system = new CassandraHostSystem(cassandraServer.getHost());
         system.beforeTest();
         super.setUp();
     }

http://git-wip-us.apache.org/repos/asf/james-project/blob/fcf79c0f/mpt/impl/managesieve/cassandra/src/test/java/org/apache/james/mpt/managesieve/cassandra/CassandraHaveSpaceTest.java
----------------------------------------------------------------------
diff --git a/mpt/impl/managesieve/cassandra/src/test/java/org/apache/james/mpt/managesieve/cassandra/CassandraHaveSpaceTest.java b/mpt/impl/managesieve/cassandra/src/test/java/org/apache/james/mpt/managesieve/cassandra/CassandraHaveSpaceTest.java
index 13361b3..ec3a602 100644
--- a/mpt/impl/managesieve/cassandra/src/test/java/org/apache/james/mpt/managesieve/cassandra/CassandraHaveSpaceTest.java
+++ b/mpt/impl/managesieve/cassandra/src/test/java/org/apache/james/mpt/managesieve/cassandra/CassandraHaveSpaceTest.java
@@ -21,14 +21,12 @@ package org.apache.james.mpt.managesieve.cassandra;
 
 import org.apache.james.backends.cassandra.DockerCassandraRule;
 import org.apache.james.mpt.host.ManageSieveHostSystem;
+import org.apache.james.mpt.managesieve.cassandra.host.CassandraHostSystem;
 import org.apache.james.mpt.testsuite.HaveSpaceTest;
 import org.junit.After;
 import org.junit.Before;
 import org.junit.ClassRule;
 
-import com.google.inject.Guice;
-import com.google.inject.Injector;
-
 public class CassandraHaveSpaceTest extends HaveSpaceTest {
 
     @ClassRule public static DockerCassandraRule cassandraServer = new DockerCassandraRule();
@@ -38,8 +36,7 @@ public class CassandraHaveSpaceTest extends HaveSpaceTest {
     @Override
     @Before
     public void setUp() throws Exception {
-        Injector injector = Guice.createInjector(new CassandraModule(cassandraServer.getIp(), cassandraServer.getBindingPort()));
-        system = injector.getInstance(ManageSieveHostSystem.class);
+        system = new CassandraHostSystem(cassandraServer.getHost());
         system.beforeTest();
         super.setUp();
     }

http://git-wip-us.apache.org/repos/asf/james-project/blob/fcf79c0f/mpt/impl/managesieve/cassandra/src/test/java/org/apache/james/mpt/managesieve/cassandra/CassandraListScriptsTest.java
----------------------------------------------------------------------
diff --git a/mpt/impl/managesieve/cassandra/src/test/java/org/apache/james/mpt/managesieve/cassandra/CassandraListScriptsTest.java b/mpt/impl/managesieve/cassandra/src/test/java/org/apache/james/mpt/managesieve/cassandra/CassandraListScriptsTest.java
index dc8f7c4..0fea827 100644
--- a/mpt/impl/managesieve/cassandra/src/test/java/org/apache/james/mpt/managesieve/cassandra/CassandraListScriptsTest.java
+++ b/mpt/impl/managesieve/cassandra/src/test/java/org/apache/james/mpt/managesieve/cassandra/CassandraListScriptsTest.java
@@ -21,14 +21,12 @@ package org.apache.james.mpt.managesieve.cassandra;
 
 import org.apache.james.backends.cassandra.DockerCassandraRule;
 import org.apache.james.mpt.host.ManageSieveHostSystem;
+import org.apache.james.mpt.managesieve.cassandra.host.CassandraHostSystem;
 import org.apache.james.mpt.testsuite.ListScriptsTest;
 import org.junit.After;
 import org.junit.Before;
 import org.junit.ClassRule;
 
-import com.google.inject.Guice;
-import com.google.inject.Injector;
-
 public abstract class CassandraListScriptsTest extends ListScriptsTest {
 
     @ClassRule public static DockerCassandraRule cassandraServer = new DockerCassandraRule();
@@ -38,8 +36,7 @@ public abstract class CassandraListScriptsTest extends ListScriptsTest {
     @Override
     @Before
     public void setUp() throws Exception {
-        Injector injector = Guice.createInjector(new CassandraModule(cassandraServer.getIp(), cassandraServer.getBindingPort()));
-        system = injector.getInstance(ManageSieveHostSystem.class);
+        system = new CassandraHostSystem(cassandraServer.getHost());
         system.beforeTest();
         super.setUp();
     }

http://git-wip-us.apache.org/repos/asf/james-project/blob/fcf79c0f/mpt/impl/managesieve/cassandra/src/test/java/org/apache/james/mpt/managesieve/cassandra/CassandraLogoutTest.java
----------------------------------------------------------------------
diff --git a/mpt/impl/managesieve/cassandra/src/test/java/org/apache/james/mpt/managesieve/cassandra/CassandraLogoutTest.java b/mpt/impl/managesieve/cassandra/src/test/java/org/apache/james/mpt/managesieve/cassandra/CassandraLogoutTest.java
index 3b9058f..87caae7 100644
--- a/mpt/impl/managesieve/cassandra/src/test/java/org/apache/james/mpt/managesieve/cassandra/CassandraLogoutTest.java
+++ b/mpt/impl/managesieve/cassandra/src/test/java/org/apache/james/mpt/managesieve/cassandra/CassandraLogoutTest.java
@@ -21,14 +21,12 @@ package org.apache.james.mpt.managesieve.cassandra;
 
 import org.apache.james.backends.cassandra.DockerCassandraRule;
 import org.apache.james.mpt.host.ManageSieveHostSystem;
+import org.apache.james.mpt.managesieve.cassandra.host.CassandraHostSystem;
 import org.apache.james.mpt.testsuite.LogoutTest;
 import org.junit.After;
 import org.junit.Before;
 import org.junit.ClassRule;
 
-import com.google.inject.Guice;
-import com.google.inject.Injector;
-
 public class CassandraLogoutTest extends LogoutTest {
     
     @ClassRule public static DockerCassandraRule cassandraServer = new DockerCassandraRule();
@@ -38,8 +36,7 @@ public class CassandraLogoutTest extends LogoutTest {
     @Override
     @Before
     public void setUp() throws Exception {
-        Injector injector = Guice.createInjector(new CassandraModule(cassandraServer.getIp(), cassandraServer.getBindingPort()));
-        system = injector.getInstance(ManageSieveHostSystem.class);
+        system = new CassandraHostSystem(cassandraServer.getHost());
         system.beforeTest();
         super.setUp();
     }

http://git-wip-us.apache.org/repos/asf/james-project/blob/fcf79c0f/mpt/impl/managesieve/cassandra/src/test/java/org/apache/james/mpt/managesieve/cassandra/CassandraModule.java
----------------------------------------------------------------------
diff --git a/mpt/impl/managesieve/cassandra/src/test/java/org/apache/james/mpt/managesieve/cassandra/CassandraModule.java b/mpt/impl/managesieve/cassandra/src/test/java/org/apache/james/mpt/managesieve/cassandra/CassandraModule.java
index cd0018d..dcc4e21 100644
--- a/mpt/impl/managesieve/cassandra/src/test/java/org/apache/james/mpt/managesieve/cassandra/CassandraModule.java
+++ b/mpt/impl/managesieve/cassandra/src/test/java/org/apache/james/mpt/managesieve/cassandra/CassandraModule.java
@@ -21,6 +21,7 @@ package org.apache.james.mpt.managesieve.cassandra;
 
 import org.apache.james.mpt.host.ManageSieveHostSystem;
 import org.apache.james.mpt.managesieve.cassandra.host.CassandraHostSystem;
+import org.apache.james.util.Host;
 
 import com.google.inject.AbstractModule;
 import com.google.inject.Provides;
@@ -28,12 +29,10 @@ import com.google.inject.Singleton;
 
 public class CassandraModule extends AbstractModule {
 
-    private final String cassandraHost;
-    private final int cassandraPort;
+    private final Host cassandraHost;
 
-    public CassandraModule(String cassandraHost, int cassandraPort) {
+    public CassandraModule(Host cassandraHost) {
         this.cassandraHost = cassandraHost;
-        this.cassandraPort = cassandraPort;
     }
     
     @Override
@@ -43,6 +42,6 @@ public class CassandraModule extends AbstractModule {
     @Provides
     @Singleton
     public ManageSieveHostSystem provideHostSystem() throws Exception {
-        return new CassandraHostSystem(cassandraHost, cassandraPort);
+        return new CassandraHostSystem(cassandraHost);
     }
 }

http://git-wip-us.apache.org/repos/asf/james-project/blob/fcf79c0f/mpt/impl/managesieve/cassandra/src/test/java/org/apache/james/mpt/managesieve/cassandra/CassandraNoopTest.java
----------------------------------------------------------------------
diff --git a/mpt/impl/managesieve/cassandra/src/test/java/org/apache/james/mpt/managesieve/cassandra/CassandraNoopTest.java b/mpt/impl/managesieve/cassandra/src/test/java/org/apache/james/mpt/managesieve/cassandra/CassandraNoopTest.java
index cf4b4f0..5dff427 100644
--- a/mpt/impl/managesieve/cassandra/src/test/java/org/apache/james/mpt/managesieve/cassandra/CassandraNoopTest.java
+++ b/mpt/impl/managesieve/cassandra/src/test/java/org/apache/james/mpt/managesieve/cassandra/CassandraNoopTest.java
@@ -21,14 +21,12 @@ package org.apache.james.mpt.managesieve.cassandra;
 
 import org.apache.james.backends.cassandra.DockerCassandraRule;
 import org.apache.james.mpt.host.ManageSieveHostSystem;
+import org.apache.james.mpt.managesieve.cassandra.host.CassandraHostSystem;
 import org.apache.james.mpt.testsuite.NoopTest;
 import org.junit.After;
 import org.junit.Before;
 import org.junit.ClassRule;
 
-import com.google.inject.Guice;
-import com.google.inject.Injector;
-
 public class CassandraNoopTest extends NoopTest {
 
     @ClassRule public static DockerCassandraRule cassandraServer = new DockerCassandraRule();
@@ -38,8 +36,7 @@ public class CassandraNoopTest extends NoopTest {
     @Override
     @Before
     public void setUp() throws Exception {
-        Injector injector = Guice.createInjector(new CassandraModule(cassandraServer.getIp(), cassandraServer.getBindingPort()));
-        system = injector.getInstance(ManageSieveHostSystem.class);
+        system = new CassandraHostSystem(cassandraServer.getHost());
         system.beforeTest();
         super.setUp();
     }

http://git-wip-us.apache.org/repos/asf/james-project/blob/fcf79c0f/mpt/impl/managesieve/cassandra/src/test/java/org/apache/james/mpt/managesieve/cassandra/CassandraPutScriptTest.java
----------------------------------------------------------------------
diff --git a/mpt/impl/managesieve/cassandra/src/test/java/org/apache/james/mpt/managesieve/cassandra/CassandraPutScriptTest.java b/mpt/impl/managesieve/cassandra/src/test/java/org/apache/james/mpt/managesieve/cassandra/CassandraPutScriptTest.java
index 6df620a..07b0507 100644
--- a/mpt/impl/managesieve/cassandra/src/test/java/org/apache/james/mpt/managesieve/cassandra/CassandraPutScriptTest.java
+++ b/mpt/impl/managesieve/cassandra/src/test/java/org/apache/james/mpt/managesieve/cassandra/CassandraPutScriptTest.java
@@ -21,14 +21,12 @@ package org.apache.james.mpt.managesieve.cassandra;
 
 import org.apache.james.backends.cassandra.DockerCassandraRule;
 import org.apache.james.mpt.host.ManageSieveHostSystem;
+import org.apache.james.mpt.managesieve.cassandra.host.CassandraHostSystem;
 import org.apache.james.mpt.testsuite.PutScriptTest;
 import org.junit.After;
 import org.junit.Before;
 import org.junit.ClassRule;
 
-import com.google.inject.Guice;
-import com.google.inject.Injector;
-
 public class CassandraPutScriptTest extends PutScriptTest {
 
     @ClassRule public static DockerCassandraRule cassandraServer = new DockerCassandraRule();
@@ -38,8 +36,7 @@ public class CassandraPutScriptTest extends PutScriptTest {
     @Override
     @Before
     public void setUp() throws Exception {
-        Injector injector = Guice.createInjector(new CassandraModule(cassandraServer.getIp(), cassandraServer.getBindingPort()));
-        system = injector.getInstance(ManageSieveHostSystem.class);
+        system = new CassandraHostSystem(cassandraServer.getHost());
         system.beforeTest();
         super.setUp();
     }

http://git-wip-us.apache.org/repos/asf/james-project/blob/fcf79c0f/mpt/impl/managesieve/cassandra/src/test/java/org/apache/james/mpt/managesieve/cassandra/CassandraRenameScriptTest.java
----------------------------------------------------------------------
diff --git a/mpt/impl/managesieve/cassandra/src/test/java/org/apache/james/mpt/managesieve/cassandra/CassandraRenameScriptTest.java b/mpt/impl/managesieve/cassandra/src/test/java/org/apache/james/mpt/managesieve/cassandra/CassandraRenameScriptTest.java
index 6972ecf..9070ab3 100644
--- a/mpt/impl/managesieve/cassandra/src/test/java/org/apache/james/mpt/managesieve/cassandra/CassandraRenameScriptTest.java
+++ b/mpt/impl/managesieve/cassandra/src/test/java/org/apache/james/mpt/managesieve/cassandra/CassandraRenameScriptTest.java
@@ -21,14 +21,12 @@ package org.apache.james.mpt.managesieve.cassandra;
 
 import org.apache.james.backends.cassandra.DockerCassandraRule;
 import org.apache.james.mpt.host.ManageSieveHostSystem;
+import org.apache.james.mpt.managesieve.cassandra.host.CassandraHostSystem;
 import org.apache.james.mpt.testsuite.RenameScriptTest;
 import org.junit.After;
 import org.junit.Before;
 import org.junit.ClassRule;
 
-import com.google.inject.Guice;
-import com.google.inject.Injector;
-
 public class CassandraRenameScriptTest extends RenameScriptTest {
 
     @ClassRule public static DockerCassandraRule cassandraServer = new DockerCassandraRule();
@@ -38,8 +36,7 @@ public class CassandraRenameScriptTest extends RenameScriptTest {
     @Override
     @Before
     public void setUp() throws Exception {
-        Injector injector = Guice.createInjector(new CassandraModule(cassandraServer.getIp(), cassandraServer.getBindingPort()));
-        system = injector.getInstance(ManageSieveHostSystem.class);
+        system = new CassandraHostSystem(cassandraServer.getHost());
         system.beforeTest();
         super.setUp();
     }

http://git-wip-us.apache.org/repos/asf/james-project/blob/fcf79c0f/mpt/impl/managesieve/cassandra/src/test/java/org/apache/james/mpt/managesieve/cassandra/CassandraSetActiveTest.java
----------------------------------------------------------------------
diff --git a/mpt/impl/managesieve/cassandra/src/test/java/org/apache/james/mpt/managesieve/cassandra/CassandraSetActiveTest.java b/mpt/impl/managesieve/cassandra/src/test/java/org/apache/james/mpt/managesieve/cassandra/CassandraSetActiveTest.java
index 17fa268..702f4e0 100644
--- a/mpt/impl/managesieve/cassandra/src/test/java/org/apache/james/mpt/managesieve/cassandra/CassandraSetActiveTest.java
+++ b/mpt/impl/managesieve/cassandra/src/test/java/org/apache/james/mpt/managesieve/cassandra/CassandraSetActiveTest.java
@@ -21,14 +21,12 @@ package org.apache.james.mpt.managesieve.cassandra;
 
 import org.apache.james.backends.cassandra.DockerCassandraRule;
 import org.apache.james.mpt.host.ManageSieveHostSystem;
+import org.apache.james.mpt.managesieve.cassandra.host.CassandraHostSystem;
 import org.apache.james.mpt.testsuite.SetActiveTest;
 import org.junit.After;
 import org.junit.Before;
 import org.junit.ClassRule;
 
-import com.google.inject.Guice;
-import com.google.inject.Injector;
-
 public class CassandraSetActiveTest extends SetActiveTest {
 
     @ClassRule public static DockerCassandraRule cassandraServer = new DockerCassandraRule();
@@ -38,8 +36,7 @@ public class CassandraSetActiveTest extends SetActiveTest {
     @Override
     @Before
     public void setUp() throws Exception {
-        Injector injector = Guice.createInjector(new CassandraModule(cassandraServer.getIp(), cassandraServer.getBindingPort()));
-        system = injector.getInstance(ManageSieveHostSystem.class);
+        system = new CassandraHostSystem(cassandraServer.getHost());
         system.beforeTest();
         super.setUp();
     }

http://git-wip-us.apache.org/repos/asf/james-project/blob/fcf79c0f/mpt/impl/managesieve/cassandra/src/test/java/org/apache/james/mpt/managesieve/cassandra/CassandraStartTlsTest.java
----------------------------------------------------------------------
diff --git a/mpt/impl/managesieve/cassandra/src/test/java/org/apache/james/mpt/managesieve/cassandra/CassandraStartTlsTest.java b/mpt/impl/managesieve/cassandra/src/test/java/org/apache/james/mpt/managesieve/cassandra/CassandraStartTlsTest.java
index 94db175..b70ec77 100644
--- a/mpt/impl/managesieve/cassandra/src/test/java/org/apache/james/mpt/managesieve/cassandra/CassandraStartTlsTest.java
+++ b/mpt/impl/managesieve/cassandra/src/test/java/org/apache/james/mpt/managesieve/cassandra/CassandraStartTlsTest.java
@@ -21,14 +21,12 @@ package org.apache.james.mpt.managesieve.cassandra;
 
 import org.apache.james.backends.cassandra.DockerCassandraRule;
 import org.apache.james.mpt.host.ManageSieveHostSystem;
+import org.apache.james.mpt.managesieve.cassandra.host.CassandraHostSystem;
 import org.apache.james.mpt.testsuite.StartTlsTest;
 import org.junit.After;
 import org.junit.Before;
 import org.junit.ClassRule;
 
-import com.google.inject.Guice;
-import com.google.inject.Injector;
-
 public class CassandraStartTlsTest extends StartTlsTest {
 
     @ClassRule public static DockerCassandraRule cassandraServer = new DockerCassandraRule();
@@ -38,8 +36,7 @@ public class CassandraStartTlsTest extends StartTlsTest {
     @Override
     @Before
     public void setUp() throws Exception {
-        Injector injector = Guice.createInjector(new CassandraModule(cassandraServer.getIp(), cassandraServer.getBindingPort()));
-        system = injector.getInstance(ManageSieveHostSystem.class);
+        system = new CassandraHostSystem(cassandraServer.getHost());
         system.beforeTest();
         super.setUp();
     }

http://git-wip-us.apache.org/repos/asf/james-project/blob/fcf79c0f/mpt/impl/managesieve/cassandra/src/test/java/org/apache/james/mpt/managesieve/cassandra/CassandraUnauthenticatedTest.java
----------------------------------------------------------------------
diff --git a/mpt/impl/managesieve/cassandra/src/test/java/org/apache/james/mpt/managesieve/cassandra/CassandraUnauthenticatedTest.java b/mpt/impl/managesieve/cassandra/src/test/java/org/apache/james/mpt/managesieve/cassandra/CassandraUnauthenticatedTest.java
index 36bfca0..badc1b9 100644
--- a/mpt/impl/managesieve/cassandra/src/test/java/org/apache/james/mpt/managesieve/cassandra/CassandraUnauthenticatedTest.java
+++ b/mpt/impl/managesieve/cassandra/src/test/java/org/apache/james/mpt/managesieve/cassandra/CassandraUnauthenticatedTest.java
@@ -21,14 +21,12 @@ package org.apache.james.mpt.managesieve.cassandra;
 
 import org.apache.james.backends.cassandra.DockerCassandraRule;
 import org.apache.james.mpt.host.ManageSieveHostSystem;
+import org.apache.james.mpt.managesieve.cassandra.host.CassandraHostSystem;
 import org.apache.james.mpt.testsuite.UnauthenticatedTest;
 import org.junit.After;
 import org.junit.Before;
 import org.junit.ClassRule;
 
-import com.google.inject.Guice;
-import com.google.inject.Injector;
-
 public class CassandraUnauthenticatedTest extends UnauthenticatedTest {
 
     @ClassRule public static DockerCassandraRule cassandraServer = new DockerCassandraRule();
@@ -38,8 +36,7 @@ public class CassandraUnauthenticatedTest extends UnauthenticatedTest {
     @Override
     @Before
     public void setUp() throws Exception {
-        Injector injector = Guice.createInjector(new CassandraModule(cassandraServer.getIp(), cassandraServer.getBindingPort()));
-        system = injector.getInstance(ManageSieveHostSystem.class);
+        system = new CassandraHostSystem(cassandraServer.getHost());
         system.beforeTest();
         super.setUp();
     }

http://git-wip-us.apache.org/repos/asf/james-project/blob/fcf79c0f/mpt/impl/managesieve/cassandra/src/test/java/org/apache/james/mpt/managesieve/cassandra/host/CassandraHostSystem.java
----------------------------------------------------------------------
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 4532781..3d5013f 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
@@ -32,16 +32,15 @@ import org.apache.james.sieverepository.api.SieveRepository;
 import org.apache.james.user.api.UsersRepository;
 import org.apache.james.user.cassandra.CassandraUsersRepository;
 import org.apache.james.user.cassandra.CassandraUsersRepositoryModule;
+import org.apache.james.util.Host;
 
 public class CassandraHostSystem extends JamesManageSieveHostSystem {
     
-    private final String cassandraHost;
-    private final int cassandraPort;
+    private final Host cassandraHost;
     private CassandraCluster cassandra;
 
-    public CassandraHostSystem(String cassandraHost, int cassandraPort) {
+    public CassandraHostSystem(Host cassandraHost) {
         this.cassandraHost = cassandraHost;
-        this.cassandraPort = cassandraPort;
     }
     
     @Override
@@ -49,7 +48,7 @@ public class CassandraHostSystem extends JamesManageSieveHostSystem {
         CassandraModuleComposite modules = new CassandraModuleComposite(
                 new CassandraSieveRepositoryModule(),
                 new CassandraUsersRepositoryModule());
-        cassandra = CassandraCluster.create(modules, cassandraHost, cassandraPort);
+        cassandra = CassandraCluster.create(modules, cassandraHost);
         super.beforeTest();
     }
 

http://git-wip-us.apache.org/repos/asf/james-project/blob/fcf79c0f/mpt/impl/smtp/cassandra/src/test/java/org/apache/james/mpt/smtp/host/CassandraJamesSmtpHostSystem.java
----------------------------------------------------------------------
diff --git a/mpt/impl/smtp/cassandra/src/test/java/org/apache/james/mpt/smtp/host/CassandraJamesSmtpHostSystem.java b/mpt/impl/smtp/cassandra/src/test/java/org/apache/james/mpt/smtp/host/CassandraJamesSmtpHostSystem.java
index 3d2d65b..c640aaa 100644
--- a/mpt/impl/smtp/cassandra/src/test/java/org/apache/james/mpt/smtp/host/CassandraJamesSmtpHostSystem.java
+++ b/mpt/impl/smtp/cassandra/src/test/java/org/apache/james/mpt/smtp/host/CassandraJamesSmtpHostSystem.java
@@ -24,9 +24,9 @@ import java.util.Iterator;
 import org.apache.commons.configuration.DefaultConfigurationBuilder;
 import org.apache.james.CassandraJamesServerMain;
 import org.apache.james.GuiceJamesServer;
+import org.apache.james.backends.cassandra.init.configuration.ClusterConfiguration;
 import org.apache.james.dnsservice.api.DNSService;
 import org.apache.james.dnsservice.api.InMemoryDNSService;
-import org.apache.james.modules.CassandraTestModule;
 import org.apache.james.modules.protocols.ProtocolHandlerModule;
 import org.apache.james.modules.protocols.SMTPServerModule;
 import org.apache.james.modules.server.CamelMailetContainerModule;
@@ -120,7 +120,13 @@ public class CassandraJamesSmtpHostSystem extends ExternalSessionFactory impleme
                 binder -> binder.bind(MailQueueItemDecoratorFactory.class).to(RawMailQueueItemDecoratorFactory.class),
                 binder -> binder.bind(CamelMailetContainerModule.DefaultProcessorsConfigurationSupplier.class)
                     .toInstance(DefaultConfigurationBuilder::new))
-            .overrideWith(new CassandraTestModule(cassandraHost),
-                (binder) -> binder.bind(DNSService.class).toInstance(inMemoryDNSService));
+            .overrideWith(
+                binder -> binder.bind(ClusterConfiguration.class).toInstance(
+                    ClusterConfiguration.builder()
+                        .host(cassandraHost)
+                        .keyspace("testing")
+                        .replicationFactor(1)
+                        .build()),
+                binder -> binder.bind(DNSService.class).toInstance(inMemoryDNSService));
     }
 }

http://git-wip-us.apache.org/repos/asf/james-project/blob/fcf79c0f/server/blob/blob-cassandra/src/test/java/org/apache/james/blob/cassandra/CassandraBlobsDAOTest.java
----------------------------------------------------------------------
diff --git a/server/blob/blob-cassandra/src/test/java/org/apache/james/blob/cassandra/CassandraBlobsDAOTest.java b/server/blob/blob-cassandra/src/test/java/org/apache/james/blob/cassandra/CassandraBlobsDAOTest.java
index 6f7ecb4..38202a3 100644
--- a/server/blob/blob-cassandra/src/test/java/org/apache/james/blob/cassandra/CassandraBlobsDAOTest.java
+++ b/server/blob/blob-cassandra/src/test/java/org/apache/james/blob/cassandra/CassandraBlobsDAOTest.java
@@ -51,7 +51,7 @@ public class CassandraBlobsDAOTest implements ObjectStoreContract {
 
     @BeforeAll
     static void setUpClass(DockerCassandra dockerCassandra) {
-        cassandra = CassandraCluster.create(new CassandraBlobModule(), dockerCassandra.getIp(), dockerCassandra.getBindingPort());
+        cassandra = CassandraCluster.create(new CassandraBlobModule(), dockerCassandra.getHost());
     }
 
     @BeforeEach

http://git-wip-us.apache.org/repos/asf/james-project/blob/fcf79c0f/server/container/guice/cassandra-guice/src/test/java/org/apache/james/modules/CassandraTestModule.java
----------------------------------------------------------------------
diff --git a/server/container/guice/cassandra-guice/src/test/java/org/apache/james/modules/CassandraTestModule.java b/server/container/guice/cassandra-guice/src/test/java/org/apache/james/modules/CassandraTestModule.java
deleted file mode 100644
index d2a1415..0000000
--- a/server/container/guice/cassandra-guice/src/test/java/org/apache/james/modules/CassandraTestModule.java
+++ /dev/null
@@ -1,54 +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.modules;
-
-import javax.inject.Singleton;
-
-import org.apache.james.backends.cassandra.CassandraCluster;
-import org.apache.james.util.Host;
-
-import com.datastax.driver.core.Session;
-import com.google.inject.AbstractModule;
-import com.google.inject.Provides;
-import com.google.inject.name.Names;
-
-public class CassandraTestModule extends AbstractModule {
-    private final Host cassandraHost;
-
-    public CassandraTestModule(Host cassandraHost) {
-        this.cassandraHost = cassandraHost;
-    }
-
-    @Override
-    protected void configure() {
-        install(binder -> binder.bindConstant()
-            .annotatedWith(Names.named("cassandraHost"))
-            .to(cassandraHost.getHostName()));
-        install(binder -> binder.bindConstant()
-            .annotatedWith(Names.named("cassandraPort"))
-            .to(cassandraHost.getPort()));
-    }
-
-    @Provides
-    @Singleton
-    Session provideSession(CassandraCluster initializedCassandra) {
-        return initializedCassandra.getConf();
-    }
-}

http://git-wip-us.apache.org/repos/asf/james-project/blob/fcf79c0f/server/data/data-cassandra/src/test/java/org/apache/james/dlp/eventsourcing/cassandra/CassandraEventSourcingDLPConfigurationStoreExtension.java
----------------------------------------------------------------------
diff --git a/server/data/data-cassandra/src/test/java/org/apache/james/dlp/eventsourcing/cassandra/CassandraEventSourcingDLPConfigurationStoreExtension.java b/server/data/data-cassandra/src/test/java/org/apache/james/dlp/eventsourcing/cassandra/CassandraEventSourcingDLPConfigurationStoreExtension.java
index 6d45afd..b10ff03 100644
--- a/server/data/data-cassandra/src/test/java/org/apache/james/dlp/eventsourcing/cassandra/CassandraEventSourcingDLPConfigurationStoreExtension.java
+++ b/server/data/data-cassandra/src/test/java/org/apache/james/dlp/eventsourcing/cassandra/CassandraEventSourcingDLPConfigurationStoreExtension.java
@@ -51,8 +51,7 @@ public class CassandraEventSourcingDLPConfigurationStoreExtension implements Bef
         dockerCassandraExtension.beforeAll(context);
         cassandra = CassandraCluster.create(
             new CassandraEventStoreModule(),
-            dockerCassandraExtension.getDockerCassandra().getIp(),
-            dockerCassandraExtension.getDockerCassandra().getBindingPort());
+            dockerCassandraExtension.getDockerCassandra().getHost());
     }
 
     @Override

http://git-wip-us.apache.org/repos/asf/james-project/blob/fcf79c0f/server/data/data-cassandra/src/test/java/org/apache/james/rrt/cassandra/CassandraStepdefs.java
----------------------------------------------------------------------
diff --git a/server/data/data-cassandra/src/test/java/org/apache/james/rrt/cassandra/CassandraStepdefs.java b/server/data/data-cassandra/src/test/java/org/apache/james/rrt/cassandra/CassandraStepdefs.java
index b62707c..4681a4b 100644
--- a/server/data/data-cassandra/src/test/java/org/apache/james/rrt/cassandra/CassandraStepdefs.java
+++ b/server/data/data-cassandra/src/test/java/org/apache/james/rrt/cassandra/CassandraStepdefs.java
@@ -39,7 +39,7 @@ public class CassandraStepdefs {
 
     @Before
     public void setup() throws Throwable {
-        cassandra = CassandraCluster.create(new CassandraRRTModule(), RewriteTablesTest.cassandraServer.getIp(), RewriteTablesTest.cassandraServer.getBindingPort());
+        cassandra = CassandraCluster.create(new CassandraRRTModule(), RewriteTablesTest.cassandraServer.getHost());
         mainStepdefs.rewriteTable = getRecipientRewriteTable();
     }
 

http://git-wip-us.apache.org/repos/asf/james-project/blob/fcf79c0f/server/mailrepository/mailrepository-cassandra/src/test/java/org/apache/james/mailrepository/cassandra/CassandraMailRepositoryCountDAOTest.java
----------------------------------------------------------------------
diff --git a/server/mailrepository/mailrepository-cassandra/src/test/java/org/apache/james/mailrepository/cassandra/CassandraMailRepositoryCountDAOTest.java b/server/mailrepository/mailrepository-cassandra/src/test/java/org/apache/james/mailrepository/cassandra/CassandraMailRepositoryCountDAOTest.java
index 7212899..b68b602 100644
--- a/server/mailrepository/mailrepository-cassandra/src/test/java/org/apache/james/mailrepository/cassandra/CassandraMailRepositoryCountDAOTest.java
+++ b/server/mailrepository/mailrepository-cassandra/src/test/java/org/apache/james/mailrepository/cassandra/CassandraMailRepositoryCountDAOTest.java
@@ -41,7 +41,7 @@ public class CassandraMailRepositoryCountDAOTest {
 
     @BeforeAll
     static void setUpClass(DockerCassandraExtension.DockerCassandra dockerCassandra) {
-        cassandra = CassandraCluster.create(new CassandraMailRepositoryModule(), dockerCassandra.getIp(), dockerCassandra.getBindingPort());
+        cassandra = CassandraCluster.create(new CassandraMailRepositoryModule(), dockerCassandra.getHost());
     }
 
     @BeforeEach

http://git-wip-us.apache.org/repos/asf/james-project/blob/fcf79c0f/server/mailrepository/mailrepository-cassandra/src/test/java/org/apache/james/mailrepository/cassandra/CassandraMailRepositoryKeysDAOTest.java
----------------------------------------------------------------------
diff --git a/server/mailrepository/mailrepository-cassandra/src/test/java/org/apache/james/mailrepository/cassandra/CassandraMailRepositoryKeysDAOTest.java b/server/mailrepository/mailrepository-cassandra/src/test/java/org/apache/james/mailrepository/cassandra/CassandraMailRepositoryKeysDAOTest.java
index 39aba93..03a905c 100644
--- a/server/mailrepository/mailrepository-cassandra/src/test/java/org/apache/james/mailrepository/cassandra/CassandraMailRepositoryKeysDAOTest.java
+++ b/server/mailrepository/mailrepository-cassandra/src/test/java/org/apache/james/mailrepository/cassandra/CassandraMailRepositoryKeysDAOTest.java
@@ -47,7 +47,7 @@ public class CassandraMailRepositoryKeysDAOTest {
 
     @BeforeAll
     static void setUpClass(DockerCassandraExtension.DockerCassandra dockerCassandra) {
-        cassandra = CassandraCluster.create(new CassandraMailRepositoryModule(), dockerCassandra.getIp(), dockerCassandra.getBindingPort());
+        cassandra = CassandraCluster.create(new CassandraMailRepositoryModule(), dockerCassandra.getHost());
     }
 
     @BeforeEach

http://git-wip-us.apache.org/repos/asf/james-project/blob/fcf79c0f/server/mailrepository/mailrepository-cassandra/src/test/java/org/apache/james/mailrepository/cassandra/CassandraMailRepositoryMailDAOTest.java
----------------------------------------------------------------------
diff --git a/server/mailrepository/mailrepository-cassandra/src/test/java/org/apache/james/mailrepository/cassandra/CassandraMailRepositoryMailDAOTest.java b/server/mailrepository/mailrepository-cassandra/src/test/java/org/apache/james/mailrepository/cassandra/CassandraMailRepositoryMailDAOTest.java
index 0888706..8bc858e 100644
--- a/server/mailrepository/mailrepository-cassandra/src/test/java/org/apache/james/mailrepository/cassandra/CassandraMailRepositoryMailDAOTest.java
+++ b/server/mailrepository/mailrepository-cassandra/src/test/java/org/apache/james/mailrepository/cassandra/CassandraMailRepositoryMailDAOTest.java
@@ -52,7 +52,7 @@ public class CassandraMailRepositoryMailDAOTest {
 
     @BeforeAll
     static void setUpClass(DockerCassandraExtension.DockerCassandra dockerCassandra) {
-        cassandra = CassandraCluster.create(new CassandraMailRepositoryModule(), dockerCassandra.getIp(), dockerCassandra.getBindingPort());
+        cassandra = CassandraCluster.create(new CassandraMailRepositoryModule(), dockerCassandra.getHost());
     }
 
     @BeforeEach

http://git-wip-us.apache.org/repos/asf/james-project/blob/fcf79c0f/server/mailrepository/mailrepository-cassandra/src/test/java/org/apache/james/mailrepository/cassandra/CassandraMailRepositoryTest.java
----------------------------------------------------------------------
diff --git a/server/mailrepository/mailrepository-cassandra/src/test/java/org/apache/james/mailrepository/cassandra/CassandraMailRepositoryTest.java b/server/mailrepository/mailrepository-cassandra/src/test/java/org/apache/james/mailrepository/cassandra/CassandraMailRepositoryTest.java
index 2d73711..2b21c0d 100644
--- a/server/mailrepository/mailrepository-cassandra/src/test/java/org/apache/james/mailrepository/cassandra/CassandraMailRepositoryTest.java
+++ b/server/mailrepository/mailrepository-cassandra/src/test/java/org/apache/james/mailrepository/cassandra/CassandraMailRepositoryTest.java
@@ -50,7 +50,7 @@ class CassandraMailRepositoryTest implements MailRepositoryContract {
         CassandraModuleComposite modules = new CassandraModuleComposite(
             new CassandraMailRepositoryModule(),
             new CassandraBlobModule());
-        cassandra = CassandraCluster.create(modules, dockerCassandra.getIp(), dockerCassandra.getBindingPort());
+        cassandra = CassandraCluster.create(modules, dockerCassandra.getHost());
     }
 
     @BeforeEach


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


[13/15] james-project git commit: MAILBOX-342 Mutualize Cassandra ManageSieve MPT tests

Posted by bt...@apache.org.
http://git-wip-us.apache.org/repos/asf/james-project/blob/2862b0b5/mpt/impl/managesieve/core/src/main/java/org/apache/james/mpt/testsuite/HaveSpaceContract.java
----------------------------------------------------------------------
diff --git a/mpt/impl/managesieve/core/src/main/java/org/apache/james/mpt/testsuite/HaveSpaceContract.java b/mpt/impl/managesieve/core/src/main/java/org/apache/james/mpt/testsuite/HaveSpaceContract.java
new file mode 100644
index 0000000..f83bab5
--- /dev/null
+++ b/mpt/impl/managesieve/core/src/main/java/org/apache/james/mpt/testsuite/HaveSpaceContract.java
@@ -0,0 +1,48 @@
+/****************************************************************
+ * 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.mpt.testsuite;
+
+import java.util.Locale;
+
+import org.apache.james.mpt.HostSystemProvider;
+import org.apache.james.mpt.host.ManageSieveHostSystem;
+import org.apache.james.mpt.script.SimpleScriptedTestProtocol;
+import org.junit.jupiter.api.Test;
+
+public interface HaveSpaceContract extends HostSystemProvider {
+    String USER = "user";
+    String PASSWORD = "password";
+
+    default SimpleScriptedTestProtocol haveSpaceContractProtocol() throws Exception {
+        return new SimpleScriptedTestProtocol("/org/apache/james/managesieve/scripts/", hostSystem())
+                .withUser(USER, PASSWORD)
+                .withLocale(Locale.US)
+                .withPreparedCommand(system ->
+                    ((ManageSieveHostSystem) system).setMaxQuota(USER, 50));
+    }
+
+    @Test
+    default void haveSpaceShouldWork() throws Exception {
+        haveSpaceContractProtocol()
+            .withLocale(Locale.US)
+            .run("havespace");
+    }
+
+}

http://git-wip-us.apache.org/repos/asf/james-project/blob/2862b0b5/mpt/impl/managesieve/core/src/main/java/org/apache/james/mpt/testsuite/HaveSpaceTest.java
----------------------------------------------------------------------
diff --git a/mpt/impl/managesieve/core/src/main/java/org/apache/james/mpt/testsuite/HaveSpaceTest.java b/mpt/impl/managesieve/core/src/main/java/org/apache/james/mpt/testsuite/HaveSpaceTest.java
deleted file mode 100644
index d4110dc..0000000
--- a/mpt/impl/managesieve/core/src/main/java/org/apache/james/mpt/testsuite/HaveSpaceTest.java
+++ /dev/null
@@ -1,63 +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.mpt.testsuite;
-
-import java.util.Locale;
-
-import org.apache.james.mpt.host.ManageSieveHostSystem;
-import org.apache.james.mpt.script.SimpleScriptedTestProtocol;
-import org.junit.After;
-import org.junit.Before;
-import org.junit.Test;
-
-public abstract class HaveSpaceTest {
-
-    public static final String USER = "user";
-    public static final String PASSWORD = "password";
-    
-    protected abstract ManageSieveHostSystem createManageSieveHostSystem();
-    
-    private ManageSieveHostSystem hostSystem;
-    private SimpleScriptedTestProtocol simpleScriptedTestProtocol;
-
-    @Before
-    public void setUp() throws Exception {
-        hostSystem = createManageSieveHostSystem();
-        hostSystem.beforeTest();
-        simpleScriptedTestProtocol = new SimpleScriptedTestProtocol("/org/apache/james/managesieve/scripts/", hostSystem)
-                .withUser(USER, PASSWORD)
-                .withLocale(Locale.US)
-                .withPreparedCommand(system ->
-                    ((ManageSieveHostSystem) system).setMaxQuota(USER, 50));
-    }
-    
-    @After
-    public void tearDown() throws Exception {
-        hostSystem.afterTest();
-    }
-
-    @Test
-    public void haveSpaceShouldWork() throws Exception {
-        simpleScriptedTestProtocol
-            .withLocale(Locale.US)
-            .run("havespace");
-    }
-
-}

http://git-wip-us.apache.org/repos/asf/james-project/blob/2862b0b5/mpt/impl/managesieve/core/src/main/java/org/apache/james/mpt/testsuite/ListScriptsContract.java
----------------------------------------------------------------------
diff --git a/mpt/impl/managesieve/core/src/main/java/org/apache/james/mpt/testsuite/ListScriptsContract.java b/mpt/impl/managesieve/core/src/main/java/org/apache/james/mpt/testsuite/ListScriptsContract.java
new file mode 100644
index 0000000..d2faf7e
--- /dev/null
+++ b/mpt/impl/managesieve/core/src/main/java/org/apache/james/mpt/testsuite/ListScriptsContract.java
@@ -0,0 +1,44 @@
+/****************************************************************
+ * 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.mpt.testsuite;
+
+import java.util.Locale;
+
+import org.apache.james.mpt.HostSystemProvider;
+import org.apache.james.mpt.script.SimpleScriptedTestProtocol;
+import org.junit.jupiter.api.Test;
+
+public interface ListScriptsContract extends HostSystemProvider {
+    String USER = "user";
+    String PASSWORD = "password";
+
+    default SimpleScriptedTestProtocol listScriptsContractProtocol() throws Exception {
+        return new SimpleScriptedTestProtocol("/org/apache/james/managesieve/scripts/", hostSystem())
+                .withUser(USER, PASSWORD)
+                .withLocale(Locale.US);
+    }
+
+    @Test
+    default void listScriptsShouldWork() throws Exception {
+        listScriptsContractProtocol()
+            .withLocale(Locale.US)
+            .run("listscripts");
+    }
+}

http://git-wip-us.apache.org/repos/asf/james-project/blob/2862b0b5/mpt/impl/managesieve/core/src/main/java/org/apache/james/mpt/testsuite/ListScriptsTest.java
----------------------------------------------------------------------
diff --git a/mpt/impl/managesieve/core/src/main/java/org/apache/james/mpt/testsuite/ListScriptsTest.java b/mpt/impl/managesieve/core/src/main/java/org/apache/james/mpt/testsuite/ListScriptsTest.java
deleted file mode 100644
index 268b049..0000000
--- a/mpt/impl/managesieve/core/src/main/java/org/apache/james/mpt/testsuite/ListScriptsTest.java
+++ /dev/null
@@ -1,60 +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.mpt.testsuite;
-
-import java.util.Locale;
-
-import org.apache.james.mpt.host.ManageSieveHostSystem;
-import org.apache.james.mpt.script.SimpleScriptedTestProtocol;
-import org.junit.After;
-import org.junit.Before;
-import org.junit.Test;
-
-public abstract class ListScriptsTest {
-
-    public static final String USER = "user";
-    public static final String PASSWORD = "password";
-    
-    protected abstract ManageSieveHostSystem createManageSieveHostSystem();
-    
-    private ManageSieveHostSystem hostSystem;
-    private SimpleScriptedTestProtocol simpleScriptedTestProtocol;
-
-    @Before
-    public void setUp() throws Exception {
-        hostSystem = createManageSieveHostSystem();
-        hostSystem.beforeTest();
-        simpleScriptedTestProtocol = new SimpleScriptedTestProtocol("/org/apache/james/managesieve/scripts/", hostSystem)
-                .withUser(USER, PASSWORD)
-                .withLocale(Locale.US);
-    }
-    
-    @After
-    public void tearDown() throws Exception {
-        hostSystem.afterTest();
-    }
-
-    @Test
-    public void listScriptsShouldWork() throws Exception {
-        simpleScriptedTestProtocol
-            .withLocale(Locale.US)
-            .run("listscripts");
-    }
-}

http://git-wip-us.apache.org/repos/asf/james-project/blob/2862b0b5/mpt/impl/managesieve/core/src/main/java/org/apache/james/mpt/testsuite/LogoutContract.java
----------------------------------------------------------------------
diff --git a/mpt/impl/managesieve/core/src/main/java/org/apache/james/mpt/testsuite/LogoutContract.java b/mpt/impl/managesieve/core/src/main/java/org/apache/james/mpt/testsuite/LogoutContract.java
new file mode 100644
index 0000000..0ba0d03
--- /dev/null
+++ b/mpt/impl/managesieve/core/src/main/java/org/apache/james/mpt/testsuite/LogoutContract.java
@@ -0,0 +1,48 @@
+/****************************************************************
+ * 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.mpt.testsuite;
+
+import java.util.Locale;
+
+import org.apache.james.mpt.HostSystemProvider;
+import org.apache.james.mpt.host.ManageSieveHostSystem;
+import org.apache.james.mpt.script.SimpleScriptedTestProtocol;
+import org.junit.jupiter.api.Test;
+
+public interface LogoutContract extends HostSystemProvider {
+
+    String USER = "user";
+    String PASSWORD = "password";
+    
+    ManageSieveHostSystem hostSystem();
+
+    default SimpleScriptedTestProtocol logoutContractProtocol() throws Exception {
+        return new SimpleScriptedTestProtocol("/org/apache/james/managesieve/scripts/", hostSystem())
+                .withUser(USER, PASSWORD)
+                .withLocale(Locale.US);
+    }
+
+    @Test
+    default void logoutShouldWork() throws Exception {
+        logoutContractProtocol()
+            .withLocale(Locale.US)
+            .run("logout");
+    }
+}

http://git-wip-us.apache.org/repos/asf/james-project/blob/2862b0b5/mpt/impl/managesieve/core/src/main/java/org/apache/james/mpt/testsuite/LogoutTest.java
----------------------------------------------------------------------
diff --git a/mpt/impl/managesieve/core/src/main/java/org/apache/james/mpt/testsuite/LogoutTest.java b/mpt/impl/managesieve/core/src/main/java/org/apache/james/mpt/testsuite/LogoutTest.java
deleted file mode 100644
index 78d938b..0000000
--- a/mpt/impl/managesieve/core/src/main/java/org/apache/james/mpt/testsuite/LogoutTest.java
+++ /dev/null
@@ -1,60 +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.mpt.testsuite;
-
-import java.util.Locale;
-
-import org.apache.james.mpt.host.ManageSieveHostSystem;
-import org.apache.james.mpt.script.SimpleScriptedTestProtocol;
-import org.junit.After;
-import org.junit.Before;
-import org.junit.Test;
-
-public abstract class LogoutTest {
-
-    public static final String USER = "user";
-    public static final String PASSWORD = "password";
-    
-    protected abstract ManageSieveHostSystem createManageSieveHostSystem();
-    
-    private ManageSieveHostSystem hostSystem;
-    private SimpleScriptedTestProtocol simpleScriptedTestProtocol;
-
-    @Before
-    public void setUp() throws Exception {
-        hostSystem = createManageSieveHostSystem();
-        hostSystem.beforeTest();
-        simpleScriptedTestProtocol = new SimpleScriptedTestProtocol("/org/apache/james/managesieve/scripts/", hostSystem)
-                .withUser(USER, PASSWORD)
-                .withLocale(Locale.US);
-    }
-    
-    @After
-    public void tearDown() throws Exception {
-        hostSystem.afterTest();
-    }
-
-    @Test
-    public void logoutShouldWork() throws Exception {
-        simpleScriptedTestProtocol
-            .withLocale(Locale.US)
-            .run("logout");
-    }
-}

http://git-wip-us.apache.org/repos/asf/james-project/blob/2862b0b5/mpt/impl/managesieve/core/src/main/java/org/apache/james/mpt/testsuite/NoopContract.java
----------------------------------------------------------------------
diff --git a/mpt/impl/managesieve/core/src/main/java/org/apache/james/mpt/testsuite/NoopContract.java b/mpt/impl/managesieve/core/src/main/java/org/apache/james/mpt/testsuite/NoopContract.java
new file mode 100644
index 0000000..2421881
--- /dev/null
+++ b/mpt/impl/managesieve/core/src/main/java/org/apache/james/mpt/testsuite/NoopContract.java
@@ -0,0 +1,45 @@
+/****************************************************************
+ * 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.mpt.testsuite;
+
+import java.util.Locale;
+
+import org.apache.james.mpt.HostSystemProvider;
+import org.apache.james.mpt.script.SimpleScriptedTestProtocol;
+import org.junit.jupiter.api.Test;
+
+public interface NoopContract extends HostSystemProvider {
+    String USER = "user";
+    String PASSWORD = "password";
+
+    default SimpleScriptedTestProtocol noopContractProtocol() throws Exception {
+        return new SimpleScriptedTestProtocol("/org/apache/james/managesieve/scripts/", hostSystem())
+                .withUser(USER, PASSWORD)
+                .withLocale(Locale.US);
+    }
+    
+    @Test
+    default void noopShouldWork() throws Exception {
+        noopContractProtocol()
+            .withLocale(Locale.US)
+            .run("noop");
+    }
+
+}

http://git-wip-us.apache.org/repos/asf/james-project/blob/2862b0b5/mpt/impl/managesieve/core/src/main/java/org/apache/james/mpt/testsuite/NoopTest.java
----------------------------------------------------------------------
diff --git a/mpt/impl/managesieve/core/src/main/java/org/apache/james/mpt/testsuite/NoopTest.java b/mpt/impl/managesieve/core/src/main/java/org/apache/james/mpt/testsuite/NoopTest.java
deleted file mode 100644
index a1731da..0000000
--- a/mpt/impl/managesieve/core/src/main/java/org/apache/james/mpt/testsuite/NoopTest.java
+++ /dev/null
@@ -1,61 +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.mpt.testsuite;
-
-import java.util.Locale;
-
-import org.apache.james.mpt.host.ManageSieveHostSystem;
-import org.apache.james.mpt.script.SimpleScriptedTestProtocol;
-import org.junit.After;
-import org.junit.Before;
-import org.junit.Test;
-
-public abstract class NoopTest {
-
-    public static final String USER = "user";
-    public static final String PASSWORD = "password";
-    
-    protected abstract ManageSieveHostSystem createManageSieveHostSystem();
-    
-    private ManageSieveHostSystem hostSystem;
-    private SimpleScriptedTestProtocol simpleScriptedTestProtocol;
-
-    @Before
-    public void setUp() throws Exception {
-        hostSystem = createManageSieveHostSystem();
-        hostSystem.beforeTest();
-        simpleScriptedTestProtocol = new SimpleScriptedTestProtocol("/org/apache/james/managesieve/scripts/", hostSystem)
-                .withUser(USER, PASSWORD)
-                .withLocale(Locale.US);
-    }
-    
-    @After
-    public void tearDown() throws Exception {
-        hostSystem.afterTest();
-    }
-    
-    @Test
-    public void noopShouldWork() throws Exception {
-        simpleScriptedTestProtocol
-            .withLocale(Locale.US)
-            .run("noop");
-    }
-
-}

http://git-wip-us.apache.org/repos/asf/james-project/blob/2862b0b5/mpt/impl/managesieve/core/src/main/java/org/apache/james/mpt/testsuite/PutScriptContract.java
----------------------------------------------------------------------
diff --git a/mpt/impl/managesieve/core/src/main/java/org/apache/james/mpt/testsuite/PutScriptContract.java b/mpt/impl/managesieve/core/src/main/java/org/apache/james/mpt/testsuite/PutScriptContract.java
new file mode 100644
index 0000000..c824f04
--- /dev/null
+++ b/mpt/impl/managesieve/core/src/main/java/org/apache/james/mpt/testsuite/PutScriptContract.java
@@ -0,0 +1,47 @@
+/****************************************************************
+ * 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.mpt.testsuite;
+
+import java.util.Locale;
+
+import org.apache.james.mpt.HostSystemProvider;
+import org.apache.james.mpt.host.ManageSieveHostSystem;
+import org.apache.james.mpt.script.SimpleScriptedTestProtocol;
+import org.junit.jupiter.api.Test;
+
+public interface PutScriptContract extends HostSystemProvider {
+    String USER = "user";
+    String PASSWORD = "password";
+
+    ManageSieveHostSystem hostSystem();
+
+    default SimpleScriptedTestProtocol putScriptContractProtocol() throws Exception {
+        return new SimpleScriptedTestProtocol("/org/apache/james/managesieve/scripts/", hostSystem())
+                .withUser(USER, PASSWORD)
+                .withLocale(Locale.US);
+    }
+
+    @Test
+    default void putScriptShouldWork() throws Exception {
+        putScriptContractProtocol()
+            .withLocale(Locale.US)
+            .run("putscript");
+    }
+}

http://git-wip-us.apache.org/repos/asf/james-project/blob/2862b0b5/mpt/impl/managesieve/core/src/main/java/org/apache/james/mpt/testsuite/PutScriptTest.java
----------------------------------------------------------------------
diff --git a/mpt/impl/managesieve/core/src/main/java/org/apache/james/mpt/testsuite/PutScriptTest.java b/mpt/impl/managesieve/core/src/main/java/org/apache/james/mpt/testsuite/PutScriptTest.java
deleted file mode 100644
index de5f425..0000000
--- a/mpt/impl/managesieve/core/src/main/java/org/apache/james/mpt/testsuite/PutScriptTest.java
+++ /dev/null
@@ -1,61 +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.mpt.testsuite;
-
-import java.util.Locale;
-
-import org.apache.james.mpt.host.ManageSieveHostSystem;
-import org.apache.james.mpt.script.SimpleScriptedTestProtocol;
-import org.junit.After;
-import org.junit.Before;
-import org.junit.Test;
-
-public abstract class PutScriptTest {
-
-    public static final String USER = "user";
-    public static final String PASSWORD = "password";
-    
-    protected abstract ManageSieveHostSystem createManageSieveHostSystem();
-    
-    private ManageSieveHostSystem hostSystem;
-    private SimpleScriptedTestProtocol simpleScriptedTestProtocol;
-
-    @Before
-    public void setUp() throws Exception {
-        hostSystem = createManageSieveHostSystem();
-        hostSystem.beforeTest();
-
-        simpleScriptedTestProtocol = new SimpleScriptedTestProtocol("/org/apache/james/managesieve/scripts/", hostSystem)
-                .withUser(USER, PASSWORD)
-                .withLocale(Locale.US);
-    }
-    
-    @After
-    public void tearDown() throws Exception {
-        hostSystem.afterTest();
-    }
-
-    @Test
-    public void putScriptShouldWork() throws Exception {
-        simpleScriptedTestProtocol
-            .withLocale(Locale.US)
-            .run("putscript");
-    }
-}

http://git-wip-us.apache.org/repos/asf/james-project/blob/2862b0b5/mpt/impl/managesieve/core/src/main/java/org/apache/james/mpt/testsuite/RenameScriptContract.java
----------------------------------------------------------------------
diff --git a/mpt/impl/managesieve/core/src/main/java/org/apache/james/mpt/testsuite/RenameScriptContract.java b/mpt/impl/managesieve/core/src/main/java/org/apache/james/mpt/testsuite/RenameScriptContract.java
new file mode 100644
index 0000000..e45ee21
--- /dev/null
+++ b/mpt/impl/managesieve/core/src/main/java/org/apache/james/mpt/testsuite/RenameScriptContract.java
@@ -0,0 +1,44 @@
+/****************************************************************
+ * 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.mpt.testsuite;
+
+import java.util.Locale;
+
+import org.apache.james.mpt.HostSystemProvider;
+import org.apache.james.mpt.script.SimpleScriptedTestProtocol;
+import org.junit.jupiter.api.Test;
+
+public interface RenameScriptContract extends HostSystemProvider {
+    String USER = "user";
+    String PASSWORD = "password";
+
+    default SimpleScriptedTestProtocol renameScriptContractProtocol() throws Exception {
+        return new SimpleScriptedTestProtocol("/org/apache/james/managesieve/scripts/", hostSystem())
+                .withUser(USER, PASSWORD)
+                .withLocale(Locale.US);
+    }
+
+    @Test
+    default void renameScriptShouldWork() throws Exception {
+        renameScriptContractProtocol()
+            .withLocale(Locale.US)
+            .run("renamescript");
+    }
+}

http://git-wip-us.apache.org/repos/asf/james-project/blob/2862b0b5/mpt/impl/managesieve/core/src/main/java/org/apache/james/mpt/testsuite/RenameScriptTest.java
----------------------------------------------------------------------
diff --git a/mpt/impl/managesieve/core/src/main/java/org/apache/james/mpt/testsuite/RenameScriptTest.java b/mpt/impl/managesieve/core/src/main/java/org/apache/james/mpt/testsuite/RenameScriptTest.java
deleted file mode 100644
index 816fb40..0000000
--- a/mpt/impl/managesieve/core/src/main/java/org/apache/james/mpt/testsuite/RenameScriptTest.java
+++ /dev/null
@@ -1,60 +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.mpt.testsuite;
-
-import java.util.Locale;
-
-import org.apache.james.mpt.host.ManageSieveHostSystem;
-import org.apache.james.mpt.script.SimpleScriptedTestProtocol;
-import org.junit.After;
-import org.junit.Before;
-import org.junit.Test;
-
-public abstract class RenameScriptTest {
-
-    public static final String USER = "user";
-    public static final String PASSWORD = "password";
-    
-    protected abstract ManageSieveHostSystem createManageSieveHostSystem();
-    
-    private ManageSieveHostSystem hostSystem;
-    private SimpleScriptedTestProtocol simpleScriptedTestProtocol;
-
-    @Before
-    public void setUp() throws Exception {
-        hostSystem = createManageSieveHostSystem();
-        hostSystem.beforeTest();
-        simpleScriptedTestProtocol = new SimpleScriptedTestProtocol("/org/apache/james/managesieve/scripts/", hostSystem)
-                .withUser(USER, PASSWORD)
-                .withLocale(Locale.US);
-    }
-    
-    @After
-    public void tearDown() throws Exception {
-        hostSystem.afterTest();
-    }
-
-    @Test
-    public void renameScriptShouldWork() throws Exception {
-        simpleScriptedTestProtocol
-            .withLocale(Locale.US)
-            .run("renamescript");
-    }
-}

http://git-wip-us.apache.org/repos/asf/james-project/blob/2862b0b5/mpt/impl/managesieve/core/src/main/java/org/apache/james/mpt/testsuite/SetActiveContract.java
----------------------------------------------------------------------
diff --git a/mpt/impl/managesieve/core/src/main/java/org/apache/james/mpt/testsuite/SetActiveContract.java b/mpt/impl/managesieve/core/src/main/java/org/apache/james/mpt/testsuite/SetActiveContract.java
new file mode 100644
index 0000000..717231b
--- /dev/null
+++ b/mpt/impl/managesieve/core/src/main/java/org/apache/james/mpt/testsuite/SetActiveContract.java
@@ -0,0 +1,44 @@
+/****************************************************************
+ * 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.mpt.testsuite;
+
+import java.util.Locale;
+
+import org.apache.james.mpt.HostSystemProvider;
+import org.apache.james.mpt.script.SimpleScriptedTestProtocol;
+import org.junit.jupiter.api.Test;
+
+public interface SetActiveContract extends HostSystemProvider {
+    String USER = "user";
+    String PASSWORD = "password";
+
+    default SimpleScriptedTestProtocol setActiveContractProtocol() throws Exception {
+        return new SimpleScriptedTestProtocol("/org/apache/james/managesieve/scripts/", hostSystem())
+                .withUser(USER, PASSWORD)
+                .withLocale(Locale.US);
+    }
+
+    @Test
+    default void setActiveShouldWork() throws Exception {
+        setActiveContractProtocol()
+            .withLocale(Locale.US)
+            .run("setactive");
+    }
+}

http://git-wip-us.apache.org/repos/asf/james-project/blob/2862b0b5/mpt/impl/managesieve/core/src/main/java/org/apache/james/mpt/testsuite/SetActiveTest.java
----------------------------------------------------------------------
diff --git a/mpt/impl/managesieve/core/src/main/java/org/apache/james/mpt/testsuite/SetActiveTest.java b/mpt/impl/managesieve/core/src/main/java/org/apache/james/mpt/testsuite/SetActiveTest.java
deleted file mode 100644
index 2ebac69..0000000
--- a/mpt/impl/managesieve/core/src/main/java/org/apache/james/mpt/testsuite/SetActiveTest.java
+++ /dev/null
@@ -1,60 +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.mpt.testsuite;
-
-import java.util.Locale;
-
-import org.apache.james.mpt.host.ManageSieveHostSystem;
-import org.apache.james.mpt.script.SimpleScriptedTestProtocol;
-import org.junit.After;
-import org.junit.Before;
-import org.junit.Test;
-
-public abstract class SetActiveTest {
-
-    public static final String USER = "user";
-    public static final String PASSWORD = "password";
-    
-    protected abstract ManageSieveHostSystem createManageSieveHostSystem();
-    
-    private ManageSieveHostSystem hostSystem;
-    private SimpleScriptedTestProtocol simpleScriptedTestProtocol;
-
-    @Before
-    public void setUp() throws Exception {
-        hostSystem = createManageSieveHostSystem();
-        hostSystem.beforeTest();
-        simpleScriptedTestProtocol = new SimpleScriptedTestProtocol("/org/apache/james/managesieve/scripts/", hostSystem)
-                .withUser(USER, PASSWORD)
-                .withLocale(Locale.US);
-    }
-    
-    @After
-    public void tearDown() throws Exception {
-        hostSystem.afterTest();
-    }
-
-    @Test
-    public void setActiveShouldWork() throws Exception {
-        simpleScriptedTestProtocol
-            .withLocale(Locale.US)
-            .run("setactive");
-    }
-}

http://git-wip-us.apache.org/repos/asf/james-project/blob/2862b0b5/mpt/impl/managesieve/core/src/main/java/org/apache/james/mpt/testsuite/StartTlsContract.java
----------------------------------------------------------------------
diff --git a/mpt/impl/managesieve/core/src/main/java/org/apache/james/mpt/testsuite/StartTlsContract.java b/mpt/impl/managesieve/core/src/main/java/org/apache/james/mpt/testsuite/StartTlsContract.java
new file mode 100644
index 0000000..ffc997e
--- /dev/null
+++ b/mpt/impl/managesieve/core/src/main/java/org/apache/james/mpt/testsuite/StartTlsContract.java
@@ -0,0 +1,45 @@
+/****************************************************************
+ * 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.mpt.testsuite;
+
+import java.util.Locale;
+
+import org.apache.james.mpt.HostSystemProvider;
+import org.apache.james.mpt.script.SimpleScriptedTestProtocol;
+import org.junit.jupiter.api.Test;
+
+public interface StartTlsContract extends HostSystemProvider {
+
+    String USER = "user";
+    String PASSWORD = "password";
+
+    default SimpleScriptedTestProtocol startTlsContractProtocol() throws Exception {
+        return new SimpleScriptedTestProtocol("/org/apache/james/managesieve/scripts/", hostSystem())
+                .withUser(USER, PASSWORD)
+                .withLocale(Locale.US);
+    }
+
+    @Test
+    default void startTlsShouldWork() throws Exception {
+        startTlsContractProtocol()
+            .withLocale(Locale.US)
+            .run("starttls");
+    }
+}

http://git-wip-us.apache.org/repos/asf/james-project/blob/2862b0b5/mpt/impl/managesieve/core/src/main/java/org/apache/james/mpt/testsuite/StartTlsTest.java
----------------------------------------------------------------------
diff --git a/mpt/impl/managesieve/core/src/main/java/org/apache/james/mpt/testsuite/StartTlsTest.java b/mpt/impl/managesieve/core/src/main/java/org/apache/james/mpt/testsuite/StartTlsTest.java
deleted file mode 100644
index b92e9a1..0000000
--- a/mpt/impl/managesieve/core/src/main/java/org/apache/james/mpt/testsuite/StartTlsTest.java
+++ /dev/null
@@ -1,60 +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.mpt.testsuite;
-
-import java.util.Locale;
-
-import org.apache.james.mpt.host.ManageSieveHostSystem;
-import org.apache.james.mpt.script.SimpleScriptedTestProtocol;
-import org.junit.After;
-import org.junit.Before;
-import org.junit.Test;
-
-public abstract class StartTlsTest {
-
-    public static final String USER = "user";
-    public static final String PASSWORD = "password";
-    
-    protected abstract ManageSieveHostSystem createManageSieveHostSystem();
-    
-    private ManageSieveHostSystem hostSystem;
-    private SimpleScriptedTestProtocol simpleScriptedTestProtocol;
-
-    @Before
-    public void setUp() throws Exception {
-        hostSystem = createManageSieveHostSystem();
-        hostSystem.beforeTest();
-        simpleScriptedTestProtocol = new SimpleScriptedTestProtocol("/org/apache/james/managesieve/scripts/", hostSystem)
-                .withUser(USER, PASSWORD)
-                .withLocale(Locale.US);
-    }
-    
-    @After
-    public void tearDown() throws Exception {
-        hostSystem.afterTest();
-    }
-
-    @Test
-    public void startTlsShouldWork() throws Exception {
-        simpleScriptedTestProtocol
-            .withLocale(Locale.US)
-            .run("starttls");
-    }
-}

http://git-wip-us.apache.org/repos/asf/james-project/blob/2862b0b5/mpt/impl/managesieve/core/src/main/java/org/apache/james/mpt/testsuite/UnauthenticatedContract.java
----------------------------------------------------------------------
diff --git a/mpt/impl/managesieve/core/src/main/java/org/apache/james/mpt/testsuite/UnauthenticatedContract.java b/mpt/impl/managesieve/core/src/main/java/org/apache/james/mpt/testsuite/UnauthenticatedContract.java
new file mode 100644
index 0000000..039ad29
--- /dev/null
+++ b/mpt/impl/managesieve/core/src/main/java/org/apache/james/mpt/testsuite/UnauthenticatedContract.java
@@ -0,0 +1,45 @@
+/****************************************************************
+ * 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.mpt.testsuite;
+
+import java.util.Locale;
+
+import org.apache.james.mpt.HostSystemProvider;
+import org.apache.james.mpt.script.SimpleScriptedTestProtocol;
+import org.junit.jupiter.api.Test;
+
+public interface UnauthenticatedContract extends HostSystemProvider {
+    String USER = "user";
+    String PASSWORD = "password";
+
+    default SimpleScriptedTestProtocol unauthenticatedContractProtocol() throws Exception {
+        return new SimpleScriptedTestProtocol("/org/apache/james/managesieve/scripts/", hostSystem())
+                .withUser(USER, PASSWORD)
+                .withLocale(Locale.US);
+    }
+    
+    @Test
+    default void unauthenticatedCommandShouldWork() throws Exception {
+        unauthenticatedContractProtocol()
+            .withLocale(Locale.US)
+            .run("unauthenticate");
+    }
+
+}

http://git-wip-us.apache.org/repos/asf/james-project/blob/2862b0b5/mpt/impl/managesieve/core/src/main/java/org/apache/james/mpt/testsuite/UnauthenticatedTest.java
----------------------------------------------------------------------
diff --git a/mpt/impl/managesieve/core/src/main/java/org/apache/james/mpt/testsuite/UnauthenticatedTest.java b/mpt/impl/managesieve/core/src/main/java/org/apache/james/mpt/testsuite/UnauthenticatedTest.java
deleted file mode 100644
index 1f2d838..0000000
--- a/mpt/impl/managesieve/core/src/main/java/org/apache/james/mpt/testsuite/UnauthenticatedTest.java
+++ /dev/null
@@ -1,61 +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.mpt.testsuite;
-
-import java.util.Locale;
-
-import org.apache.james.mpt.host.ManageSieveHostSystem;
-import org.apache.james.mpt.script.SimpleScriptedTestProtocol;
-import org.junit.After;
-import org.junit.Before;
-import org.junit.Test;
-
-public abstract class UnauthenticatedTest {
-
-    public static final String USER = "user";
-    public static final String PASSWORD = "password";
-    
-    protected abstract ManageSieveHostSystem createManageSieveHostSystem();
-    
-    private ManageSieveHostSystem hostSystem;
-    private SimpleScriptedTestProtocol simpleScriptedTestProtocol;
-
-    @Before
-    public void setUp() throws Exception {
-        hostSystem = createManageSieveHostSystem();
-        hostSystem.beforeTest();
-        simpleScriptedTestProtocol = new SimpleScriptedTestProtocol("/org/apache/james/managesieve/scripts/", hostSystem)
-                .withUser(USER, PASSWORD)
-                .withLocale(Locale.US);
-    }
-
-    @After
-    public void tearDown() throws Exception {
-        hostSystem.afterTest();
-    }
-    
-    @Test
-    public void unauthenticatedCommandShouldWork() throws Exception {
-        simpleScriptedTestProtocol
-            .withLocale(Locale.US)
-            .run("unauthenticate");
-    }
-
-}

http://git-wip-us.apache.org/repos/asf/james-project/blob/2862b0b5/mpt/impl/managesieve/file/pom.xml
----------------------------------------------------------------------
diff --git a/mpt/impl/managesieve/file/pom.xml b/mpt/impl/managesieve/file/pom.xml
index 7ffe36e..a1e8299 100644
--- a/mpt/impl/managesieve/file/pom.xml
+++ b/mpt/impl/managesieve/file/pom.xml
@@ -43,6 +43,11 @@
             <groupId>${james.groupId}</groupId>
             <artifactId>james-server-data-memory</artifactId>
         </dependency>
+        <dependency>
+            <groupId>org.junit.platform</groupId>
+            <artifactId>junit-platform-launcher</artifactId>
+            <scope>test</scope>
+        </dependency>
     </dependencies>
 
 </project>

http://git-wip-us.apache.org/repos/asf/james-project/blob/2862b0b5/mpt/impl/managesieve/file/src/test/java/org/apache/james/mpt/managesieve/file/FileAuthenticateTest.java
----------------------------------------------------------------------
diff --git a/mpt/impl/managesieve/file/src/test/java/org/apache/james/mpt/managesieve/file/FileAuthenticateTest.java b/mpt/impl/managesieve/file/src/test/java/org/apache/james/mpt/managesieve/file/FileAuthenticateTest.java
index 56057b2..9b64e48 100644
--- a/mpt/impl/managesieve/file/src/test/java/org/apache/james/mpt/managesieve/file/FileAuthenticateTest.java
+++ b/mpt/impl/managesieve/file/src/test/java/org/apache/james/mpt/managesieve/file/FileAuthenticateTest.java
@@ -20,34 +20,30 @@
 package org.apache.james.mpt.managesieve.file;
 
 import org.apache.james.mpt.host.ManageSieveHostSystem;
-import org.apache.james.mpt.testsuite.AuthenticateTest;
-import org.junit.After;
-import org.junit.Before;
+import org.apache.james.mpt.testsuite.AuthenticateContract;
+import org.junit.jupiter.api.AfterEach;
+import org.junit.jupiter.api.BeforeEach;
 
 import com.google.inject.Guice;
 import com.google.inject.Injector;
 
-public class FileAuthenticateTest extends AuthenticateTest {
-
+public class FileAuthenticateTest implements AuthenticateContract {
     private ManageSieveHostSystem system;
 
-    @Override
-    @Before
-    public void setUp() throws Exception {
+    @BeforeEach
+    void createSystem() throws Exception {
         Injector injector = Guice.createInjector(new FileModule());
         system = injector.getInstance(ManageSieveHostSystem.class);
         system.beforeTest();
-        super.setUp();
     }
-    
+
     @Override
-    protected ManageSieveHostSystem createManageSieveHostSystem() {
+    public ManageSieveHostSystem hostSystem() {
         return system;
     }
 
-    @Override
-    @After
-    public void tearDown() throws Exception {
-        system.afterTest();
+    @AfterEach
+    void tearDown() throws Exception {
+        hostSystem().afterTest();
     }
 }

http://git-wip-us.apache.org/repos/asf/james-project/blob/2862b0b5/mpt/impl/managesieve/file/src/test/java/org/apache/james/mpt/managesieve/file/FileCapabilityTest.java
----------------------------------------------------------------------
diff --git a/mpt/impl/managesieve/file/src/test/java/org/apache/james/mpt/managesieve/file/FileCapabilityTest.java b/mpt/impl/managesieve/file/src/test/java/org/apache/james/mpt/managesieve/file/FileCapabilityTest.java
index 4a5f614..44d7280 100644
--- a/mpt/impl/managesieve/file/src/test/java/org/apache/james/mpt/managesieve/file/FileCapabilityTest.java
+++ b/mpt/impl/managesieve/file/src/test/java/org/apache/james/mpt/managesieve/file/FileCapabilityTest.java
@@ -20,34 +20,30 @@
 package org.apache.james.mpt.managesieve.file;
 
 import org.apache.james.mpt.host.ManageSieveHostSystem;
-import org.apache.james.mpt.testsuite.CapabilityTest;
-import org.junit.After;
-import org.junit.Before;
+import org.apache.james.mpt.testsuite.CapabilityContract;
+import org.junit.jupiter.api.AfterEach;
+import org.junit.jupiter.api.BeforeEach;
 
 import com.google.inject.Guice;
 import com.google.inject.Injector;
 
-public class FileCapabilityTest extends CapabilityTest {
-
+public class FileCapabilityTest implements CapabilityContract {
     private ManageSieveHostSystem system;
 
-    @Override
-    @Before
-    public void setUp() throws Exception {
+    @BeforeEach
+    void setUp() throws Exception {
         Injector injector = Guice.createInjector(new FileModule());
         system = injector.getInstance(ManageSieveHostSystem.class);
         system.beforeTest();
-        super.setUp();
     }
-    
+
     @Override
-    protected ManageSieveHostSystem createManageSieveHostSystem() {
+    public ManageSieveHostSystem hostSystem() {
         return system;
     }
 
-    @Override
-    @After
-    public void tearDown() throws Exception {
-        system.afterTest();
+    @AfterEach
+    void tearDown() throws Exception {
+        hostSystem().afterTest();
     }
 }

http://git-wip-us.apache.org/repos/asf/james-project/blob/2862b0b5/mpt/impl/managesieve/file/src/test/java/org/apache/james/mpt/managesieve/file/FileCheckScriptTest.java
----------------------------------------------------------------------
diff --git a/mpt/impl/managesieve/file/src/test/java/org/apache/james/mpt/managesieve/file/FileCheckScriptTest.java b/mpt/impl/managesieve/file/src/test/java/org/apache/james/mpt/managesieve/file/FileCheckScriptTest.java
index a5fada9..759f9eb 100644
--- a/mpt/impl/managesieve/file/src/test/java/org/apache/james/mpt/managesieve/file/FileCheckScriptTest.java
+++ b/mpt/impl/managesieve/file/src/test/java/org/apache/james/mpt/managesieve/file/FileCheckScriptTest.java
@@ -20,34 +20,30 @@
 package org.apache.james.mpt.managesieve.file;
 
 import org.apache.james.mpt.host.ManageSieveHostSystem;
-import org.apache.james.mpt.testsuite.CheckScriptTest;
-import org.junit.After;
-import org.junit.Before;
+import org.apache.james.mpt.testsuite.CheckScriptContract;
+import org.junit.jupiter.api.AfterEach;
+import org.junit.jupiter.api.BeforeEach;
 
 import com.google.inject.Guice;
 import com.google.inject.Injector;
 
-public class FileCheckScriptTest extends CheckScriptTest {
-
+public class FileCheckScriptTest implements CheckScriptContract {
     private ManageSieveHostSystem system;
 
-    @Override
-    @Before
-    public void setUp() throws Exception {
+    @BeforeEach
+    void setUp() throws Exception {
         Injector injector = Guice.createInjector(new FileModule());
         system = injector.getInstance(ManageSieveHostSystem.class);
         system.beforeTest();
-        super.setUp();
     }
-    
+
     @Override
-    protected ManageSieveHostSystem createManageSieveHostSystem() {
+    public ManageSieveHostSystem hostSystem() {
         return system;
     }
 
-    @Override
-    @After
-    public void tearDown() throws Exception {
-        system.afterTest();
+    @AfterEach
+    void tearDown() throws Exception {
+        hostSystem().afterTest();
     }
 }

http://git-wip-us.apache.org/repos/asf/james-project/blob/2862b0b5/mpt/impl/managesieve/file/src/test/java/org/apache/james/mpt/managesieve/file/FileDeleteScriptTest.java
----------------------------------------------------------------------
diff --git a/mpt/impl/managesieve/file/src/test/java/org/apache/james/mpt/managesieve/file/FileDeleteScriptTest.java b/mpt/impl/managesieve/file/src/test/java/org/apache/james/mpt/managesieve/file/FileDeleteScriptTest.java
index af59e0c..eef900d 100644
--- a/mpt/impl/managesieve/file/src/test/java/org/apache/james/mpt/managesieve/file/FileDeleteScriptTest.java
+++ b/mpt/impl/managesieve/file/src/test/java/org/apache/james/mpt/managesieve/file/FileDeleteScriptTest.java
@@ -20,34 +20,30 @@
 package org.apache.james.mpt.managesieve.file;
 
 import org.apache.james.mpt.host.ManageSieveHostSystem;
-import org.apache.james.mpt.testsuite.DeleteScriptTest;
-import org.junit.After;
-import org.junit.Before;
+import org.apache.james.mpt.testsuite.DeleteScriptContract;
+import org.junit.jupiter.api.AfterEach;
+import org.junit.jupiter.api.BeforeEach;
 
 import com.google.inject.Guice;
 import com.google.inject.Injector;
 
-public class FileDeleteScriptTest extends DeleteScriptTest {
-
+public class FileDeleteScriptTest implements DeleteScriptContract {
     private ManageSieveHostSystem system;
 
-    @Override
-    @Before
-    public void setUp() throws Exception {
+    @BeforeEach
+    void setUp() throws Exception {
         Injector injector = Guice.createInjector(new FileModule());
         system = injector.getInstance(ManageSieveHostSystem.class);
         system.beforeTest();
-        super.setUp();
     }
-    
+
     @Override
-    protected ManageSieveHostSystem createManageSieveHostSystem() {
+    public ManageSieveHostSystem hostSystem() {
         return system;
     }
 
-    @Override
-    @After
-    public void tearDown() throws Exception {
-        system.afterTest();
+    @AfterEach
+    void tearDown() throws Exception {
+        hostSystem().afterTest();
     }
 }

http://git-wip-us.apache.org/repos/asf/james-project/blob/2862b0b5/mpt/impl/managesieve/file/src/test/java/org/apache/james/mpt/managesieve/file/FileGetScriptTest.java
----------------------------------------------------------------------
diff --git a/mpt/impl/managesieve/file/src/test/java/org/apache/james/mpt/managesieve/file/FileGetScriptTest.java b/mpt/impl/managesieve/file/src/test/java/org/apache/james/mpt/managesieve/file/FileGetScriptTest.java
index 2ea659e..a9c7b02 100644
--- a/mpt/impl/managesieve/file/src/test/java/org/apache/james/mpt/managesieve/file/FileGetScriptTest.java
+++ b/mpt/impl/managesieve/file/src/test/java/org/apache/james/mpt/managesieve/file/FileGetScriptTest.java
@@ -20,34 +20,30 @@
 package org.apache.james.mpt.managesieve.file;
 
 import org.apache.james.mpt.host.ManageSieveHostSystem;
-import org.apache.james.mpt.testsuite.GetScriptTest;
-import org.junit.After;
-import org.junit.Before;
+import org.apache.james.mpt.testsuite.GetScriptContract;
+import org.junit.jupiter.api.AfterEach;
+import org.junit.jupiter.api.BeforeEach;
 
 import com.google.inject.Guice;
 import com.google.inject.Injector;
 
-public class FileGetScriptTest extends GetScriptTest {
-    
+public class FileGetScriptTest implements GetScriptContract {
     private ManageSieveHostSystem system;
 
-    @Override
-    @Before
-    public void setUp() throws Exception {
+    @BeforeEach
+    void setUp() throws Exception {
         Injector injector = Guice.createInjector(new FileModule());
         system = injector.getInstance(ManageSieveHostSystem.class);
         system.beforeTest();
-        super.setUp();
     }
-    
+
     @Override
-    protected ManageSieveHostSystem createManageSieveHostSystem() {
+    public ManageSieveHostSystem hostSystem() {
         return system;
     }
 
-    @Override
-    @After
-    public void tearDown() throws Exception {
-        system.afterTest();
+    @AfterEach
+    void tearDown() throws Exception {
+        hostSystem().afterTest();
     }
 }

http://git-wip-us.apache.org/repos/asf/james-project/blob/2862b0b5/mpt/impl/managesieve/file/src/test/java/org/apache/james/mpt/managesieve/file/FileHaveSpaceTest.java
----------------------------------------------------------------------
diff --git a/mpt/impl/managesieve/file/src/test/java/org/apache/james/mpt/managesieve/file/FileHaveSpaceTest.java b/mpt/impl/managesieve/file/src/test/java/org/apache/james/mpt/managesieve/file/FileHaveSpaceTest.java
index 3dfd7e1..2563215 100644
--- a/mpt/impl/managesieve/file/src/test/java/org/apache/james/mpt/managesieve/file/FileHaveSpaceTest.java
+++ b/mpt/impl/managesieve/file/src/test/java/org/apache/james/mpt/managesieve/file/FileHaveSpaceTest.java
@@ -20,34 +20,30 @@
 package org.apache.james.mpt.managesieve.file;
 
 import org.apache.james.mpt.host.ManageSieveHostSystem;
-import org.apache.james.mpt.testsuite.HaveSpaceTest;
-import org.junit.After;
-import org.junit.Before;
+import org.apache.james.mpt.testsuite.HaveSpaceContract;
+import org.junit.jupiter.api.AfterEach;
+import org.junit.jupiter.api.BeforeEach;
 
 import com.google.inject.Guice;
 import com.google.inject.Injector;
 
-public class FileHaveSpaceTest extends HaveSpaceTest {
-
+public class FileHaveSpaceTest implements HaveSpaceContract {
     private ManageSieveHostSystem system;
 
-    @Override
-    @Before
-    public void setUp() throws Exception {
+    @BeforeEach
+    void setUp() throws Exception {
         Injector injector = Guice.createInjector(new FileModule());
         system = injector.getInstance(ManageSieveHostSystem.class);
         system.beforeTest();
-        super.setUp();
     }
-    
+
     @Override
-    protected ManageSieveHostSystem createManageSieveHostSystem() {
+    public ManageSieveHostSystem hostSystem() {
         return system;
     }
 
-    @Override
-    @After
-    public void tearDown() throws Exception {
-        system.afterTest();
+    @AfterEach
+    void tearDown() throws Exception {
+        hostSystem().afterTest();
     }
 }

http://git-wip-us.apache.org/repos/asf/james-project/blob/2862b0b5/mpt/impl/managesieve/file/src/test/java/org/apache/james/mpt/managesieve/file/FileListScriptsTest.java
----------------------------------------------------------------------
diff --git a/mpt/impl/managesieve/file/src/test/java/org/apache/james/mpt/managesieve/file/FileListScriptsTest.java b/mpt/impl/managesieve/file/src/test/java/org/apache/james/mpt/managesieve/file/FileListScriptsTest.java
index 2dfe67b..ec59d66 100644
--- a/mpt/impl/managesieve/file/src/test/java/org/apache/james/mpt/managesieve/file/FileListScriptsTest.java
+++ b/mpt/impl/managesieve/file/src/test/java/org/apache/james/mpt/managesieve/file/FileListScriptsTest.java
@@ -20,34 +20,30 @@
 package org.apache.james.mpt.managesieve.file;
 
 import org.apache.james.mpt.host.ManageSieveHostSystem;
-import org.apache.james.mpt.testsuite.ListScriptsTest;
-import org.junit.After;
-import org.junit.Before;
+import org.apache.james.mpt.testsuite.ListScriptsContract;
+import org.junit.jupiter.api.AfterEach;
+import org.junit.jupiter.api.BeforeEach;
 
 import com.google.inject.Guice;
 import com.google.inject.Injector;
 
-public abstract class FileListScriptsTest extends ListScriptsTest {
-
+public class FileListScriptsTest implements ListScriptsContract {
     private ManageSieveHostSystem system;
 
-    @Override
-    @Before
-    public void setUp() throws Exception {
+    @BeforeEach
+    void setUp() throws Exception {
         Injector injector = Guice.createInjector(new FileModule());
         system = injector.getInstance(ManageSieveHostSystem.class);
         system.beforeTest();
-        super.setUp();
     }
-    
+
     @Override
-    protected ManageSieveHostSystem createManageSieveHostSystem() {
+    public ManageSieveHostSystem hostSystem() {
         return system;
     }
 
-    @Override
-    @After
-    public void tearDown() throws Exception {
-        system.afterTest();
+    @AfterEach
+    void tearDown() throws Exception {
+        hostSystem().afterTest();
     }
 }

http://git-wip-us.apache.org/repos/asf/james-project/blob/2862b0b5/mpt/impl/managesieve/file/src/test/java/org/apache/james/mpt/managesieve/file/FileLogoutTest.java
----------------------------------------------------------------------
diff --git a/mpt/impl/managesieve/file/src/test/java/org/apache/james/mpt/managesieve/file/FileLogoutTest.java b/mpt/impl/managesieve/file/src/test/java/org/apache/james/mpt/managesieve/file/FileLogoutTest.java
index 866eb52..15838ea 100644
--- a/mpt/impl/managesieve/file/src/test/java/org/apache/james/mpt/managesieve/file/FileLogoutTest.java
+++ b/mpt/impl/managesieve/file/src/test/java/org/apache/james/mpt/managesieve/file/FileLogoutTest.java
@@ -20,33 +20,30 @@
 package org.apache.james.mpt.managesieve.file;
 
 import org.apache.james.mpt.host.ManageSieveHostSystem;
-import org.apache.james.mpt.testsuite.LogoutTest;
-import org.junit.After;
-import org.junit.Before;
+import org.apache.james.mpt.testsuite.LogoutContract;
+import org.junit.jupiter.api.AfterEach;
+import org.junit.jupiter.api.BeforeEach;
 
 import com.google.inject.Guice;
 import com.google.inject.Injector;
 
-public class FileLogoutTest extends LogoutTest {
+public class FileLogoutTest implements LogoutContract {
     private ManageSieveHostSystem system;
 
-    @Override
-    @Before
-    public void setUp() throws Exception {
+    @BeforeEach
+    void setUp() throws Exception {
         Injector injector = Guice.createInjector(new FileModule());
         system = injector.getInstance(ManageSieveHostSystem.class);
         system.beforeTest();
-        super.setUp();
     }
-    
+
     @Override
-    protected ManageSieveHostSystem createManageSieveHostSystem() {
+    public ManageSieveHostSystem hostSystem() {
         return system;
     }
 
-    @Override
-    @After
-    public void tearDown() throws Exception {
-        system.afterTest();
+    @AfterEach
+    void tearDown() throws Exception {
+        hostSystem().afterTest();
     }
 }

http://git-wip-us.apache.org/repos/asf/james-project/blob/2862b0b5/mpt/impl/managesieve/file/src/test/java/org/apache/james/mpt/managesieve/file/FileNoopTest.java
----------------------------------------------------------------------
diff --git a/mpt/impl/managesieve/file/src/test/java/org/apache/james/mpt/managesieve/file/FileNoopTest.java b/mpt/impl/managesieve/file/src/test/java/org/apache/james/mpt/managesieve/file/FileNoopTest.java
index 1432cc8..95e3269 100644
--- a/mpt/impl/managesieve/file/src/test/java/org/apache/james/mpt/managesieve/file/FileNoopTest.java
+++ b/mpt/impl/managesieve/file/src/test/java/org/apache/james/mpt/managesieve/file/FileNoopTest.java
@@ -20,34 +20,30 @@
 package org.apache.james.mpt.managesieve.file;
 
 import org.apache.james.mpt.host.ManageSieveHostSystem;
-import org.apache.james.mpt.testsuite.NoopTest;
-import org.junit.After;
-import org.junit.Before;
+import org.apache.james.mpt.testsuite.NoopContract;
+import org.junit.jupiter.api.AfterEach;
+import org.junit.jupiter.api.BeforeEach;
 
 import com.google.inject.Guice;
 import com.google.inject.Injector;
 
-public class FileNoopTest extends NoopTest {
-
+public class FileNoopTest implements NoopContract {
     private ManageSieveHostSystem system;
 
-    @Override
-    @Before
-    public void setUp() throws Exception {
+    @BeforeEach
+    void setUp() throws Exception {
         Injector injector = Guice.createInjector(new FileModule());
         system = injector.getInstance(ManageSieveHostSystem.class);
         system.beforeTest();
-        super.setUp();
     }
-    
+
     @Override
-    protected ManageSieveHostSystem createManageSieveHostSystem() {
+    public ManageSieveHostSystem hostSystem() {
         return system;
     }
 
-    @Override
-    @After
-    public void tearDown() throws Exception {
-        system.afterTest();
+    @AfterEach
+    void tearDown() throws Exception {
+        hostSystem().afterTest();
     }
 }

http://git-wip-us.apache.org/repos/asf/james-project/blob/2862b0b5/mpt/impl/managesieve/file/src/test/java/org/apache/james/mpt/managesieve/file/FilePutScriptTest.java
----------------------------------------------------------------------
diff --git a/mpt/impl/managesieve/file/src/test/java/org/apache/james/mpt/managesieve/file/FilePutScriptTest.java b/mpt/impl/managesieve/file/src/test/java/org/apache/james/mpt/managesieve/file/FilePutScriptTest.java
index 0594fc0..11fd414 100644
--- a/mpt/impl/managesieve/file/src/test/java/org/apache/james/mpt/managesieve/file/FilePutScriptTest.java
+++ b/mpt/impl/managesieve/file/src/test/java/org/apache/james/mpt/managesieve/file/FilePutScriptTest.java
@@ -20,34 +20,30 @@
 package org.apache.james.mpt.managesieve.file;
 
 import org.apache.james.mpt.host.ManageSieveHostSystem;
-import org.apache.james.mpt.testsuite.PutScriptTest;
-import org.junit.After;
-import org.junit.Before;
+import org.apache.james.mpt.testsuite.PutScriptContract;
+import org.junit.jupiter.api.AfterEach;
+import org.junit.jupiter.api.BeforeEach;
 
 import com.google.inject.Guice;
 import com.google.inject.Injector;
 
-public class FilePutScriptTest extends PutScriptTest {
-
+public class FilePutScriptTest implements PutScriptContract {
     private ManageSieveHostSystem system;
 
-    @Override
-    @Before
-    public void setUp() throws Exception {
+    @BeforeEach
+    void setUp() throws Exception {
         Injector injector = Guice.createInjector(new FileModule());
         system = injector.getInstance(ManageSieveHostSystem.class);
         system.beforeTest();
-        super.setUp();
     }
-    
+
     @Override
-    protected ManageSieveHostSystem createManageSieveHostSystem() {
+    public ManageSieveHostSystem hostSystem() {
         return system;
     }
 
-    @Override
-    @After
-    public void tearDown() throws Exception {
-        system.afterTest();
+    @AfterEach
+    void tearDown() throws Exception {
+        hostSystem().afterTest();
     }
 }

http://git-wip-us.apache.org/repos/asf/james-project/blob/2862b0b5/mpt/impl/managesieve/file/src/test/java/org/apache/james/mpt/managesieve/file/FileRenameScriptTest.java
----------------------------------------------------------------------
diff --git a/mpt/impl/managesieve/file/src/test/java/org/apache/james/mpt/managesieve/file/FileRenameScriptTest.java b/mpt/impl/managesieve/file/src/test/java/org/apache/james/mpt/managesieve/file/FileRenameScriptTest.java
index 8624ae3..f6ffbf4 100644
--- a/mpt/impl/managesieve/file/src/test/java/org/apache/james/mpt/managesieve/file/FileRenameScriptTest.java
+++ b/mpt/impl/managesieve/file/src/test/java/org/apache/james/mpt/managesieve/file/FileRenameScriptTest.java
@@ -20,34 +20,30 @@
 package org.apache.james.mpt.managesieve.file;
 
 import org.apache.james.mpt.host.ManageSieveHostSystem;
-import org.apache.james.mpt.testsuite.RenameScriptTest;
-import org.junit.After;
-import org.junit.Before;
+import org.apache.james.mpt.testsuite.RenameScriptContract;
+import org.junit.jupiter.api.AfterEach;
+import org.junit.jupiter.api.BeforeEach;
 
 import com.google.inject.Guice;
 import com.google.inject.Injector;
 
-public class FileRenameScriptTest extends RenameScriptTest {
-
+public class FileRenameScriptTest implements RenameScriptContract {
     private ManageSieveHostSystem system;
 
-    @Override
-    @Before
-    public void setUp() throws Exception {
+    @BeforeEach
+    void setUp() throws Exception {
         Injector injector = Guice.createInjector(new FileModule());
         system = injector.getInstance(ManageSieveHostSystem.class);
         system.beforeTest();
-        super.setUp();
     }
-    
+
     @Override
-    protected ManageSieveHostSystem createManageSieveHostSystem() {
+    public ManageSieveHostSystem hostSystem() {
         return system;
     }
 
-    @Override
-    @After
-    public void tearDown() throws Exception {
-        system.afterTest();
+    @AfterEach
+    void tearDown() throws Exception {
+        hostSystem().afterTest();
     }
 }

http://git-wip-us.apache.org/repos/asf/james-project/blob/2862b0b5/mpt/impl/managesieve/file/src/test/java/org/apache/james/mpt/managesieve/file/FileSetActiveTest.java
----------------------------------------------------------------------
diff --git a/mpt/impl/managesieve/file/src/test/java/org/apache/james/mpt/managesieve/file/FileSetActiveTest.java b/mpt/impl/managesieve/file/src/test/java/org/apache/james/mpt/managesieve/file/FileSetActiveTest.java
index e847e0c..36ae166 100644
--- a/mpt/impl/managesieve/file/src/test/java/org/apache/james/mpt/managesieve/file/FileSetActiveTest.java
+++ b/mpt/impl/managesieve/file/src/test/java/org/apache/james/mpt/managesieve/file/FileSetActiveTest.java
@@ -20,34 +20,30 @@
 package org.apache.james.mpt.managesieve.file;
 
 import org.apache.james.mpt.host.ManageSieveHostSystem;
-import org.apache.james.mpt.testsuite.SetActiveTest;
-import org.junit.After;
-import org.junit.Before;
+import org.apache.james.mpt.testsuite.SetActiveContract;
+import org.junit.jupiter.api.AfterEach;
+import org.junit.jupiter.api.BeforeEach;
 
 import com.google.inject.Guice;
 import com.google.inject.Injector;
 
-public class FileSetActiveTest extends SetActiveTest {
-
+public class FileSetActiveTest implements SetActiveContract {
     private ManageSieveHostSystem system;
 
-    @Override
-    @Before
-    public void setUp() throws Exception {
+    @BeforeEach
+    void setUp() throws Exception {
         Injector injector = Guice.createInjector(new FileModule());
         system = injector.getInstance(ManageSieveHostSystem.class);
         system.beforeTest();
-        super.setUp();
     }
-    
+
     @Override
-    protected ManageSieveHostSystem createManageSieveHostSystem() {
+    public ManageSieveHostSystem hostSystem() {
         return system;
     }
 
-    @Override
-    @After
-    public void tearDown() throws Exception {
-        system.afterTest();
+    @AfterEach
+    void tearDown() throws Exception {
+        hostSystem().afterTest();
     }
 }

http://git-wip-us.apache.org/repos/asf/james-project/blob/2862b0b5/mpt/impl/managesieve/file/src/test/java/org/apache/james/mpt/managesieve/file/FileStartTlsTest.java
----------------------------------------------------------------------
diff --git a/mpt/impl/managesieve/file/src/test/java/org/apache/james/mpt/managesieve/file/FileStartTlsTest.java b/mpt/impl/managesieve/file/src/test/java/org/apache/james/mpt/managesieve/file/FileStartTlsTest.java
index 408794d..f596b42 100644
--- a/mpt/impl/managesieve/file/src/test/java/org/apache/james/mpt/managesieve/file/FileStartTlsTest.java
+++ b/mpt/impl/managesieve/file/src/test/java/org/apache/james/mpt/managesieve/file/FileStartTlsTest.java
@@ -20,34 +20,30 @@
 package org.apache.james.mpt.managesieve.file;
 
 import org.apache.james.mpt.host.ManageSieveHostSystem;
-import org.apache.james.mpt.testsuite.StartTlsTest;
-import org.junit.After;
-import org.junit.Before;
+import org.apache.james.mpt.testsuite.StartTlsContract;
+import org.junit.jupiter.api.AfterEach;
+import org.junit.jupiter.api.BeforeEach;
 
 import com.google.inject.Guice;
 import com.google.inject.Injector;
 
-public class FileStartTlsTest extends StartTlsTest {
-
+public class FileStartTlsTest implements StartTlsContract {
     private ManageSieveHostSystem system;
 
-    @Override
-    @Before
-    public void setUp() throws Exception {
+    @BeforeEach
+    void setUp() throws Exception {
         Injector injector = Guice.createInjector(new FileModule());
         system = injector.getInstance(ManageSieveHostSystem.class);
         system.beforeTest();
-        super.setUp();
     }
-    
+
     @Override
-    protected ManageSieveHostSystem createManageSieveHostSystem() {
+    public ManageSieveHostSystem hostSystem() {
         return system;
     }
 
-    @Override
-    @After
-    public void tearDown() throws Exception {
-        system.afterTest();
+    @AfterEach
+    void tearDown() throws Exception {
+        hostSystem().afterTest();
     }
 }

http://git-wip-us.apache.org/repos/asf/james-project/blob/2862b0b5/mpt/impl/managesieve/file/src/test/java/org/apache/james/mpt/managesieve/file/FileUnauthenticatedTest.java
----------------------------------------------------------------------
diff --git a/mpt/impl/managesieve/file/src/test/java/org/apache/james/mpt/managesieve/file/FileUnauthenticatedTest.java b/mpt/impl/managesieve/file/src/test/java/org/apache/james/mpt/managesieve/file/FileUnauthenticatedTest.java
index c8d0d3d..cc5d22f 100644
--- a/mpt/impl/managesieve/file/src/test/java/org/apache/james/mpt/managesieve/file/FileUnauthenticatedTest.java
+++ b/mpt/impl/managesieve/file/src/test/java/org/apache/james/mpt/managesieve/file/FileUnauthenticatedTest.java
@@ -20,34 +20,30 @@
 package org.apache.james.mpt.managesieve.file;
 
 import org.apache.james.mpt.host.ManageSieveHostSystem;
-import org.apache.james.mpt.testsuite.UnauthenticatedTest;
-import org.junit.After;
-import org.junit.Before;
+import org.apache.james.mpt.testsuite.UnauthenticatedContract;
+import org.junit.jupiter.api.AfterEach;
+import org.junit.jupiter.api.BeforeEach;
 
 import com.google.inject.Guice;
 import com.google.inject.Injector;
 
-public class FileUnauthenticatedTest extends UnauthenticatedTest {
-
+public class FileUnauthenticatedTest implements UnauthenticatedContract {
     private ManageSieveHostSystem system;
 
-    @Override
-    @Before
-    public void setUp() throws Exception {
+    @BeforeEach
+    void setUp() throws Exception {
         Injector injector = Guice.createInjector(new FileModule());
         system = injector.getInstance(ManageSieveHostSystem.class);
         system.beforeTest();
-        super.setUp();
     }
-    
+
     @Override
-    protected ManageSieveHostSystem createManageSieveHostSystem() {
+    public ManageSieveHostSystem hostSystem() {
         return system;
     }
 
-    @Override
-    @After
-    public void tearDown() throws Exception {
-        system.afterTest();
+    @AfterEach
+    void tearDown() throws Exception {
+        hostSystem().afterTest();
     }
 }


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


[09/15] james-project git commit: JAMES-2470 MPT Cassandra should rely on CassandraCluster for cleanup

Posted by bt...@apache.org.
JAMES-2470 MPT Cassandra should rely on CassandraCluster for cleanup


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

Branch: refs/heads/master
Commit: 13d7655b933be9ff0fe95d3e731e9b4516045460
Parents: cb5eb26
Author: benwa <bt...@linagora.com>
Authored: Fri Jul 20 15:48:38 2018 +0700
Committer: benwa <bt...@linagora.com>
Committed: Wed Jul 25 16:44:13 2018 +0700

----------------------------------------------------------------------
 .../CassandraAuthenticatePlainTest.java          | 16 ++++------------
 .../CassandraAuthenticatedStateTest.java         | 16 ++++------------
 .../CassandraConcurrentSessionsTest.java         | 16 ++++------------
 .../cassandra/CassandraCondstoreTest.java        | 19 ++++---------------
 .../imapmailbox/cassandra/CassandraCopyTest.java | 10 ++++------
 .../cassandra/CassandraEventsTest.java           | 10 ++++------
 .../cassandra/CassandraExpungeTest.java          | 10 ++++------
 .../cassandra/CassandraFetchBodySectionTest.java | 10 ++++------
 .../CassandraFetchBodyStructureTest.java         | 10 ++++------
 .../cassandra/CassandraFetchHeadersTest.java     | 10 ++++------
 .../cassandra/CassandraFetchTest.java            | 10 ++++------
 .../cassandra/CassandraListingTest.java          | 10 ++++------
 .../CassandraListingWithSharingTest.java         | 10 ++++------
 .../CassandraMailboxAnnotationTest.java          | 16 ++++------------
 .../CassandraMailboxWithLongNameErrorTest.java   | 10 ++++------
 .../imapmailbox/cassandra/CassandraMoveTest.java | 10 ++++------
 .../CassandraNonAuthenticatedStateTest.java      | 10 ++++------
 .../cassandra/CassandraPartialFetchTest.java     | 10 ++++------
 .../cassandra/CassandraQuotaTest.java            | 17 ++++-------------
 .../cassandra/CassandraRenameTest.java           | 16 ++++------------
 .../cassandra/CassandraSearchTest.java           | 10 ++++------
 .../cassandra/CassandraSecurityTest.java         | 10 ++++------
 .../cassandra/CassandraSelectTest.java           | 10 ++++------
 .../cassandra/CassandraSelectedInboxTest.java    | 10 ++++------
 .../cassandra/CassandraSelectedStateTest.java    | 16 ++++------------
 .../cassandra/CassandraUidSearchOnIndexTest.java | 10 ++++------
 .../cassandra/CassandraUidSearchTest.java        | 10 ++++------
 .../cassandra/CassandraUserFlagsSupportTest.java | 10 ++++------
 .../cassandra/host/CassandraHostSystem.java      |  2 +-
 .../cassandra/host/CassandraHostSystemRule.java  | 19 +------------------
 .../james/mpt/imapmailbox/suite/QuotaTest.java   |  6 ------
 .../mpt/imapmailbox/hbase/HBaseQuotaTest.java    |  7 -------
 .../imapmailbox/inmemory/InMemoryQuotaTest.java  |  7 -------
 .../james/mpt/imapmailbox/jpa/JpaQuotaTest.java  |  6 ------
 .../lucenesearch/LuceneQuotaTest.java            |  7 -------
 .../imapmailbox/maildir/MaildirQuotaTest.java    |  7 -------
 36 files changed, 114 insertions(+), 279 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/james-project/blob/13d7655b/mpt/impl/imap-mailbox/cassandra/src/test/java/org/apache/james/mpt/imapmailbox/cassandra/CassandraAuthenticatePlainTest.java
----------------------------------------------------------------------
diff --git a/mpt/impl/imap-mailbox/cassandra/src/test/java/org/apache/james/mpt/imapmailbox/cassandra/CassandraAuthenticatePlainTest.java b/mpt/impl/imap-mailbox/cassandra/src/test/java/org/apache/james/mpt/imapmailbox/cassandra/CassandraAuthenticatePlainTest.java
index cba1a71..85adb30 100644
--- a/mpt/impl/imap-mailbox/cassandra/src/test/java/org/apache/james/mpt/imapmailbox/cassandra/CassandraAuthenticatePlainTest.java
+++ b/mpt/impl/imap-mailbox/cassandra/src/test/java/org/apache/james/mpt/imapmailbox/cassandra/CassandraAuthenticatePlainTest.java
@@ -23,25 +23,17 @@ import org.apache.james.backends.cassandra.DockerCassandraRule;
 import org.apache.james.mpt.api.ImapHostSystem;
 import org.apache.james.mpt.imapmailbox.cassandra.host.CassandraHostSystemRule;
 import org.apache.james.mpt.imapmailbox.suite.AuthenticatePlain;
-import org.junit.After;
 import org.junit.ClassRule;
-import org.junit.rules.RuleChain;
+import org.junit.Rule;
 
 public class CassandraAuthenticatePlainTest extends AuthenticatePlain {
-
-    private static DockerCassandraRule cassandraServer = new DockerCassandraRule();
-    private static CassandraHostSystemRule cassandraHostSystemRule = new CassandraHostSystemRule(cassandraServer);
-
     @ClassRule
-    public static RuleChain ruleChaine = RuleChain.outerRule(cassandraServer).around(cassandraHostSystemRule);
+    public static DockerCassandraRule cassandraServer = new DockerCassandraRule();
+    @Rule
+    public CassandraHostSystemRule cassandraHostSystemRule = new CassandraHostSystemRule(cassandraServer);
 
     @Override
     protected ImapHostSystem createImapHostSystem() {
         return cassandraHostSystemRule.getImapHostSystem();
     }
-
-    @After
-    public void tearDown() throws Exception {
-        cassandraHostSystemRule.clean();
-    }
 }

http://git-wip-us.apache.org/repos/asf/james-project/blob/13d7655b/mpt/impl/imap-mailbox/cassandra/src/test/java/org/apache/james/mpt/imapmailbox/cassandra/CassandraAuthenticatedStateTest.java
----------------------------------------------------------------------
diff --git a/mpt/impl/imap-mailbox/cassandra/src/test/java/org/apache/james/mpt/imapmailbox/cassandra/CassandraAuthenticatedStateTest.java b/mpt/impl/imap-mailbox/cassandra/src/test/java/org/apache/james/mpt/imapmailbox/cassandra/CassandraAuthenticatedStateTest.java
index 3070470..e6677b4 100644
--- a/mpt/impl/imap-mailbox/cassandra/src/test/java/org/apache/james/mpt/imapmailbox/cassandra/CassandraAuthenticatedStateTest.java
+++ b/mpt/impl/imap-mailbox/cassandra/src/test/java/org/apache/james/mpt/imapmailbox/cassandra/CassandraAuthenticatedStateTest.java
@@ -23,25 +23,17 @@ import org.apache.james.backends.cassandra.DockerCassandraRule;
 import org.apache.james.mpt.api.ImapHostSystem;
 import org.apache.james.mpt.imapmailbox.cassandra.host.CassandraHostSystemRule;
 import org.apache.james.mpt.imapmailbox.suite.AuthenticatedState;
-import org.junit.After;
 import org.junit.ClassRule;
-import org.junit.rules.RuleChain;
+import org.junit.Rule;
 
 public class CassandraAuthenticatedStateTest extends AuthenticatedState {
-
-    private static DockerCassandraRule cassandraServer = new DockerCassandraRule();
-    private static CassandraHostSystemRule cassandraHostSystemRule = new CassandraHostSystemRule(cassandraServer);
-
     @ClassRule
-    public static RuleChain ruleChaine = RuleChain.outerRule(cassandraServer).around(cassandraHostSystemRule);
+    public static DockerCassandraRule cassandraServer = new DockerCassandraRule();
+    @Rule
+    public CassandraHostSystemRule cassandraHostSystemRule = new CassandraHostSystemRule(cassandraServer);
 
     @Override
     protected ImapHostSystem createImapHostSystem() {
         return cassandraHostSystemRule.getImapHostSystem();
     }
-
-    @After
-    public void tearDown() throws Exception {
-        cassandraHostSystemRule.clean();
-    }
 }

http://git-wip-us.apache.org/repos/asf/james-project/blob/13d7655b/mpt/impl/imap-mailbox/cassandra/src/test/java/org/apache/james/mpt/imapmailbox/cassandra/CassandraConcurrentSessionsTest.java
----------------------------------------------------------------------
diff --git a/mpt/impl/imap-mailbox/cassandra/src/test/java/org/apache/james/mpt/imapmailbox/cassandra/CassandraConcurrentSessionsTest.java b/mpt/impl/imap-mailbox/cassandra/src/test/java/org/apache/james/mpt/imapmailbox/cassandra/CassandraConcurrentSessionsTest.java
index 4040363..b57a60a 100644
--- a/mpt/impl/imap-mailbox/cassandra/src/test/java/org/apache/james/mpt/imapmailbox/cassandra/CassandraConcurrentSessionsTest.java
+++ b/mpt/impl/imap-mailbox/cassandra/src/test/java/org/apache/james/mpt/imapmailbox/cassandra/CassandraConcurrentSessionsTest.java
@@ -23,25 +23,17 @@ import org.apache.james.backends.cassandra.DockerCassandraRule;
 import org.apache.james.mpt.api.ImapHostSystem;
 import org.apache.james.mpt.imapmailbox.cassandra.host.CassandraHostSystemRule;
 import org.apache.james.mpt.imapmailbox.suite.ConcurrentSessions;
-import org.junit.After;
 import org.junit.ClassRule;
-import org.junit.rules.RuleChain;
+import org.junit.Rule;
 
 public class CassandraConcurrentSessionsTest extends ConcurrentSessions {
-
-    private static DockerCassandraRule cassandraServer = new DockerCassandraRule();
-    private static CassandraHostSystemRule cassandraHostSystemRule = new CassandraHostSystemRule(cassandraServer);
-
     @ClassRule
-    public static RuleChain ruleChaine = RuleChain.outerRule(cassandraServer).around(cassandraHostSystemRule);
+    public static DockerCassandraRule cassandraServer = new DockerCassandraRule();
+    @Rule
+    public CassandraHostSystemRule cassandraHostSystemRule = new CassandraHostSystemRule(cassandraServer);
 
     @Override
     protected ImapHostSystem createImapHostSystem() {
         return cassandraHostSystemRule.getImapHostSystem();
     }
-
-    @After
-    public void tearDown() throws Exception {
-        cassandraHostSystemRule.clean();
-    }
 }

http://git-wip-us.apache.org/repos/asf/james-project/blob/13d7655b/mpt/impl/imap-mailbox/cassandra/src/test/java/org/apache/james/mpt/imapmailbox/cassandra/CassandraCondstoreTest.java
----------------------------------------------------------------------
diff --git a/mpt/impl/imap-mailbox/cassandra/src/test/java/org/apache/james/mpt/imapmailbox/cassandra/CassandraCondstoreTest.java b/mpt/impl/imap-mailbox/cassandra/src/test/java/org/apache/james/mpt/imapmailbox/cassandra/CassandraCondstoreTest.java
index 69f1a91..b93d014 100644
--- a/mpt/impl/imap-mailbox/cassandra/src/test/java/org/apache/james/mpt/imapmailbox/cassandra/CassandraCondstoreTest.java
+++ b/mpt/impl/imap-mailbox/cassandra/src/test/java/org/apache/james/mpt/imapmailbox/cassandra/CassandraCondstoreTest.java
@@ -23,29 +23,18 @@ import org.apache.james.backends.cassandra.DockerCassandraRule;
 import org.apache.james.mpt.host.JamesImapHostSystem;
 import org.apache.james.mpt.imapmailbox.cassandra.host.CassandraHostSystemRule;
 import org.apache.james.mpt.imapmailbox.suite.Condstore;
-import org.junit.After;
+import org.junit.ClassRule;
 import org.junit.Rule;
-import org.junit.rules.RuleChain;
 
 public class CassandraCondstoreTest extends Condstore {
-
-    private static DockerCassandraRule cassandraServer = new DockerCassandraRule();
-    private static CassandraHostSystemRule cassandraHostSystemRule = new CassandraHostSystemRule(cassandraServer);
-
-    /**
-     * The underlying tests are playing with capabilities, which are configured when starting James.
-     * Hence, we can't use the RuleChain as a @ClassRule in this implementation.
-     */
+    @ClassRule
+    public static DockerCassandraRule cassandraServer = new DockerCassandraRule();
     @Rule
-    public RuleChain ruleChaine = RuleChain.outerRule(cassandraServer).around(cassandraHostSystemRule);
+    public CassandraHostSystemRule cassandraHostSystemRule = new CassandraHostSystemRule(cassandraServer);
 
     @Override
     protected JamesImapHostSystem createJamesImapHostSystem() {
         return cassandraHostSystemRule.getImapHostSystem();
     }
 
-    @After
-    public void tearDown() throws Exception {
-        cassandraHostSystemRule.clean();
-    }
 }

http://git-wip-us.apache.org/repos/asf/james-project/blob/13d7655b/mpt/impl/imap-mailbox/cassandra/src/test/java/org/apache/james/mpt/imapmailbox/cassandra/CassandraCopyTest.java
----------------------------------------------------------------------
diff --git a/mpt/impl/imap-mailbox/cassandra/src/test/java/org/apache/james/mpt/imapmailbox/cassandra/CassandraCopyTest.java b/mpt/impl/imap-mailbox/cassandra/src/test/java/org/apache/james/mpt/imapmailbox/cassandra/CassandraCopyTest.java
index 7216af8..e0e9623 100644
--- a/mpt/impl/imap-mailbox/cassandra/src/test/java/org/apache/james/mpt/imapmailbox/cassandra/CassandraCopyTest.java
+++ b/mpt/impl/imap-mailbox/cassandra/src/test/java/org/apache/james/mpt/imapmailbox/cassandra/CassandraCopyTest.java
@@ -24,15 +24,13 @@ import org.apache.james.mpt.api.ImapHostSystem;
 import org.apache.james.mpt.imapmailbox.cassandra.host.CassandraHostSystemRule;
 import org.apache.james.mpt.imapmailbox.suite.Copy;
 import org.junit.ClassRule;
-import org.junit.rules.RuleChain;
+import org.junit.Rule;
 
 public class CassandraCopyTest extends Copy {
-
-    private static DockerCassandraRule cassandraServer = new DockerCassandraRule();
-    private static CassandraHostSystemRule cassandraHostSystemRule = new CassandraHostSystemRule(cassandraServer);
-
     @ClassRule
-    public static RuleChain ruleChaine = RuleChain.outerRule(cassandraServer).around(cassandraHostSystemRule);
+    public static DockerCassandraRule cassandraServer = new DockerCassandraRule();
+    @Rule
+    public CassandraHostSystemRule cassandraHostSystemRule = new CassandraHostSystemRule(cassandraServer);
 
     @Override
     protected ImapHostSystem createImapHostSystem() {

http://git-wip-us.apache.org/repos/asf/james-project/blob/13d7655b/mpt/impl/imap-mailbox/cassandra/src/test/java/org/apache/james/mpt/imapmailbox/cassandra/CassandraEventsTest.java
----------------------------------------------------------------------
diff --git a/mpt/impl/imap-mailbox/cassandra/src/test/java/org/apache/james/mpt/imapmailbox/cassandra/CassandraEventsTest.java b/mpt/impl/imap-mailbox/cassandra/src/test/java/org/apache/james/mpt/imapmailbox/cassandra/CassandraEventsTest.java
index 127d641..8bf0543 100644
--- a/mpt/impl/imap-mailbox/cassandra/src/test/java/org/apache/james/mpt/imapmailbox/cassandra/CassandraEventsTest.java
+++ b/mpt/impl/imap-mailbox/cassandra/src/test/java/org/apache/james/mpt/imapmailbox/cassandra/CassandraEventsTest.java
@@ -24,15 +24,13 @@ import org.apache.james.mpt.api.ImapHostSystem;
 import org.apache.james.mpt.imapmailbox.cassandra.host.CassandraHostSystemRule;
 import org.apache.james.mpt.imapmailbox.suite.Events;
 import org.junit.ClassRule;
-import org.junit.rules.RuleChain;
+import org.junit.Rule;
 
 public class CassandraEventsTest extends Events {
-
-    private static DockerCassandraRule cassandraServer = new DockerCassandraRule();
-    private static CassandraHostSystemRule cassandraHostSystemRule = new CassandraHostSystemRule(cassandraServer);
-
     @ClassRule
-    public static RuleChain ruleChaine = RuleChain.outerRule(cassandraServer).around(cassandraHostSystemRule);
+    public static DockerCassandraRule cassandraServer = new DockerCassandraRule();
+    @Rule
+    public CassandraHostSystemRule cassandraHostSystemRule = new CassandraHostSystemRule(cassandraServer);
 
     @Override
     protected ImapHostSystem createImapHostSystem() {

http://git-wip-us.apache.org/repos/asf/james-project/blob/13d7655b/mpt/impl/imap-mailbox/cassandra/src/test/java/org/apache/james/mpt/imapmailbox/cassandra/CassandraExpungeTest.java
----------------------------------------------------------------------
diff --git a/mpt/impl/imap-mailbox/cassandra/src/test/java/org/apache/james/mpt/imapmailbox/cassandra/CassandraExpungeTest.java b/mpt/impl/imap-mailbox/cassandra/src/test/java/org/apache/james/mpt/imapmailbox/cassandra/CassandraExpungeTest.java
index 28d1850..1c5a284 100644
--- a/mpt/impl/imap-mailbox/cassandra/src/test/java/org/apache/james/mpt/imapmailbox/cassandra/CassandraExpungeTest.java
+++ b/mpt/impl/imap-mailbox/cassandra/src/test/java/org/apache/james/mpt/imapmailbox/cassandra/CassandraExpungeTest.java
@@ -24,15 +24,13 @@ import org.apache.james.mpt.api.ImapHostSystem;
 import org.apache.james.mpt.imapmailbox.cassandra.host.CassandraHostSystemRule;
 import org.apache.james.mpt.imapmailbox.suite.Expunge;
 import org.junit.ClassRule;
-import org.junit.rules.RuleChain;
+import org.junit.Rule;
 
 public class CassandraExpungeTest extends Expunge {
-
-    private static DockerCassandraRule cassandraServer = new DockerCassandraRule();
-    private static CassandraHostSystemRule cassandraHostSystemRule = new CassandraHostSystemRule(cassandraServer);
-
     @ClassRule
-    public static RuleChain ruleChaine = RuleChain.outerRule(cassandraServer).around(cassandraHostSystemRule);
+    public static DockerCassandraRule cassandraServer = new DockerCassandraRule();
+    @Rule
+    public CassandraHostSystemRule cassandraHostSystemRule = new CassandraHostSystemRule(cassandraServer);
 
     @Override
     protected ImapHostSystem createImapHostSystem() {

http://git-wip-us.apache.org/repos/asf/james-project/blob/13d7655b/mpt/impl/imap-mailbox/cassandra/src/test/java/org/apache/james/mpt/imapmailbox/cassandra/CassandraFetchBodySectionTest.java
----------------------------------------------------------------------
diff --git a/mpt/impl/imap-mailbox/cassandra/src/test/java/org/apache/james/mpt/imapmailbox/cassandra/CassandraFetchBodySectionTest.java b/mpt/impl/imap-mailbox/cassandra/src/test/java/org/apache/james/mpt/imapmailbox/cassandra/CassandraFetchBodySectionTest.java
index f11c39e..c00bb52 100644
--- a/mpt/impl/imap-mailbox/cassandra/src/test/java/org/apache/james/mpt/imapmailbox/cassandra/CassandraFetchBodySectionTest.java
+++ b/mpt/impl/imap-mailbox/cassandra/src/test/java/org/apache/james/mpt/imapmailbox/cassandra/CassandraFetchBodySectionTest.java
@@ -24,15 +24,13 @@ import org.apache.james.mpt.api.ImapHostSystem;
 import org.apache.james.mpt.imapmailbox.cassandra.host.CassandraHostSystemRule;
 import org.apache.james.mpt.imapmailbox.suite.FetchBodySection;
 import org.junit.ClassRule;
-import org.junit.rules.RuleChain;
+import org.junit.Rule;
 
 public class CassandraFetchBodySectionTest extends FetchBodySection {
-
-    private static DockerCassandraRule cassandraServer = new DockerCassandraRule();
-    private static CassandraHostSystemRule cassandraHostSystemRule = new CassandraHostSystemRule(cassandraServer);
-
     @ClassRule
-    public static RuleChain ruleChaine = RuleChain.outerRule(cassandraServer).around(cassandraHostSystemRule);
+    public static DockerCassandraRule cassandraServer = new DockerCassandraRule();
+    @Rule
+    public CassandraHostSystemRule cassandraHostSystemRule = new CassandraHostSystemRule(cassandraServer);
 
     @Override
     protected ImapHostSystem createImapHostSystem() {

http://git-wip-us.apache.org/repos/asf/james-project/blob/13d7655b/mpt/impl/imap-mailbox/cassandra/src/test/java/org/apache/james/mpt/imapmailbox/cassandra/CassandraFetchBodyStructureTest.java
----------------------------------------------------------------------
diff --git a/mpt/impl/imap-mailbox/cassandra/src/test/java/org/apache/james/mpt/imapmailbox/cassandra/CassandraFetchBodyStructureTest.java b/mpt/impl/imap-mailbox/cassandra/src/test/java/org/apache/james/mpt/imapmailbox/cassandra/CassandraFetchBodyStructureTest.java
index 01383a8..aedc03f 100644
--- a/mpt/impl/imap-mailbox/cassandra/src/test/java/org/apache/james/mpt/imapmailbox/cassandra/CassandraFetchBodyStructureTest.java
+++ b/mpt/impl/imap-mailbox/cassandra/src/test/java/org/apache/james/mpt/imapmailbox/cassandra/CassandraFetchBodyStructureTest.java
@@ -24,15 +24,13 @@ import org.apache.james.mpt.api.ImapHostSystem;
 import org.apache.james.mpt.imapmailbox.cassandra.host.CassandraHostSystemRule;
 import org.apache.james.mpt.imapmailbox.suite.FetchBodyStructure;
 import org.junit.ClassRule;
-import org.junit.rules.RuleChain;
+import org.junit.Rule;
 
 public class CassandraFetchBodyStructureTest extends FetchBodyStructure {
-
-    private static DockerCassandraRule cassandraServer = new DockerCassandraRule();
-    private static CassandraHostSystemRule cassandraHostSystemRule = new CassandraHostSystemRule(cassandraServer);
-
     @ClassRule
-    public static RuleChain ruleChaine = RuleChain.outerRule(cassandraServer).around(cassandraHostSystemRule);
+    public static DockerCassandraRule cassandraServer = new DockerCassandraRule();
+    @Rule
+    public CassandraHostSystemRule cassandraHostSystemRule = new CassandraHostSystemRule(cassandraServer);
 
     @Override
     protected ImapHostSystem createImapHostSystem() {

http://git-wip-us.apache.org/repos/asf/james-project/blob/13d7655b/mpt/impl/imap-mailbox/cassandra/src/test/java/org/apache/james/mpt/imapmailbox/cassandra/CassandraFetchHeadersTest.java
----------------------------------------------------------------------
diff --git a/mpt/impl/imap-mailbox/cassandra/src/test/java/org/apache/james/mpt/imapmailbox/cassandra/CassandraFetchHeadersTest.java b/mpt/impl/imap-mailbox/cassandra/src/test/java/org/apache/james/mpt/imapmailbox/cassandra/CassandraFetchHeadersTest.java
index 965cd8c..a168a33 100644
--- a/mpt/impl/imap-mailbox/cassandra/src/test/java/org/apache/james/mpt/imapmailbox/cassandra/CassandraFetchHeadersTest.java
+++ b/mpt/impl/imap-mailbox/cassandra/src/test/java/org/apache/james/mpt/imapmailbox/cassandra/CassandraFetchHeadersTest.java
@@ -24,15 +24,13 @@ import org.apache.james.mpt.api.ImapHostSystem;
 import org.apache.james.mpt.imapmailbox.cassandra.host.CassandraHostSystemRule;
 import org.apache.james.mpt.imapmailbox.suite.FetchHeaders;
 import org.junit.ClassRule;
-import org.junit.rules.RuleChain;
+import org.junit.Rule;
 
 public class CassandraFetchHeadersTest extends FetchHeaders {
-
-    private static DockerCassandraRule cassandraServer = new DockerCassandraRule();
-    private static CassandraHostSystemRule cassandraHostSystemRule = new CassandraHostSystemRule(cassandraServer);
-
     @ClassRule
-    public static RuleChain ruleChaine = RuleChain.outerRule(cassandraServer).around(cassandraHostSystemRule);
+    public static DockerCassandraRule cassandraServer = new DockerCassandraRule();
+    @Rule
+    public CassandraHostSystemRule cassandraHostSystemRule = new CassandraHostSystemRule(cassandraServer);
 
     @Override
     protected ImapHostSystem createImapHostSystem() {

http://git-wip-us.apache.org/repos/asf/james-project/blob/13d7655b/mpt/impl/imap-mailbox/cassandra/src/test/java/org/apache/james/mpt/imapmailbox/cassandra/CassandraFetchTest.java
----------------------------------------------------------------------
diff --git a/mpt/impl/imap-mailbox/cassandra/src/test/java/org/apache/james/mpt/imapmailbox/cassandra/CassandraFetchTest.java b/mpt/impl/imap-mailbox/cassandra/src/test/java/org/apache/james/mpt/imapmailbox/cassandra/CassandraFetchTest.java
index b1393e9..f6955dc 100644
--- a/mpt/impl/imap-mailbox/cassandra/src/test/java/org/apache/james/mpt/imapmailbox/cassandra/CassandraFetchTest.java
+++ b/mpt/impl/imap-mailbox/cassandra/src/test/java/org/apache/james/mpt/imapmailbox/cassandra/CassandraFetchTest.java
@@ -24,15 +24,13 @@ import org.apache.james.mpt.api.ImapHostSystem;
 import org.apache.james.mpt.imapmailbox.cassandra.host.CassandraHostSystemRule;
 import org.apache.james.mpt.imapmailbox.suite.Fetch;
 import org.junit.ClassRule;
-import org.junit.rules.RuleChain;
+import org.junit.Rule;
 
 public class CassandraFetchTest extends Fetch {
-
-    private static DockerCassandraRule cassandraServer = new DockerCassandraRule();
-    private static CassandraHostSystemRule cassandraHostSystemRule = new CassandraHostSystemRule(cassandraServer);
-
     @ClassRule
-    public static RuleChain ruleChaine = RuleChain.outerRule(cassandraServer).around(cassandraHostSystemRule);
+    public static DockerCassandraRule cassandraServer = new DockerCassandraRule();
+    @Rule
+    public CassandraHostSystemRule cassandraHostSystemRule = new CassandraHostSystemRule(cassandraServer);
 
     @Override
     protected ImapHostSystem createImapHostSystem() {

http://git-wip-us.apache.org/repos/asf/james-project/blob/13d7655b/mpt/impl/imap-mailbox/cassandra/src/test/java/org/apache/james/mpt/imapmailbox/cassandra/CassandraListingTest.java
----------------------------------------------------------------------
diff --git a/mpt/impl/imap-mailbox/cassandra/src/test/java/org/apache/james/mpt/imapmailbox/cassandra/CassandraListingTest.java b/mpt/impl/imap-mailbox/cassandra/src/test/java/org/apache/james/mpt/imapmailbox/cassandra/CassandraListingTest.java
index 36d997b..69f1a5a 100644
--- a/mpt/impl/imap-mailbox/cassandra/src/test/java/org/apache/james/mpt/imapmailbox/cassandra/CassandraListingTest.java
+++ b/mpt/impl/imap-mailbox/cassandra/src/test/java/org/apache/james/mpt/imapmailbox/cassandra/CassandraListingTest.java
@@ -24,15 +24,13 @@ import org.apache.james.mpt.api.ImapHostSystem;
 import org.apache.james.mpt.imapmailbox.cassandra.host.CassandraHostSystemRule;
 import org.apache.james.mpt.imapmailbox.suite.Listing;
 import org.junit.ClassRule;
-import org.junit.rules.RuleChain;
+import org.junit.Rule;
 
 public class CassandraListingTest extends Listing {
-
-    private static DockerCassandraRule cassandraServer = new DockerCassandraRule();
-    private static CassandraHostSystemRule cassandraHostSystemRule = new CassandraHostSystemRule(cassandraServer);
-
     @ClassRule
-    public static RuleChain ruleChaine = RuleChain.outerRule(cassandraServer).around(cassandraHostSystemRule);
+    public static DockerCassandraRule cassandraServer = new DockerCassandraRule();
+    @Rule
+    public CassandraHostSystemRule cassandraHostSystemRule = new CassandraHostSystemRule(cassandraServer);
 
     @Override
     protected ImapHostSystem createImapHostSystem() {

http://git-wip-us.apache.org/repos/asf/james-project/blob/13d7655b/mpt/impl/imap-mailbox/cassandra/src/test/java/org/apache/james/mpt/imapmailbox/cassandra/CassandraListingWithSharingTest.java
----------------------------------------------------------------------
diff --git a/mpt/impl/imap-mailbox/cassandra/src/test/java/org/apache/james/mpt/imapmailbox/cassandra/CassandraListingWithSharingTest.java b/mpt/impl/imap-mailbox/cassandra/src/test/java/org/apache/james/mpt/imapmailbox/cassandra/CassandraListingWithSharingTest.java
index 2aa398b..b686493 100644
--- a/mpt/impl/imap-mailbox/cassandra/src/test/java/org/apache/james/mpt/imapmailbox/cassandra/CassandraListingWithSharingTest.java
+++ b/mpt/impl/imap-mailbox/cassandra/src/test/java/org/apache/james/mpt/imapmailbox/cassandra/CassandraListingWithSharingTest.java
@@ -24,15 +24,13 @@ import org.apache.james.mpt.api.ImapHostSystem;
 import org.apache.james.mpt.imapmailbox.cassandra.host.CassandraHostSystemRule;
 import org.apache.james.mpt.imapmailbox.suite.ListingWithSharingTest;
 import org.junit.ClassRule;
-import org.junit.rules.RuleChain;
+import org.junit.Rule;
 
 public class CassandraListingWithSharingTest extends ListingWithSharingTest {
-
-    private static DockerCassandraRule cassandraServer = new DockerCassandraRule();
-    private static CassandraHostSystemRule cassandraHostSystemRule = new CassandraHostSystemRule(cassandraServer);
-
     @ClassRule
-    public static RuleChain ruleChaine = RuleChain.outerRule(cassandraServer).around(cassandraHostSystemRule);
+    public static DockerCassandraRule cassandraServer = new DockerCassandraRule();
+    @Rule
+    public CassandraHostSystemRule cassandraHostSystemRule = new CassandraHostSystemRule(cassandraServer);
 
     @Override
     protected ImapHostSystem createImapHostSystem() {

http://git-wip-us.apache.org/repos/asf/james-project/blob/13d7655b/mpt/impl/imap-mailbox/cassandra/src/test/java/org/apache/james/mpt/imapmailbox/cassandra/CassandraMailboxAnnotationTest.java
----------------------------------------------------------------------
diff --git a/mpt/impl/imap-mailbox/cassandra/src/test/java/org/apache/james/mpt/imapmailbox/cassandra/CassandraMailboxAnnotationTest.java b/mpt/impl/imap-mailbox/cassandra/src/test/java/org/apache/james/mpt/imapmailbox/cassandra/CassandraMailboxAnnotationTest.java
index d4182a4..ccf03dc 100644
--- a/mpt/impl/imap-mailbox/cassandra/src/test/java/org/apache/james/mpt/imapmailbox/cassandra/CassandraMailboxAnnotationTest.java
+++ b/mpt/impl/imap-mailbox/cassandra/src/test/java/org/apache/james/mpt/imapmailbox/cassandra/CassandraMailboxAnnotationTest.java
@@ -23,25 +23,17 @@ import org.apache.james.backends.cassandra.DockerCassandraRule;
 import org.apache.james.mpt.api.ImapHostSystem;
 import org.apache.james.mpt.imapmailbox.cassandra.host.CassandraHostSystemRule;
 import org.apache.james.mpt.imapmailbox.suite.MailboxAnnotation;
-import org.junit.After;
 import org.junit.ClassRule;
-import org.junit.rules.RuleChain;
+import org.junit.Rule;
 
 public class CassandraMailboxAnnotationTest extends MailboxAnnotation {
-
-    private static DockerCassandraRule cassandraServer = new DockerCassandraRule();
-    private static CassandraHostSystemRule cassandraHostSystemRule = new CassandraHostSystemRule(cassandraServer);
-
     @ClassRule
-    public static RuleChain ruleChaine = RuleChain.outerRule(cassandraServer).around(cassandraHostSystemRule);
+    public static DockerCassandraRule cassandraServer = new DockerCassandraRule();
+    @Rule
+    public CassandraHostSystemRule cassandraHostSystemRule = new CassandraHostSystemRule(cassandraServer);
 
     @Override
     protected ImapHostSystem createImapHostSystem() {
         return cassandraHostSystemRule.getImapHostSystem();
     }
-
-    @After
-    public void tearDown() throws Exception {
-        cassandraHostSystemRule.clean();
-    }
 }

http://git-wip-us.apache.org/repos/asf/james-project/blob/13d7655b/mpt/impl/imap-mailbox/cassandra/src/test/java/org/apache/james/mpt/imapmailbox/cassandra/CassandraMailboxWithLongNameErrorTest.java
----------------------------------------------------------------------
diff --git a/mpt/impl/imap-mailbox/cassandra/src/test/java/org/apache/james/mpt/imapmailbox/cassandra/CassandraMailboxWithLongNameErrorTest.java b/mpt/impl/imap-mailbox/cassandra/src/test/java/org/apache/james/mpt/imapmailbox/cassandra/CassandraMailboxWithLongNameErrorTest.java
index 8ab46c9..70ae98f 100644
--- a/mpt/impl/imap-mailbox/cassandra/src/test/java/org/apache/james/mpt/imapmailbox/cassandra/CassandraMailboxWithLongNameErrorTest.java
+++ b/mpt/impl/imap-mailbox/cassandra/src/test/java/org/apache/james/mpt/imapmailbox/cassandra/CassandraMailboxWithLongNameErrorTest.java
@@ -24,15 +24,13 @@ import org.apache.james.mpt.api.ImapHostSystem;
 import org.apache.james.mpt.imapmailbox.cassandra.host.CassandraHostSystemRule;
 import org.apache.james.mpt.imapmailbox.suite.MailboxWithLongNameError;
 import org.junit.ClassRule;
-import org.junit.rules.RuleChain;
+import org.junit.Rule;
 
 public class CassandraMailboxWithLongNameErrorTest extends MailboxWithLongNameError {
-
-    private static DockerCassandraRule cassandraServer = new DockerCassandraRule();
-    private static CassandraHostSystemRule cassandraHostSystemRule = new CassandraHostSystemRule(cassandraServer);
-
     @ClassRule
-    public static RuleChain ruleChaine = RuleChain.outerRule(cassandraServer).around(cassandraHostSystemRule);
+    public static DockerCassandraRule cassandraServer = new DockerCassandraRule();
+    @Rule
+    public CassandraHostSystemRule cassandraHostSystemRule = new CassandraHostSystemRule(cassandraServer);
 
     @Override
     protected ImapHostSystem createImapHostSystem() {

http://git-wip-us.apache.org/repos/asf/james-project/blob/13d7655b/mpt/impl/imap-mailbox/cassandra/src/test/java/org/apache/james/mpt/imapmailbox/cassandra/CassandraMoveTest.java
----------------------------------------------------------------------
diff --git a/mpt/impl/imap-mailbox/cassandra/src/test/java/org/apache/james/mpt/imapmailbox/cassandra/CassandraMoveTest.java b/mpt/impl/imap-mailbox/cassandra/src/test/java/org/apache/james/mpt/imapmailbox/cassandra/CassandraMoveTest.java
index 34b0370..f38f226 100644
--- a/mpt/impl/imap-mailbox/cassandra/src/test/java/org/apache/james/mpt/imapmailbox/cassandra/CassandraMoveTest.java
+++ b/mpt/impl/imap-mailbox/cassandra/src/test/java/org/apache/james/mpt/imapmailbox/cassandra/CassandraMoveTest.java
@@ -24,15 +24,13 @@ import org.apache.james.mpt.api.ImapHostSystem;
 import org.apache.james.mpt.imapmailbox.cassandra.host.CassandraHostSystemRule;
 import org.apache.james.mpt.imapmailbox.suite.Move;
 import org.junit.ClassRule;
-import org.junit.rules.RuleChain;
+import org.junit.Rule;
 
 public class CassandraMoveTest extends Move {
-
-    private static DockerCassandraRule cassandraServer = new DockerCassandraRule();
-    private static CassandraHostSystemRule cassandraHostSystemRule = new CassandraHostSystemRule(cassandraServer);
-
     @ClassRule
-    public static RuleChain ruleChaine = RuleChain.outerRule(cassandraServer).around(cassandraHostSystemRule);
+    public static DockerCassandraRule cassandraServer = new DockerCassandraRule();
+    @Rule
+    public CassandraHostSystemRule cassandraHostSystemRule = new CassandraHostSystemRule(cassandraServer);
 
     @Override
     protected ImapHostSystem createImapHostSystem() {

http://git-wip-us.apache.org/repos/asf/james-project/blob/13d7655b/mpt/impl/imap-mailbox/cassandra/src/test/java/org/apache/james/mpt/imapmailbox/cassandra/CassandraNonAuthenticatedStateTest.java
----------------------------------------------------------------------
diff --git a/mpt/impl/imap-mailbox/cassandra/src/test/java/org/apache/james/mpt/imapmailbox/cassandra/CassandraNonAuthenticatedStateTest.java b/mpt/impl/imap-mailbox/cassandra/src/test/java/org/apache/james/mpt/imapmailbox/cassandra/CassandraNonAuthenticatedStateTest.java
index 8407339..dfcd095 100644
--- a/mpt/impl/imap-mailbox/cassandra/src/test/java/org/apache/james/mpt/imapmailbox/cassandra/CassandraNonAuthenticatedStateTest.java
+++ b/mpt/impl/imap-mailbox/cassandra/src/test/java/org/apache/james/mpt/imapmailbox/cassandra/CassandraNonAuthenticatedStateTest.java
@@ -24,15 +24,13 @@ import org.apache.james.mpt.api.ImapHostSystem;
 import org.apache.james.mpt.imapmailbox.cassandra.host.CassandraHostSystemRule;
 import org.apache.james.mpt.imapmailbox.suite.NonAuthenticatedState;
 import org.junit.ClassRule;
-import org.junit.rules.RuleChain;
+import org.junit.Rule;
 
 public class CassandraNonAuthenticatedStateTest extends NonAuthenticatedState {
-
-    private static DockerCassandraRule cassandraServer = new DockerCassandraRule();
-    private static CassandraHostSystemRule cassandraHostSystemRule = new CassandraHostSystemRule(cassandraServer);
-
     @ClassRule
-    public static RuleChain ruleChaine = RuleChain.outerRule(cassandraServer).around(cassandraHostSystemRule);
+    public static DockerCassandraRule cassandraServer = new DockerCassandraRule();
+    @Rule
+    public CassandraHostSystemRule cassandraHostSystemRule = new CassandraHostSystemRule(cassandraServer);
 
     @Override
     protected ImapHostSystem createImapHostSystem() {

http://git-wip-us.apache.org/repos/asf/james-project/blob/13d7655b/mpt/impl/imap-mailbox/cassandra/src/test/java/org/apache/james/mpt/imapmailbox/cassandra/CassandraPartialFetchTest.java
----------------------------------------------------------------------
diff --git a/mpt/impl/imap-mailbox/cassandra/src/test/java/org/apache/james/mpt/imapmailbox/cassandra/CassandraPartialFetchTest.java b/mpt/impl/imap-mailbox/cassandra/src/test/java/org/apache/james/mpt/imapmailbox/cassandra/CassandraPartialFetchTest.java
index 66a1d51..48e55ed 100644
--- a/mpt/impl/imap-mailbox/cassandra/src/test/java/org/apache/james/mpt/imapmailbox/cassandra/CassandraPartialFetchTest.java
+++ b/mpt/impl/imap-mailbox/cassandra/src/test/java/org/apache/james/mpt/imapmailbox/cassandra/CassandraPartialFetchTest.java
@@ -24,15 +24,13 @@ import org.apache.james.mpt.api.ImapHostSystem;
 import org.apache.james.mpt.imapmailbox.cassandra.host.CassandraHostSystemRule;
 import org.apache.james.mpt.imapmailbox.suite.PartialFetch;
 import org.junit.ClassRule;
-import org.junit.rules.RuleChain;
+import org.junit.Rule;
 
 public class CassandraPartialFetchTest extends PartialFetch {
-
-    private static DockerCassandraRule cassandraServer = new DockerCassandraRule();
-    private static CassandraHostSystemRule cassandraHostSystemRule = new CassandraHostSystemRule(cassandraServer);
-
     @ClassRule
-    public static RuleChain ruleChaine = RuleChain.outerRule(cassandraServer).around(cassandraHostSystemRule);
+    public static DockerCassandraRule cassandraServer = new DockerCassandraRule();
+    @Rule
+    public CassandraHostSystemRule cassandraHostSystemRule = new CassandraHostSystemRule(cassandraServer);
 
     @Override
     protected ImapHostSystem createImapHostSystem() {

http://git-wip-us.apache.org/repos/asf/james-project/blob/13d7655b/mpt/impl/imap-mailbox/cassandra/src/test/java/org/apache/james/mpt/imapmailbox/cassandra/CassandraQuotaTest.java
----------------------------------------------------------------------
diff --git a/mpt/impl/imap-mailbox/cassandra/src/test/java/org/apache/james/mpt/imapmailbox/cassandra/CassandraQuotaTest.java b/mpt/impl/imap-mailbox/cassandra/src/test/java/org/apache/james/mpt/imapmailbox/cassandra/CassandraQuotaTest.java
index 5c67d44..5439c02 100644
--- a/mpt/impl/imap-mailbox/cassandra/src/test/java/org/apache/james/mpt/imapmailbox/cassandra/CassandraQuotaTest.java
+++ b/mpt/impl/imap-mailbox/cassandra/src/test/java/org/apache/james/mpt/imapmailbox/cassandra/CassandraQuotaTest.java
@@ -23,26 +23,17 @@ import org.apache.james.backends.cassandra.DockerCassandraRule;
 import org.apache.james.mpt.api.ImapHostSystem;
 import org.apache.james.mpt.imapmailbox.cassandra.host.CassandraHostSystemRule;
 import org.apache.james.mpt.imapmailbox.suite.QuotaTest;
-import org.junit.After;
 import org.junit.ClassRule;
-import org.junit.rules.RuleChain;
+import org.junit.Rule;
 
 public class CassandraQuotaTest extends QuotaTest {
-
-    private static DockerCassandraRule cassandraServer = new DockerCassandraRule();
-    private static CassandraHostSystemRule cassandraHostSystemRule = new CassandraHostSystemRule(cassandraServer);
-
     @ClassRule
-    public static RuleChain ruleChaine = RuleChain.outerRule(cassandraServer).around(cassandraHostSystemRule);
+    public static DockerCassandraRule cassandraServer = new DockerCassandraRule();
+    @Rule
+    public CassandraHostSystemRule cassandraHostSystemRule = new CassandraHostSystemRule(cassandraServer);
 
     @Override
     protected ImapHostSystem createImapHostSystem() {
         return cassandraHostSystemRule.getImapHostSystem();
     }
-
-    @Override
-    @After
-    public void tearDown() throws Exception {
-        cassandraHostSystemRule.clean();
-    }
 }

http://git-wip-us.apache.org/repos/asf/james-project/blob/13d7655b/mpt/impl/imap-mailbox/cassandra/src/test/java/org/apache/james/mpt/imapmailbox/cassandra/CassandraRenameTest.java
----------------------------------------------------------------------
diff --git a/mpt/impl/imap-mailbox/cassandra/src/test/java/org/apache/james/mpt/imapmailbox/cassandra/CassandraRenameTest.java b/mpt/impl/imap-mailbox/cassandra/src/test/java/org/apache/james/mpt/imapmailbox/cassandra/CassandraRenameTest.java
index 5a161b9..8940992 100644
--- a/mpt/impl/imap-mailbox/cassandra/src/test/java/org/apache/james/mpt/imapmailbox/cassandra/CassandraRenameTest.java
+++ b/mpt/impl/imap-mailbox/cassandra/src/test/java/org/apache/james/mpt/imapmailbox/cassandra/CassandraRenameTest.java
@@ -23,25 +23,17 @@ import org.apache.james.backends.cassandra.DockerCassandraRule;
 import org.apache.james.mpt.api.ImapHostSystem;
 import org.apache.james.mpt.imapmailbox.cassandra.host.CassandraHostSystemRule;
 import org.apache.james.mpt.imapmailbox.suite.Rename;
-import org.junit.After;
 import org.junit.ClassRule;
-import org.junit.rules.RuleChain;
+import org.junit.Rule;
 
 public class CassandraRenameTest extends Rename {
-
-    private static DockerCassandraRule cassandraServer = new DockerCassandraRule();
-    private static CassandraHostSystemRule cassandraHostSystemRule = new CassandraHostSystemRule(cassandraServer);
-
     @ClassRule
-    public static RuleChain ruleChaine = RuleChain.outerRule(cassandraServer).around(cassandraHostSystemRule);
+    public static DockerCassandraRule cassandraServer = new DockerCassandraRule();
+    @Rule
+    public CassandraHostSystemRule cassandraHostSystemRule = new CassandraHostSystemRule(cassandraServer);
 
     @Override
     protected ImapHostSystem createImapHostSystem() {
         return cassandraHostSystemRule.getImapHostSystem();
     }
-
-    @After
-    public void tearDown() throws Exception {
-        cassandraHostSystemRule.clean();
-    }
 }

http://git-wip-us.apache.org/repos/asf/james-project/blob/13d7655b/mpt/impl/imap-mailbox/cassandra/src/test/java/org/apache/james/mpt/imapmailbox/cassandra/CassandraSearchTest.java
----------------------------------------------------------------------
diff --git a/mpt/impl/imap-mailbox/cassandra/src/test/java/org/apache/james/mpt/imapmailbox/cassandra/CassandraSearchTest.java b/mpt/impl/imap-mailbox/cassandra/src/test/java/org/apache/james/mpt/imapmailbox/cassandra/CassandraSearchTest.java
index 2330256..f976400 100644
--- a/mpt/impl/imap-mailbox/cassandra/src/test/java/org/apache/james/mpt/imapmailbox/cassandra/CassandraSearchTest.java
+++ b/mpt/impl/imap-mailbox/cassandra/src/test/java/org/apache/james/mpt/imapmailbox/cassandra/CassandraSearchTest.java
@@ -24,15 +24,13 @@ import org.apache.james.mpt.api.ImapHostSystem;
 import org.apache.james.mpt.imapmailbox.cassandra.host.CassandraHostSystemRule;
 import org.apache.james.mpt.imapmailbox.suite.Search;
 import org.junit.ClassRule;
-import org.junit.rules.RuleChain;
+import org.junit.Rule;
 
 public class CassandraSearchTest extends Search {
-
-    private static DockerCassandraRule cassandraServer = new DockerCassandraRule();
-    private static CassandraHostSystemRule cassandraHostSystemRule = new CassandraHostSystemRule(cassandraServer);
-
     @ClassRule
-    public static RuleChain ruleChaine = RuleChain.outerRule(cassandraServer).around(cassandraHostSystemRule);
+    public static DockerCassandraRule cassandraServer = new DockerCassandraRule();
+    @Rule
+    public CassandraHostSystemRule cassandraHostSystemRule = new CassandraHostSystemRule(cassandraServer);
 
     @Override
     protected ImapHostSystem createImapHostSystem() {

http://git-wip-us.apache.org/repos/asf/james-project/blob/13d7655b/mpt/impl/imap-mailbox/cassandra/src/test/java/org/apache/james/mpt/imapmailbox/cassandra/CassandraSecurityTest.java
----------------------------------------------------------------------
diff --git a/mpt/impl/imap-mailbox/cassandra/src/test/java/org/apache/james/mpt/imapmailbox/cassandra/CassandraSecurityTest.java b/mpt/impl/imap-mailbox/cassandra/src/test/java/org/apache/james/mpt/imapmailbox/cassandra/CassandraSecurityTest.java
index 3ae71c6..860c989 100644
--- a/mpt/impl/imap-mailbox/cassandra/src/test/java/org/apache/james/mpt/imapmailbox/cassandra/CassandraSecurityTest.java
+++ b/mpt/impl/imap-mailbox/cassandra/src/test/java/org/apache/james/mpt/imapmailbox/cassandra/CassandraSecurityTest.java
@@ -24,15 +24,13 @@ import org.apache.james.mpt.api.ImapHostSystem;
 import org.apache.james.mpt.imapmailbox.cassandra.host.CassandraHostSystemRule;
 import org.apache.james.mpt.imapmailbox.suite.Security;
 import org.junit.ClassRule;
-import org.junit.rules.RuleChain;
+import org.junit.Rule;
 
 public class CassandraSecurityTest extends Security {
-
-    private static DockerCassandraRule cassandraServer = new DockerCassandraRule();
-    private static CassandraHostSystemRule cassandraHostSystemRule = new CassandraHostSystemRule(cassandraServer);
-
     @ClassRule
-    public static RuleChain ruleChaine = RuleChain.outerRule(cassandraServer).around(cassandraHostSystemRule);
+    public static DockerCassandraRule cassandraServer = new DockerCassandraRule();
+    @Rule
+    public CassandraHostSystemRule cassandraHostSystemRule = new CassandraHostSystemRule(cassandraServer);
 
     @Override
     protected ImapHostSystem createImapHostSystem() {

http://git-wip-us.apache.org/repos/asf/james-project/blob/13d7655b/mpt/impl/imap-mailbox/cassandra/src/test/java/org/apache/james/mpt/imapmailbox/cassandra/CassandraSelectTest.java
----------------------------------------------------------------------
diff --git a/mpt/impl/imap-mailbox/cassandra/src/test/java/org/apache/james/mpt/imapmailbox/cassandra/CassandraSelectTest.java b/mpt/impl/imap-mailbox/cassandra/src/test/java/org/apache/james/mpt/imapmailbox/cassandra/CassandraSelectTest.java
index 009b6c8..63ff847 100644
--- a/mpt/impl/imap-mailbox/cassandra/src/test/java/org/apache/james/mpt/imapmailbox/cassandra/CassandraSelectTest.java
+++ b/mpt/impl/imap-mailbox/cassandra/src/test/java/org/apache/james/mpt/imapmailbox/cassandra/CassandraSelectTest.java
@@ -24,15 +24,13 @@ import org.apache.james.mpt.api.ImapHostSystem;
 import org.apache.james.mpt.imapmailbox.cassandra.host.CassandraHostSystemRule;
 import org.apache.james.mpt.imapmailbox.suite.Select;
 import org.junit.ClassRule;
-import org.junit.rules.RuleChain;
+import org.junit.Rule;
 
 public class CassandraSelectTest extends Select {
-
-    private static DockerCassandraRule cassandraServer = new DockerCassandraRule();
-    private static CassandraHostSystemRule cassandraHostSystemRule = new CassandraHostSystemRule(cassandraServer);
-
     @ClassRule
-    public static RuleChain ruleChaine = RuleChain.outerRule(cassandraServer).around(cassandraHostSystemRule);
+    public static DockerCassandraRule cassandraServer = new DockerCassandraRule();
+    @Rule
+    public CassandraHostSystemRule cassandraHostSystemRule = new CassandraHostSystemRule(cassandraServer);
 
     @Override
     protected ImapHostSystem createImapHostSystem() {

http://git-wip-us.apache.org/repos/asf/james-project/blob/13d7655b/mpt/impl/imap-mailbox/cassandra/src/test/java/org/apache/james/mpt/imapmailbox/cassandra/CassandraSelectedInboxTest.java
----------------------------------------------------------------------
diff --git a/mpt/impl/imap-mailbox/cassandra/src/test/java/org/apache/james/mpt/imapmailbox/cassandra/CassandraSelectedInboxTest.java b/mpt/impl/imap-mailbox/cassandra/src/test/java/org/apache/james/mpt/imapmailbox/cassandra/CassandraSelectedInboxTest.java
index d5fb4b1..138f14f 100644
--- a/mpt/impl/imap-mailbox/cassandra/src/test/java/org/apache/james/mpt/imapmailbox/cassandra/CassandraSelectedInboxTest.java
+++ b/mpt/impl/imap-mailbox/cassandra/src/test/java/org/apache/james/mpt/imapmailbox/cassandra/CassandraSelectedInboxTest.java
@@ -24,15 +24,13 @@ import org.apache.james.mpt.api.ImapHostSystem;
 import org.apache.james.mpt.imapmailbox.cassandra.host.CassandraHostSystemRule;
 import org.apache.james.mpt.imapmailbox.suite.SelectedInbox;
 import org.junit.ClassRule;
-import org.junit.rules.RuleChain;
+import org.junit.Rule;
 
 public class CassandraSelectedInboxTest extends SelectedInbox {
-
-    private static DockerCassandraRule cassandraServer = new DockerCassandraRule();
-    private static CassandraHostSystemRule cassandraHostSystemRule = new CassandraHostSystemRule(cassandraServer);
-
     @ClassRule
-    public static RuleChain ruleChaine = RuleChain.outerRule(cassandraServer).around(cassandraHostSystemRule);
+    public static DockerCassandraRule cassandraServer = new DockerCassandraRule();
+    @Rule
+    public CassandraHostSystemRule cassandraHostSystemRule = new CassandraHostSystemRule(cassandraServer);
 
     @Override
     protected ImapHostSystem createImapHostSystem() {

http://git-wip-us.apache.org/repos/asf/james-project/blob/13d7655b/mpt/impl/imap-mailbox/cassandra/src/test/java/org/apache/james/mpt/imapmailbox/cassandra/CassandraSelectedStateTest.java
----------------------------------------------------------------------
diff --git a/mpt/impl/imap-mailbox/cassandra/src/test/java/org/apache/james/mpt/imapmailbox/cassandra/CassandraSelectedStateTest.java b/mpt/impl/imap-mailbox/cassandra/src/test/java/org/apache/james/mpt/imapmailbox/cassandra/CassandraSelectedStateTest.java
index c5a5036..a51d683 100644
--- a/mpt/impl/imap-mailbox/cassandra/src/test/java/org/apache/james/mpt/imapmailbox/cassandra/CassandraSelectedStateTest.java
+++ b/mpt/impl/imap-mailbox/cassandra/src/test/java/org/apache/james/mpt/imapmailbox/cassandra/CassandraSelectedStateTest.java
@@ -23,25 +23,17 @@ import org.apache.james.backends.cassandra.DockerCassandraRule;
 import org.apache.james.mpt.api.ImapHostSystem;
 import org.apache.james.mpt.imapmailbox.cassandra.host.CassandraHostSystemRule;
 import org.apache.james.mpt.imapmailbox.suite.SelectedState;
-import org.junit.After;
 import org.junit.ClassRule;
-import org.junit.rules.RuleChain;
+import org.junit.Rule;
 
 public class CassandraSelectedStateTest extends SelectedState {
-
-    private static DockerCassandraRule cassandraServer = new DockerCassandraRule();
-    private static CassandraHostSystemRule cassandraHostSystemRule = new CassandraHostSystemRule(cassandraServer);
-
     @ClassRule
-    public static RuleChain ruleChaine = RuleChain.outerRule(cassandraServer).around(cassandraHostSystemRule);
+    public static DockerCassandraRule cassandraServer = new DockerCassandraRule();
+    @Rule
+    public CassandraHostSystemRule cassandraHostSystemRule = new CassandraHostSystemRule(cassandraServer);
 
     @Override
     protected ImapHostSystem createImapHostSystem() {
         return cassandraHostSystemRule.getImapHostSystem();
     }
-
-    @After
-    public void tearDown() throws Exception {
-        cassandraHostSystemRule.clean();
-    }
 }

http://git-wip-us.apache.org/repos/asf/james-project/blob/13d7655b/mpt/impl/imap-mailbox/cassandra/src/test/java/org/apache/james/mpt/imapmailbox/cassandra/CassandraUidSearchOnIndexTest.java
----------------------------------------------------------------------
diff --git a/mpt/impl/imap-mailbox/cassandra/src/test/java/org/apache/james/mpt/imapmailbox/cassandra/CassandraUidSearchOnIndexTest.java b/mpt/impl/imap-mailbox/cassandra/src/test/java/org/apache/james/mpt/imapmailbox/cassandra/CassandraUidSearchOnIndexTest.java
index 8156ace..6e16c4f 100644
--- a/mpt/impl/imap-mailbox/cassandra/src/test/java/org/apache/james/mpt/imapmailbox/cassandra/CassandraUidSearchOnIndexTest.java
+++ b/mpt/impl/imap-mailbox/cassandra/src/test/java/org/apache/james/mpt/imapmailbox/cassandra/CassandraUidSearchOnIndexTest.java
@@ -24,15 +24,13 @@ import org.apache.james.mpt.api.ImapHostSystem;
 import org.apache.james.mpt.imapmailbox.cassandra.host.CassandraHostSystemRule;
 import org.apache.james.mpt.imapmailbox.suite.UidSearchOnIndex;
 import org.junit.ClassRule;
-import org.junit.rules.RuleChain;
+import org.junit.Rule;
 
 public class CassandraUidSearchOnIndexTest extends UidSearchOnIndex {
-
-    private static DockerCassandraRule cassandraServer = new DockerCassandraRule();
-    private static CassandraHostSystemRule cassandraHostSystemRule = new CassandraHostSystemRule(cassandraServer);
-
     @ClassRule
-    public static RuleChain ruleChaine = RuleChain.outerRule(cassandraServer).around(cassandraHostSystemRule);
+    public static DockerCassandraRule cassandraServer = new DockerCassandraRule();
+    @Rule
+    public CassandraHostSystemRule cassandraHostSystemRule = new CassandraHostSystemRule(cassandraServer);
 
     @Override
     protected ImapHostSystem createImapHostSystem() {

http://git-wip-us.apache.org/repos/asf/james-project/blob/13d7655b/mpt/impl/imap-mailbox/cassandra/src/test/java/org/apache/james/mpt/imapmailbox/cassandra/CassandraUidSearchTest.java
----------------------------------------------------------------------
diff --git a/mpt/impl/imap-mailbox/cassandra/src/test/java/org/apache/james/mpt/imapmailbox/cassandra/CassandraUidSearchTest.java b/mpt/impl/imap-mailbox/cassandra/src/test/java/org/apache/james/mpt/imapmailbox/cassandra/CassandraUidSearchTest.java
index c9afc78..f2f906e 100644
--- a/mpt/impl/imap-mailbox/cassandra/src/test/java/org/apache/james/mpt/imapmailbox/cassandra/CassandraUidSearchTest.java
+++ b/mpt/impl/imap-mailbox/cassandra/src/test/java/org/apache/james/mpt/imapmailbox/cassandra/CassandraUidSearchTest.java
@@ -24,15 +24,13 @@ import org.apache.james.mpt.api.ImapHostSystem;
 import org.apache.james.mpt.imapmailbox.cassandra.host.CassandraHostSystemRule;
 import org.apache.james.mpt.imapmailbox.suite.UidSearch;
 import org.junit.ClassRule;
-import org.junit.rules.RuleChain;
+import org.junit.Rule;
 
 public class CassandraUidSearchTest extends UidSearch {
-
-    private static DockerCassandraRule cassandraServer = new DockerCassandraRule();
-    private static CassandraHostSystemRule cassandraHostSystemRule = new CassandraHostSystemRule(cassandraServer);
-
     @ClassRule
-    public static RuleChain ruleChaine = RuleChain.outerRule(cassandraServer).around(cassandraHostSystemRule);
+    public static DockerCassandraRule cassandraServer = new DockerCassandraRule();
+    @Rule
+    public CassandraHostSystemRule cassandraHostSystemRule = new CassandraHostSystemRule(cassandraServer);
 
     @Override
     protected ImapHostSystem createImapHostSystem() {

http://git-wip-us.apache.org/repos/asf/james-project/blob/13d7655b/mpt/impl/imap-mailbox/cassandra/src/test/java/org/apache/james/mpt/imapmailbox/cassandra/CassandraUserFlagsSupportTest.java
----------------------------------------------------------------------
diff --git a/mpt/impl/imap-mailbox/cassandra/src/test/java/org/apache/james/mpt/imapmailbox/cassandra/CassandraUserFlagsSupportTest.java b/mpt/impl/imap-mailbox/cassandra/src/test/java/org/apache/james/mpt/imapmailbox/cassandra/CassandraUserFlagsSupportTest.java
index 6b020e8..b5bc1aa 100644
--- a/mpt/impl/imap-mailbox/cassandra/src/test/java/org/apache/james/mpt/imapmailbox/cassandra/CassandraUserFlagsSupportTest.java
+++ b/mpt/impl/imap-mailbox/cassandra/src/test/java/org/apache/james/mpt/imapmailbox/cassandra/CassandraUserFlagsSupportTest.java
@@ -24,15 +24,13 @@ import org.apache.james.mpt.api.ImapHostSystem;
 import org.apache.james.mpt.imapmailbox.cassandra.host.CassandraHostSystemRule;
 import org.apache.james.mpt.imapmailbox.suite.UserFlagsSupport;
 import org.junit.ClassRule;
-import org.junit.rules.RuleChain;
+import org.junit.Rule;
 
 public class CassandraUserFlagsSupportTest extends UserFlagsSupport {
-
-    private static DockerCassandraRule cassandraServer = new DockerCassandraRule();
-    private static CassandraHostSystemRule cassandraHostSystemRule = new CassandraHostSystemRule(cassandraServer);
-
     @ClassRule
-    public static RuleChain ruleChaine = RuleChain.outerRule(cassandraServer).around(cassandraHostSystemRule);
+    public static DockerCassandraRule cassandraServer = new DockerCassandraRule();
+    @Rule
+    public CassandraHostSystemRule cassandraHostSystemRule = new CassandraHostSystemRule(cassandraServer);
 
     @Override
     protected ImapHostSystem createImapHostSystem() {

http://git-wip-us.apache.org/repos/asf/james-project/blob/13d7655b/mpt/impl/imap-mailbox/cassandra/src/test/java/org/apache/james/mpt/imapmailbox/cassandra/host/CassandraHostSystem.java
----------------------------------------------------------------------
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 c07f7bd..dbb2006 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
@@ -158,7 +158,7 @@ public class CassandraHostSystem extends JamesImapHostSystem {
         super.afterTest();
         cassandra.close();
     }
-    
+
     @Override
     public boolean supports(Feature... features) {
         return IMAP_FEATURES.supports(features);

http://git-wip-us.apache.org/repos/asf/james-project/blob/13d7655b/mpt/impl/imap-mailbox/cassandra/src/test/java/org/apache/james/mpt/imapmailbox/cassandra/host/CassandraHostSystemRule.java
----------------------------------------------------------------------
diff --git a/mpt/impl/imap-mailbox/cassandra/src/test/java/org/apache/james/mpt/imapmailbox/cassandra/host/CassandraHostSystemRule.java b/mpt/impl/imap-mailbox/cassandra/src/test/java/org/apache/james/mpt/imapmailbox/cassandra/host/CassandraHostSystemRule.java
index cc4a30b..88358b6 100644
--- a/mpt/impl/imap-mailbox/cassandra/src/test/java/org/apache/james/mpt/imapmailbox/cassandra/host/CassandraHostSystemRule.java
+++ b/mpt/impl/imap-mailbox/cassandra/src/test/java/org/apache/james/mpt/imapmailbox/cassandra/host/CassandraHostSystemRule.java
@@ -19,17 +19,10 @@
 package org.apache.james.mpt.imapmailbox.cassandra.host;
 
 import org.apache.james.backends.cassandra.DockerCassandraRule;
-import org.apache.james.mailbox.MailboxManager;
-import org.apache.james.mailbox.MailboxSession;
 import org.apache.james.mpt.host.JamesImapHostSystem;
 import org.junit.rules.ExternalResource;
 
-import com.github.fge.lambdas.Throwing;
-
 public class CassandraHostSystemRule extends ExternalResource {
-
-    private static final String USERNAME = "mpt";
-
     private final DockerCassandraRule cassandraServer;
     private CassandraHostSystem system;
 
@@ -46,22 +39,12 @@ public class CassandraHostSystemRule extends ExternalResource {
     @Override
     protected void after() {
         try {
-            clean();
+            system.afterTest();
         } catch (Exception e) {
             throw new RuntimeException(e);
         }
     }
 
-    public void clean() throws Exception {
-        MailboxManager mailboxManager = system.getMailboxManager();
-        MailboxSession systemSession = mailboxManager.createSystemSession(USERNAME);
-        mailboxManager.list(systemSession)
-            .forEach(Throwing.consumer(
-                mailboxPath -> mailboxManager.deleteMailbox(
-                        mailboxPath, 
-                        mailboxManager.createSystemSession(mailboxPath.getUser()))));
-    }
-
     public JamesImapHostSystem getImapHostSystem() {
         return system;
     }

http://git-wip-us.apache.org/repos/asf/james-project/blob/13d7655b/mpt/impl/imap-mailbox/core/src/main/java/org/apache/james/mpt/imapmailbox/suite/QuotaTest.java
----------------------------------------------------------------------
diff --git a/mpt/impl/imap-mailbox/core/src/main/java/org/apache/james/mpt/imapmailbox/suite/QuotaTest.java b/mpt/impl/imap-mailbox/core/src/main/java/org/apache/james/mpt/imapmailbox/suite/QuotaTest.java
index a0686e8..87603fe 100644
--- a/mpt/impl/imap-mailbox/core/src/main/java/org/apache/james/mpt/imapmailbox/suite/QuotaTest.java
+++ b/mpt/impl/imap-mailbox/core/src/main/java/org/apache/james/mpt/imapmailbox/suite/QuotaTest.java
@@ -28,7 +28,6 @@ import org.apache.james.mpt.api.ImapHostSystem;
 import org.apache.james.mpt.imapmailbox.ImapTestConstants;
 import org.apache.james.mpt.imapmailbox.suite.base.BasicImapCommands;
 import org.apache.james.mpt.script.SimpleScriptedTestProtocol;
-import org.junit.After;
 import org.junit.Assume;
 import org.junit.Before;
 import org.junit.Test;
@@ -54,11 +53,6 @@ public abstract class QuotaTest implements ImapTestConstants {
         BasicImapCommands.authenticate(simpleScriptedTestProtocol);
         BasicImapCommands.prepareMailbox(simpleScriptedTestProtocol);
     }
-    
-    @After
-    public void tearDown() throws Exception {
-        system.afterTest();
-    }
 
     @Test
     public void testQuotaScript() throws Exception {

http://git-wip-us.apache.org/repos/asf/james-project/blob/13d7655b/mpt/impl/imap-mailbox/hbase/src/test/java/org/apache/james/mpt/imapmailbox/hbase/HBaseQuotaTest.java
----------------------------------------------------------------------
diff --git a/mpt/impl/imap-mailbox/hbase/src/test/java/org/apache/james/mpt/imapmailbox/hbase/HBaseQuotaTest.java b/mpt/impl/imap-mailbox/hbase/src/test/java/org/apache/james/mpt/imapmailbox/hbase/HBaseQuotaTest.java
index 053fd62..39721e7 100644
--- a/mpt/impl/imap-mailbox/hbase/src/test/java/org/apache/james/mpt/imapmailbox/hbase/HBaseQuotaTest.java
+++ b/mpt/impl/imap-mailbox/hbase/src/test/java/org/apache/james/mpt/imapmailbox/hbase/HBaseQuotaTest.java
@@ -22,7 +22,6 @@ package org.apache.james.mpt.imapmailbox.hbase;
 import org.apache.james.mpt.api.ImapHostSystem;
 import org.apache.james.mpt.imapmailbox.hbase.host.HBaseHostSystem;
 import org.apache.james.mpt.imapmailbox.suite.QuotaTest;
-import org.junit.After;
 import org.junit.Before;
 import org.junit.Ignore;
 
@@ -43,11 +42,5 @@ public class HBaseQuotaTest extends QuotaTest {
     protected ImapHostSystem createImapHostSystem() {
         return system;
     }
-
-    @Override
-    @After
-    public void tearDown() throws Exception {
-        system.afterTest();
-    }
     
 }

http://git-wip-us.apache.org/repos/asf/james-project/blob/13d7655b/mpt/impl/imap-mailbox/inmemory/src/test/java/org/apache/james/mpt/imapmailbox/inmemory/InMemoryQuotaTest.java
----------------------------------------------------------------------
diff --git a/mpt/impl/imap-mailbox/inmemory/src/test/java/org/apache/james/mpt/imapmailbox/inmemory/InMemoryQuotaTest.java b/mpt/impl/imap-mailbox/inmemory/src/test/java/org/apache/james/mpt/imapmailbox/inmemory/InMemoryQuotaTest.java
index f085ca7..2118168 100644
--- a/mpt/impl/imap-mailbox/inmemory/src/test/java/org/apache/james/mpt/imapmailbox/inmemory/InMemoryQuotaTest.java
+++ b/mpt/impl/imap-mailbox/inmemory/src/test/java/org/apache/james/mpt/imapmailbox/inmemory/InMemoryQuotaTest.java
@@ -22,7 +22,6 @@ package org.apache.james.mpt.imapmailbox.inmemory;
 import org.apache.james.mpt.api.ImapHostSystem;
 import org.apache.james.mpt.imapmailbox.inmemory.host.InMemoryHostSystem;
 import org.apache.james.mpt.imapmailbox.suite.QuotaTest;
-import org.junit.After;
 import org.junit.Before;
 
 public class InMemoryQuotaTest extends QuotaTest {
@@ -41,11 +40,5 @@ public class InMemoryQuotaTest extends QuotaTest {
     protected ImapHostSystem createImapHostSystem() {
         return system;
     }
-
-    @Override
-    @After
-    public void tearDown() throws Exception {
-        system.afterTest();
-    }
     
 }

http://git-wip-us.apache.org/repos/asf/james-project/blob/13d7655b/mpt/impl/imap-mailbox/jpa/src/test/java/org/apache/james/mpt/imapmailbox/jpa/JpaQuotaTest.java
----------------------------------------------------------------------
diff --git a/mpt/impl/imap-mailbox/jpa/src/test/java/org/apache/james/mpt/imapmailbox/jpa/JpaQuotaTest.java b/mpt/impl/imap-mailbox/jpa/src/test/java/org/apache/james/mpt/imapmailbox/jpa/JpaQuotaTest.java
index 280a570..4133328 100644
--- a/mpt/impl/imap-mailbox/jpa/src/test/java/org/apache/james/mpt/imapmailbox/jpa/JpaQuotaTest.java
+++ b/mpt/impl/imap-mailbox/jpa/src/test/java/org/apache/james/mpt/imapmailbox/jpa/JpaQuotaTest.java
@@ -22,7 +22,6 @@ package org.apache.james.mpt.imapmailbox.jpa;
 import org.apache.james.mpt.api.ImapHostSystem;
 import org.apache.james.mpt.imapmailbox.jpa.host.JPAHostSystem;
 import org.apache.james.mpt.imapmailbox.suite.QuotaTest;
-import org.junit.After;
 import org.junit.Before;
 
 public class JpaQuotaTest extends QuotaTest {
@@ -42,10 +41,5 @@ public class JpaQuotaTest extends QuotaTest {
         return system;
     }
 
-    @Override
-    @After
-    public void tearDown() throws Exception {
-        system.afterTest();
-    }
     
 }

http://git-wip-us.apache.org/repos/asf/james-project/blob/13d7655b/mpt/impl/imap-mailbox/lucenesearch/src/test/java/org/apache/james/mpt/imapmailbox/lucenesearch/LuceneQuotaTest.java
----------------------------------------------------------------------
diff --git a/mpt/impl/imap-mailbox/lucenesearch/src/test/java/org/apache/james/mpt/imapmailbox/lucenesearch/LuceneQuotaTest.java b/mpt/impl/imap-mailbox/lucenesearch/src/test/java/org/apache/james/mpt/imapmailbox/lucenesearch/LuceneQuotaTest.java
index 128c86d..5224d9e 100644
--- a/mpt/impl/imap-mailbox/lucenesearch/src/test/java/org/apache/james/mpt/imapmailbox/lucenesearch/LuceneQuotaTest.java
+++ b/mpt/impl/imap-mailbox/lucenesearch/src/test/java/org/apache/james/mpt/imapmailbox/lucenesearch/LuceneQuotaTest.java
@@ -22,7 +22,6 @@ package org.apache.james.mpt.imapmailbox.lucenesearch;
 import org.apache.james.mpt.api.ImapHostSystem;
 import org.apache.james.mpt.imapmailbox.lucenesearch.host.LuceneSearchHostSystem;
 import org.apache.james.mpt.imapmailbox.suite.QuotaTest;
-import org.junit.After;
 import org.junit.Before;
 
 public class LuceneQuotaTest extends QuotaTest {
@@ -42,10 +41,4 @@ public class LuceneQuotaTest extends QuotaTest {
         return system;
     }
 
-    @Override
-    @After
-    public void tearDown() throws Exception {
-        system.afterTest();
-    }
-    
 }

http://git-wip-us.apache.org/repos/asf/james-project/blob/13d7655b/mpt/impl/imap-mailbox/maildir/src/test/java/org/apache/james/mpt/imapmailbox/maildir/MaildirQuotaTest.java
----------------------------------------------------------------------
diff --git a/mpt/impl/imap-mailbox/maildir/src/test/java/org/apache/james/mpt/imapmailbox/maildir/MaildirQuotaTest.java b/mpt/impl/imap-mailbox/maildir/src/test/java/org/apache/james/mpt/imapmailbox/maildir/MaildirQuotaTest.java
index 28afd21..def609a 100644
--- a/mpt/impl/imap-mailbox/maildir/src/test/java/org/apache/james/mpt/imapmailbox/maildir/MaildirQuotaTest.java
+++ b/mpt/impl/imap-mailbox/maildir/src/test/java/org/apache/james/mpt/imapmailbox/maildir/MaildirQuotaTest.java
@@ -22,7 +22,6 @@ package org.apache.james.mpt.imapmailbox.maildir;
 import org.apache.james.mpt.api.ImapHostSystem;
 import org.apache.james.mpt.imapmailbox.maildir.host.MaildirHostSystem;
 import org.apache.james.mpt.imapmailbox.suite.QuotaTest;
-import org.junit.After;
 import org.junit.Before;
 
 public class MaildirQuotaTest extends QuotaTest {
@@ -40,11 +39,5 @@ public class MaildirQuotaTest extends QuotaTest {
     protected ImapHostSystem createImapHostSystem() {
         return system;
     }
-
-    @Override
-    @After
-    public void tearDown() throws Exception {
-        system.afterTest();
-    }
     
 }


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


[14/15] james-project git commit: MAILBOX-342 Mutualize Cassandra ManageSieve MPT tests

Posted by bt...@apache.org.
MAILBOX-342 Mutualize Cassandra ManageSieve MPT tests


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

Branch: refs/heads/master
Commit: 2862b0b57e60165b6e2aeed28536a53144c50e18
Parents: 7f2dfbf
Author: benwa <bt...@linagora.com>
Authored: Fri Jul 13 18:43:00 2018 +0700
Committer: benwa <bt...@linagora.com>
Committed: Wed Jul 25 16:56:27 2018 +0700

----------------------------------------------------------------------
 mpt/impl/managesieve/cassandra/pom.xml          |  5 ++
 .../cassandra/CassandraAuthenticateTest.java    | 54 ----------------
 .../cassandra/CassandraCapabilityTest.java      | 54 ----------------
 .../cassandra/CassandraCheckScriptTest.java     | 54 ----------------
 .../cassandra/CassandraDeleteScriptTest.java    | 54 ----------------
 .../cassandra/CassandraGetScriptTest.java       | 54 ----------------
 .../cassandra/CassandraHaveSpaceTest.java       | 54 ----------------
 .../cassandra/CassandraListScriptsTest.java     | 54 ----------------
 .../cassandra/CassandraLogoutTest.java          | 54 ----------------
 .../cassandra/CassandraManageSieveMPTTest.java  | 66 ++++++++++++++++++++
 .../managesieve/cassandra/CassandraModule.java  | 47 --------------
 .../cassandra/CassandraNoopTest.java            | 54 ----------------
 .../cassandra/CassandraPutScriptTest.java       | 54 ----------------
 .../cassandra/CassandraRenameScriptTest.java    | 54 ----------------
 .../cassandra/CassandraSetActiveTest.java       | 54 ----------------
 .../cassandra/CassandraStartTlsTest.java        | 54 ----------------
 .../cassandra/CassandraUnauthenticatedTest.java | 54 ----------------
 .../cassandra/host/CassandraHostSystem.java     |  9 ++-
 mpt/impl/managesieve/core/pom.xml               |  8 ++-
 .../apache/james/mpt/HostSystemProvider.java    | 26 ++++++++
 .../mpt/testsuite/AuthenticateContract.java     | 44 +++++++++++++
 .../james/mpt/testsuite/AuthenticateTest.java   | 60 ------------------
 .../james/mpt/testsuite/CapabilityContract.java | 44 +++++++++++++
 .../james/mpt/testsuite/CapabilityTest.java     | 60 ------------------
 .../mpt/testsuite/CheckScriptContract.java      | 44 +++++++++++++
 .../james/mpt/testsuite/CheckScriptTest.java    | 60 ------------------
 .../mpt/testsuite/DeleteScriptContract.java     | 48 ++++++++++++++
 .../james/mpt/testsuite/DeleteScriptTest.java   | 60 ------------------
 .../james/mpt/testsuite/GetScriptContract.java  | 44 +++++++++++++
 .../james/mpt/testsuite/GetScriptTest.java      | 60 ------------------
 .../james/mpt/testsuite/HaveSpaceContract.java  | 48 ++++++++++++++
 .../james/mpt/testsuite/HaveSpaceTest.java      | 63 -------------------
 .../mpt/testsuite/ListScriptsContract.java      | 44 +++++++++++++
 .../james/mpt/testsuite/ListScriptsTest.java    | 60 ------------------
 .../james/mpt/testsuite/LogoutContract.java     | 48 ++++++++++++++
 .../apache/james/mpt/testsuite/LogoutTest.java  | 60 ------------------
 .../james/mpt/testsuite/NoopContract.java       | 45 +++++++++++++
 .../apache/james/mpt/testsuite/NoopTest.java    | 61 ------------------
 .../james/mpt/testsuite/PutScriptContract.java  | 47 ++++++++++++++
 .../james/mpt/testsuite/PutScriptTest.java      | 61 ------------------
 .../mpt/testsuite/RenameScriptContract.java     | 44 +++++++++++++
 .../james/mpt/testsuite/RenameScriptTest.java   | 60 ------------------
 .../james/mpt/testsuite/SetActiveContract.java  | 44 +++++++++++++
 .../james/mpt/testsuite/SetActiveTest.java      | 60 ------------------
 .../james/mpt/testsuite/StartTlsContract.java   | 45 +++++++++++++
 .../james/mpt/testsuite/StartTlsTest.java       | 60 ------------------
 .../mpt/testsuite/UnauthenticatedContract.java  | 45 +++++++++++++
 .../mpt/testsuite/UnauthenticatedTest.java      | 61 ------------------
 mpt/impl/managesieve/file/pom.xml               |  5 ++
 .../managesieve/file/FileAuthenticateTest.java  | 26 ++++----
 .../managesieve/file/FileCapabilityTest.java    | 26 ++++----
 .../managesieve/file/FileCheckScriptTest.java   | 26 ++++----
 .../managesieve/file/FileDeleteScriptTest.java  | 26 ++++----
 .../mpt/managesieve/file/FileGetScriptTest.java | 26 ++++----
 .../mpt/managesieve/file/FileHaveSpaceTest.java | 26 ++++----
 .../managesieve/file/FileListScriptsTest.java   | 26 ++++----
 .../mpt/managesieve/file/FileLogoutTest.java    | 25 ++++----
 .../mpt/managesieve/file/FileNoopTest.java      | 26 ++++----
 .../mpt/managesieve/file/FilePutScriptTest.java | 26 ++++----
 .../managesieve/file/FileRenameScriptTest.java  | 26 ++++----
 .../mpt/managesieve/file/FileSetActiveTest.java | 26 ++++----
 .../mpt/managesieve/file/FileStartTlsTest.java  | 26 ++++----
 .../file/FileUnauthenticatedTest.java           | 26 ++++----
 63 files changed, 902 insertions(+), 1863 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/james-project/blob/2862b0b5/mpt/impl/managesieve/cassandra/pom.xml
----------------------------------------------------------------------
diff --git a/mpt/impl/managesieve/cassandra/pom.xml b/mpt/impl/managesieve/cassandra/pom.xml
index 5ce4426..b500a5e 100644
--- a/mpt/impl/managesieve/cassandra/pom.xml
+++ b/mpt/impl/managesieve/cassandra/pom.xml
@@ -49,6 +49,11 @@
             <groupId>${james.groupId}</groupId>
             <artifactId>james-server-data-cassandra</artifactId>
         </dependency>
+        <dependency>
+            <groupId>org.junit.platform</groupId>
+            <artifactId>junit-platform-launcher</artifactId>
+            <scope>test</scope>
+        </dependency>
     </dependencies>
 
 </project>

http://git-wip-us.apache.org/repos/asf/james-project/blob/2862b0b5/mpt/impl/managesieve/cassandra/src/test/java/org/apache/james/mpt/managesieve/cassandra/CassandraAuthenticateTest.java
----------------------------------------------------------------------
diff --git a/mpt/impl/managesieve/cassandra/src/test/java/org/apache/james/mpt/managesieve/cassandra/CassandraAuthenticateTest.java b/mpt/impl/managesieve/cassandra/src/test/java/org/apache/james/mpt/managesieve/cassandra/CassandraAuthenticateTest.java
deleted file mode 100644
index 7fc1f12..0000000
--- a/mpt/impl/managesieve/cassandra/src/test/java/org/apache/james/mpt/managesieve/cassandra/CassandraAuthenticateTest.java
+++ /dev/null
@@ -1,54 +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.mpt.managesieve.cassandra;
-
-import org.apache.james.backends.cassandra.DockerCassandraRule;
-import org.apache.james.mpt.host.ManageSieveHostSystem;
-import org.apache.james.mpt.managesieve.cassandra.host.CassandraHostSystem;
-import org.apache.james.mpt.testsuite.AuthenticateTest;
-import org.junit.After;
-import org.junit.Before;
-import org.junit.ClassRule;
-
-public class CassandraAuthenticateTest extends AuthenticateTest {
-
-    @ClassRule public static DockerCassandraRule cassandraServer = new DockerCassandraRule();
-    
-    private ManageSieveHostSystem system;
-
-    @Override
-    @Before
-    public void setUp() throws Exception {
-        system = new CassandraHostSystem(cassandraServer.getHost());
-        system.beforeTest();
-        super.setUp();
-    }
-    
-    @Override
-    protected ManageSieveHostSystem createManageSieveHostSystem() {
-        return system;
-    }
-
-    @Override
-    @After
-    public void tearDown() throws Exception {
-        system.afterTest();
-    }
-}

http://git-wip-us.apache.org/repos/asf/james-project/blob/2862b0b5/mpt/impl/managesieve/cassandra/src/test/java/org/apache/james/mpt/managesieve/cassandra/CassandraCapabilityTest.java
----------------------------------------------------------------------
diff --git a/mpt/impl/managesieve/cassandra/src/test/java/org/apache/james/mpt/managesieve/cassandra/CassandraCapabilityTest.java b/mpt/impl/managesieve/cassandra/src/test/java/org/apache/james/mpt/managesieve/cassandra/CassandraCapabilityTest.java
deleted file mode 100644
index 7d26e5e..0000000
--- a/mpt/impl/managesieve/cassandra/src/test/java/org/apache/james/mpt/managesieve/cassandra/CassandraCapabilityTest.java
+++ /dev/null
@@ -1,54 +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.mpt.managesieve.cassandra;
-
-import org.apache.james.backends.cassandra.DockerCassandraRule;
-import org.apache.james.mpt.host.ManageSieveHostSystem;
-import org.apache.james.mpt.managesieve.cassandra.host.CassandraHostSystem;
-import org.apache.james.mpt.testsuite.CapabilityTest;
-import org.junit.After;
-import org.junit.Before;
-import org.junit.ClassRule;
-
-public class CassandraCapabilityTest extends CapabilityTest {
-
-    @ClassRule public static DockerCassandraRule cassandraServer = new DockerCassandraRule();
-    
-    private ManageSieveHostSystem system;
-
-    @Override
-    @Before
-    public void setUp() throws Exception {
-        system = new CassandraHostSystem(cassandraServer.getHost());
-        system.beforeTest();
-        super.setUp();
-    }
-    
-    @Override
-    protected ManageSieveHostSystem createManageSieveHostSystem() {
-        return system;
-    }
-
-    @Override
-    @After
-    public void tearDown() throws Exception {
-        system.afterTest();
-    }
-}

http://git-wip-us.apache.org/repos/asf/james-project/blob/2862b0b5/mpt/impl/managesieve/cassandra/src/test/java/org/apache/james/mpt/managesieve/cassandra/CassandraCheckScriptTest.java
----------------------------------------------------------------------
diff --git a/mpt/impl/managesieve/cassandra/src/test/java/org/apache/james/mpt/managesieve/cassandra/CassandraCheckScriptTest.java b/mpt/impl/managesieve/cassandra/src/test/java/org/apache/james/mpt/managesieve/cassandra/CassandraCheckScriptTest.java
deleted file mode 100644
index 334fd8f..0000000
--- a/mpt/impl/managesieve/cassandra/src/test/java/org/apache/james/mpt/managesieve/cassandra/CassandraCheckScriptTest.java
+++ /dev/null
@@ -1,54 +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.mpt.managesieve.cassandra;
-
-import org.apache.james.backends.cassandra.DockerCassandraRule;
-import org.apache.james.mpt.host.ManageSieveHostSystem;
-import org.apache.james.mpt.managesieve.cassandra.host.CassandraHostSystem;
-import org.apache.james.mpt.testsuite.CheckScriptTest;
-import org.junit.After;
-import org.junit.Before;
-import org.junit.ClassRule;
-
-public class CassandraCheckScriptTest extends CheckScriptTest {
-
-    @ClassRule public static DockerCassandraRule cassandraServer = new DockerCassandraRule();
-    
-    private ManageSieveHostSystem system;
-
-    @Override
-    @Before
-    public void setUp() throws Exception {
-        system = new CassandraHostSystem(cassandraServer.getHost());
-        system.beforeTest();
-        super.setUp();
-    }
-    
-    @Override
-    protected ManageSieveHostSystem createManageSieveHostSystem() {
-        return system;
-    }
-
-    @Override
-    @After
-    public void tearDown() throws Exception {
-        system.afterTest();
-    }
-}

http://git-wip-us.apache.org/repos/asf/james-project/blob/2862b0b5/mpt/impl/managesieve/cassandra/src/test/java/org/apache/james/mpt/managesieve/cassandra/CassandraDeleteScriptTest.java
----------------------------------------------------------------------
diff --git a/mpt/impl/managesieve/cassandra/src/test/java/org/apache/james/mpt/managesieve/cassandra/CassandraDeleteScriptTest.java b/mpt/impl/managesieve/cassandra/src/test/java/org/apache/james/mpt/managesieve/cassandra/CassandraDeleteScriptTest.java
deleted file mode 100644
index a6d635b..0000000
--- a/mpt/impl/managesieve/cassandra/src/test/java/org/apache/james/mpt/managesieve/cassandra/CassandraDeleteScriptTest.java
+++ /dev/null
@@ -1,54 +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.mpt.managesieve.cassandra;
-
-import org.apache.james.backends.cassandra.DockerCassandraRule;
-import org.apache.james.mpt.host.ManageSieveHostSystem;
-import org.apache.james.mpt.managesieve.cassandra.host.CassandraHostSystem;
-import org.apache.james.mpt.testsuite.DeleteScriptTest;
-import org.junit.After;
-import org.junit.Before;
-import org.junit.ClassRule;
-
-public class CassandraDeleteScriptTest extends DeleteScriptTest {
-
-    @ClassRule public static DockerCassandraRule cassandraServer = new DockerCassandraRule();
-    
-    private ManageSieveHostSystem system;
-
-    @Override
-    @Before
-    public void setUp() throws Exception {
-        system = new CassandraHostSystem(cassandraServer.getHost());
-        system.beforeTest();
-        super.setUp();
-    }
-    
-    @Override
-    protected ManageSieveHostSystem createManageSieveHostSystem() {
-        return system;
-    }
-
-    @Override
-    @After
-    public void tearDown() throws Exception {
-        system.afterTest();
-    }
-}

http://git-wip-us.apache.org/repos/asf/james-project/blob/2862b0b5/mpt/impl/managesieve/cassandra/src/test/java/org/apache/james/mpt/managesieve/cassandra/CassandraGetScriptTest.java
----------------------------------------------------------------------
diff --git a/mpt/impl/managesieve/cassandra/src/test/java/org/apache/james/mpt/managesieve/cassandra/CassandraGetScriptTest.java b/mpt/impl/managesieve/cassandra/src/test/java/org/apache/james/mpt/managesieve/cassandra/CassandraGetScriptTest.java
deleted file mode 100644
index 01ee375..0000000
--- a/mpt/impl/managesieve/cassandra/src/test/java/org/apache/james/mpt/managesieve/cassandra/CassandraGetScriptTest.java
+++ /dev/null
@@ -1,54 +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.mpt.managesieve.cassandra;
-
-import org.apache.james.backends.cassandra.DockerCassandraRule;
-import org.apache.james.mpt.host.ManageSieveHostSystem;
-import org.apache.james.mpt.managesieve.cassandra.host.CassandraHostSystem;
-import org.apache.james.mpt.testsuite.GetScriptTest;
-import org.junit.After;
-import org.junit.Before;
-import org.junit.ClassRule;
-
-public class CassandraGetScriptTest extends GetScriptTest {
-    
-    @ClassRule public static DockerCassandraRule cassandraServer = new DockerCassandraRule();
-    
-    private ManageSieveHostSystem system;
-
-    @Override
-    @Before
-    public void setUp() throws Exception {
-        system = new CassandraHostSystem(cassandraServer.getHost());
-        system.beforeTest();
-        super.setUp();
-    }
-    
-    @Override
-    protected ManageSieveHostSystem createManageSieveHostSystem() {
-        return system;
-    }
-
-    @Override
-    @After
-    public void tearDown() throws Exception {
-        system.afterTest();
-    }
-}

http://git-wip-us.apache.org/repos/asf/james-project/blob/2862b0b5/mpt/impl/managesieve/cassandra/src/test/java/org/apache/james/mpt/managesieve/cassandra/CassandraHaveSpaceTest.java
----------------------------------------------------------------------
diff --git a/mpt/impl/managesieve/cassandra/src/test/java/org/apache/james/mpt/managesieve/cassandra/CassandraHaveSpaceTest.java b/mpt/impl/managesieve/cassandra/src/test/java/org/apache/james/mpt/managesieve/cassandra/CassandraHaveSpaceTest.java
deleted file mode 100644
index ec3a602..0000000
--- a/mpt/impl/managesieve/cassandra/src/test/java/org/apache/james/mpt/managesieve/cassandra/CassandraHaveSpaceTest.java
+++ /dev/null
@@ -1,54 +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.mpt.managesieve.cassandra;
-
-import org.apache.james.backends.cassandra.DockerCassandraRule;
-import org.apache.james.mpt.host.ManageSieveHostSystem;
-import org.apache.james.mpt.managesieve.cassandra.host.CassandraHostSystem;
-import org.apache.james.mpt.testsuite.HaveSpaceTest;
-import org.junit.After;
-import org.junit.Before;
-import org.junit.ClassRule;
-
-public class CassandraHaveSpaceTest extends HaveSpaceTest {
-
-    @ClassRule public static DockerCassandraRule cassandraServer = new DockerCassandraRule();
-    
-    private ManageSieveHostSystem system;
-
-    @Override
-    @Before
-    public void setUp() throws Exception {
-        system = new CassandraHostSystem(cassandraServer.getHost());
-        system.beforeTest();
-        super.setUp();
-    }
-    
-    @Override
-    protected ManageSieveHostSystem createManageSieveHostSystem() {
-        return system;
-    }
-
-    @Override
-    @After
-    public void tearDown() throws Exception {
-        system.afterTest();
-    }
-}

http://git-wip-us.apache.org/repos/asf/james-project/blob/2862b0b5/mpt/impl/managesieve/cassandra/src/test/java/org/apache/james/mpt/managesieve/cassandra/CassandraListScriptsTest.java
----------------------------------------------------------------------
diff --git a/mpt/impl/managesieve/cassandra/src/test/java/org/apache/james/mpt/managesieve/cassandra/CassandraListScriptsTest.java b/mpt/impl/managesieve/cassandra/src/test/java/org/apache/james/mpt/managesieve/cassandra/CassandraListScriptsTest.java
deleted file mode 100644
index 0fea827..0000000
--- a/mpt/impl/managesieve/cassandra/src/test/java/org/apache/james/mpt/managesieve/cassandra/CassandraListScriptsTest.java
+++ /dev/null
@@ -1,54 +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.mpt.managesieve.cassandra;
-
-import org.apache.james.backends.cassandra.DockerCassandraRule;
-import org.apache.james.mpt.host.ManageSieveHostSystem;
-import org.apache.james.mpt.managesieve.cassandra.host.CassandraHostSystem;
-import org.apache.james.mpt.testsuite.ListScriptsTest;
-import org.junit.After;
-import org.junit.Before;
-import org.junit.ClassRule;
-
-public abstract class CassandraListScriptsTest extends ListScriptsTest {
-
-    @ClassRule public static DockerCassandraRule cassandraServer = new DockerCassandraRule();
-    
-    private ManageSieveHostSystem system;
-
-    @Override
-    @Before
-    public void setUp() throws Exception {
-        system = new CassandraHostSystem(cassandraServer.getHost());
-        system.beforeTest();
-        super.setUp();
-    }
-    
-    @Override
-    protected ManageSieveHostSystem createManageSieveHostSystem() {
-        return system;
-    }
-
-    @Override
-    @After
-    public void tearDown() throws Exception {
-        system.afterTest();
-    }
-}

http://git-wip-us.apache.org/repos/asf/james-project/blob/2862b0b5/mpt/impl/managesieve/cassandra/src/test/java/org/apache/james/mpt/managesieve/cassandra/CassandraLogoutTest.java
----------------------------------------------------------------------
diff --git a/mpt/impl/managesieve/cassandra/src/test/java/org/apache/james/mpt/managesieve/cassandra/CassandraLogoutTest.java b/mpt/impl/managesieve/cassandra/src/test/java/org/apache/james/mpt/managesieve/cassandra/CassandraLogoutTest.java
deleted file mode 100644
index 87caae7..0000000
--- a/mpt/impl/managesieve/cassandra/src/test/java/org/apache/james/mpt/managesieve/cassandra/CassandraLogoutTest.java
+++ /dev/null
@@ -1,54 +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.mpt.managesieve.cassandra;
-
-import org.apache.james.backends.cassandra.DockerCassandraRule;
-import org.apache.james.mpt.host.ManageSieveHostSystem;
-import org.apache.james.mpt.managesieve.cassandra.host.CassandraHostSystem;
-import org.apache.james.mpt.testsuite.LogoutTest;
-import org.junit.After;
-import org.junit.Before;
-import org.junit.ClassRule;
-
-public class CassandraLogoutTest extends LogoutTest {
-    
-    @ClassRule public static DockerCassandraRule cassandraServer = new DockerCassandraRule();
-    
-    private ManageSieveHostSystem system;
-
-    @Override
-    @Before
-    public void setUp() throws Exception {
-        system = new CassandraHostSystem(cassandraServer.getHost());
-        system.beforeTest();
-        super.setUp();
-    }
-    
-    @Override
-    protected ManageSieveHostSystem createManageSieveHostSystem() {
-        return system;
-    }
-
-    @Override
-    @After
-    public void tearDown() throws Exception {
-        system.afterTest();
-    }
-}

http://git-wip-us.apache.org/repos/asf/james-project/blob/2862b0b5/mpt/impl/managesieve/cassandra/src/test/java/org/apache/james/mpt/managesieve/cassandra/CassandraManageSieveMPTTest.java
----------------------------------------------------------------------
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
new file mode 100644
index 0000000..110ea85
--- /dev/null
+++ b/mpt/impl/managesieve/cassandra/src/test/java/org/apache/james/mpt/managesieve/cassandra/CassandraManageSieveMPTTest.java
@@ -0,0 +1,66 @@
+/****************************************************************
+ * 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.mpt.managesieve.cassandra;
+
+import org.apache.james.backends.cassandra.DockerCassandraExtension;
+import org.apache.james.mpt.host.ManageSieveHostSystem;
+import org.apache.james.mpt.managesieve.cassandra.host.CassandraHostSystem;
+import org.apache.james.mpt.testsuite.AuthenticateContract;
+import org.apache.james.mpt.testsuite.CapabilityContract;
+import org.apache.james.mpt.testsuite.CheckScriptContract;
+import org.apache.james.mpt.testsuite.DeleteScriptContract;
+import org.apache.james.mpt.testsuite.GetScriptContract;
+import org.apache.james.mpt.testsuite.HaveSpaceContract;
+import org.apache.james.mpt.testsuite.ListScriptsContract;
+import org.apache.james.mpt.testsuite.LogoutContract;
+import org.apache.james.mpt.testsuite.NoopContract;
+import org.apache.james.mpt.testsuite.PutScriptContract;
+import org.apache.james.mpt.testsuite.RenameScriptContract;
+import org.apache.james.mpt.testsuite.SetActiveContract;
+import org.apache.james.mpt.testsuite.StartTlsContract;
+import org.apache.james.mpt.testsuite.UnauthenticatedContract;
+import org.junit.jupiter.api.AfterEach;
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.extension.ExtendWith;
+
+@ExtendWith(DockerCassandraExtension.class)
+class CassandraManageSieveMPTTest implements AuthenticateContract, CapabilityContract, CheckScriptContract,
+                                             DeleteScriptContract, GetScriptContract, HaveSpaceContract,
+                                             ListScriptsContract, LogoutContract, NoopContract, PutScriptContract,
+                                             RenameScriptContract, SetActiveContract, StartTlsContract,
+                                             UnauthenticatedContract {
+    private ManageSieveHostSystem system;
+
+    @BeforeEach
+    void setUp(DockerCassandraExtension.DockerCassandra dockerCassandra) throws Exception {
+        system = new CassandraHostSystem(dockerCassandra.getHost());
+        system.beforeTest();
+    }
+
+    @Override
+    public ManageSieveHostSystem hostSystem() {
+        return system;
+    }
+
+    @AfterEach
+    void tearDown() throws Exception {
+        hostSystem().afterTest();
+    }
+}

http://git-wip-us.apache.org/repos/asf/james-project/blob/2862b0b5/mpt/impl/managesieve/cassandra/src/test/java/org/apache/james/mpt/managesieve/cassandra/CassandraModule.java
----------------------------------------------------------------------
diff --git a/mpt/impl/managesieve/cassandra/src/test/java/org/apache/james/mpt/managesieve/cassandra/CassandraModule.java b/mpt/impl/managesieve/cassandra/src/test/java/org/apache/james/mpt/managesieve/cassandra/CassandraModule.java
deleted file mode 100644
index dcc4e21..0000000
--- a/mpt/impl/managesieve/cassandra/src/test/java/org/apache/james/mpt/managesieve/cassandra/CassandraModule.java
+++ /dev/null
@@ -1,47 +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.mpt.managesieve.cassandra;
-
-import org.apache.james.mpt.host.ManageSieveHostSystem;
-import org.apache.james.mpt.managesieve.cassandra.host.CassandraHostSystem;
-import org.apache.james.util.Host;
-
-import com.google.inject.AbstractModule;
-import com.google.inject.Provides;
-import com.google.inject.Singleton;
-
-public class CassandraModule extends AbstractModule {
-
-    private final Host cassandraHost;
-
-    public CassandraModule(Host cassandraHost) {
-        this.cassandraHost = cassandraHost;
-    }
-    
-    @Override
-    protected void configure() {
-    }
-
-    @Provides
-    @Singleton
-    public ManageSieveHostSystem provideHostSystem() throws Exception {
-        return new CassandraHostSystem(cassandraHost);
-    }
-}

http://git-wip-us.apache.org/repos/asf/james-project/blob/2862b0b5/mpt/impl/managesieve/cassandra/src/test/java/org/apache/james/mpt/managesieve/cassandra/CassandraNoopTest.java
----------------------------------------------------------------------
diff --git a/mpt/impl/managesieve/cassandra/src/test/java/org/apache/james/mpt/managesieve/cassandra/CassandraNoopTest.java b/mpt/impl/managesieve/cassandra/src/test/java/org/apache/james/mpt/managesieve/cassandra/CassandraNoopTest.java
deleted file mode 100644
index 5dff427..0000000
--- a/mpt/impl/managesieve/cassandra/src/test/java/org/apache/james/mpt/managesieve/cassandra/CassandraNoopTest.java
+++ /dev/null
@@ -1,54 +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.mpt.managesieve.cassandra;
-
-import org.apache.james.backends.cassandra.DockerCassandraRule;
-import org.apache.james.mpt.host.ManageSieveHostSystem;
-import org.apache.james.mpt.managesieve.cassandra.host.CassandraHostSystem;
-import org.apache.james.mpt.testsuite.NoopTest;
-import org.junit.After;
-import org.junit.Before;
-import org.junit.ClassRule;
-
-public class CassandraNoopTest extends NoopTest {
-
-    @ClassRule public static DockerCassandraRule cassandraServer = new DockerCassandraRule();
-    
-    private ManageSieveHostSystem system;
-
-    @Override
-    @Before
-    public void setUp() throws Exception {
-        system = new CassandraHostSystem(cassandraServer.getHost());
-        system.beforeTest();
-        super.setUp();
-    }
-    
-    @Override
-    protected ManageSieveHostSystem createManageSieveHostSystem() {
-        return system;
-    }
-
-    @Override
-    @After
-    public void tearDown() throws Exception {
-        system.afterTest();
-    }
-}

http://git-wip-us.apache.org/repos/asf/james-project/blob/2862b0b5/mpt/impl/managesieve/cassandra/src/test/java/org/apache/james/mpt/managesieve/cassandra/CassandraPutScriptTest.java
----------------------------------------------------------------------
diff --git a/mpt/impl/managesieve/cassandra/src/test/java/org/apache/james/mpt/managesieve/cassandra/CassandraPutScriptTest.java b/mpt/impl/managesieve/cassandra/src/test/java/org/apache/james/mpt/managesieve/cassandra/CassandraPutScriptTest.java
deleted file mode 100644
index 07b0507..0000000
--- a/mpt/impl/managesieve/cassandra/src/test/java/org/apache/james/mpt/managesieve/cassandra/CassandraPutScriptTest.java
+++ /dev/null
@@ -1,54 +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.mpt.managesieve.cassandra;
-
-import org.apache.james.backends.cassandra.DockerCassandraRule;
-import org.apache.james.mpt.host.ManageSieveHostSystem;
-import org.apache.james.mpt.managesieve.cassandra.host.CassandraHostSystem;
-import org.apache.james.mpt.testsuite.PutScriptTest;
-import org.junit.After;
-import org.junit.Before;
-import org.junit.ClassRule;
-
-public class CassandraPutScriptTest extends PutScriptTest {
-
-    @ClassRule public static DockerCassandraRule cassandraServer = new DockerCassandraRule();
-    
-    private ManageSieveHostSystem system;
-
-    @Override
-    @Before
-    public void setUp() throws Exception {
-        system = new CassandraHostSystem(cassandraServer.getHost());
-        system.beforeTest();
-        super.setUp();
-    }
-    
-    @Override
-    protected ManageSieveHostSystem createManageSieveHostSystem() {
-        return system;
-    }
-
-    @Override
-    @After
-    public void tearDown() throws Exception {
-        system.afterTest();
-    }
-}

http://git-wip-us.apache.org/repos/asf/james-project/blob/2862b0b5/mpt/impl/managesieve/cassandra/src/test/java/org/apache/james/mpt/managesieve/cassandra/CassandraRenameScriptTest.java
----------------------------------------------------------------------
diff --git a/mpt/impl/managesieve/cassandra/src/test/java/org/apache/james/mpt/managesieve/cassandra/CassandraRenameScriptTest.java b/mpt/impl/managesieve/cassandra/src/test/java/org/apache/james/mpt/managesieve/cassandra/CassandraRenameScriptTest.java
deleted file mode 100644
index 9070ab3..0000000
--- a/mpt/impl/managesieve/cassandra/src/test/java/org/apache/james/mpt/managesieve/cassandra/CassandraRenameScriptTest.java
+++ /dev/null
@@ -1,54 +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.mpt.managesieve.cassandra;
-
-import org.apache.james.backends.cassandra.DockerCassandraRule;
-import org.apache.james.mpt.host.ManageSieveHostSystem;
-import org.apache.james.mpt.managesieve.cassandra.host.CassandraHostSystem;
-import org.apache.james.mpt.testsuite.RenameScriptTest;
-import org.junit.After;
-import org.junit.Before;
-import org.junit.ClassRule;
-
-public class CassandraRenameScriptTest extends RenameScriptTest {
-
-    @ClassRule public static DockerCassandraRule cassandraServer = new DockerCassandraRule();
-    
-    private ManageSieveHostSystem system;
-
-    @Override
-    @Before
-    public void setUp() throws Exception {
-        system = new CassandraHostSystem(cassandraServer.getHost());
-        system.beforeTest();
-        super.setUp();
-    }
-    
-    @Override
-    protected ManageSieveHostSystem createManageSieveHostSystem() {
-        return system;
-    }
-
-    @Override
-    @After
-    public void tearDown() throws Exception {
-        system.afterTest();
-    }
-}

http://git-wip-us.apache.org/repos/asf/james-project/blob/2862b0b5/mpt/impl/managesieve/cassandra/src/test/java/org/apache/james/mpt/managesieve/cassandra/CassandraSetActiveTest.java
----------------------------------------------------------------------
diff --git a/mpt/impl/managesieve/cassandra/src/test/java/org/apache/james/mpt/managesieve/cassandra/CassandraSetActiveTest.java b/mpt/impl/managesieve/cassandra/src/test/java/org/apache/james/mpt/managesieve/cassandra/CassandraSetActiveTest.java
deleted file mode 100644
index 702f4e0..0000000
--- a/mpt/impl/managesieve/cassandra/src/test/java/org/apache/james/mpt/managesieve/cassandra/CassandraSetActiveTest.java
+++ /dev/null
@@ -1,54 +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.mpt.managesieve.cassandra;
-
-import org.apache.james.backends.cassandra.DockerCassandraRule;
-import org.apache.james.mpt.host.ManageSieveHostSystem;
-import org.apache.james.mpt.managesieve.cassandra.host.CassandraHostSystem;
-import org.apache.james.mpt.testsuite.SetActiveTest;
-import org.junit.After;
-import org.junit.Before;
-import org.junit.ClassRule;
-
-public class CassandraSetActiveTest extends SetActiveTest {
-
-    @ClassRule public static DockerCassandraRule cassandraServer = new DockerCassandraRule();
-    
-    private ManageSieveHostSystem system;
-
-    @Override
-    @Before
-    public void setUp() throws Exception {
-        system = new CassandraHostSystem(cassandraServer.getHost());
-        system.beforeTest();
-        super.setUp();
-    }
-    
-    @Override
-    protected ManageSieveHostSystem createManageSieveHostSystem() {
-        return system;
-    }
-
-    @Override
-    @After
-    public void tearDown() throws Exception {
-        system.afterTest();
-    }
-}

http://git-wip-us.apache.org/repos/asf/james-project/blob/2862b0b5/mpt/impl/managesieve/cassandra/src/test/java/org/apache/james/mpt/managesieve/cassandra/CassandraStartTlsTest.java
----------------------------------------------------------------------
diff --git a/mpt/impl/managesieve/cassandra/src/test/java/org/apache/james/mpt/managesieve/cassandra/CassandraStartTlsTest.java b/mpt/impl/managesieve/cassandra/src/test/java/org/apache/james/mpt/managesieve/cassandra/CassandraStartTlsTest.java
deleted file mode 100644
index b70ec77..0000000
--- a/mpt/impl/managesieve/cassandra/src/test/java/org/apache/james/mpt/managesieve/cassandra/CassandraStartTlsTest.java
+++ /dev/null
@@ -1,54 +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.mpt.managesieve.cassandra;
-
-import org.apache.james.backends.cassandra.DockerCassandraRule;
-import org.apache.james.mpt.host.ManageSieveHostSystem;
-import org.apache.james.mpt.managesieve.cassandra.host.CassandraHostSystem;
-import org.apache.james.mpt.testsuite.StartTlsTest;
-import org.junit.After;
-import org.junit.Before;
-import org.junit.ClassRule;
-
-public class CassandraStartTlsTest extends StartTlsTest {
-
-    @ClassRule public static DockerCassandraRule cassandraServer = new DockerCassandraRule();
-    
-    private ManageSieveHostSystem system;
-
-    @Override
-    @Before
-    public void setUp() throws Exception {
-        system = new CassandraHostSystem(cassandraServer.getHost());
-        system.beforeTest();
-        super.setUp();
-    }
-    
-    @Override
-    protected ManageSieveHostSystem createManageSieveHostSystem() {
-        return system;
-    }
-
-    @Override
-    @After
-    public void tearDown() throws Exception {
-        system.afterTest();
-    }
-}

http://git-wip-us.apache.org/repos/asf/james-project/blob/2862b0b5/mpt/impl/managesieve/cassandra/src/test/java/org/apache/james/mpt/managesieve/cassandra/CassandraUnauthenticatedTest.java
----------------------------------------------------------------------
diff --git a/mpt/impl/managesieve/cassandra/src/test/java/org/apache/james/mpt/managesieve/cassandra/CassandraUnauthenticatedTest.java b/mpt/impl/managesieve/cassandra/src/test/java/org/apache/james/mpt/managesieve/cassandra/CassandraUnauthenticatedTest.java
deleted file mode 100644
index badc1b9..0000000
--- a/mpt/impl/managesieve/cassandra/src/test/java/org/apache/james/mpt/managesieve/cassandra/CassandraUnauthenticatedTest.java
+++ /dev/null
@@ -1,54 +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.mpt.managesieve.cassandra;
-
-import org.apache.james.backends.cassandra.DockerCassandraRule;
-import org.apache.james.mpt.host.ManageSieveHostSystem;
-import org.apache.james.mpt.managesieve.cassandra.host.CassandraHostSystem;
-import org.apache.james.mpt.testsuite.UnauthenticatedTest;
-import org.junit.After;
-import org.junit.Before;
-import org.junit.ClassRule;
-
-public class CassandraUnauthenticatedTest extends UnauthenticatedTest {
-
-    @ClassRule public static DockerCassandraRule cassandraServer = new DockerCassandraRule();
-    
-    private ManageSieveHostSystem system;
-
-    @Override
-    @Before
-    public void setUp() throws Exception {
-        system = new CassandraHostSystem(cassandraServer.getHost());
-        system.beforeTest();
-        super.setUp();
-    }
-    
-    @Override
-    protected ManageSieveHostSystem createManageSieveHostSystem() {
-        return system;
-    }
-
-    @Override
-    @After
-    public void tearDown() throws Exception {
-        system.afterTest();
-    }
-}

http://git-wip-us.apache.org/repos/asf/james-project/blob/2862b0b5/mpt/impl/managesieve/cassandra/src/test/java/org/apache/james/mpt/managesieve/cassandra/host/CassandraHostSystem.java
----------------------------------------------------------------------
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 3d5013f..62c07ce 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
@@ -35,14 +35,13 @@ import org.apache.james.user.cassandra.CassandraUsersRepositoryModule;
 import org.apache.james.util.Host;
 
 public class CassandraHostSystem extends JamesManageSieveHostSystem {
-    
     private final Host cassandraHost;
     private CassandraCluster cassandra;
 
     public CassandraHostSystem(Host cassandraHost) {
         this.cassandraHost = cassandraHost;
     }
-    
+
     @Override
     public void beforeTest() throws Exception {
         CassandraModuleComposite modules = new CassandraModuleComposite(
@@ -53,7 +52,7 @@ public class CassandraHostSystem extends JamesManageSieveHostSystem {
     }
 
     @Override
-    protected SieveRepository createSieveRepository() throws Exception {
+    protected SieveRepository createSieveRepository() {
         return new CassandraSieveRepository(
             new CassandraSieveDAO(cassandra.getConf()),
             new CassandraSieveQuotaDAO(cassandra.getConf()),
@@ -67,4 +66,8 @@ public class CassandraHostSystem extends JamesManageSieveHostSystem {
         return cassandraUsersRepository;
     }
 
+    @Override
+    public void afterTest() {
+        cassandra.close();
+    }
 }

http://git-wip-us.apache.org/repos/asf/james-project/blob/2862b0b5/mpt/impl/managesieve/core/pom.xml
----------------------------------------------------------------------
diff --git a/mpt/impl/managesieve/core/pom.xml b/mpt/impl/managesieve/core/pom.xml
index 8e115ea..8455f10 100644
--- a/mpt/impl/managesieve/core/pom.xml
+++ b/mpt/impl/managesieve/core/pom.xml
@@ -44,8 +44,12 @@
             <artifactId>guice</artifactId>
         </dependency>
         <dependency>
-            <groupId>junit</groupId>
-            <artifactId>junit</artifactId>
+            <groupId>org.junit.jupiter</groupId>
+            <artifactId>junit-jupiter-engine</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.junit.vintage</groupId>
+            <artifactId>junit-vintage-engine</artifactId>
         </dependency>
         <dependency>
             <groupId>${james.protocols.groupId}</groupId>

http://git-wip-us.apache.org/repos/asf/james-project/blob/2862b0b5/mpt/impl/managesieve/core/src/main/java/org/apache/james/mpt/HostSystemProvider.java
----------------------------------------------------------------------
diff --git a/mpt/impl/managesieve/core/src/main/java/org/apache/james/mpt/HostSystemProvider.java b/mpt/impl/managesieve/core/src/main/java/org/apache/james/mpt/HostSystemProvider.java
new file mode 100644
index 0000000..ecf8608
--- /dev/null
+++ b/mpt/impl/managesieve/core/src/main/java/org/apache/james/mpt/HostSystemProvider.java
@@ -0,0 +1,26 @@
+/****************************************************************
+ * 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.mpt;
+
+import org.apache.james.mpt.host.ManageSieveHostSystem;
+
+public interface HostSystemProvider {
+    ManageSieveHostSystem hostSystem();
+}

http://git-wip-us.apache.org/repos/asf/james-project/blob/2862b0b5/mpt/impl/managesieve/core/src/main/java/org/apache/james/mpt/testsuite/AuthenticateContract.java
----------------------------------------------------------------------
diff --git a/mpt/impl/managesieve/core/src/main/java/org/apache/james/mpt/testsuite/AuthenticateContract.java b/mpt/impl/managesieve/core/src/main/java/org/apache/james/mpt/testsuite/AuthenticateContract.java
new file mode 100644
index 0000000..cc383f1
--- /dev/null
+++ b/mpt/impl/managesieve/core/src/main/java/org/apache/james/mpt/testsuite/AuthenticateContract.java
@@ -0,0 +1,44 @@
+/****************************************************************
+ * 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.mpt.testsuite;
+
+import java.util.Locale;
+
+import org.apache.james.mpt.HostSystemProvider;
+import org.apache.james.mpt.script.SimpleScriptedTestProtocol;
+import org.junit.jupiter.api.Test;
+
+public interface AuthenticateContract extends HostSystemProvider {
+    String USER = "user";
+    String PASSWORD = "password";
+
+    default SimpleScriptedTestProtocol authenticateContractProtocol() throws Exception {
+        return new SimpleScriptedTestProtocol("/org/apache/james/managesieve/scripts/", hostSystem())
+                .withUser(USER, PASSWORD)
+                .withLocale(Locale.US);
+    }
+
+    @Test
+    default void authenticateShouldWork() throws Exception {
+        authenticateContractProtocol()
+            .withLocale(Locale.US)
+            .run("authenticate");
+    }
+}

http://git-wip-us.apache.org/repos/asf/james-project/blob/2862b0b5/mpt/impl/managesieve/core/src/main/java/org/apache/james/mpt/testsuite/AuthenticateTest.java
----------------------------------------------------------------------
diff --git a/mpt/impl/managesieve/core/src/main/java/org/apache/james/mpt/testsuite/AuthenticateTest.java b/mpt/impl/managesieve/core/src/main/java/org/apache/james/mpt/testsuite/AuthenticateTest.java
deleted file mode 100644
index 5dd6bf0..0000000
--- a/mpt/impl/managesieve/core/src/main/java/org/apache/james/mpt/testsuite/AuthenticateTest.java
+++ /dev/null
@@ -1,60 +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.mpt.testsuite;
-
-import java.util.Locale;
-
-import org.apache.james.mpt.host.ManageSieveHostSystem;
-import org.apache.james.mpt.script.SimpleScriptedTestProtocol;
-import org.junit.After;
-import org.junit.Before;
-import org.junit.Test;
-
-public abstract class AuthenticateTest {
-
-    public static final String USER = "user";
-    public static final String PASSWORD = "password";
-    
-    protected abstract ManageSieveHostSystem createManageSieveHostSystem();
-    
-    private ManageSieveHostSystem hostSystem;
-    private SimpleScriptedTestProtocol simpleScriptedTestProtocol;
-
-    @Before
-    public void setUp() throws Exception {
-        hostSystem = createManageSieveHostSystem();
-        hostSystem.beforeTest();
-        simpleScriptedTestProtocol = new SimpleScriptedTestProtocol("/org/apache/james/managesieve/scripts/", hostSystem)
-                .withUser(USER, PASSWORD)
-                .withLocale(Locale.US);
-    }
-    
-    @After
-    public void tearDown() throws Exception {
-        hostSystem.afterTest();
-    }
-
-    @Test
-    public void authenticateShouldWork() throws Exception {
-        simpleScriptedTestProtocol
-            .withLocale(Locale.US)
-            .run("authenticate");
-    }
-}

http://git-wip-us.apache.org/repos/asf/james-project/blob/2862b0b5/mpt/impl/managesieve/core/src/main/java/org/apache/james/mpt/testsuite/CapabilityContract.java
----------------------------------------------------------------------
diff --git a/mpt/impl/managesieve/core/src/main/java/org/apache/james/mpt/testsuite/CapabilityContract.java b/mpt/impl/managesieve/core/src/main/java/org/apache/james/mpt/testsuite/CapabilityContract.java
new file mode 100644
index 0000000..15ea395
--- /dev/null
+++ b/mpt/impl/managesieve/core/src/main/java/org/apache/james/mpt/testsuite/CapabilityContract.java
@@ -0,0 +1,44 @@
+/****************************************************************
+ * 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.mpt.testsuite;
+
+import java.util.Locale;
+
+import org.apache.james.mpt.HostSystemProvider;
+import org.apache.james.mpt.script.SimpleScriptedTestProtocol;
+import org.junit.jupiter.api.Test;
+
+public interface CapabilityContract extends HostSystemProvider {
+    String USER = "user";
+    String PASSWORD = "password";
+
+    default SimpleScriptedTestProtocol capabilityContractProtocol() throws Exception {
+        return new SimpleScriptedTestProtocol("/org/apache/james/managesieve/scripts/", hostSystem())
+                .withUser(USER, PASSWORD)
+                .withLocale(Locale.US);
+    }
+
+    @Test
+    default void capabilityShouldWork() throws Exception {
+        capabilityContractProtocol()
+            .withLocale(Locale.US)
+            .run("capability");
+    }
+}

http://git-wip-us.apache.org/repos/asf/james-project/blob/2862b0b5/mpt/impl/managesieve/core/src/main/java/org/apache/james/mpt/testsuite/CapabilityTest.java
----------------------------------------------------------------------
diff --git a/mpt/impl/managesieve/core/src/main/java/org/apache/james/mpt/testsuite/CapabilityTest.java b/mpt/impl/managesieve/core/src/main/java/org/apache/james/mpt/testsuite/CapabilityTest.java
deleted file mode 100644
index 2af78f2..0000000
--- a/mpt/impl/managesieve/core/src/main/java/org/apache/james/mpt/testsuite/CapabilityTest.java
+++ /dev/null
@@ -1,60 +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.mpt.testsuite;
-
-import java.util.Locale;
-
-import org.apache.james.mpt.host.ManageSieveHostSystem;
-import org.apache.james.mpt.script.SimpleScriptedTestProtocol;
-import org.junit.After;
-import org.junit.Before;
-import org.junit.Test;
-
-public abstract class CapabilityTest {
-
-    public static final String USER = "user";
-    public static final String PASSWORD = "password";
-    
-    protected abstract ManageSieveHostSystem createManageSieveHostSystem();
-    
-    private ManageSieveHostSystem hostSystem;
-    private SimpleScriptedTestProtocol simpleScriptedTestProtocol;
-
-    @Before
-    public void setUp() throws Exception {
-        hostSystem = createManageSieveHostSystem();
-        hostSystem.beforeTest();
-        simpleScriptedTestProtocol = new SimpleScriptedTestProtocol("/org/apache/james/managesieve/scripts/", hostSystem)
-                .withUser(USER, PASSWORD)
-                .withLocale(Locale.US);
-    }
-    
-    @After
-    public void tearDown() throws Exception {
-        hostSystem.afterTest();
-    }
-
-    @Test
-    public void capabilityShouldWork() throws Exception {
-        simpleScriptedTestProtocol
-            .withLocale(Locale.US)
-            .run("capability");
-    }
-}

http://git-wip-us.apache.org/repos/asf/james-project/blob/2862b0b5/mpt/impl/managesieve/core/src/main/java/org/apache/james/mpt/testsuite/CheckScriptContract.java
----------------------------------------------------------------------
diff --git a/mpt/impl/managesieve/core/src/main/java/org/apache/james/mpt/testsuite/CheckScriptContract.java b/mpt/impl/managesieve/core/src/main/java/org/apache/james/mpt/testsuite/CheckScriptContract.java
new file mode 100644
index 0000000..413dcd0
--- /dev/null
+++ b/mpt/impl/managesieve/core/src/main/java/org/apache/james/mpt/testsuite/CheckScriptContract.java
@@ -0,0 +1,44 @@
+/****************************************************************
+ * 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.mpt.testsuite;
+
+import java.util.Locale;
+
+import org.apache.james.mpt.HostSystemProvider;
+import org.apache.james.mpt.script.SimpleScriptedTestProtocol;
+import org.junit.jupiter.api.Test;
+
+public interface CheckScriptContract extends HostSystemProvider {
+    String USER = "user";
+    String PASSWORD = "password";
+
+    default SimpleScriptedTestProtocol checkScriptContractProtocol() throws Exception {
+        return new SimpleScriptedTestProtocol("/org/apache/james/managesieve/scripts/", hostSystem())
+                .withUser(USER, PASSWORD)
+                .withLocale(Locale.US);
+    }
+
+    @Test
+    default void checkScriptShouldWork() throws Exception {
+        checkScriptContractProtocol()
+            .withLocale(Locale.US)
+            .run("checkscript");
+    }
+}

http://git-wip-us.apache.org/repos/asf/james-project/blob/2862b0b5/mpt/impl/managesieve/core/src/main/java/org/apache/james/mpt/testsuite/CheckScriptTest.java
----------------------------------------------------------------------
diff --git a/mpt/impl/managesieve/core/src/main/java/org/apache/james/mpt/testsuite/CheckScriptTest.java b/mpt/impl/managesieve/core/src/main/java/org/apache/james/mpt/testsuite/CheckScriptTest.java
deleted file mode 100644
index 0aa1760..0000000
--- a/mpt/impl/managesieve/core/src/main/java/org/apache/james/mpt/testsuite/CheckScriptTest.java
+++ /dev/null
@@ -1,60 +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.mpt.testsuite;
-
-import java.util.Locale;
-
-import org.apache.james.mpt.host.ManageSieveHostSystem;
-import org.apache.james.mpt.script.SimpleScriptedTestProtocol;
-import org.junit.After;
-import org.junit.Before;
-import org.junit.Test;
-
-public abstract class CheckScriptTest {
-
-    public static final String USER = "user";
-    public static final String PASSWORD = "password";
-    
-    protected abstract ManageSieveHostSystem createManageSieveHostSystem();
-    
-    private ManageSieveHostSystem hostSystem;
-    private SimpleScriptedTestProtocol simpleScriptedTestProtocol;
-
-    @Before
-    public void setUp() throws Exception {
-        hostSystem = createManageSieveHostSystem();
-        hostSystem.beforeTest();
-        simpleScriptedTestProtocol = new SimpleScriptedTestProtocol("/org/apache/james/managesieve/scripts/", hostSystem)
-                .withUser(USER, PASSWORD)
-                .withLocale(Locale.US);
-    }
-    
-    @After
-    public void tearDown() throws Exception {
-        hostSystem.afterTest();
-    }
-
-    @Test
-    public void checkScriptShouldWork() throws Exception {
-        simpleScriptedTestProtocol
-            .withLocale(Locale.US)
-            .run("checkscript");
-    }
-}

http://git-wip-us.apache.org/repos/asf/james-project/blob/2862b0b5/mpt/impl/managesieve/core/src/main/java/org/apache/james/mpt/testsuite/DeleteScriptContract.java
----------------------------------------------------------------------
diff --git a/mpt/impl/managesieve/core/src/main/java/org/apache/james/mpt/testsuite/DeleteScriptContract.java b/mpt/impl/managesieve/core/src/main/java/org/apache/james/mpt/testsuite/DeleteScriptContract.java
new file mode 100644
index 0000000..2380ff6
--- /dev/null
+++ b/mpt/impl/managesieve/core/src/main/java/org/apache/james/mpt/testsuite/DeleteScriptContract.java
@@ -0,0 +1,48 @@
+/****************************************************************
+ * 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.mpt.testsuite;
+
+import java.util.Locale;
+
+import org.apache.james.mpt.HostSystemProvider;
+import org.apache.james.mpt.host.ManageSieveHostSystem;
+import org.apache.james.mpt.script.SimpleScriptedTestProtocol;
+import org.junit.jupiter.api.Test;
+
+public interface DeleteScriptContract extends HostSystemProvider {
+
+    String USER = "user";
+    String PASSWORD = "password";
+    
+    ManageSieveHostSystem hostSystem();
+
+    default SimpleScriptedTestProtocol deleteScriptContractProtocol() throws Exception {
+        return new SimpleScriptedTestProtocol("/org/apache/james/managesieve/scripts/", hostSystem())
+                .withUser(USER, PASSWORD)
+                .withLocale(Locale.US);
+    }
+
+    @Test
+    default void deleteScriptShouldWork() throws Exception {
+        deleteScriptContractProtocol()
+            .withLocale(Locale.US)
+            .run("deletescript");
+    }
+}

http://git-wip-us.apache.org/repos/asf/james-project/blob/2862b0b5/mpt/impl/managesieve/core/src/main/java/org/apache/james/mpt/testsuite/DeleteScriptTest.java
----------------------------------------------------------------------
diff --git a/mpt/impl/managesieve/core/src/main/java/org/apache/james/mpt/testsuite/DeleteScriptTest.java b/mpt/impl/managesieve/core/src/main/java/org/apache/james/mpt/testsuite/DeleteScriptTest.java
deleted file mode 100644
index ef7d972..0000000
--- a/mpt/impl/managesieve/core/src/main/java/org/apache/james/mpt/testsuite/DeleteScriptTest.java
+++ /dev/null
@@ -1,60 +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.mpt.testsuite;
-
-import java.util.Locale;
-
-import org.apache.james.mpt.host.ManageSieveHostSystem;
-import org.apache.james.mpt.script.SimpleScriptedTestProtocol;
-import org.junit.After;
-import org.junit.Before;
-import org.junit.Test;
-
-public abstract class DeleteScriptTest {
-
-    public static final String USER = "user";
-    public static final String PASSWORD = "password";
-    
-    protected abstract ManageSieveHostSystem createManageSieveHostSystem();
-    
-    private ManageSieveHostSystem hostSystem;
-    private SimpleScriptedTestProtocol simpleScriptedTestProtocol;
-
-    @Before
-    public void setUp() throws Exception {
-        hostSystem = createManageSieveHostSystem();
-        hostSystem.beforeTest();
-        simpleScriptedTestProtocol = new SimpleScriptedTestProtocol("/org/apache/james/managesieve/scripts/", hostSystem)
-                .withUser(USER, PASSWORD)
-                .withLocale(Locale.US);
-    }
-    
-    @After
-    public void tearDown() throws Exception {
-        hostSystem.afterTest();
-    }
-
-    @Test
-    public void deleteScriptShouldWork() throws Exception {
-        simpleScriptedTestProtocol
-            .withLocale(Locale.US)
-            .run("deletescript");
-    }
-}

http://git-wip-us.apache.org/repos/asf/james-project/blob/2862b0b5/mpt/impl/managesieve/core/src/main/java/org/apache/james/mpt/testsuite/GetScriptContract.java
----------------------------------------------------------------------
diff --git a/mpt/impl/managesieve/core/src/main/java/org/apache/james/mpt/testsuite/GetScriptContract.java b/mpt/impl/managesieve/core/src/main/java/org/apache/james/mpt/testsuite/GetScriptContract.java
new file mode 100644
index 0000000..8fab8a4
--- /dev/null
+++ b/mpt/impl/managesieve/core/src/main/java/org/apache/james/mpt/testsuite/GetScriptContract.java
@@ -0,0 +1,44 @@
+/****************************************************************
+ * 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.mpt.testsuite;
+
+import java.util.Locale;
+
+import org.apache.james.mpt.HostSystemProvider;
+import org.apache.james.mpt.script.SimpleScriptedTestProtocol;
+import org.junit.jupiter.api.Test;
+
+public interface GetScriptContract extends HostSystemProvider {
+    String USER = "user";
+    String PASSWORD = "password";
+
+    default SimpleScriptedTestProtocol getScriptContractProtocol() throws Exception {
+        return new SimpleScriptedTestProtocol("/org/apache/james/managesieve/scripts/", hostSystem())
+                .withUser(USER, PASSWORD)
+                .withLocale(Locale.US);
+    }
+
+    @Test
+    default void getScriptShouldWork() throws Exception {
+        getScriptContractProtocol()
+            .withLocale(Locale.US)
+            .run("getscript");
+    }
+}

http://git-wip-us.apache.org/repos/asf/james-project/blob/2862b0b5/mpt/impl/managesieve/core/src/main/java/org/apache/james/mpt/testsuite/GetScriptTest.java
----------------------------------------------------------------------
diff --git a/mpt/impl/managesieve/core/src/main/java/org/apache/james/mpt/testsuite/GetScriptTest.java b/mpt/impl/managesieve/core/src/main/java/org/apache/james/mpt/testsuite/GetScriptTest.java
deleted file mode 100644
index 16db749..0000000
--- a/mpt/impl/managesieve/core/src/main/java/org/apache/james/mpt/testsuite/GetScriptTest.java
+++ /dev/null
@@ -1,60 +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.mpt.testsuite;
-
-import java.util.Locale;
-
-import org.apache.james.mpt.host.ManageSieveHostSystem;
-import org.apache.james.mpt.script.SimpleScriptedTestProtocol;
-import org.junit.After;
-import org.junit.Before;
-import org.junit.Test;
-
-public abstract class GetScriptTest {
-
-    public static final String USER = "user";
-    public static final String PASSWORD = "password";
-    
-    protected abstract ManageSieveHostSystem createManageSieveHostSystem();
-    
-    private ManageSieveHostSystem hostSystem;
-    private SimpleScriptedTestProtocol simpleScriptedTestProtocol;
-
-    @Before
-    public void setUp() throws Exception {
-        hostSystem = createManageSieveHostSystem();
-        hostSystem.beforeTest();
-        simpleScriptedTestProtocol = new SimpleScriptedTestProtocol("/org/apache/james/managesieve/scripts/", hostSystem)
-                .withUser(USER, PASSWORD)
-                .withLocale(Locale.US);
-    }
-    
-    @After
-    public void tearDown() throws Exception {
-        hostSystem.afterTest();
-    }
-
-    @Test
-    public void getScriptShouldWork() throws Exception {
-        simpleScriptedTestProtocol
-            .withLocale(Locale.US)
-            .run("getscript");
-    }
-}


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


[10/15] james-project git commit: JAMES-2489 Remove a duplicated dependency

Posted by bt...@apache.org.
JAMES-2489 Remove a duplicated dependency


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

Branch: refs/heads/master
Commit: 7f2dfbfbbaba0249a4417ab6a94cf873181615f7
Parents: 6bbf57d
Author: benwa <bt...@linagora.com>
Authored: Tue Jul 24 11:07:43 2018 +0700
Committer: benwa <bt...@linagora.com>
Committed: Wed Jul 25 16:44:50 2018 +0700

----------------------------------------------------------------------
 server/protocols/webadmin/webadmin-mailrepository/pom.xml | 6 ------
 1 file changed, 6 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/james-project/blob/7f2dfbfb/server/protocols/webadmin/webadmin-mailrepository/pom.xml
----------------------------------------------------------------------
diff --git a/server/protocols/webadmin/webadmin-mailrepository/pom.xml b/server/protocols/webadmin/webadmin-mailrepository/pom.xml
index aa21785..4cb74e1 100644
--- a/server/protocols/webadmin/webadmin-mailrepository/pom.xml
+++ b/server/protocols/webadmin/webadmin-mailrepository/pom.xml
@@ -86,12 +86,6 @@
             <artifactId>jackson-databind</artifactId>
         </dependency>
         <dependency>
-            <groupId>${project.groupId}</groupId>
-            <artifactId>javax-mail-extension</artifactId>
-            <type>test-jar</type>
-            <scope>test</scope>
-        </dependency>
-        <dependency>
             <groupId>com.google.guava</groupId>
             <artifactId>guava</artifactId>
         </dependency>


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


[03/15] james-project git commit: JAMES-2499 Remove SetMessagesMethodTest::mailboxIdsShouldBeInDestinationWhenUsingForMoveWithoutTrashFolder

Posted by bt...@apache.org.
JAMES-2499 Remove SetMessagesMethodTest::mailboxIdsShouldBeInDestinationWhenUsingForMoveWithoutTrashFolder

It makes no sens to test the behaviour without trash mailbox given that it is always provisioned.


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

Branch: refs/heads/master
Commit: eb126da38f1e956a31be243cf80c71dfc153d899
Parents: e38b96a
Author: benwa <bt...@linagora.com>
Authored: Wed Jul 25 10:11:36 2018 +0700
Committer: benwa <bt...@linagora.com>
Committed: Wed Jul 25 16:39:32 2018 +0700

----------------------------------------------------------------------
 .../integration/SetMessagesMethodTest.java      | 44 +-------------------
 1 file changed, 1 insertion(+), 43 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/james-project/blob/eb126da3/server/protocols/jmap-integration-testing/jmap-integration-testing-common/src/test/java/org/apache/james/jmap/methods/integration/SetMessagesMethodTest.java
----------------------------------------------------------------------
diff --git a/server/protocols/jmap-integration-testing/jmap-integration-testing-common/src/test/java/org/apache/james/jmap/methods/integration/SetMessagesMethodTest.java b/server/protocols/jmap-integration-testing/jmap-integration-testing-common/src/test/java/org/apache/james/jmap/methods/integration/SetMessagesMethodTest.java
index 67aa33c..980c2c8 100644
--- a/server/protocols/jmap-integration-testing/jmap-integration-testing-common/src/test/java/org/apache/james/jmap/methods/integration/SetMessagesMethodTest.java
+++ b/server/protocols/jmap-integration-testing/jmap-integration-testing-common/src/test/java/org/apache/james/jmap/methods/integration/SetMessagesMethodTest.java
@@ -123,6 +123,7 @@ import com.google.common.collect.ImmutableList;
 import com.google.common.collect.Lists;
 import com.google.common.io.ByteStreams;
 import com.jayway.awaitility.Duration;
+
 import io.restassured.RestAssured;
 import io.restassured.builder.RequestSpecBuilder;
 import io.restassured.http.ContentType;
@@ -3201,49 +3202,6 @@ public abstract class SetMessagesMethodTest {
             .body(firstMessage + ".mailboxIds", contains(heartFolderId));
     }
 
-
-    @Test
-    public void mailboxIdsShouldBeInDestinationWhenUsingForMoveWithoutTrashFolder() throws Exception {
-        String newMailboxName = "heartFolder";
-        String heartFolderId = mailboxProbe.createMailbox(MailboxConstants.USER_NAMESPACE, USERNAME, newMailboxName).serialize();
-
-        ZonedDateTime dateTime = ZonedDateTime.parse("2014-10-30T14:12:00Z");
-        ComposedMessageId message = mailboxProbe.appendMessage(USERNAME, MailboxPath.forUser(USERNAME, MailboxConstants.INBOX),
-            new ByteArrayInputStream("Subject: my test subject\r\n\r\ntestmail".getBytes(StandardCharsets.UTF_8)), Date.from(dateTime.toInstant()), false, new Flags());
-
-        String messageToMoveId = message.getMessageId().serialize();
-        String requestBody = "[" +
-            "  [" +
-            "    \"setMessages\"," +
-            "    {" +
-            "      \"update\": { \"" + messageToMoveId + "\" : {" +
-            "        \"mailboxIds\": [\"" + heartFolderId + "\"]" +
-            "      }}" +
-            "    }," +
-            "    \"#0\"" +
-            "  ]" +
-            "]";
-
-        given()
-            .header("Authorization", accessToken.serialize())
-            .body(requestBody)
-        .when()
-            .post("/jmap");
-
-        String firstMessage = ARGUMENTS + ".list[0]";
-        given()
-            .header("Authorization", accessToken.serialize())
-            .body("[[\"getMessages\", {\"ids\": [\"" + messageToMoveId + "\"]}, \"#0\"]]")
-        .when()
-            .post("/jmap")
-        .then()
-            .statusCode(200)
-            .log().ifValidationFails()
-            .body(NAME, equalTo("messages"))
-            .body(ARGUMENTS + ".list", hasSize(1))
-            .body(firstMessage + ".mailboxIds", contains(heartFolderId));
-    }
-
     @Test
     public void mailboxIdsShouldNotBeAnymoreInSourceWhenUsingForMove() throws Exception {
         String newMailboxName = "heartFolder";


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


[04/15] james-project git commit: MAILBOX-342 Parallelize massive insertions

Posted by bt...@apache.org.
MAILBOX-342 Parallelize massive insertions


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

Branch: refs/heads/master
Commit: cb5eb265ce91cdc12db8021a5f99120677ded011
Parents: eb126da
Author: benwa <bt...@linagora.com>
Authored: Fri Jul 20 15:37:53 2018 +0700
Committer: benwa <bt...@linagora.com>
Committed: Wed Jul 25 16:40:54 2018 +0700

----------------------------------------------------------------------
 .../cassandra/mail/CassandraAttachmentOwnerDAOTest.java     | 9 ++++++++-
 1 file changed, 8 insertions(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/james-project/blob/cb5eb265/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraAttachmentOwnerDAOTest.java
----------------------------------------------------------------------
diff --git a/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraAttachmentOwnerDAOTest.java b/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraAttachmentOwnerDAOTest.java
index 6423c16..f96fdf2 100644
--- a/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraAttachmentOwnerDAOTest.java
+++ b/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraAttachmentOwnerDAOTest.java
@@ -29,6 +29,8 @@ import org.apache.james.backends.cassandra.utils.CassandraUtils;
 import org.apache.james.mailbox.cassandra.modules.CassandraAttachmentModule;
 import org.apache.james.mailbox.model.AttachmentId;
 import org.apache.james.mailbox.store.mail.model.Username;
+import org.apache.james.util.FluentFutureStream;
+import org.apache.james.util.streams.JamesCollectors;
 import org.junit.After;
 import org.junit.Before;
 import org.junit.ClassRule;
@@ -85,9 +87,14 @@ public class CassandraAttachmentOwnerDAOTest {
     @Test
     public void retrieveOwnersShouldNotThrowWhenMoreReferencesThanPaging() {
         int referenceCountExceedingPaging = 5050;
+
         IntStream.range(0, referenceCountExceedingPaging)
             .boxed()
-            .forEach(i -> testee.addOwner(ATTACHMENT_ID, Username.fromRawValue("owner" + i)).join());
+            .collect(JamesCollectors.chunker(128))
+            .forEach(chunk -> FluentFutureStream.of(
+                chunk.stream()
+                    .map(i -> testee.addOwner(ATTACHMENT_ID, Username.fromRawValue("owner" + i))))
+                .join());
 
         assertThat(testee.retrieveOwners(ATTACHMENT_ID).join())
             .hasSize(referenceCountExceedingPaging);


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


[11/15] james-project git commit: JAMES-2489 Decrease RetryExecutorUtilTest delay

Posted by bt...@apache.org.
JAMES-2489 Decrease RetryExecutorUtilTest delay


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

Branch: refs/heads/master
Commit: 25b41ec70494a718e3ec16d044db66dbf9931171
Parents: fcf79c0
Author: benwa <bt...@linagora.com>
Authored: Sun Jul 22 19:34:06 2018 +0700
Committer: benwa <bt...@linagora.com>
Committed: Wed Jul 25 16:44:50 2018 +0700

----------------------------------------------------------------------
 .../test/java/org/apache/james/utils/RetryExecutorUtilTest.java  | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/james-project/blob/25b41ec7/server/container/guice/guice-common/src/test/java/org/apache/james/utils/RetryExecutorUtilTest.java
----------------------------------------------------------------------
diff --git a/server/container/guice/guice-common/src/test/java/org/apache/james/utils/RetryExecutorUtilTest.java b/server/container/guice/guice-common/src/test/java/org/apache/james/utils/RetryExecutorUtilTest.java
index 46b10cf..3f74e84 100644
--- a/server/container/guice/guice-common/src/test/java/org/apache/james/utils/RetryExecutorUtilTest.java
+++ b/server/container/guice/guice-common/src/test/java/org/apache/james/utils/RetryExecutorUtilTest.java
@@ -39,7 +39,7 @@ import com.nurkiewicz.asyncretry.RetryExecutor;
 
 public class RetryExecutorUtilTest {
     private static final int MAX_RETRIES = 3;
-    private static final int MIN_DELAY = 3000;
+    private static final int MIN_DELAY = 100;
     @Mock
     protected FaultyService serviceMock;
 
@@ -109,7 +109,7 @@ public class RetryExecutorUtilTest {
 
         retryExecutor = RetryExecutorUtil.retryOnExceptions(new AsyncRetryExecutor(scheduledExecutor), MAX_RETRIES, MIN_DELAY, IllegalStateException.class);
 
-        final CompletableFuture<String> future = retryExecutor.getWithRetry(serviceMock::faultyService);
+        CompletableFuture<String> future = retryExecutor.getWithRetry(serviceMock::faultyService);
 
         assertThat(future.get()).isEqualTo("Foo");
     }


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