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 ma...@apache.org on 2017/09/02 06:00:03 UTC

[01/13] james-project git commit: JAMES-2133 fix warnings

Repository: james-project
Updated Branches:
  refs/heads/master e9c1a72b7 -> fd1c775e7


JAMES-2133 fix warnings


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

Branch: refs/heads/master
Commit: 0efe1e33e527aa2c5822ece508f66e35d7cda9bd
Parents: e9c1a72
Author: Matthieu Baechler <ma...@apache.org>
Authored: Tue Aug 29 18:18:47 2017 +0200
Committer: Matthieu Baechler <ma...@apache.org>
Committed: Fri Sep 1 14:03:47 2017 +0200

----------------------------------------------------------------------
 .../MailAttributesListToMimeHeaders.java        |  5 +-
 .../MailAttributesToMimeHeadersTest.java        |  1 -
 .../integration/SetMessagesMethodTest.java      |  1 -
 .../jmap/json/ParsingWritingObjectsTest.java    |  1 -
 .../jmap/methods/GetMessagesMethodTest.java     | 51 +++++++++++---------
 .../james/jmap/model/FilterConditionTest.java   |  4 +-
 .../apache/james/jmap/model/KeywordTest.java    |  1 -
 .../jmap/model/UpdateMessagePatchTest.java      | 10 ++--
 .../jmap/utils/FilterToSearchQueryTest.java     |  2 -
 9 files changed, 36 insertions(+), 40 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/james-project/blob/0efe1e33/mailet/standard/src/main/java/org/apache/james/transport/mailets/MailAttributesListToMimeHeaders.java
----------------------------------------------------------------------
diff --git a/mailet/standard/src/main/java/org/apache/james/transport/mailets/MailAttributesListToMimeHeaders.java b/mailet/standard/src/main/java/org/apache/james/transport/mailets/MailAttributesListToMimeHeaders.java
index cea486a..60d2208 100644
--- a/mailet/standard/src/main/java/org/apache/james/transport/mailets/MailAttributesListToMimeHeaders.java
+++ b/mailet/standard/src/main/java/org/apache/james/transport/mailets/MailAttributesListToMimeHeaders.java
@@ -78,7 +78,8 @@ public class MailAttributesListToMimeHeaders extends GenericMailet {
     private void addAttributeToHeader(Mail mail, MimeMessage message, Entry<String, String> entry) {
         Serializable attribute = mail.getAttribute(entry.getKey());
         if (attribute instanceof Collection) {
-            Optional<Collection> values = Optional.of((Collection) attribute);
+            @SuppressWarnings("unchecked")
+            Optional<Collection<Serializable>> values = Optional.of((Collection<Serializable>) attribute);
             addCollectionToHeader(message, entry.getValue(), values);
         } else {
             if (attribute != null) {
@@ -87,7 +88,7 @@ public class MailAttributesListToMimeHeaders extends GenericMailet {
         }
     }
 
-    private void addCollectionToHeader(MimeMessage message, String headerName, Optional<Collection> values) {
+    private void addCollectionToHeader(MimeMessage message, String headerName, Optional<Collection<Serializable>> values) {
         OptionalUtils.toStream(values)
             .flatMap(Collection::stream)
             .forEach(value -> addValueToHeader(message, headerName, value));

http://git-wip-us.apache.org/repos/asf/james-project/blob/0efe1e33/mailet/standard/src/test/java/org/apache/james/transport/mailets/MailAttributesToMimeHeadersTest.java
----------------------------------------------------------------------
diff --git a/mailet/standard/src/test/java/org/apache/james/transport/mailets/MailAttributesToMimeHeadersTest.java b/mailet/standard/src/test/java/org/apache/james/transport/mailets/MailAttributesToMimeHeadersTest.java
index fbec22e..690c003 100644
--- a/mailet/standard/src/test/java/org/apache/james/transport/mailets/MailAttributesToMimeHeadersTest.java
+++ b/mailet/standard/src/test/java/org/apache/james/transport/mailets/MailAttributesToMimeHeadersTest.java
@@ -20,7 +20,6 @@
 package org.apache.james.transport.mailets;
 
 import static org.assertj.core.api.Assertions.assertThat;
-import static org.assertj.core.api.Assertions.within;
 
 import javax.mail.MessagingException;
 

http://git-wip-us.apache.org/repos/asf/james-project/blob/0efe1e33/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 3fe34bb..4267638 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
@@ -107,7 +107,6 @@ public abstract class SetMessagesMethodTest {
     private static final String USERNAME = "username@" + USERS_DOMAIN;
     public static final MailboxPath USER_MAILBOX = new MailboxPath(MailboxConstants.USER_NAMESPACE, USERNAME, "mailbox");
     private static final String NOT_UPDATED = ARGUMENTS + ".notUpdated";
-    private static final String NOT_CREATED = ARGUMENTS + ".notCreated";
 
     private ConditionFactory calmlyAwait;
 

http://git-wip-us.apache.org/repos/asf/james-project/blob/0efe1e33/server/protocols/jmap/src/test/java/org/apache/james/jmap/json/ParsingWritingObjectsTest.java
----------------------------------------------------------------------
diff --git a/server/protocols/jmap/src/test/java/org/apache/james/jmap/json/ParsingWritingObjectsTest.java b/server/protocols/jmap/src/test/java/org/apache/james/jmap/json/ParsingWritingObjectsTest.java
index bed119d..48ef051 100644
--- a/server/protocols/jmap/src/test/java/org/apache/james/jmap/json/ParsingWritingObjectsTest.java
+++ b/server/protocols/jmap/src/test/java/org/apache/james/jmap/json/ParsingWritingObjectsTest.java
@@ -30,7 +30,6 @@ import java.nio.charset.StandardCharsets;
 import org.apache.commons.io.IOUtils;
 import org.apache.james.jmap.methods.GetMessagesMethod;
 import org.apache.james.jmap.methods.JmapResponseWriterImpl;
-import org.apache.james.jmap.model.Message;
 import org.apache.james.jmap.model.SubMessage;
 import org.apache.james.mailbox.inmemory.InMemoryId;
 import org.apache.james.mailbox.model.TestMessageId;

http://git-wip-us.apache.org/repos/asf/james-project/blob/0efe1e33/server/protocols/jmap/src/test/java/org/apache/james/jmap/methods/GetMessagesMethodTest.java
----------------------------------------------------------------------
diff --git a/server/protocols/jmap/src/test/java/org/apache/james/jmap/methods/GetMessagesMethodTest.java b/server/protocols/jmap/src/test/java/org/apache/james/jmap/methods/GetMessagesMethodTest.java
index 6d7b06a..fb1353b 100644
--- a/server/protocols/jmap/src/test/java/org/apache/james/jmap/methods/GetMessagesMethodTest.java
+++ b/server/protocols/jmap/src/test/java/org/apache/james/jmap/methods/GetMessagesMethodTest.java
@@ -527,16 +527,17 @@ public class GetMessagesMethodTest {
             .extracting(GetMessagesResponse.class::cast)
             .flatExtracting(GetMessagesResponse::list)
             .extracting(Message::getKeywords)
-            .containsOnly(
-                ImmutableMap.of(
-                    "$Answered", true,
-                    "$Draft", true),
-                ImmutableMap.of(
-                    "$Answered", true,
-                    "$Draft", true),
-                ImmutableMap.of(
-                    "$Answered", true,
-                    "$Draft", true));
+            .containsOnlyElementsOf(
+                    ImmutableList.of(
+                        ImmutableMap.of(
+                            "$Answered", true,
+                            "$Draft", true),
+                        ImmutableMap.of(
+                            "$Answered", true,
+                            "$Draft", true),
+                        ImmutableMap.of(
+                            "$Answered", true,
+                            "$Draft", true)));
 
     }
 
@@ -575,16 +576,17 @@ public class GetMessagesMethodTest {
             .extracting(GetMessagesResponse.class::cast)
             .flatExtracting(GetMessagesResponse::list)
             .extracting(Message::getKeywords)
-            .containsOnly(
-                ImmutableMap.of(
-                    "$Answered", true,
-                    "$Draft", true),
-                ImmutableMap.of(
-                    "$Answered", true,
-                    "$Draft", true),
-                ImmutableMap.of(
-                    "$Answered", true,
-                    "$Draft", true));
+            .containsOnlyElementsOf(
+                    ImmutableList.of(
+                        ImmutableMap.of(
+                            "$Answered", true,
+                            "$Draft", true),
+                        ImmutableMap.of(
+                            "$Answered", true,
+                            "$Draft", true),
+                        ImmutableMap.of(
+                            "$Answered", true,
+                            "$Draft", true)));
 
     }
 
@@ -611,9 +613,10 @@ public class GetMessagesMethodTest {
             .extracting(GetMessagesResponse.class::cast)
             .flatExtracting(GetMessagesResponse::list)
             .extracting(Message::getKeywords)
-            .containsOnly(
-                ImmutableMap.of(
-                    "$Answered", true,
-                    FORWARDED, true));
+            .containsOnlyElementsOf(
+                    ImmutableList.of(
+                        ImmutableMap.of(
+                            "$Answered", true,
+                            FORWARDED, true)));
     }
 }

http://git-wip-us.apache.org/repos/asf/james-project/blob/0efe1e33/server/protocols/jmap/src/test/java/org/apache/james/jmap/model/FilterConditionTest.java
----------------------------------------------------------------------
diff --git a/server/protocols/jmap/src/test/java/org/apache/james/jmap/model/FilterConditionTest.java b/server/protocols/jmap/src/test/java/org/apache/james/jmap/model/FilterConditionTest.java
index 5efaecc..79c232f 100644
--- a/server/protocols/jmap/src/test/java/org/apache/james/jmap/model/FilterConditionTest.java
+++ b/server/protocols/jmap/src/test/java/org/apache/james/jmap/model/FilterConditionTest.java
@@ -23,16 +23,14 @@ import static org.assertj.core.api.Assertions.assertThat;
 
 import java.time.ZonedDateTime;
 import java.util.Optional;
-import java.util.Set;
 
 import org.junit.Rule;
 import org.junit.Test;
+import org.junit.rules.ExpectedException;
 
 import com.google.common.collect.ImmutableList;
-import com.google.common.collect.ImmutableSet;
 
 import nl.jqno.equalsverifier.EqualsVerifier;
-import org.junit.rules.ExpectedException;
 
 public class FilterConditionTest {
 

http://git-wip-us.apache.org/repos/asf/james-project/blob/0efe1e33/server/protocols/jmap/src/test/java/org/apache/james/jmap/model/KeywordTest.java
----------------------------------------------------------------------
diff --git a/server/protocols/jmap/src/test/java/org/apache/james/jmap/model/KeywordTest.java b/server/protocols/jmap/src/test/java/org/apache/james/jmap/model/KeywordTest.java
index 12fcf0a..3eeb6f5 100644
--- a/server/protocols/jmap/src/test/java/org/apache/james/jmap/model/KeywordTest.java
+++ b/server/protocols/jmap/src/test/java/org/apache/james/jmap/model/KeywordTest.java
@@ -31,7 +31,6 @@ import org.junit.Test;
 import org.junit.rules.ExpectedException;
 
 public class KeywordTest {
-    private final static String FORWARDED = "forwarded";
     private final static int FLAG_NAME_MAX_LENTH = 255;
     private final static String ANY_KEYWORD = "AnyKeyword";
 

http://git-wip-us.apache.org/repos/asf/james-project/blob/0efe1e33/server/protocols/jmap/src/test/java/org/apache/james/jmap/model/UpdateMessagePatchTest.java
----------------------------------------------------------------------
diff --git a/server/protocols/jmap/src/test/java/org/apache/james/jmap/model/UpdateMessagePatchTest.java b/server/protocols/jmap/src/test/java/org/apache/james/jmap/model/UpdateMessagePatchTest.java
index e227746..00aeee3 100644
--- a/server/protocols/jmap/src/test/java/org/apache/james/jmap/model/UpdateMessagePatchTest.java
+++ b/server/protocols/jmap/src/test/java/org/apache/james/jmap/model/UpdateMessagePatchTest.java
@@ -20,19 +20,19 @@
 package org.apache.james.jmap.model;
 
 import static org.assertj.core.api.Assertions.assertThat;
+
 import java.util.Arrays;
 import java.util.List;
+
 import javax.mail.Flags;
 
 import org.apache.james.mailbox.FlagsBuilder;
-
-import com.google.common.collect.ImmutableMap;
-import com.google.common.collect.ImmutableSet;
-
 import org.junit.Rule;
 import org.junit.Test;
 import org.junit.rules.ExpectedException;
 
+import com.google.common.collect.ImmutableMap;
+
 public class UpdateMessagePatchTest {
     private final static String FORWARDED = "forwarded";
     @Rule
@@ -46,7 +46,7 @@ public class UpdateMessagePatchTest {
 
     @Test
     public void builderShouldSetUnreadFalseWhenBuiltWithIsUnreadFalse() {
-        UpdateMessagePatch testee = UpdateMessagePatch.builder().isUnread(false).build();
+        UpdateMessagePatch.builder().isUnread(false).build();
     }
 
     @Test

http://git-wip-us.apache.org/repos/asf/james-project/blob/0efe1e33/server/protocols/jmap/src/test/java/org/apache/james/jmap/utils/FilterToSearchQueryTest.java
----------------------------------------------------------------------
diff --git a/server/protocols/jmap/src/test/java/org/apache/james/jmap/utils/FilterToSearchQueryTest.java b/server/protocols/jmap/src/test/java/org/apache/james/jmap/utils/FilterToSearchQueryTest.java
index aca9757..10f7ce0 100644
--- a/server/protocols/jmap/src/test/java/org/apache/james/jmap/utils/FilterToSearchQueryTest.java
+++ b/server/protocols/jmap/src/test/java/org/apache/james/jmap/utils/FilterToSearchQueryTest.java
@@ -32,14 +32,12 @@ import org.apache.james.jmap.model.Filter;
 import org.apache.james.jmap.model.FilterCondition;
 import org.apache.james.jmap.model.FilterOperator;
 import org.apache.james.jmap.model.Header;
-import org.apache.james.jmap.model.Keyword;
 import org.apache.james.mailbox.model.SearchQuery;
 import org.apache.james.mailbox.model.SearchQuery.AddressType;
 import org.apache.james.mailbox.model.SearchQuery.DateResolution;
 import org.junit.Test;
 
 import com.google.common.collect.ImmutableList;
-import com.google.common.collect.ImmutableSet;
 
 public class FilterToSearchQueryTest {
     private final static String FORWARDED = "forwarded";


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


[02/13] james-project git commit: JAMES-2133 Make it possible to restart cassandra container every X tests

Posted by ma...@apache.org.
JAMES-2133 Make it possible to restart cassandra container every X tests

        When running cassandra in a container, it may need a lot
        of RAM to keep up with big testsuites. Running a container
        every once in a while help keeping everything fast.


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

Branch: refs/heads/master
Commit: 6c6cb53bb48743ea3343dd49204cf356d9171758
Parents: a18a448
Author: Matthieu Baechler <ma...@apache.org>
Authored: Tue Aug 29 17:07:36 2017 +0200
Committer: Matthieu Baechler <ma...@apache.org>
Committed: Sat Sep 2 07:58:48 2017 +0200

----------------------------------------------------------------------
 .../ContainerLifecycleConfiguration.java        | 95 ++++++++++++++++++++
 .../CassandraGetMessageListMethodTest.java      | 11 ++-
 .../CassandraSetMessagesMethodTest.java         | 11 ++-
 3 files changed, 113 insertions(+), 4 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/james-project/blob/6c6cb53b/backends-common/cassandra/src/test/java/org/apache/james/backends/cassandra/ContainerLifecycleConfiguration.java
----------------------------------------------------------------------
diff --git a/backends-common/cassandra/src/test/java/org/apache/james/backends/cassandra/ContainerLifecycleConfiguration.java b/backends-common/cassandra/src/test/java/org/apache/james/backends/cassandra/ContainerLifecycleConfiguration.java
new file mode 100644
index 0000000..cabda1f
--- /dev/null
+++ b/backends-common/cassandra/src/test/java/org/apache/james/backends/cassandra/ContainerLifecycleConfiguration.java
@@ -0,0 +1,95 @@
+/****************************************************************
+ * 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.backends.cassandra;
+
+import java.util.concurrent.atomic.AtomicInteger;
+
+import org.junit.rules.TestRule;
+import org.junit.runners.model.Statement;
+import org.testcontainers.containers.GenericContainer;
+import org.testcontainers.shaded.com.google.common.base.Preconditions;
+
+public class ContainerLifecycleConfiguration {
+
+    public static Builder builder() {
+        return new Builder();
+    }
+
+    public static class Builder {
+        private static int DEFAULT_ITERATIONS_BETWEEN_RESTART = 20;
+
+        private GenericContainer<?> container;
+        private int iterationsBetweenRestart = DEFAULT_ITERATIONS_BETWEEN_RESTART;
+
+        private Builder() {}
+
+        public Builder container(GenericContainer<?> container) {
+            this.container = container;
+            return this;
+        }
+
+        public Builder iterationsBetweenRestart(int iterationsBetweenRestart) {
+            this.iterationsBetweenRestart = iterationsBetweenRestart;
+            return this;
+        }
+
+        public ContainerLifecycleConfiguration build() {
+            Preconditions.checkState(container != null);
+            return new ContainerLifecycleConfiguration(container, iterationsBetweenRestart);
+        }
+    }
+
+    private final GenericContainer<?> container;
+    private final int iterationsBetweenRestart;
+    private AtomicInteger iterationsBeforeRestart;
+
+    public ContainerLifecycleConfiguration(GenericContainer<?> container, int iterationsBetweenRestart) {
+        this.container = container;
+        this.iterationsBetweenRestart = iterationsBetweenRestart;
+        this.iterationsBeforeRestart = new AtomicInteger(iterationsBetweenRestart);
+    }
+
+    private void restartContainer() {
+        iterationsBeforeRestart.set(iterationsBetweenRestart);
+        container.stop();
+        container.start();
+    }
+
+    private boolean needsRestart() {
+        return iterationsBeforeRestart.decrementAndGet() <= 0;
+    }
+
+    private void restartContainerIfNeeded() {
+        if (needsRestart()) {
+            restartContainer();
+        }
+    }
+
+    public TestRule asTestRule() {
+        return (base, description) -> new Statement() {
+            @Override
+            public void evaluate() throws Throwable {
+                restartContainerIfNeeded();
+                base.evaluate();
+            }
+        };
+    }
+
+}

http://git-wip-us.apache.org/repos/asf/james-project/blob/6c6cb53b/server/protocols/jmap-integration-testing/cassandra-jmap-integration-testing/src/test/java/org/apache/james/jmap/cassandra/CassandraGetMessageListMethodTest.java
----------------------------------------------------------------------
diff --git a/server/protocols/jmap-integration-testing/cassandra-jmap-integration-testing/src/test/java/org/apache/james/jmap/cassandra/CassandraGetMessageListMethodTest.java b/server/protocols/jmap-integration-testing/cassandra-jmap-integration-testing/src/test/java/org/apache/james/jmap/cassandra/CassandraGetMessageListMethodTest.java
index 7e4abe5..1d8857b 100644
--- a/server/protocols/jmap-integration-testing/cassandra-jmap-integration-testing/src/test/java/org/apache/james/jmap/cassandra/CassandraGetMessageListMethodTest.java
+++ b/server/protocols/jmap-integration-testing/cassandra-jmap-integration-testing/src/test/java/org/apache/james/jmap/cassandra/CassandraGetMessageListMethodTest.java
@@ -22,18 +22,25 @@ package org.apache.james.jmap.cassandra;
 import org.apache.james.CassandraJmapTestRule;
 import org.apache.james.DockerCassandraRule;
 import org.apache.james.GuiceJamesServer;
+import org.apache.james.backends.cassandra.ContainerLifecycleConfiguration;
 import org.apache.james.jmap.methods.integration.GetMessageListMethodTest;
 import org.junit.ClassRule;
 import org.junit.Rule;
+import org.junit.rules.TestRule;
 
 public class CassandraGetMessageListMethodTest extends GetMessageListMethodTest {
 
     @ClassRule
     public static DockerCassandraRule cassandra = new DockerCassandraRule();
-    
+
+    public static ContainerLifecycleConfiguration cassandraLifecycleConfiguration = ContainerLifecycleConfiguration.builder().iterationsBetweenRestart(20).container(cassandra.getRawContainer()).build();
+
     @Rule 
     public CassandraJmapTestRule rule = CassandraJmapTestRule.defaultTestRule();
-    
+
+    @Rule
+    public TestRule cassandraLifecycleTestRule = cassandraLifecycleConfiguration.asTestRule();
+
     @Override
     protected GuiceJamesServer createJmapServer() {
         return rule.jmapServer(cassandra.getModule());

http://git-wip-us.apache.org/repos/asf/james-project/blob/6c6cb53b/server/protocols/jmap-integration-testing/cassandra-jmap-integration-testing/src/test/java/org/apache/james/jmap/cassandra/CassandraSetMessagesMethodTest.java
----------------------------------------------------------------------
diff --git a/server/protocols/jmap-integration-testing/cassandra-jmap-integration-testing/src/test/java/org/apache/james/jmap/cassandra/CassandraSetMessagesMethodTest.java b/server/protocols/jmap-integration-testing/cassandra-jmap-integration-testing/src/test/java/org/apache/james/jmap/cassandra/CassandraSetMessagesMethodTest.java
index 2691aaf..b58e8d1 100644
--- a/server/protocols/jmap-integration-testing/cassandra-jmap-integration-testing/src/test/java/org/apache/james/jmap/cassandra/CassandraSetMessagesMethodTest.java
+++ b/server/protocols/jmap-integration-testing/cassandra-jmap-integration-testing/src/test/java/org/apache/james/jmap/cassandra/CassandraSetMessagesMethodTest.java
@@ -22,20 +22,27 @@ package org.apache.james.jmap.cassandra;
 import org.apache.james.CassandraJmapTestRule;
 import org.apache.james.DockerCassandraRule;
 import org.apache.james.GuiceJamesServer;
+import org.apache.james.backends.cassandra.ContainerLifecycleConfiguration;
 import org.apache.james.jmap.methods.integration.SetMessagesMethodTest;
 import org.apache.james.mailbox.cassandra.ids.CassandraMessageId;
 import org.apache.james.mailbox.model.MessageId;
 import org.junit.ClassRule;
 import org.junit.Rule;
+import org.junit.rules.TestRule;
 
 public class CassandraSetMessagesMethodTest extends SetMessagesMethodTest {
 
     @ClassRule
     public static DockerCassandraRule cassandra = new DockerCassandraRule();
-    
-    @Rule 
+
+    public static ContainerLifecycleConfiguration cassandraLifecycleConfiguration = ContainerLifecycleConfiguration.builder().iterationsBetweenRestart(20).container(cassandra.getRawContainer()).build();
+
+    @Rule
     public CassandraJmapTestRule rule = CassandraJmapTestRule.defaultTestRule();
 
+    @Rule
+    public TestRule cassandraLifecycleTestRule = cassandraLifecycleConfiguration.asTestRule();
+
     @Override
     protected GuiceJamesServer createJmapServer() {
         return rule.jmapServer(cassandra.getModule());


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


[10/13] james-project git commit: JAMES-2133 Switch from cassandraunit to cassandra in docker

Posted by ma...@apache.org.
http://git-wip-us.apache.org/repos/asf/james-project/blob/a18a4488/backends-common/cassandra/src/test/java/org/apache/james/backends/cassandra/init/CassandraConfigurationTest.java
----------------------------------------------------------------------
diff --git a/backends-common/cassandra/src/test/java/org/apache/james/backends/cassandra/init/CassandraConfigurationTest.java b/backends-common/cassandra/src/test/java/org/apache/james/backends/cassandra/init/CassandraConfigurationTest.java
new file mode 100644
index 0000000..473a56e
--- /dev/null
+++ b/backends-common/cassandra/src/test/java/org/apache/james/backends/cassandra/init/CassandraConfigurationTest.java
@@ -0,0 +1,233 @@
+/****************************************************************
+ * 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.backends.cassandra.init;
+
+import static org.assertj.core.api.Assertions.assertThat;
+
+import org.apache.james.backends.cassandra.init.CassandraConfiguration;
+import org.assertj.core.api.JUnitSoftAssertions;
+import org.junit.Rule;
+import org.junit.Test;
+import org.junit.rules.ExpectedException;
+
+import nl.jqno.equalsverifier.EqualsVerifier;
+
+public class CassandraConfigurationTest {
+
+    @Rule
+    public ExpectedException expectedException = ExpectedException.none();
+
+    @Rule
+    public final JUnitSoftAssertions softly = new JUnitSoftAssertions();
+
+    @Test
+    public void cassandraConfigurationShouldRespectBeanContract() {
+        EqualsVerifier.forClass(CassandraConfiguration.class).verify();
+    }
+
+    @Test
+    public void defaultBuilderShouldConstructDefaultConfiguration() {
+        assertThat(CassandraConfiguration.builder().build())
+            .isEqualTo(CassandraConfiguration.DEFAULT_CONFIGURATION);
+    }
+
+    @Test
+    public void aclMaxRetryShouldThrowOnNegativeValue() {
+        expectedException.expect(IllegalArgumentException.class);
+
+        CassandraConfiguration.builder()
+            .aclMaxRetry(-1);
+    }
+
+    @Test
+    public void aclMaxRetryShouldThrowOnZero() {
+        expectedException.expect(IllegalArgumentException.class);
+
+        CassandraConfiguration.builder()
+            .aclMaxRetry(0);
+    }
+
+    @Test
+    public void expungeChunkSizeShouldThrowOnNegativeValue() {
+        expectedException.expect(IllegalArgumentException.class);
+
+        CassandraConfiguration.builder()
+            .expungeChunkSize(-1);
+    }
+
+    @Test
+    public void expungeChunkSizeShouldThrowOnZero() {
+        expectedException.expect(IllegalArgumentException.class);
+
+        CassandraConfiguration.builder()
+            .expungeChunkSize(0);
+    }
+
+    @Test
+    public void messageReadChunkSizeShouldThrowOnNegativeValue() {
+        expectedException.expect(IllegalArgumentException.class);
+
+        CassandraConfiguration.builder()
+            .messageReadChunkSize(-1);
+    }
+
+    @Test
+    public void messageReadChunkSizeShouldThrowOnZero() {
+        expectedException.expect(IllegalArgumentException.class);
+
+        CassandraConfiguration.builder()
+            .messageReadChunkSize(0);
+    }
+
+    @Test
+    public void flagsUpdateChunkSizeShouldThrowOnNegativeValue() {
+        expectedException.expect(IllegalArgumentException.class);
+
+        CassandraConfiguration.builder()
+            .flagsUpdateChunkSize(-1);
+    }
+
+    @Test
+    public void flagsUpdateChunkSizeShouldThrowOnZero() {
+        expectedException.expect(IllegalArgumentException.class);
+
+        CassandraConfiguration.builder()
+            .flagsUpdateChunkSize(0);
+    }
+
+    @Test
+    public void flagsUpdateMessageIdMaxRetryShouldThrowOnNegativeValue() {
+        expectedException.expect(IllegalArgumentException.class);
+
+        CassandraConfiguration.builder()
+            .flagsUpdateMessageIdMaxRetry(-1);
+    }
+
+    @Test
+    public void flagsUpdateMessageIdMaxRetryShouldThrowOnZero() {
+        expectedException.expect(IllegalArgumentException.class);
+
+        CassandraConfiguration.builder()
+            .flagsUpdateMessageIdMaxRetry(0);
+    }
+
+    @Test
+    public void flagsUpdateMessageMaxRetryShouldThrowOnNegativeValue() {
+        expectedException.expect(IllegalArgumentException.class);
+
+        CassandraConfiguration.builder()
+            .flagsUpdateMessageMaxRetry(-1);
+    }
+
+    @Test
+    public void flagsUpdateMessageMaxRetryShouldThrowOnZero() {
+        expectedException.expect(IllegalArgumentException.class);
+
+        CassandraConfiguration.builder()
+            .flagsUpdateMessageMaxRetry(0);
+    }
+
+    @Test
+    public void fetchNextPageInAdvanceRowShouldThrowOnNegativeValue() {
+        expectedException.expect(IllegalArgumentException.class);
+
+        CassandraConfiguration.builder()
+            .fetchNextPageInAdvanceRow(-1);
+    }
+
+    @Test
+    public void fetchNextPageInAdvanceRowShouldThrowOnZero() {
+        expectedException.expect(IllegalArgumentException.class);
+
+        CassandraConfiguration.builder()
+            .fetchNextPageInAdvanceRow(0);
+    }
+
+    @Test
+    public void modSeqMaxRetryShouldThrowOnNegativeValue() {
+        expectedException.expect(IllegalArgumentException.class);
+
+        CassandraConfiguration.builder()
+            .modSeqMaxRetry(-1);
+    }
+
+    @Test
+    public void modSeqMaxRetryShouldThrowOnZero() {
+        expectedException.expect(IllegalArgumentException.class);
+
+        CassandraConfiguration.builder()
+            .modSeqMaxRetry(0);
+    }
+
+    @Test
+    public void uidMaxRetryShouldThrowOnNegativeValue() {
+        expectedException.expect(IllegalArgumentException.class);
+
+        CassandraConfiguration.builder()
+            .uidMaxRetry(-1);
+    }
+
+    @Test
+    public void uidMaxRetryShouldThrowOnZero() {
+        expectedException.expect(IllegalArgumentException.class);
+
+        CassandraConfiguration.builder()
+            .uidMaxRetry(0);
+    }
+
+    @Test
+    public void builderShouldCreateTheRightObject() {
+        int aclMaxRetry = 1;
+        int modSeqMaxRetry = 2;
+        int uidMaxRetry = 3;
+        int fetchNextPageInAdvanceRow = 4;
+        int flagsUpdateMessageMaxRetry = 5;
+        int flagsUpdateMessageIdMaxRetry = 6;
+        int flagsUpdateChunkSize = 7;
+        int messageReadChunkSize = 8;
+        int expungeChunkSize = 9;
+        int blobPartSize = 10;
+
+        CassandraConfiguration configuration = CassandraConfiguration.builder()
+            .aclMaxRetry(aclMaxRetry)
+            .modSeqMaxRetry(modSeqMaxRetry)
+            .uidMaxRetry(uidMaxRetry)
+            .fetchNextPageInAdvanceRow(fetchNextPageInAdvanceRow)
+            .flagsUpdateMessageMaxRetry(flagsUpdateMessageMaxRetry)
+            .flagsUpdateMessageIdMaxRetry(flagsUpdateMessageIdMaxRetry)
+            .flagsUpdateChunkSize(flagsUpdateChunkSize)
+            .messageReadChunkSize(messageReadChunkSize)
+            .expungeChunkSize(expungeChunkSize)
+            .blobPartSize(blobPartSize)
+            .build();
+
+        softly.assertThat(configuration.getAclMaxRetry()).isEqualTo(aclMaxRetry);
+        softly.assertThat(configuration.getModSeqMaxRetry()).isEqualTo(modSeqMaxRetry);
+        softly.assertThat(configuration.getUidMaxRetry()).isEqualTo(uidMaxRetry);
+        softly.assertThat(configuration.getFetchNextPageInAdvanceRow()).isEqualTo(fetchNextPageInAdvanceRow);
+        softly.assertThat(configuration.getFlagsUpdateMessageMaxRetry()).isEqualTo(flagsUpdateMessageMaxRetry);
+        softly.assertThat(configuration.getFlagsUpdateMessageIdMaxRetry()).isEqualTo(flagsUpdateMessageIdMaxRetry);
+        softly.assertThat(configuration.getFlagsUpdateChunkSize()).isEqualTo(flagsUpdateChunkSize);
+        softly.assertThat(configuration.getMessageReadChunkSize()).isEqualTo(messageReadChunkSize);
+        softly.assertThat(configuration.getExpungeChunkSize()).isEqualTo(expungeChunkSize);
+        softly.assertThat(configuration.getBlobPartSize()).isEqualTo(blobPartSize);
+    }
+
+}

http://git-wip-us.apache.org/repos/asf/james-project/blob/a18a4488/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 67fe7ee..3517349 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
@@ -19,27 +19,32 @@
 
 package org.apache.james.backends.cassandra.init;
 
-import java.util.Arrays;
-import java.util.List;
-
 import static com.datastax.driver.core.DataType.text;
 import static org.assertj.core.api.Assertions.assertThat;
 import static org.assertj.core.api.Assertions.fail;
 
-import com.datastax.driver.core.schemabuilder.SchemaBuilder;
-import com.google.common.collect.ImmutableList;
+import java.util.Arrays;
+import java.util.List;
+
 import org.apache.james.backends.cassandra.CassandraCluster;
+import org.apache.james.backends.cassandra.DockerCassandraRule;
 import org.apache.james.backends.cassandra.components.CassandraModule;
 import org.apache.james.backends.cassandra.components.CassandraTable;
 import org.apache.james.backends.cassandra.components.CassandraType;
 import org.junit.After;
 import org.junit.Before;
+import org.junit.ClassRule;
 import org.junit.Test;
 
+import com.datastax.driver.core.schemabuilder.SchemaBuilder;
+import com.google.common.collect.ImmutableList;
+
 public class CassandraTypeProviderTest {
 
     private static final String TYPE_NAME = "typename";
     private static final String PROPERTY = "property";
+
+    @ClassRule public static DockerCassandraRule cassandraServer = new DockerCassandraRule();
     
     private CassandraCluster cassandra;
     private CassandraModule module;
@@ -58,13 +63,13 @@ public class CassandraTypeProviderTest {
                         .addColumn(PROPERTY, text()))));
             }
         };
-        cassandra = CassandraCluster.create(module);
+        cassandra = CassandraCluster.create(module, cassandraServer.getIp(), cassandraServer.getBindingPort());
         cassandra.getTypesProvider();
-        cassandra.ensureAllTables();
     }
 
     @After
     public void tearDown() {
+        cassandra.close();
     }
 
     @Test

http://git-wip-us.apache.org/repos/asf/james-project/blob/a18a4488/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 a9fc183..bc0f678 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
@@ -29,12 +29,14 @@ import java.util.UUID;
 import java.util.stream.IntStream;
 
 import org.apache.james.backends.cassandra.CassandraCluster;
+import org.apache.james.backends.cassandra.DockerCassandraRule;
 import org.apache.james.backends.cassandra.components.CassandraModule;
 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.Before;
+import org.junit.ClassRule;
 import org.junit.Test;
 
 import com.datastax.driver.core.DataType;
@@ -43,17 +45,20 @@ import com.datastax.driver.core.utils.UUIDs;
 import com.google.common.collect.ImmutableList;
 
 public class PaggingTest {
+    
     private static final String TABLE_NAME = "test";
     private static final String ID = "id";
     private static final String CLUSTERING = "clustering";
     private static final UUID UUID = UUIDs.timeBased();
 
+    @ClassRule public static DockerCassandraRule cassandraServer = new DockerCassandraRule();
+    
     private CassandraCluster cassandra;
     private CassandraAsyncExecutor executor;
 
     @Before
     public void setUp() {
-        cassandra = CassandraCluster.create(new CassandraModule() {
+        CassandraModule modules = new CassandraModule() {
             @Override
             public List<CassandraTable> moduleTables() {
                 return ImmutableList.of(new CassandraTable(TABLE_NAME,
@@ -67,14 +72,14 @@ public class PaggingTest {
             public List<CassandraType> moduleTypes() {
                 return ImmutableList.of();
             }
-        });
-        cassandra.ensureAllTables();
+        };
+        cassandra = CassandraCluster.create(modules, cassandraServer.getIp(), cassandraServer.getBindingPort());
         executor = new CassandraAsyncExecutor(cassandra.getConf());
     }
 
     @After
     public void tearDown() {
-        cassandra.clearAllTables();
+        cassandra.close();
     }
 
     @Test

http://git-wip-us.apache.org/repos/asf/james-project/blob/a18a4488/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 41b8efd..5e61068 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
@@ -24,28 +24,30 @@ import static org.assertj.core.api.Assertions.assertThat;
 import java.util.Optional;
 
 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.Before;
+import org.junit.ClassRule;
 import org.junit.Test;
 
 public class CassandraSchemaVersionDAOTest {
 
+    @ClassRule public static DockerCassandraRule cassandraServer = new DockerCassandraRule();
+
     private CassandraCluster cassandra;
 
     private CassandraSchemaVersionDAO testee;
 
     @Before
     public void setUp() {
-        cassandra = CassandraCluster.create(new CassandraSchemaVersionModule());
-        cassandra.ensureAllTables();
+        cassandra = CassandraCluster.create(new CassandraSchemaVersionModule(), cassandraServer.getIp(), cassandraServer.getBindingPort());
 
         testee = new CassandraSchemaVersionDAO(cassandra.getConf(), CassandraUtils.WITH_DEFAULT_CONFIGURATION);
     }
 
     @After
     public void tearDown() {
-        cassandra.clearAllTables();
         cassandra.close();
     }
 

http://git-wip-us.apache.org/repos/asf/james-project/blob/a18a4488/backends-common/cassandra/src/test/resources/logback-test.xml
----------------------------------------------------------------------
diff --git a/backends-common/cassandra/src/test/resources/logback-test.xml b/backends-common/cassandra/src/test/resources/logback-test.xml
new file mode 100644
index 0000000..7f9da84
--- /dev/null
+++ b/backends-common/cassandra/src/test/resources/logback-test.xml
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<configuration>
+
+        <contextListener class="ch.qos.logback.classic.jul.LevelChangePropagator">
+                <resetJUL>true</resetJUL>
+        </contextListener>
+
+        <appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
+                <encoder>
+                        <pattern>%d{HH:mm:ss.SSS} [%-5level] %logger{15} - %msg%n%rEx</pattern>
+                        <immediateFlush>false</immediateFlush>
+                </encoder>
+        </appender>
+
+        <root level="INFO">
+                <appender-ref ref="CONSOLE" />
+        </root>
+
+
+        <logger name="org.apache.james" level="DEBUG" >
+                <appender-ref ref="CONSOLE" />
+        </logger>
+
+</configuration>

http://git-wip-us.apache.org/repos/asf/james-project/blob/a18a4488/backends-common/elasticsearch/src/test/java/org/apache/james/backends/es/ClientProviderImplConnectionTest.java
----------------------------------------------------------------------
diff --git a/backends-common/elasticsearch/src/test/java/org/apache/james/backends/es/ClientProviderImplConnectionTest.java b/backends-common/elasticsearch/src/test/java/org/apache/james/backends/es/ClientProviderImplConnectionTest.java
index f6be380..ea93049 100644
--- a/backends-common/elasticsearch/src/test/java/org/apache/james/backends/es/ClientProviderImplConnectionTest.java
+++ b/backends-common/elasticsearch/src/test/java/org/apache/james/backends/es/ClientProviderImplConnectionTest.java
@@ -52,7 +52,7 @@ public class ClientProviderImplConnectionTest {
         Awaitility.await()
             .atMost(1, TimeUnit.MINUTES)
             .pollInterval(5, TimeUnit.SECONDS)
-            .until(() -> isConnected(ClientProviderImpl.forHost(es1.getIp(), 9300)));
+            .until(() -> isConnected(ClientProviderImpl.forHost(es1.getHostIp(), 9300)));
     }
 
     @Test
@@ -62,8 +62,8 @@ public class ClientProviderImplConnectionTest {
             .pollInterval(5, TimeUnit.SECONDS)
             .until(() ->isConnected(
                 ClientProviderImpl.fromHostsString(
-                    es1.getIp() + ":" + ES_APPLICATIVE_PORT + ","
-                    + es2.getIp() + ":" + ES_APPLICATIVE_PORT)));
+                    es1.getHostIp() + ":" + ES_APPLICATIVE_PORT + ","
+                    + es2.getHostIp() + ":" + ES_APPLICATIVE_PORT)));
     }
 
     @Test
@@ -75,8 +75,8 @@ public class ClientProviderImplConnectionTest {
             .pollInterval(5, TimeUnit.SECONDS)
             .until(() -> isConnected(
                 ClientProviderImpl.fromHostsString(
-                    es1.getIp() + ":" + ES_APPLICATIVE_PORT + ","
-                    + es2.getIp() + ":" + ES_APPLICATIVE_PORT)));
+                    es1.getHostIp() + ":" + ES_APPLICATIVE_PORT + ","
+                    + es2.getHostIp() + ":" + ES_APPLICATIVE_PORT)));
     }
 
     private boolean isConnected(ClientProvider clientProvider) {

http://git-wip-us.apache.org/repos/asf/james-project/blob/a18a4488/mailbox/api/src/test/java/org/apache/james/mailbox/AbstractSubscriptionManagerTest.java
----------------------------------------------------------------------
diff --git a/mailbox/api/src/test/java/org/apache/james/mailbox/AbstractSubscriptionManagerTest.java b/mailbox/api/src/test/java/org/apache/james/mailbox/AbstractSubscriptionManagerTest.java
index 3cff664..a34c6c1 100644
--- a/mailbox/api/src/test/java/org/apache/james/mailbox/AbstractSubscriptionManagerTest.java
+++ b/mailbox/api/src/test/java/org/apache/james/mailbox/AbstractSubscriptionManagerTest.java
@@ -22,8 +22,6 @@ import static org.assertj.core.api.Assertions.assertThat;
 
 import org.apache.james.mailbox.exception.SubscriptionException;
 import org.apache.james.mailbox.mock.MockMailboxSession;
-import org.junit.After;
-import org.junit.Before;
 import org.junit.Test;
 
 /**
@@ -41,14 +39,12 @@ public abstract class AbstractSubscriptionManagerTest {
 
     public abstract SubscriptionManager createSubscriptionManager();
 
-    @Before
     public void setup() {
         manager = createSubscriptionManager();
         session = new MockMailboxSession(USER1);
         manager.startProcessingRequest(session);
     }
     
-    @After
     public void teardown() throws SubscriptionException {
         manager.unsubscribe(session, MAILBOX1);
         manager.unsubscribe(session, MAILBOX2);

http://git-wip-us.apache.org/repos/asf/james-project/blob/a18a4488/mailbox/api/src/test/java/org/apache/james/mailbox/MailboxManagerStressTest.java
----------------------------------------------------------------------
diff --git a/mailbox/api/src/test/java/org/apache/james/mailbox/MailboxManagerStressTest.java b/mailbox/api/src/test/java/org/apache/james/mailbox/MailboxManagerStressTest.java
index a1e7f25..115f867 100644
--- a/mailbox/api/src/test/java/org/apache/james/mailbox/MailboxManagerStressTest.java
+++ b/mailbox/api/src/test/java/org/apache/james/mailbox/MailboxManagerStressTest.java
@@ -37,7 +37,6 @@ import org.apache.james.mailbox.exception.MailboxException;
 import org.apache.james.mailbox.model.ComposedMessageId;
 import org.apache.james.mailbox.model.MailboxConstants;
 import org.apache.james.mailbox.model.MailboxPath;
-import org.junit.Before;
 import org.junit.Test;
 
 import com.google.common.collect.ImmutableSet;
@@ -50,8 +49,8 @@ public abstract class MailboxManagerStressTest {
 
     protected abstract MailboxManager provideManager();
 
-    @Before
-    public final void setUp() throws MailboxException {
+    
+    public void setUp() throws MailboxException, Exception {
         this.mailboxManager = provideManager();
     }
 

http://git-wip-us.apache.org/repos/asf/james-project/blob/a18a4488/mailbox/api/src/test/java/org/apache/james/mailbox/MailboxManagerTest.java
----------------------------------------------------------------------
diff --git a/mailbox/api/src/test/java/org/apache/james/mailbox/MailboxManagerTest.java b/mailbox/api/src/test/java/org/apache/james/mailbox/MailboxManagerTest.java
index 4e9f02d..226745c 100644
--- a/mailbox/api/src/test/java/org/apache/james/mailbox/MailboxManagerTest.java
+++ b/mailbox/api/src/test/java/org/apache/james/mailbox/MailboxManagerTest.java
@@ -38,9 +38,7 @@ import org.apache.james.mailbox.model.MailboxId;
 import org.apache.james.mailbox.model.MailboxMetaData;
 import org.apache.james.mailbox.model.MailboxPath;
 import org.apache.james.mailbox.model.MailboxQuery;
-import org.junit.After;
 import org.junit.Assume;
-import org.junit.Before;
 import org.junit.Rule;
 import org.junit.Test;
 import org.junit.rules.ExpectedException;
@@ -83,12 +81,10 @@ public abstract class MailboxManagerTest {
 
     protected abstract MailboxManager provideMailboxManager();
 
-    @Before
-    public final void setUp() throws Exception {
+    public void setUp() throws Exception {
         this.mailboxManager = new MockMailboxManager(provideMailboxManager()).getMockMailboxManager();
     }
 
-    @After
     public void tearDown() throws Exception {
         mailboxManager.logout(session, false);
         mailboxManager.endProcessingRequest(session);

http://git-wip-us.apache.org/repos/asf/james-project/blob/a18a4488/mailbox/cassandra/pom.xml
----------------------------------------------------------------------
diff --git a/mailbox/cassandra/pom.xml b/mailbox/cassandra/pom.xml
index 51b65ad..a36043b 100644
--- a/mailbox/cassandra/pom.xml
+++ b/mailbox/cassandra/pom.xml
@@ -68,6 +68,11 @@
             <scope>test</scope>
         </dependency>
         <dependency>
+            <groupId>ch.qos.logback</groupId>
+            <artifactId>logback-classic</artifactId>
+            <scope>test</scope>
+        </dependency>
+        <dependency>
             <groupId>com.fasterxml.jackson.core</groupId>
             <artifactId>jackson-databind</artifactId>
         </dependency>
@@ -144,9 +149,8 @@
             <artifactId>slf4j-api</artifactId>
         </dependency>
         <dependency>
-            <groupId>org.slf4j</groupId>
-            <artifactId>slf4j-simple</artifactId>
-            <scope>test</scope>
+            <groupId>org.testcontainers</groupId>
+            <artifactId>testcontainers</artifactId>
         </dependency>
     </dependencies>
 

http://git-wip-us.apache.org/repos/asf/james-project/blob/a18a4488/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/CassandraMailboxSessionMapperFactory.java
----------------------------------------------------------------------
diff --git a/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/CassandraMailboxSessionMapperFactory.java b/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/CassandraMailboxSessionMapperFactory.java
index 020e6a1..3d6ee37 100644
--- a/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/CassandraMailboxSessionMapperFactory.java
+++ b/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/CassandraMailboxSessionMapperFactory.java
@@ -21,7 +21,7 @@ package org.apache.james.mailbox.cassandra;
 
 import javax.inject.Inject;
 
-import org.apache.james.backends.cassandra.CassandraConfiguration;
+import org.apache.james.backends.cassandra.init.CassandraConfiguration;
 import org.apache.james.backends.cassandra.utils.CassandraUtils;
 import org.apache.james.mailbox.MailboxSession;
 import org.apache.james.mailbox.cassandra.mail.CassandraAnnotationMapper;

http://git-wip-us.apache.org/repos/asf/james-project/blob/a18a4488/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/mail/CassandraACLMapper.java
----------------------------------------------------------------------
diff --git a/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/mail/CassandraACLMapper.java b/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/mail/CassandraACLMapper.java
index 8cf4d76..9a951a2 100644
--- a/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/mail/CassandraACLMapper.java
+++ b/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/mail/CassandraACLMapper.java
@@ -29,7 +29,7 @@ import java.io.IOException;
 import java.util.Optional;
 import java.util.concurrent.CompletableFuture;
 
-import org.apache.james.backends.cassandra.CassandraConfiguration;
+import org.apache.james.backends.cassandra.init.CassandraConfiguration;
 import org.apache.james.backends.cassandra.utils.CassandraAsyncExecutor;
 import org.apache.james.backends.cassandra.utils.CassandraConstants;
 import org.apache.james.backends.cassandra.utils.FunctionRunnerWithRetry;

http://git-wip-us.apache.org/repos/asf/james-project/blob/a18a4488/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/mail/CassandraBlobsDAO.java
----------------------------------------------------------------------
diff --git a/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/mail/CassandraBlobsDAO.java b/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/mail/CassandraBlobsDAO.java
index 89173a7..73325db 100644
--- a/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/mail/CassandraBlobsDAO.java
+++ b/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/mail/CassandraBlobsDAO.java
@@ -30,7 +30,8 @@ import java.util.stream.IntStream;
 import java.util.stream.Stream;
 import javax.inject.Inject;
 
-import org.apache.james.backends.cassandra.CassandraConfiguration;
+import org.apache.commons.lang3.tuple.Pair;
+import org.apache.james.backends.cassandra.init.CassandraConfiguration;
 import org.apache.james.backends.cassandra.utils.CassandraAsyncExecutor;
 import org.apache.james.mailbox.cassandra.ids.BlobId;
 import org.apache.james.mailbox.cassandra.mail.utils.DataChunker;
@@ -38,7 +39,6 @@ import org.apache.james.mailbox.cassandra.table.BlobTable;
 import org.apache.james.mailbox.cassandra.table.BlobTable.BlobParts;
 import org.apache.james.util.FluentFutureStream;
 import org.apache.james.util.OptionalUtils;
-import org.apache.commons.lang3.tuple.Pair;
 
 import com.datastax.driver.core.PreparedStatement;
 import com.datastax.driver.core.Row;

http://git-wip-us.apache.org/repos/asf/james-project/blob/a18a4488/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/mail/CassandraMailboxDAO.java
----------------------------------------------------------------------
diff --git a/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/mail/CassandraMailboxDAO.java b/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/mail/CassandraMailboxDAO.java
index 823ac59..6d06e5e 100644
--- a/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/mail/CassandraMailboxDAO.java
+++ b/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/mail/CassandraMailboxDAO.java
@@ -38,7 +38,7 @@ import java.util.stream.Stream;
 
 import javax.inject.Inject;
 
-import org.apache.james.backends.cassandra.CassandraConfiguration;
+import org.apache.james.backends.cassandra.init.CassandraConfiguration;
 import org.apache.james.backends.cassandra.init.CassandraTypesProvider;
 import org.apache.james.backends.cassandra.utils.CassandraAsyncExecutor;
 import org.apache.james.backends.cassandra.utils.CassandraUtils;

http://git-wip-us.apache.org/repos/asf/james-project/blob/a18a4488/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/mail/CassandraMailboxMapper.java
----------------------------------------------------------------------
diff --git a/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/mail/CassandraMailboxMapper.java b/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/mail/CassandraMailboxMapper.java
index 2e407ec..c170a73 100644
--- a/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/mail/CassandraMailboxMapper.java
+++ b/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/mail/CassandraMailboxMapper.java
@@ -29,7 +29,8 @@ import java.util.regex.Pattern;
 import java.util.stream.Collectors;
 import javax.inject.Inject;
 
-import org.apache.james.backends.cassandra.CassandraConfiguration;
+import org.apache.commons.lang3.StringUtils;
+import org.apache.james.backends.cassandra.init.CassandraConfiguration;
 import org.apache.james.backends.cassandra.utils.CassandraAsyncExecutor;
 import org.apache.james.mailbox.cassandra.ids.CassandraId;
 import org.apache.james.mailbox.exception.MailboxException;
@@ -45,7 +46,6 @@ import org.apache.james.mailbox.store.mail.model.impl.SimpleMailbox;
 import org.apache.james.util.CompletableFutureUtil;
 import org.apache.james.util.FluentFutureStream;
 import org.apache.james.util.OptionalUtils;
-import org.apache.commons.lang3.StringUtils;
 
 import com.datastax.driver.core.Session;
 import com.datastax.driver.core.exceptions.InvalidQueryException;
@@ -97,7 +97,9 @@ public class CassandraMailboxMapper implements MailboxMapper {
                 .orElseThrow(() -> new MailboxNotFoundException(path));
         } catch (CompletionException e) {
             if (e.getCause() instanceof InvalidQueryException) {
-                if (StringUtils.containsIgnoreCase(e.getCause().getMessage(), VALUES_MAY_NOT_BE_LARGER_THAN_64_K)) {
+                String errorMessage = e.getCause().getMessage();
+                if (StringUtils.containsIgnoreCase(errorMessage, VALUES_MAY_NOT_BE_LARGER_THAN_64_K)||
+                    StringUtils.containsIgnoreCase(errorMessage, CLUSTERING_COLUMNS_IS_TOO_LONG)) {
                     throw new TooLongMailboxNameException("too long mailbox name");
                 }
                 throw new MailboxException("It has error with cassandra storage", e.getCause());

http://git-wip-us.apache.org/repos/asf/james-project/blob/a18a4488/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/mail/CassandraMessageDAO.java
----------------------------------------------------------------------
diff --git a/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/mail/CassandraMessageDAO.java b/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/mail/CassandraMessageDAO.java
index e2a63f4..47830b2 100644
--- a/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/mail/CassandraMessageDAO.java
+++ b/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/mail/CassandraMessageDAO.java
@@ -49,7 +49,9 @@ import java.util.stream.Stream;
 import javax.inject.Inject;
 import javax.mail.util.SharedByteArrayInputStream;
 
-import org.apache.james.backends.cassandra.CassandraConfiguration;
+import org.apache.commons.io.IOUtils;
+import org.apache.commons.lang3.tuple.Pair;
+import org.apache.james.backends.cassandra.init.CassandraConfiguration;
 import org.apache.james.backends.cassandra.init.CassandraTypesProvider;
 import org.apache.james.backends.cassandra.utils.CassandraAsyncExecutor;
 import org.apache.james.mailbox.cassandra.ids.BlobId;
@@ -71,8 +73,6 @@ import org.apache.james.mailbox.store.mail.model.impl.SimpleProperty;
 import org.apache.james.util.CompletableFutureUtil;
 import org.apache.james.util.FluentFutureStream;
 import org.apache.james.util.streams.JamesCollectors;
-import org.apache.commons.io.IOUtils;
-import org.apache.commons.lang3.tuple.Pair;
 
 import com.datastax.driver.core.BoundStatement;
 import com.datastax.driver.core.PreparedStatement;

http://git-wip-us.apache.org/repos/asf/james-project/blob/a18a4488/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/mail/CassandraMessageIdMapper.java
----------------------------------------------------------------------
diff --git a/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/mail/CassandraMessageIdMapper.java b/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/mail/CassandraMessageIdMapper.java
index c9e7880..494cf91 100644
--- a/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/mail/CassandraMessageIdMapper.java
+++ b/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/mail/CassandraMessageIdMapper.java
@@ -28,7 +28,7 @@ import java.util.stream.Stream;
 import javax.mail.Flags;
 
 import org.apache.commons.lang3.tuple.Pair;
-import org.apache.james.backends.cassandra.CassandraConfiguration;
+import org.apache.james.backends.cassandra.init.CassandraConfiguration;
 import org.apache.james.backends.cassandra.utils.FunctionRunnerWithRetry;
 import org.apache.james.backends.cassandra.utils.LightweightTransactionException;
 import org.apache.james.mailbox.MailboxSession;

http://git-wip-us.apache.org/repos/asf/james-project/blob/a18a4488/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/mail/CassandraMessageMapper.java
----------------------------------------------------------------------
diff --git a/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/mail/CassandraMessageMapper.java b/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/mail/CassandraMessageMapper.java
index 2ae4928..957595a 100644
--- a/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/mail/CassandraMessageMapper.java
+++ b/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/mail/CassandraMessageMapper.java
@@ -30,7 +30,7 @@ import java.util.stream.Stream;
 import javax.mail.Flags;
 import javax.mail.Flags.Flag;
 
-import org.apache.james.backends.cassandra.CassandraConfiguration;
+import org.apache.james.backends.cassandra.init.CassandraConfiguration;
 import org.apache.james.mailbox.ApplicableFlagBuilder;
 import org.apache.james.mailbox.FlagsBuilder;
 import org.apache.james.mailbox.MailboxSession;

http://git-wip-us.apache.org/repos/asf/james-project/blob/a18a4488/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/mail/CassandraModSeqProvider.java
----------------------------------------------------------------------
diff --git a/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/mail/CassandraModSeqProvider.java b/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/mail/CassandraModSeqProvider.java
index d07a607..0cbfa3f 100644
--- a/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/mail/CassandraModSeqProvider.java
+++ b/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/mail/CassandraModSeqProvider.java
@@ -34,7 +34,7 @@ import java.util.concurrent.CompletionException;
 import java.util.function.Supplier;
 import javax.inject.Inject;
 
-import org.apache.james.backends.cassandra.CassandraConfiguration;
+import org.apache.james.backends.cassandra.init.CassandraConfiguration;
 import org.apache.james.backends.cassandra.utils.CassandraAsyncExecutor;
 import org.apache.james.backends.cassandra.utils.FunctionRunnerWithRetry;
 import org.apache.james.mailbox.MailboxSession;

http://git-wip-us.apache.org/repos/asf/james-project/blob/a18a4488/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/mail/CassandraUidProvider.java
----------------------------------------------------------------------
diff --git a/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/mail/CassandraUidProvider.java b/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/mail/CassandraUidProvider.java
index 4f061c2..c90a278 100644
--- a/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/mail/CassandraUidProvider.java
+++ b/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/mail/CassandraUidProvider.java
@@ -32,7 +32,7 @@ import java.util.Optional;
 import java.util.concurrent.CompletableFuture;
 import javax.inject.Inject;
 
-import org.apache.james.backends.cassandra.CassandraConfiguration;
+import org.apache.james.backends.cassandra.init.CassandraConfiguration;
 import org.apache.james.backends.cassandra.utils.CassandraAsyncExecutor;
 import org.apache.james.backends.cassandra.utils.FunctionRunnerWithRetry;
 import org.apache.james.mailbox.MailboxSession;

http://git-wip-us.apache.org/repos/asf/james-project/blob/a18a4488/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 3f96c22..bf341fe 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
@@ -21,28 +21,65 @@ package org.apache.james.mailbox.cassandra;
 
 import static org.mockito.Mockito.mock;
 
+import org.apache.james.backends.cassandra.CassandraCluster;
+import org.apache.james.backends.cassandra.DockerCassandraRule;
+import org.apache.james.backends.cassandra.init.CassandraModuleComposite;
 import org.apache.james.mailbox.MailboxListener;
+import org.apache.james.mailbox.cassandra.modules.CassandraAclModule;
+import org.apache.james.mailbox.cassandra.modules.CassandraAnnotationModule;
+import org.apache.james.mailbox.cassandra.modules.CassandraApplicableFlagsModule;
+import org.apache.james.mailbox.cassandra.modules.CassandraAttachmentModule;
+import org.apache.james.mailbox.cassandra.modules.CassandraBlobModule;
+import org.apache.james.mailbox.cassandra.modules.CassandraDeletedMessageModule;
+import org.apache.james.mailbox.cassandra.modules.CassandraFirstUnseenModule;
+import org.apache.james.mailbox.cassandra.modules.CassandraMailboxCounterModule;
+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.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.AfterClass;
-import org.junit.BeforeClass;
+import org.junit.After;
+import org.junit.Before;
+import org.junit.ClassRule;
 
 public class CassandraCombinationManagerTest extends AbstractCombinationManagerTest {
 
-    @BeforeClass
-    public static void init() {
-        CassandraCombinationManagerTestSystem.init();
-    }
+    @ClassRule public static DockerCassandraRule cassandraServer = new DockerCassandraRule();
+    
+    private CassandraCluster cassandra;
 
-    @AfterClass
-    public static void close() {
-        CassandraCombinationManagerTestSystem.stop();
+    @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();
+    }
+    
     @Override
     public CombinationManagerTestSystem createTestingData() throws Exception {
-        return CassandraCombinationManagerTestSystem.createTestingData(new NoQuotaManager(), MailboxEventDispatcher.ofListener(mock(MailboxListener.class)));
+        return CassandraCombinationManagerTestSystem.createTestingData(cassandra, new NoQuotaManager(), MailboxEventDispatcher.ofListener(mock(MailboxListener.class)));
     }
+    
 }

http://git-wip-us.apache.org/repos/asf/james-project/blob/a18a4488/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/CassandraCombinationManagerTestSystem.java
----------------------------------------------------------------------
diff --git a/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/CassandraCombinationManagerTestSystem.java b/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/CassandraCombinationManagerTestSystem.java
index 82eeec7..373dc4d 100644
--- a/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/CassandraCombinationManagerTestSystem.java
+++ b/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/CassandraCombinationManagerTestSystem.java
@@ -19,6 +19,7 @@
 
 package org.apache.james.mailbox.cassandra;
 
+import org.apache.james.backends.cassandra.CassandraCluster;
 import org.apache.james.mailbox.MailboxManager;
 import org.apache.james.mailbox.MailboxSession;
 import org.apache.james.mailbox.MessageIdManager;
@@ -35,8 +36,8 @@ public class CassandraCombinationManagerTestSystem extends CombinationManagerTes
     private final CassandraMailboxSessionMapperFactory mapperFactory;
     private final CassandraMailboxManager cassandraMailboxManager;
 
-    public static CombinationManagerTestSystem createTestingData(QuotaManager quotaManager, MailboxEventDispatcher dispatcher) throws Exception {
-        CassandraMailboxSessionMapperFactory mapperFactory = CassandraTestSystemFixture.createMapperFactory();
+    public static CombinationManagerTestSystem createTestingData(CassandraCluster cassandra, QuotaManager quotaManager, MailboxEventDispatcher dispatcher) throws Exception {
+        CassandraMailboxSessionMapperFactory mapperFactory = CassandraTestSystemFixture.createMapperFactory(cassandra);
 
         return new CassandraCombinationManagerTestSystem(CassandraTestSystemFixture.createMessageIdManager(mapperFactory, quotaManager, dispatcher),
             mapperFactory,
@@ -60,16 +61,4 @@ public class CassandraCombinationManagerTestSystem extends CombinationManagerTes
         return cassandraMailboxManager.createMessageManager(mailbox, session);
     }
 
-    @Override
-    public void clean() {
-        CassandraTestSystemFixture.clean();
-    }
-
-    public static void init() {
-        CassandraTestSystemFixture.init();
-    }
-
-    public static void stop() {
-        CassandraTestSystemFixture.stop();
-    }
 }

http://git-wip-us.apache.org/repos/asf/james-project/blob/a18a4488/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 93ec3c9..8c744fb 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
@@ -20,6 +20,7 @@
 package org.apache.james.mailbox.cassandra;
 
 import org.apache.james.backends.cassandra.CassandraCluster;
+import org.apache.james.backends.cassandra.DockerCassandraRule;
 import org.apache.james.backends.cassandra.init.CassandraModuleComposite;
 import org.apache.james.mailbox.MailboxManager;
 import org.apache.james.mailbox.MailboxManagerStressTest;
@@ -38,33 +39,45 @@ 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.junit.After;
+import org.junit.Before;
+import org.junit.ClassRule;
 import org.junit.Ignore;
 
 @Ignore("https://issues.apache.org/jira/browse/JAMES-2009")
 public class CassandraMailboxManagerStressTest extends MailboxManagerStressTest {
-    private static final CassandraCluster CASSANDRA = CassandraCluster.create(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()));
-
+    
+    @ClassRule public static DockerCassandraRule cassandraServer = new DockerCassandraRule();
+    
+    private CassandraCluster cassandra;
+    
+    @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());
+        cassandra = CassandraCluster.create(modules, cassandraServer.getIp(), cassandraServer.getBindingPort());
+        super.setUp();
+    }
+    
     @Override
     protected MailboxManager provideManager() {
-        return CassandraMailboxManagerProvider.provideMailboxManager(CASSANDRA.getConf(), CASSANDRA.getTypesProvider());
+        return CassandraMailboxManagerProvider.provideMailboxManager(cassandra.getConf(), cassandra.getTypesProvider());
     }
 
     @After
     public void tearDown() {
-        CASSANDRA.clearAllTables();
+        cassandra.close();
     }
 }

http://git-wip-us.apache.org/repos/asf/james-project/blob/a18a4488/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 9bc0934..13da244 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
@@ -19,6 +19,7 @@
 package org.apache.james.mailbox.cassandra;
 
 import org.apache.james.backends.cassandra.CassandraCluster;
+import org.apache.james.backends.cassandra.DockerCassandraRule;
 import org.apache.james.backends.cassandra.init.CassandraModuleComposite;
 import org.apache.james.mailbox.MailboxManager;
 import org.apache.james.mailbox.MailboxManagerTest;
@@ -37,37 +38,36 @@ 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.junit.After;
-import org.junit.AfterClass;
-import org.junit.BeforeClass;
+import org.junit.Before;
+import org.junit.ClassRule;
 
 public class CassandraMailboxManagerTest extends MailboxManagerTest {
 
-    private static CassandraCluster cassandra;
+    @ClassRule public static DockerCassandraRule cassandraServer = new DockerCassandraRule();
     
-    @BeforeClass
-    public static void init() {
-        cassandra = CassandraCluster.create(
-                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()));
-    }
-
-    @AfterClass
-    public static void close() {
-        cassandra.close();
+    private CassandraCluster cassandra;
+    
+    @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());
+        cassandra = CassandraCluster.create(modules, cassandraServer.getIp(), cassandraServer.getBindingPort());
+        super.setUp();
     }
+    
 
     @Override
     protected MailboxManager provideMailboxManager() {
@@ -77,7 +77,7 @@ public class CassandraMailboxManagerTest extends MailboxManagerTest {
     @After
     public void tearDown() throws Exception {
         super.tearDown();
-        cassandra.clearAllTables();
+        cassandra.close();
     }
 
 }

http://git-wip-us.apache.org/repos/asf/james-project/blob/a18a4488/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 423af97..15384f5 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
@@ -19,35 +19,73 @@
 
 package org.apache.james.mailbox.cassandra;
 
+import org.apache.james.backends.cassandra.CassandraCluster;
+import org.apache.james.backends.cassandra.DockerCassandraRule;
+import org.apache.james.backends.cassandra.init.CassandraModuleComposite;
+import org.apache.james.mailbox.cassandra.modules.CassandraAclModule;
+import org.apache.james.mailbox.cassandra.modules.CassandraAnnotationModule;
+import org.apache.james.mailbox.cassandra.modules.CassandraApplicableFlagsModule;
+import org.apache.james.mailbox.cassandra.modules.CassandraAttachmentModule;
+import org.apache.james.mailbox.cassandra.modules.CassandraBlobModule;
+import org.apache.james.mailbox.cassandra.modules.CassandraDeletedMessageModule;
+import org.apache.james.mailbox.cassandra.modules.CassandraFirstUnseenModule;
+import org.apache.james.mailbox.cassandra.modules.CassandraMailboxCounterModule;
+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.CassandraQuotaModule;
+import org.apache.james.mailbox.cassandra.modules.CassandraUidModule;
 import org.apache.james.mailbox.quota.CurrentQuotaManager;
 import org.apache.james.mailbox.quota.MaxQuotaManager;
 import org.apache.james.mailbox.quota.QuotaManager;
 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.AfterClass;
-import org.junit.BeforeClass;
+import org.junit.After;
+import org.junit.Before;
+import org.junit.ClassRule;
 
 public class CassandraMessageIdManagerQuotaTest extends AbstractMessageIdManagerQuotaTest {
 
-    @BeforeClass
-    public static void init() {
-        CassandraMessageIdManagerTestSystem.initWithQuota();
-    }
+    @ClassRule public static DockerCassandraRule cassandraServer = new DockerCassandraRule();
+
+    private CassandraCluster cassandra;
 
-    @AfterClass
-    public static void close() {
-        CassandraMessageIdManagerTestSystem.stop();
+    @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();
     }
 
     @Override
     protected MessageIdManagerTestSystem createTestSystem(QuotaManager quotaManager, CurrentQuotaManager currentQuotaManager) throws Exception {
-        return CassandraMessageIdManagerTestSystem.createTestingDataWithQuota(quotaManager, currentQuotaManager);
+        return CassandraMessageIdManagerTestSystem.createTestingDataWithQuota(cassandra, quotaManager, currentQuotaManager);
     }
 
     @Override
     protected MaxQuotaManager createMaxQuotaManager() {
-        return CassandraTestSystemFixture.createMaxQuotaManager();
+        return CassandraTestSystemFixture.createMaxQuotaManager(cassandra);
     }
 
     @Override
@@ -57,6 +95,6 @@ public class CassandraMessageIdManagerQuotaTest extends AbstractMessageIdManager
 
     @Override
     protected CurrentQuotaManager createCurrentQuotaManager() {
-        return CassandraTestSystemFixture.createCurrentQuotaManager();
+        return CassandraTestSystemFixture.createCurrentQuotaManager(cassandra);
     }
 }

http://git-wip-us.apache.org/repos/asf/james-project/blob/a18a4488/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 1468dc4..14877ed 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
@@ -19,27 +19,63 @@
 
 package org.apache.james.mailbox.cassandra;
 
+import org.apache.james.backends.cassandra.CassandraCluster;
+import org.apache.james.backends.cassandra.DockerCassandraRule;
+import org.apache.james.backends.cassandra.init.CassandraModuleComposite;
+import org.apache.james.mailbox.cassandra.modules.CassandraAclModule;
+import org.apache.james.mailbox.cassandra.modules.CassandraAnnotationModule;
+import org.apache.james.mailbox.cassandra.modules.CassandraApplicableFlagsModule;
+import org.apache.james.mailbox.cassandra.modules.CassandraAttachmentModule;
+import org.apache.james.mailbox.cassandra.modules.CassandraBlobModule;
+import org.apache.james.mailbox.cassandra.modules.CassandraDeletedMessageModule;
+import org.apache.james.mailbox.cassandra.modules.CassandraFirstUnseenModule;
+import org.apache.james.mailbox.cassandra.modules.CassandraMailboxCounterModule;
+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.CassandraUidModule;
 import org.apache.james.mailbox.quota.QuotaManager;
 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.AfterClass;
-import org.junit.BeforeClass;
+import org.junit.After;
+import org.junit.Before;
+import org.junit.ClassRule;
 
 public class CassandraMessageIdManagerSideEffectTest extends AbstractMessageIdManagerSideEffectTest {
 
-    @BeforeClass
-    public static void init() {
-        CassandraMessageIdManagerTestSystem.init();
-    }
+    @ClassRule public static DockerCassandraRule cassandraServer = new DockerCassandraRule();
+
+    private CassandraCluster cassandra;
 
-    @AfterClass
-    public static void close() {
-        CassandraMessageIdManagerTestSystem.stop();
+    @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();
     }
 
     @Override
     protected MessageIdManagerTestSystem createTestSystem(QuotaManager quotaManager, MailboxEventDispatcher dispatcher) throws Exception {
-        return CassandraMessageIdManagerTestSystem.createTestingData(quotaManager, dispatcher);
+        return CassandraMessageIdManagerTestSystem.createTestingData(cassandra, quotaManager, dispatcher);
     }
 }

http://git-wip-us.apache.org/repos/asf/james-project/blob/a18a4488/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 34040a9..85b8dd9 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
@@ -21,28 +21,64 @@ package org.apache.james.mailbox.cassandra;
 
 import static org.mockito.Mockito.mock;
 
+import org.apache.james.backends.cassandra.CassandraCluster;
+import org.apache.james.backends.cassandra.DockerCassandraRule;
+import org.apache.james.backends.cassandra.init.CassandraModuleComposite;
 import org.apache.james.mailbox.MailboxListener;
+import org.apache.james.mailbox.cassandra.modules.CassandraAclModule;
+import org.apache.james.mailbox.cassandra.modules.CassandraAnnotationModule;
+import org.apache.james.mailbox.cassandra.modules.CassandraApplicableFlagsModule;
+import org.apache.james.mailbox.cassandra.modules.CassandraAttachmentModule;
+import org.apache.james.mailbox.cassandra.modules.CassandraBlobModule;
+import org.apache.james.mailbox.cassandra.modules.CassandraDeletedMessageModule;
+import org.apache.james.mailbox.cassandra.modules.CassandraFirstUnseenModule;
+import org.apache.james.mailbox.cassandra.modules.CassandraMailboxCounterModule;
+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.CassandraUidModule;
 import org.apache.james.mailbox.store.AbstractMessageIdManagerStorageTest;
 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.AfterClass;
-import org.junit.BeforeClass;
+import org.junit.After;
+import org.junit.Before;
+import org.junit.ClassRule;
 
 public class CassandraMessageIdManagerStorageTest extends AbstractMessageIdManagerStorageTest {
 
-    @BeforeClass
-    public static void init() {
-        CassandraMessageIdManagerTestSystem.init();
-    }
+    @ClassRule public static DockerCassandraRule cassandraServer = new DockerCassandraRule();
 
-    @AfterClass
-    public static void close() {
-        CassandraMessageIdManagerTestSystem.stop();
-    }
+    private CassandraCluster cassandra;
 
+    @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();
+    }
+    
     @Override
     protected MessageIdManagerTestSystem createTestingData() throws Exception {
-        return CassandraMessageIdManagerTestSystem.createTestingData(new NoQuotaManager(), MailboxEventDispatcher.ofListener(mock(MailboxListener.class)));
+        return CassandraMessageIdManagerTestSystem.createTestingData(cassandra, new NoQuotaManager(), MailboxEventDispatcher.ofListener(mock(MailboxListener.class)));
     }
 }

http://git-wip-us.apache.org/repos/asf/james-project/blob/a18a4488/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/CassandraMessageIdManagerTestSystem.java
----------------------------------------------------------------------
diff --git a/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/CassandraMessageIdManagerTestSystem.java b/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/CassandraMessageIdManagerTestSystem.java
index e7561be..174cca4 100644
--- a/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/CassandraMessageIdManagerTestSystem.java
+++ b/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/CassandraMessageIdManagerTestSystem.java
@@ -24,6 +24,7 @@ import java.util.Date;
 import javax.mail.Flags;
 import javax.mail.util.SharedByteArrayInputStream;
 
+import org.apache.james.backends.cassandra.CassandraCluster;
 import org.apache.james.mailbox.MailboxSession;
 import org.apache.james.mailbox.MessageIdManager;
 import org.apache.james.mailbox.MessageUid;
@@ -51,8 +52,8 @@ public class CassandraMessageIdManagerTestSystem extends MessageIdManagerTestSys
 
     private static final byte[] MESSAGE_CONTENT = "subject: any\n\nbody".getBytes(Charsets.UTF_8);
 
-    public static MessageIdManagerTestSystem createTestingData(QuotaManager quotaManager, MailboxEventDispatcher dispatcher) throws Exception {
-        CassandraMailboxSessionMapperFactory mapperFactory = CassandraTestSystemFixture.createMapperFactory();
+    public static MessageIdManagerTestSystem createTestingData(CassandraCluster cassandra, QuotaManager quotaManager, MailboxEventDispatcher dispatcher) throws Exception {
+        CassandraMailboxSessionMapperFactory mapperFactory = CassandraTestSystemFixture.createMapperFactory(cassandra);
 
         return new CassandraMessageIdManagerTestSystem(CassandraTestSystemFixture.createMessageIdManager(mapperFactory, quotaManager, dispatcher),
             new CassandraMessageId.Factory(),
@@ -60,8 +61,8 @@ public class CassandraMessageIdManagerTestSystem extends MessageIdManagerTestSys
             CassandraTestSystemFixture.createMailboxManager(mapperFactory));
     }
 
-    public static MessageIdManagerTestSystem createTestingDataWithQuota(QuotaManager quotaManager, CurrentQuotaManager currentQuotaManager) throws Exception {
-        CassandraMailboxSessionMapperFactory mapperFactory = CassandraTestSystemFixture.createMapperFactory();
+    public static MessageIdManagerTestSystem createTestingDataWithQuota(CassandraCluster cassandra, QuotaManager quotaManager, CurrentQuotaManager currentQuotaManager) throws Exception {
+        CassandraMailboxSessionMapperFactory mapperFactory = CassandraTestSystemFixture.createMapperFactory(cassandra);
 
         CassandraMailboxManager mailboxManager = CassandraTestSystemFixture.createMailboxManager(mapperFactory);
         ListeningCurrentQuotaUpdater listeningCurrentQuotaUpdater = new ListeningCurrentQuotaUpdater(
@@ -120,11 +121,6 @@ public class CassandraMessageIdManagerTestSystem extends MessageIdManagerTestSys
         }
     }
 
-    @Override
-    public void clean() {
-        CassandraTestSystemFixture.clean();
-    }
-
     private static MailboxMessage createMessage(MailboxId mailboxId, Flags flags, MessageId messageId, MessageUid uid) {
         MailboxMessage mailboxMessage = new SimpleMailboxMessage(messageId, new Date(), MESSAGE_CONTENT.length, 1256,
             new SharedByteArrayInputStream(MESSAGE_CONTENT), flags, new PropertyBuilder(), mailboxId);
@@ -133,18 +129,6 @@ public class CassandraMessageIdManagerTestSystem extends MessageIdManagerTestSys
         return mailboxMessage;
     }
 
-    public static void init() {
-        CassandraTestSystemFixture.init();
-    }
-
-    public static void initWithQuota() {
-        CassandraTestSystemFixture.initWithQuota();
-    }
-
-    public static void stop() {
-        CassandraTestSystemFixture.stop();
-    }
-
     @Override
     public int getConstantMessageSize() {
         return MESSAGE_CONTENT.length;

http://git-wip-us.apache.org/repos/asf/james-project/blob/a18a4488/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 93eb618..bd3a31e 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
@@ -20,6 +20,7 @@
 package org.apache.james.mailbox.cassandra;
 
 import org.apache.james.backends.cassandra.CassandraCluster;
+import org.apache.james.backends.cassandra.DockerCassandraRule;
 import org.apache.james.backends.cassandra.init.CassandraModuleComposite;
 import org.apache.james.mailbox.AbstractSubscriptionManagerTest;
 import org.apache.james.mailbox.SubscriptionManager;
@@ -39,28 +40,34 @@ import org.apache.james.mailbox.cassandra.modules.CassandraMailboxCounterModule;
 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.junit.AfterClass;
-import org.junit.BeforeClass;
+import org.apache.james.mailbox.exception.SubscriptionException;
+import org.junit.After;
+import org.junit.Before;
+import org.junit.ClassRule;
 
 /**
  * Test Cassandra subscription against some general purpose written code.
  */
 public class CassandraSubscriptionManagerTest extends AbstractSubscriptionManagerTest {
 
-    private static CassandraCluster cassandra;
+    @ClassRule public static DockerCassandraRule cassandraServer = new DockerCassandraRule();
+    
+    private CassandraCluster cassandra;
 
-    @BeforeClass
-    public static void init() {
-        cassandra = CassandraCluster.create(
-            new CassandraModuleComposite(
-                new CassandraSubscriptionModule(),
-                new CassandraMailboxCounterModule(),
-                new CassandraUidModule(),
-                new CassandraModSeqModule()));
+    @Before
+    public void init() {
+        CassandraModuleComposite modules = new CassandraModuleComposite(
+            new CassandraSubscriptionModule(),
+            new CassandraMailboxCounterModule(),
+            new CassandraUidModule(),
+            new CassandraModSeqModule());
+        cassandra = CassandraCluster.create(modules, cassandraServer.getIp(), cassandraServer.getBindingPort());
+        super.setup();
     }
 
-    @AfterClass
-    public static void close() {
+    @After
+    public void close() throws SubscriptionException {
+        super.teardown();
         cassandra.close();
     }
 

http://git-wip-us.apache.org/repos/asf/james-project/blob/a18a4488/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/CassandraTestSystemFixture.java
----------------------------------------------------------------------
diff --git a/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/CassandraTestSystemFixture.java b/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/CassandraTestSystemFixture.java
index c38adf5..6450073 100644
--- a/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/CassandraTestSystemFixture.java
+++ b/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/CassandraTestSystemFixture.java
@@ -22,7 +22,6 @@ package org.apache.james.mailbox.cassandra;
 import static org.mockito.Mockito.mock;
 
 import org.apache.james.backends.cassandra.CassandraCluster;
-import org.apache.james.backends.cassandra.init.CassandraModuleComposite;
 import org.apache.james.mailbox.cassandra.ids.CassandraMessageId;
 import org.apache.james.mailbox.cassandra.mail.CassandraApplicableFlagDAO;
 import org.apache.james.mailbox.cassandra.mail.CassandraBlobsDAO;
@@ -37,20 +36,6 @@ import org.apache.james.mailbox.cassandra.mail.CassandraMessageIdDAO;
 import org.apache.james.mailbox.cassandra.mail.CassandraMessageIdToImapUidDAO;
 import org.apache.james.mailbox.cassandra.mail.CassandraModSeqProvider;
 import org.apache.james.mailbox.cassandra.mail.CassandraUidProvider;
-import org.apache.james.mailbox.cassandra.modules.CassandraAclModule;
-import org.apache.james.mailbox.cassandra.modules.CassandraAnnotationModule;
-import org.apache.james.mailbox.cassandra.modules.CassandraApplicableFlagsModule;
-import org.apache.james.mailbox.cassandra.modules.CassandraAttachmentModule;
-import org.apache.james.mailbox.cassandra.modules.CassandraBlobModule;
-import org.apache.james.mailbox.cassandra.modules.CassandraDeletedMessageModule;
-import org.apache.james.mailbox.cassandra.modules.CassandraFirstUnseenModule;
-import org.apache.james.mailbox.cassandra.modules.CassandraMailboxCounterModule;
-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.CassandraQuotaModule;
-import org.apache.james.mailbox.cassandra.modules.CassandraUidModule;
 import org.apache.james.mailbox.cassandra.quota.CassandraCurrentQuotaManager;
 import org.apache.james.mailbox.cassandra.quota.CassandraPerUserMaxQuotaManager;
 import org.apache.james.mailbox.quota.CurrentQuotaManager;
@@ -68,24 +53,8 @@ import org.apache.james.mailbox.store.quota.StoreQuotaManager;
 public class CassandraTestSystemFixture {
     
     public static final int MOD_SEQ = 452;
-    public static final CassandraModuleComposite BASE_MAILBOX_MODULES = new CassandraModuleComposite(
-        new CassandraAclModule(),
-        new CassandraMailboxModule(),
-        new CassandraMessageModule(),
-        new CassandraBlobModule(),
-        new CassandraMailboxCounterModule(),
-        new CassandraMailboxRecentsModule(),
-        new CassandraFirstUnseenModule(),
-        new CassandraDeletedMessageModule(),
-        new CassandraUidModule(),
-        new CassandraModSeqModule(),
-        new CassandraAttachmentModule(),
-        new CassandraAnnotationModule(),
-        new CassandraApplicableFlagsModule());
-    private static CassandraCluster cassandra;
-    
-    public static CassandraMailboxSessionMapperFactory createMapperFactory() {
-        cassandra.ensureAllTables();
+
+    public static CassandraMailboxSessionMapperFactory createMapperFactory(CassandraCluster cassandra) {
         CassandraUidProvider uidProvider = new CassandraUidProvider(cassandra.getConf());
         CassandraModSeqProvider modSeqProvider = new CassandraModSeqProvider(cassandra.getConf());
         CassandraMessageId.Factory messageIdFactory = new CassandraMessageId.Factory();
@@ -101,6 +70,7 @@ public class CassandraTestSystemFixture {
         CassandraMailboxPathDAO mailboxPathDAO = new CassandraMailboxPathDAO(cassandra.getConf(), cassandra.getTypesProvider());
         CassandraFirstUnseenDAO firstUnseenDAO = new CassandraFirstUnseenDAO(cassandra.getConf());
         CassandraDeletedMessageDAO deletedMessageDAO = new CassandraDeletedMessageDAO(cassandra.getConf());
+        
         return new CassandraMailboxSessionMapperFactory(uidProvider,
             modSeqProvider,
             cassandra.getConf(),
@@ -132,34 +102,16 @@ public class CassandraTestSystemFixture {
             new DefaultQuotaRootResolver(mapperFactory));
     }
 
-    public static MaxQuotaManager createMaxQuotaManager() {
+    public static MaxQuotaManager createMaxQuotaManager(CassandraCluster cassandra) {
         return new CassandraPerUserMaxQuotaManager(cassandra.getConf());
     }
 
-    public static CurrentQuotaManager createCurrentQuotaManager() {
+    public static CurrentQuotaManager createCurrentQuotaManager(CassandraCluster cassandra) {
         return new CassandraCurrentQuotaManager(cassandra.getConf());
     }
 
-    public static QuotaManager createQuotaManager(MaxQuotaManager maxQuotaManager) {
+    public static QuotaManager createQuotaManager(CassandraCluster cassandra, MaxQuotaManager maxQuotaManager) {
         return new StoreQuotaManager(new CassandraCurrentQuotaManager(cassandra.getConf()), maxQuotaManager);
     }
 
-    public static void clean() {
-        cassandra.clearAllTables();
-    }
-
-    public static void init() {
-        cassandra = CassandraCluster.create(BASE_MAILBOX_MODULES);
-    }
-
-    public static void initWithQuota() {
-        cassandra = CassandraCluster.create(
-            new CassandraModuleComposite(
-                BASE_MAILBOX_MODULES,
-                new CassandraQuotaModule()));
-    }
-
-    public static void stop() {
-        cassandra.close();
-    }
 }

http://git-wip-us.apache.org/repos/asf/james-project/blob/a18a4488/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 37cb6ed..3585f27 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
@@ -24,6 +24,7 @@ import static org.assertj.core.api.Assertions.assertThat;
 import java.util.TreeMap;
 
 import org.apache.james.backends.cassandra.CassandraCluster;
+import org.apache.james.backends.cassandra.DockerCassandraRule;
 import org.apache.james.backends.cassandra.utils.CassandraUtils;
 import org.apache.james.mailbox.MailboxListener;
 import org.apache.james.mailbox.MailboxSession;
@@ -47,6 +48,7 @@ import org.apache.james.mailbox.store.mail.model.impl.SimpleMailbox;
 import org.apache.james.mailbox.util.EventCollector;
 import org.junit.After;
 import org.junit.Before;
+import org.junit.ClassRule;
 import org.junit.Test;
 
 import com.google.common.collect.ImmutableMap;
@@ -64,7 +66,9 @@ public class CassandraBasedRegisteredDistributedMailboxDelegatingListenerTest {
     public static final int SCHEDULER_PERIOD_IN_S = 20;
     public static final ImmutableMap<MessageUid, MailboxMessage> EMPTY_MESSAGE_CACHE = ImmutableMap.of();
 
-    private CassandraCluster cassandra = CassandraCluster.create(new CassandraRegistrationModule());
+    @ClassRule public static DockerCassandraRule cassandraServer = new DockerCassandraRule();
+    
+    private CassandraCluster cassandra = CassandraCluster.create(new CassandraRegistrationModule(), cassandraServer.getIp(), cassandraServer.getBindingPort());
     private RegisteredDelegatingMailboxListener registeredDelegatingMailboxListener1;
     private RegisteredDelegatingMailboxListener registeredDelegatingMailboxListener2;
     private RegisteredDelegatingMailboxListener registeredDelegatingMailboxListener3;

http://git-wip-us.apache.org/repos/asf/james-project/blob/a18a4488/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 3e66222..99b57da 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
@@ -19,23 +19,26 @@
 
 package org.apache.james.mailbox.cassandra.event.distributed;
 
+import static org.assertj.core.api.Assertions.assertThat;
+
+import java.util.concurrent.TimeUnit;
+
 import org.apache.james.backends.cassandra.CassandraCluster;
+import org.apache.james.backends.cassandra.DockerCassandraRule;
 import org.apache.james.backends.cassandra.utils.CassandraUtils;
 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.ClassRule;
 import org.junit.Test;
 
-import static org.assertj.core.api.Assertions.assertThat;
-
-import java.util.concurrent.TimeUnit;
-
 public class CassandraMailboxPathRegistrerMapperTest {
 
-    private static final CassandraCluster cassandra = CassandraCluster.create(new CassandraRegistrationModule());
+    @ClassRule public static DockerCassandraRule cassandraServer = new DockerCassandraRule();
+    
+    private final CassandraCluster cassandra = CassandraCluster.create(new CassandraRegistrationModule(), cassandraServer.getIp(), cassandraServer.getBindingPort());
     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");
@@ -54,11 +57,6 @@ public class CassandraMailboxPathRegistrerMapperTest {
 
     @After
     public void tearDown() {
-        cassandra.clearAllTables();
-    }
-
-    @AfterClass
-    public static void stop() {
         cassandra.close();
     }
 

http://git-wip-us.apache.org/repos/asf/james-project/blob/a18a4488/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 4303f4f..1ac0071 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
@@ -31,7 +31,8 @@ import java.util.concurrent.TimeUnit;
 import java.util.concurrent.TimeoutException;
 
 import org.apache.james.backends.cassandra.CassandraCluster;
-import org.apache.james.backends.cassandra.CassandraConfiguration;
+import org.apache.james.backends.cassandra.DockerCassandraRule;
+import org.apache.james.backends.cassandra.init.CassandraConfiguration;
 import org.apache.james.backends.cassandra.utils.CassandraAsyncExecutor;
 import org.apache.james.mailbox.cassandra.ids.CassandraId;
 import org.apache.james.mailbox.cassandra.modules.CassandraAclModule;
@@ -41,6 +42,7 @@ import org.apache.james.mailbox.model.MailboxACL;
 import org.apache.james.mailbox.model.SimpleMailboxACL;
 import org.junit.After;
 import org.junit.Before;
+import org.junit.ClassRule;
 import org.junit.Test;
 
 import com.google.common.base.Throwables;
@@ -53,10 +55,11 @@ public class CassandraACLMapperTest {
     private CassandraAsyncExecutor cassandraAsyncExecutor;
     private ExecutorService executor;
 
+    @ClassRule public static DockerCassandraRule cassandraServer = new DockerCassandraRule();
+
     @Before
     public void setUp() {
-        cassandra = CassandraCluster.create(new CassandraAclModule());
-        cassandra.ensureAllTables();
+        cassandra = CassandraCluster.create(new CassandraAclModule(), cassandraServer.getIp(), cassandraServer.getBindingPort());
         cassandraAsyncExecutor = new CassandraAsyncExecutor(cassandra.getConf());
         cassandraACLMapper = new CassandraACLMapper(MAILBOX_ID, cassandra.getConf(), cassandraAsyncExecutor, CassandraConfiguration.DEFAULT_CONFIGURATION);
         executor = Executors.newFixedThreadPool(2);
@@ -64,7 +67,6 @@ public class CassandraACLMapperTest {
 
     @After
     public void tearDown() {
-        cassandra.clearAllTables();
         executor.shutdownNow();
         cassandra.close();
     }


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


[06/13] james-project git commit: JAMES-2133 Switch from cassandraunit to cassandra in docker

Posted by ma...@apache.org.
http://git-wip-us.apache.org/repos/asf/james-project/blob/a18a4488/mpt/impl/imap-mailbox/inmemory/src/test/java/org/apache/james/mpt/imapmailbox/inmemory/InMemoryNonAuthenticatedState.java
----------------------------------------------------------------------
diff --git a/mpt/impl/imap-mailbox/inmemory/src/test/java/org/apache/james/mpt/imapmailbox/inmemory/InMemoryNonAuthenticatedState.java b/mpt/impl/imap-mailbox/inmemory/src/test/java/org/apache/james/mpt/imapmailbox/inmemory/InMemoryNonAuthenticatedState.java
index 1f9f2ae..3439a99 100644
--- a/mpt/impl/imap-mailbox/inmemory/src/test/java/org/apache/james/mpt/imapmailbox/inmemory/InMemoryNonAuthenticatedState.java
+++ b/mpt/impl/imap-mailbox/inmemory/src/test/java/org/apache/james/mpt/imapmailbox/inmemory/InMemoryNonAuthenticatedState.java
@@ -35,6 +35,7 @@ public class InMemoryNonAuthenticatedState extends NonAuthenticatedState {
     public void setUp() throws Exception {
         Injector injector = Guice.createInjector(new InMemoryMailboxTestModule());
         system = injector.getInstance(ImapHostSystem.class);
+        system.beforeTest();
         super.setUp();
     }
     

http://git-wip-us.apache.org/repos/asf/james-project/blob/a18a4488/mpt/impl/imap-mailbox/inmemory/src/test/java/org/apache/james/mpt/imapmailbox/inmemory/InMemoryPartialFetch.java
----------------------------------------------------------------------
diff --git a/mpt/impl/imap-mailbox/inmemory/src/test/java/org/apache/james/mpt/imapmailbox/inmemory/InMemoryPartialFetch.java b/mpt/impl/imap-mailbox/inmemory/src/test/java/org/apache/james/mpt/imapmailbox/inmemory/InMemoryPartialFetch.java
index 6e85ff1..339d404 100644
--- a/mpt/impl/imap-mailbox/inmemory/src/test/java/org/apache/james/mpt/imapmailbox/inmemory/InMemoryPartialFetch.java
+++ b/mpt/impl/imap-mailbox/inmemory/src/test/java/org/apache/james/mpt/imapmailbox/inmemory/InMemoryPartialFetch.java
@@ -35,6 +35,7 @@ public class InMemoryPartialFetch extends PartialFetch {
     public void setUp() throws Exception {
         Injector injector = Guice.createInjector(new InMemoryMailboxTestModule());
         system = injector.getInstance(ImapHostSystem.class);
+        system.beforeTest();
         super.setUp();
     }
     

http://git-wip-us.apache.org/repos/asf/james-project/blob/a18a4488/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 193a0ed..1ee0a6d 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
@@ -35,6 +35,7 @@ public class InMemoryQuotaTest extends QuotaTest {
     public void setUp() throws Exception {
         Injector injector = Guice.createInjector(new InMemoryMailboxTestModule());
         system = injector.getInstance(ImapHostSystem.class);
+        system.beforeTest();
         super.setUp();
     }
     

http://git-wip-us.apache.org/repos/asf/james-project/blob/a18a4488/mpt/impl/imap-mailbox/inmemory/src/test/java/org/apache/james/mpt/imapmailbox/inmemory/InMemoryRename.java
----------------------------------------------------------------------
diff --git a/mpt/impl/imap-mailbox/inmemory/src/test/java/org/apache/james/mpt/imapmailbox/inmemory/InMemoryRename.java b/mpt/impl/imap-mailbox/inmemory/src/test/java/org/apache/james/mpt/imapmailbox/inmemory/InMemoryRename.java
index 79f0b74..c07044b 100644
--- a/mpt/impl/imap-mailbox/inmemory/src/test/java/org/apache/james/mpt/imapmailbox/inmemory/InMemoryRename.java
+++ b/mpt/impl/imap-mailbox/inmemory/src/test/java/org/apache/james/mpt/imapmailbox/inmemory/InMemoryRename.java
@@ -35,6 +35,7 @@ public class InMemoryRename extends Rename {
     public void setUp() throws Exception {
         Injector injector = Guice.createInjector(new InMemoryMailboxTestModule());
         system = injector.getInstance(ImapHostSystem.class);
+        system.beforeTest();
         super.setUp();
     }
     

http://git-wip-us.apache.org/repos/asf/james-project/blob/a18a4488/mpt/impl/imap-mailbox/inmemory/src/test/java/org/apache/james/mpt/imapmailbox/inmemory/InMemorySearch.java
----------------------------------------------------------------------
diff --git a/mpt/impl/imap-mailbox/inmemory/src/test/java/org/apache/james/mpt/imapmailbox/inmemory/InMemorySearch.java b/mpt/impl/imap-mailbox/inmemory/src/test/java/org/apache/james/mpt/imapmailbox/inmemory/InMemorySearch.java
index d5dda8c..c11ef24 100644
--- a/mpt/impl/imap-mailbox/inmemory/src/test/java/org/apache/james/mpt/imapmailbox/inmemory/InMemorySearch.java
+++ b/mpt/impl/imap-mailbox/inmemory/src/test/java/org/apache/james/mpt/imapmailbox/inmemory/InMemorySearch.java
@@ -35,6 +35,7 @@ public class InMemorySearch extends Search {
     public void setUp() throws Exception {
         Injector injector = Guice.createInjector(new InMemoryMailboxTestModule());
         system = injector.getInstance(ImapHostSystem.class);
+        system.beforeTest();
         super.setUp();
     }
     

http://git-wip-us.apache.org/repos/asf/james-project/blob/a18a4488/mpt/impl/imap-mailbox/inmemory/src/test/java/org/apache/james/mpt/imapmailbox/inmemory/InMemorySecurity.java
----------------------------------------------------------------------
diff --git a/mpt/impl/imap-mailbox/inmemory/src/test/java/org/apache/james/mpt/imapmailbox/inmemory/InMemorySecurity.java b/mpt/impl/imap-mailbox/inmemory/src/test/java/org/apache/james/mpt/imapmailbox/inmemory/InMemorySecurity.java
index e7db795..e251c0d 100644
--- a/mpt/impl/imap-mailbox/inmemory/src/test/java/org/apache/james/mpt/imapmailbox/inmemory/InMemorySecurity.java
+++ b/mpt/impl/imap-mailbox/inmemory/src/test/java/org/apache/james/mpt/imapmailbox/inmemory/InMemorySecurity.java
@@ -35,6 +35,7 @@ public class InMemorySecurity extends Security {
     public void setUp() throws Exception {
         Injector injector = Guice.createInjector(new InMemoryMailboxTestModule());
         system = injector.getInstance(ImapHostSystem.class);
+        system.beforeTest();
         super.setUp();
     }
     

http://git-wip-us.apache.org/repos/asf/james-project/blob/a18a4488/mpt/impl/imap-mailbox/inmemory/src/test/java/org/apache/james/mpt/imapmailbox/inmemory/InMemorySelect.java
----------------------------------------------------------------------
diff --git a/mpt/impl/imap-mailbox/inmemory/src/test/java/org/apache/james/mpt/imapmailbox/inmemory/InMemorySelect.java b/mpt/impl/imap-mailbox/inmemory/src/test/java/org/apache/james/mpt/imapmailbox/inmemory/InMemorySelect.java
index b24654e..bd3eed2 100644
--- a/mpt/impl/imap-mailbox/inmemory/src/test/java/org/apache/james/mpt/imapmailbox/inmemory/InMemorySelect.java
+++ b/mpt/impl/imap-mailbox/inmemory/src/test/java/org/apache/james/mpt/imapmailbox/inmemory/InMemorySelect.java
@@ -35,6 +35,7 @@ public class InMemorySelect extends Select {
     public void setUp() throws Exception {
         Injector injector = Guice.createInjector(new InMemoryMailboxTestModule());
         system = injector.getInstance(ImapHostSystem.class);
+        system.beforeTest();
         super.setUp();
     }
     

http://git-wip-us.apache.org/repos/asf/james-project/blob/a18a4488/mpt/impl/imap-mailbox/inmemory/src/test/java/org/apache/james/mpt/imapmailbox/inmemory/InMemorySelectedInbox.java
----------------------------------------------------------------------
diff --git a/mpt/impl/imap-mailbox/inmemory/src/test/java/org/apache/james/mpt/imapmailbox/inmemory/InMemorySelectedInbox.java b/mpt/impl/imap-mailbox/inmemory/src/test/java/org/apache/james/mpt/imapmailbox/inmemory/InMemorySelectedInbox.java
index 593123d..652ac55 100644
--- a/mpt/impl/imap-mailbox/inmemory/src/test/java/org/apache/james/mpt/imapmailbox/inmemory/InMemorySelectedInbox.java
+++ b/mpt/impl/imap-mailbox/inmemory/src/test/java/org/apache/james/mpt/imapmailbox/inmemory/InMemorySelectedInbox.java
@@ -35,6 +35,7 @@ public class InMemorySelectedInbox extends SelectedInbox {
     public void setUp() throws Exception {
         Injector injector = Guice.createInjector(new InMemoryMailboxTestModule());
         system = injector.getInstance(ImapHostSystem.class);
+        system.beforeTest();
         super.setUp();
     }
     

http://git-wip-us.apache.org/repos/asf/james-project/blob/a18a4488/mpt/impl/imap-mailbox/inmemory/src/test/java/org/apache/james/mpt/imapmailbox/inmemory/InMemorySelectedState.java
----------------------------------------------------------------------
diff --git a/mpt/impl/imap-mailbox/inmemory/src/test/java/org/apache/james/mpt/imapmailbox/inmemory/InMemorySelectedState.java b/mpt/impl/imap-mailbox/inmemory/src/test/java/org/apache/james/mpt/imapmailbox/inmemory/InMemorySelectedState.java
index 13635b6..88d55cb 100644
--- a/mpt/impl/imap-mailbox/inmemory/src/test/java/org/apache/james/mpt/imapmailbox/inmemory/InMemorySelectedState.java
+++ b/mpt/impl/imap-mailbox/inmemory/src/test/java/org/apache/james/mpt/imapmailbox/inmemory/InMemorySelectedState.java
@@ -35,6 +35,7 @@ public class InMemorySelectedState extends SelectedState {
     public void setUp() throws Exception {
         Injector injector = Guice.createInjector(new InMemoryMailboxTestModule());
         system = injector.getInstance(ImapHostSystem.class);
+        system.beforeTest();
         super.setUp();
     }
     

http://git-wip-us.apache.org/repos/asf/james-project/blob/a18a4488/mpt/impl/imap-mailbox/inmemory/src/test/java/org/apache/james/mpt/imapmailbox/inmemory/InMemoryUidSearch.java
----------------------------------------------------------------------
diff --git a/mpt/impl/imap-mailbox/inmemory/src/test/java/org/apache/james/mpt/imapmailbox/inmemory/InMemoryUidSearch.java b/mpt/impl/imap-mailbox/inmemory/src/test/java/org/apache/james/mpt/imapmailbox/inmemory/InMemoryUidSearch.java
index c484d91..1398151 100644
--- a/mpt/impl/imap-mailbox/inmemory/src/test/java/org/apache/james/mpt/imapmailbox/inmemory/InMemoryUidSearch.java
+++ b/mpt/impl/imap-mailbox/inmemory/src/test/java/org/apache/james/mpt/imapmailbox/inmemory/InMemoryUidSearch.java
@@ -35,6 +35,7 @@ public class InMemoryUidSearch extends UidSearch {
     public void setUp() throws Exception {
         Injector injector = Guice.createInjector(new InMemoryMailboxTestModule());
         system = injector.getInstance(ImapHostSystem.class);
+        system.beforeTest();
         super.setUp();
     }
     

http://git-wip-us.apache.org/repos/asf/james-project/blob/a18a4488/mpt/impl/imap-mailbox/inmemory/src/test/java/org/apache/james/mpt/imapmailbox/inmemory/InMemoryUidSearchOnIndex.java
----------------------------------------------------------------------
diff --git a/mpt/impl/imap-mailbox/inmemory/src/test/java/org/apache/james/mpt/imapmailbox/inmemory/InMemoryUidSearchOnIndex.java b/mpt/impl/imap-mailbox/inmemory/src/test/java/org/apache/james/mpt/imapmailbox/inmemory/InMemoryUidSearchOnIndex.java
index 21bc647..0b3647f 100644
--- a/mpt/impl/imap-mailbox/inmemory/src/test/java/org/apache/james/mpt/imapmailbox/inmemory/InMemoryUidSearchOnIndex.java
+++ b/mpt/impl/imap-mailbox/inmemory/src/test/java/org/apache/james/mpt/imapmailbox/inmemory/InMemoryUidSearchOnIndex.java
@@ -35,6 +35,7 @@ public class InMemoryUidSearchOnIndex extends UidSearchOnIndex {
     public void setUp() throws Exception {
         Injector injector = Guice.createInjector(new InMemoryMailboxTestModule());
         system = injector.getInstance(ImapHostSystem.class);
+        system.beforeTest();
         super.setUp();
     }
     

http://git-wip-us.apache.org/repos/asf/james-project/blob/a18a4488/mpt/impl/imap-mailbox/inmemory/src/test/java/org/apache/james/mpt/imapmailbox/inmemory/InMemoryUserFlagsSupport.java
----------------------------------------------------------------------
diff --git a/mpt/impl/imap-mailbox/inmemory/src/test/java/org/apache/james/mpt/imapmailbox/inmemory/InMemoryUserFlagsSupport.java b/mpt/impl/imap-mailbox/inmemory/src/test/java/org/apache/james/mpt/imapmailbox/inmemory/InMemoryUserFlagsSupport.java
index 94e4ceb..6382bc9 100644
--- a/mpt/impl/imap-mailbox/inmemory/src/test/java/org/apache/james/mpt/imapmailbox/inmemory/InMemoryUserFlagsSupport.java
+++ b/mpt/impl/imap-mailbox/inmemory/src/test/java/org/apache/james/mpt/imapmailbox/inmemory/InMemoryUserFlagsSupport.java
@@ -35,6 +35,7 @@ public class InMemoryUserFlagsSupport extends UserFlagsSupport {
     public void setUp() throws Exception {
         Injector injector = Guice.createInjector(new InMemoryMailboxTestModule());
         system = injector.getInstance(ImapHostSystem.class);
+        system.beforeTest();
         super.setUp();
     }
     

http://git-wip-us.apache.org/repos/asf/james-project/blob/a18a4488/mpt/impl/imap-mailbox/inmemory/src/test/java/org/apache/james/mpt/imapmailbox/inmemory/host/InMemoryHostSystem.java
----------------------------------------------------------------------
diff --git a/mpt/impl/imap-mailbox/inmemory/src/test/java/org/apache/james/mpt/imapmailbox/inmemory/host/InMemoryHostSystem.java b/mpt/impl/imap-mailbox/inmemory/src/test/java/org/apache/james/mpt/imapmailbox/inmemory/host/InMemoryHostSystem.java
index 8cc1fd1..8dc8eff 100644
--- a/mpt/impl/imap-mailbox/inmemory/src/test/java/org/apache/james/mpt/imapmailbox/inmemory/host/InMemoryHostSystem.java
+++ b/mpt/impl/imap-mailbox/inmemory/src/test/java/org/apache/james/mpt/imapmailbox/inmemory/host/InMemoryHostSystem.java
@@ -63,16 +63,9 @@ public class InMemoryHostSystem extends JamesImapHostSystem {
         return new InMemoryHostSystem();
     }
     
-    private InMemoryHostSystem() throws MailboxException {
-        initFields();
-    }
-
     @Override
-    protected void resetData() throws Exception {
-        initFields();
-    }
-    
-    private void initFields() throws MailboxException {
+    public void beforeTest() throws Exception {
+        super.beforeTest();
         MailboxACLResolver aclResolver = new UnionMailboxACLResolver();
         GroupMembershipResolver groupMembershipResolver = new SimpleGroupMembershipResolver();
         MessageParser messageParser = new MessageParser();

http://git-wip-us.apache.org/repos/asf/james-project/blob/a18a4488/mpt/impl/imap-mailbox/jcr/src/test/java/org/apache/james/mpt/imapmailbox/jcr/host/JCRHostSystem.java
----------------------------------------------------------------------
diff --git a/mpt/impl/imap-mailbox/jcr/src/test/java/org/apache/james/mpt/imapmailbox/jcr/host/JCRHostSystem.java b/mpt/impl/imap-mailbox/jcr/src/test/java/org/apache/james/mpt/imapmailbox/jcr/host/JCRHostSystem.java
index f46d0e8..12b6888 100644
--- a/mpt/impl/imap-mailbox/jcr/src/test/java/org/apache/james/mpt/imapmailbox/jcr/host/JCRHostSystem.java
+++ b/mpt/impl/imap-mailbox/jcr/src/test/java/org/apache/james/mpt/imapmailbox/jcr/host/JCRHostSystem.java
@@ -116,7 +116,8 @@ public class JCRHostSystem extends JamesImapHostSystem {
         }
     }
 
-    public void resetData() throws Exception {
+    @Override
+    public void afterTest() throws Exception {
         resetUserMetaData();
       
     }
@@ -129,8 +130,7 @@ public class JCRHostSystem extends JamesImapHostSystem {
         dir.mkdirs();
     }
 
-
-    @Override
+    //JCR tests are broken partly because of that method not being run 
     public void afterTests() throws Exception {
         shutdownRepository();
     }

http://git-wip-us.apache.org/repos/asf/james-project/blob/a18a4488/mpt/impl/imap-mailbox/jpa/src/test/java/org/apache/james/mpt/imapmailbox/jpa/JpaAuthenticatePlain.java
----------------------------------------------------------------------
diff --git a/mpt/impl/imap-mailbox/jpa/src/test/java/org/apache/james/mpt/imapmailbox/jpa/JpaAuthenticatePlain.java b/mpt/impl/imap-mailbox/jpa/src/test/java/org/apache/james/mpt/imapmailbox/jpa/JpaAuthenticatePlain.java
index 9e9a11c..27b7227 100644
--- a/mpt/impl/imap-mailbox/jpa/src/test/java/org/apache/james/mpt/imapmailbox/jpa/JpaAuthenticatePlain.java
+++ b/mpt/impl/imap-mailbox/jpa/src/test/java/org/apache/james/mpt/imapmailbox/jpa/JpaAuthenticatePlain.java
@@ -35,6 +35,7 @@ public class JpaAuthenticatePlain extends AuthenticatePlain {
     public void setUp() throws Exception {
         Injector injector = Guice.createInjector(new JpaMailboxTestModule());
         system = injector.getInstance(ImapHostSystem.class);
+        system.beforeTest();
         super.setUp();
     }
     

http://git-wip-us.apache.org/repos/asf/james-project/blob/a18a4488/mpt/impl/imap-mailbox/jpa/src/test/java/org/apache/james/mpt/imapmailbox/jpa/JpaAuthenticatedState.java
----------------------------------------------------------------------
diff --git a/mpt/impl/imap-mailbox/jpa/src/test/java/org/apache/james/mpt/imapmailbox/jpa/JpaAuthenticatedState.java b/mpt/impl/imap-mailbox/jpa/src/test/java/org/apache/james/mpt/imapmailbox/jpa/JpaAuthenticatedState.java
index 23339e9..b20e3db 100644
--- a/mpt/impl/imap-mailbox/jpa/src/test/java/org/apache/james/mpt/imapmailbox/jpa/JpaAuthenticatedState.java
+++ b/mpt/impl/imap-mailbox/jpa/src/test/java/org/apache/james/mpt/imapmailbox/jpa/JpaAuthenticatedState.java
@@ -35,6 +35,7 @@ public class JpaAuthenticatedState extends AuthenticatedState {
     public void setUp() throws Exception {
         Injector injector = Guice.createInjector(new JpaMailboxTestModule());
         system = injector.getInstance(ImapHostSystem.class);
+        system.beforeTest();
         super.setUp();
     }
     

http://git-wip-us.apache.org/repos/asf/james-project/blob/a18a4488/mpt/impl/imap-mailbox/jpa/src/test/java/org/apache/james/mpt/imapmailbox/jpa/JpaConcurrentSessions.java
----------------------------------------------------------------------
diff --git a/mpt/impl/imap-mailbox/jpa/src/test/java/org/apache/james/mpt/imapmailbox/jpa/JpaConcurrentSessions.java b/mpt/impl/imap-mailbox/jpa/src/test/java/org/apache/james/mpt/imapmailbox/jpa/JpaConcurrentSessions.java
index de75791..f815ccc 100644
--- a/mpt/impl/imap-mailbox/jpa/src/test/java/org/apache/james/mpt/imapmailbox/jpa/JpaConcurrentSessions.java
+++ b/mpt/impl/imap-mailbox/jpa/src/test/java/org/apache/james/mpt/imapmailbox/jpa/JpaConcurrentSessions.java
@@ -35,6 +35,7 @@ public class JpaConcurrentSessions extends ConcurrentSessions {
     public void setUp() throws Exception {
         Injector injector = Guice.createInjector(new JpaMailboxTestModule());
         system = injector.getInstance(ImapHostSystem.class);
+        system.beforeTest();
         super.setUp();
     }
     

http://git-wip-us.apache.org/repos/asf/james-project/blob/a18a4488/mpt/impl/imap-mailbox/jpa/src/test/java/org/apache/james/mpt/imapmailbox/jpa/JpaCondstore.java
----------------------------------------------------------------------
diff --git a/mpt/impl/imap-mailbox/jpa/src/test/java/org/apache/james/mpt/imapmailbox/jpa/JpaCondstore.java b/mpt/impl/imap-mailbox/jpa/src/test/java/org/apache/james/mpt/imapmailbox/jpa/JpaCondstore.java
index 1d28c7c..ea0af5d 100644
--- a/mpt/impl/imap-mailbox/jpa/src/test/java/org/apache/james/mpt/imapmailbox/jpa/JpaCondstore.java
+++ b/mpt/impl/imap-mailbox/jpa/src/test/java/org/apache/james/mpt/imapmailbox/jpa/JpaCondstore.java
@@ -35,6 +35,7 @@ public class JpaCondstore extends Condstore {
     public void setUp() throws Exception {
         Injector injector = Guice.createInjector(new JpaMailboxTestModule());
         system = injector.getInstance(JamesImapHostSystem.class);
+        system.beforeTest();
         super.setUp();
     }
     

http://git-wip-us.apache.org/repos/asf/james-project/blob/a18a4488/mpt/impl/imap-mailbox/jpa/src/test/java/org/apache/james/mpt/imapmailbox/jpa/JpaCopy.java
----------------------------------------------------------------------
diff --git a/mpt/impl/imap-mailbox/jpa/src/test/java/org/apache/james/mpt/imapmailbox/jpa/JpaCopy.java b/mpt/impl/imap-mailbox/jpa/src/test/java/org/apache/james/mpt/imapmailbox/jpa/JpaCopy.java
index a4154b4..2ee21ad 100644
--- a/mpt/impl/imap-mailbox/jpa/src/test/java/org/apache/james/mpt/imapmailbox/jpa/JpaCopy.java
+++ b/mpt/impl/imap-mailbox/jpa/src/test/java/org/apache/james/mpt/imapmailbox/jpa/JpaCopy.java
@@ -35,6 +35,7 @@ public class JpaCopy extends Copy {
     public void setUp() throws Exception {
         Injector injector = Guice.createInjector(new JpaMailboxTestModule());
         system = injector.getInstance(ImapHostSystem.class);
+        system.beforeTest();
         super.setUp();
     }
     

http://git-wip-us.apache.org/repos/asf/james-project/blob/a18a4488/mpt/impl/imap-mailbox/jpa/src/test/java/org/apache/james/mpt/imapmailbox/jpa/JpaEvents.java
----------------------------------------------------------------------
diff --git a/mpt/impl/imap-mailbox/jpa/src/test/java/org/apache/james/mpt/imapmailbox/jpa/JpaEvents.java b/mpt/impl/imap-mailbox/jpa/src/test/java/org/apache/james/mpt/imapmailbox/jpa/JpaEvents.java
index 0041632..9debc12 100644
--- a/mpt/impl/imap-mailbox/jpa/src/test/java/org/apache/james/mpt/imapmailbox/jpa/JpaEvents.java
+++ b/mpt/impl/imap-mailbox/jpa/src/test/java/org/apache/james/mpt/imapmailbox/jpa/JpaEvents.java
@@ -35,6 +35,7 @@ public class JpaEvents extends Events {
     public void setUp() throws Exception {
         Injector injector = Guice.createInjector(new JpaMailboxTestModule());
         system = injector.getInstance(ImapHostSystem.class);
+        system.beforeTest();
         super.setUp();
     }
     

http://git-wip-us.apache.org/repos/asf/james-project/blob/a18a4488/mpt/impl/imap-mailbox/jpa/src/test/java/org/apache/james/mpt/imapmailbox/jpa/JpaExpunge.java
----------------------------------------------------------------------
diff --git a/mpt/impl/imap-mailbox/jpa/src/test/java/org/apache/james/mpt/imapmailbox/jpa/JpaExpunge.java b/mpt/impl/imap-mailbox/jpa/src/test/java/org/apache/james/mpt/imapmailbox/jpa/JpaExpunge.java
index 44eeae1..6074709 100644
--- a/mpt/impl/imap-mailbox/jpa/src/test/java/org/apache/james/mpt/imapmailbox/jpa/JpaExpunge.java
+++ b/mpt/impl/imap-mailbox/jpa/src/test/java/org/apache/james/mpt/imapmailbox/jpa/JpaExpunge.java
@@ -35,6 +35,7 @@ public class JpaExpunge extends Expunge {
     public void setUp() throws Exception {
         Injector injector = Guice.createInjector(new JpaMailboxTestModule());
         system = injector.getInstance(ImapHostSystem.class);
+        system.beforeTest();
         super.setUp();
     }
     

http://git-wip-us.apache.org/repos/asf/james-project/blob/a18a4488/mpt/impl/imap-mailbox/jpa/src/test/java/org/apache/james/mpt/imapmailbox/jpa/JpaFetch.java
----------------------------------------------------------------------
diff --git a/mpt/impl/imap-mailbox/jpa/src/test/java/org/apache/james/mpt/imapmailbox/jpa/JpaFetch.java b/mpt/impl/imap-mailbox/jpa/src/test/java/org/apache/james/mpt/imapmailbox/jpa/JpaFetch.java
index 6275ef4..16d2015 100644
--- a/mpt/impl/imap-mailbox/jpa/src/test/java/org/apache/james/mpt/imapmailbox/jpa/JpaFetch.java
+++ b/mpt/impl/imap-mailbox/jpa/src/test/java/org/apache/james/mpt/imapmailbox/jpa/JpaFetch.java
@@ -35,6 +35,7 @@ public class JpaFetch extends Fetch {
     public void setUp() throws Exception {
         Injector injector = Guice.createInjector(new JpaMailboxTestModule());
         system = injector.getInstance(ImapHostSystem.class);
+        system.beforeTest();
         super.setUp();
     }
     

http://git-wip-us.apache.org/repos/asf/james-project/blob/a18a4488/mpt/impl/imap-mailbox/jpa/src/test/java/org/apache/james/mpt/imapmailbox/jpa/JpaFetchBodySection.java
----------------------------------------------------------------------
diff --git a/mpt/impl/imap-mailbox/jpa/src/test/java/org/apache/james/mpt/imapmailbox/jpa/JpaFetchBodySection.java b/mpt/impl/imap-mailbox/jpa/src/test/java/org/apache/james/mpt/imapmailbox/jpa/JpaFetchBodySection.java
index c25b2d3..80a2982 100644
--- a/mpt/impl/imap-mailbox/jpa/src/test/java/org/apache/james/mpt/imapmailbox/jpa/JpaFetchBodySection.java
+++ b/mpt/impl/imap-mailbox/jpa/src/test/java/org/apache/james/mpt/imapmailbox/jpa/JpaFetchBodySection.java
@@ -35,6 +35,7 @@ public class JpaFetchBodySection extends FetchBodySection {
     public void setUp() throws Exception {
         Injector injector = Guice.createInjector(new JpaMailboxTestModule());
         system = injector.getInstance(ImapHostSystem.class);
+        system.beforeTest();
         super.setUp();
     }
     

http://git-wip-us.apache.org/repos/asf/james-project/blob/a18a4488/mpt/impl/imap-mailbox/jpa/src/test/java/org/apache/james/mpt/imapmailbox/jpa/JpaFetchBodyStructure.java
----------------------------------------------------------------------
diff --git a/mpt/impl/imap-mailbox/jpa/src/test/java/org/apache/james/mpt/imapmailbox/jpa/JpaFetchBodyStructure.java b/mpt/impl/imap-mailbox/jpa/src/test/java/org/apache/james/mpt/imapmailbox/jpa/JpaFetchBodyStructure.java
index 2c1789e..467e6cb 100644
--- a/mpt/impl/imap-mailbox/jpa/src/test/java/org/apache/james/mpt/imapmailbox/jpa/JpaFetchBodyStructure.java
+++ b/mpt/impl/imap-mailbox/jpa/src/test/java/org/apache/james/mpt/imapmailbox/jpa/JpaFetchBodyStructure.java
@@ -35,6 +35,7 @@ public class JpaFetchBodyStructure extends FetchBodyStructure {
     public void setUp() throws Exception {
         Injector injector = Guice.createInjector(new JpaMailboxTestModule());
         system = injector.getInstance(ImapHostSystem.class);
+        system.beforeTest();
         super.setUp();
     }
     

http://git-wip-us.apache.org/repos/asf/james-project/blob/a18a4488/mpt/impl/imap-mailbox/jpa/src/test/java/org/apache/james/mpt/imapmailbox/jpa/JpaFetchHeaders.java
----------------------------------------------------------------------
diff --git a/mpt/impl/imap-mailbox/jpa/src/test/java/org/apache/james/mpt/imapmailbox/jpa/JpaFetchHeaders.java b/mpt/impl/imap-mailbox/jpa/src/test/java/org/apache/james/mpt/imapmailbox/jpa/JpaFetchHeaders.java
index 04a72b6..ce3d867 100644
--- a/mpt/impl/imap-mailbox/jpa/src/test/java/org/apache/james/mpt/imapmailbox/jpa/JpaFetchHeaders.java
+++ b/mpt/impl/imap-mailbox/jpa/src/test/java/org/apache/james/mpt/imapmailbox/jpa/JpaFetchHeaders.java
@@ -35,6 +35,7 @@ public class JpaFetchHeaders extends FetchHeaders {
     public void setUp() throws Exception {
         Injector injector = Guice.createInjector(new JpaMailboxTestModule());
         system = injector.getInstance(ImapHostSystem.class);
+        system.beforeTest();
         super.setUp();
     }
     

http://git-wip-us.apache.org/repos/asf/james-project/blob/a18a4488/mpt/impl/imap-mailbox/jpa/src/test/java/org/apache/james/mpt/imapmailbox/jpa/JpaListing.java
----------------------------------------------------------------------
diff --git a/mpt/impl/imap-mailbox/jpa/src/test/java/org/apache/james/mpt/imapmailbox/jpa/JpaListing.java b/mpt/impl/imap-mailbox/jpa/src/test/java/org/apache/james/mpt/imapmailbox/jpa/JpaListing.java
index 2fb5544..23b20c2 100644
--- a/mpt/impl/imap-mailbox/jpa/src/test/java/org/apache/james/mpt/imapmailbox/jpa/JpaListing.java
+++ b/mpt/impl/imap-mailbox/jpa/src/test/java/org/apache/james/mpt/imapmailbox/jpa/JpaListing.java
@@ -35,6 +35,7 @@ public class JpaListing extends Listing {
     public void setUp() throws Exception {
         Injector injector = Guice.createInjector(new JpaMailboxTestModule());
         system = injector.getInstance(ImapHostSystem.class);
+        system.beforeTest();
         super.setUp();
     }
     

http://git-wip-us.apache.org/repos/asf/james-project/blob/a18a4488/mpt/impl/imap-mailbox/jpa/src/test/java/org/apache/james/mpt/imapmailbox/jpa/JpaMailboxAnnotation.java
----------------------------------------------------------------------
diff --git a/mpt/impl/imap-mailbox/jpa/src/test/java/org/apache/james/mpt/imapmailbox/jpa/JpaMailboxAnnotation.java b/mpt/impl/imap-mailbox/jpa/src/test/java/org/apache/james/mpt/imapmailbox/jpa/JpaMailboxAnnotation.java
index 95fc478..e638697 100644
--- a/mpt/impl/imap-mailbox/jpa/src/test/java/org/apache/james/mpt/imapmailbox/jpa/JpaMailboxAnnotation.java
+++ b/mpt/impl/imap-mailbox/jpa/src/test/java/org/apache/james/mpt/imapmailbox/jpa/JpaMailboxAnnotation.java
@@ -35,6 +35,7 @@ public class JpaMailboxAnnotation extends MailboxAnnotation {
     public void setUp() throws Exception {
         Injector injector = Guice.createInjector(new JpaMailboxTestModule());
         system = injector.getInstance(ImapHostSystem.class);
+        system.beforeTest();
         super.setUp();
     }
     

http://git-wip-us.apache.org/repos/asf/james-project/blob/a18a4488/mpt/impl/imap-mailbox/jpa/src/test/java/org/apache/james/mpt/imapmailbox/jpa/JpaNonAuthenticatedState.java
----------------------------------------------------------------------
diff --git a/mpt/impl/imap-mailbox/jpa/src/test/java/org/apache/james/mpt/imapmailbox/jpa/JpaNonAuthenticatedState.java b/mpt/impl/imap-mailbox/jpa/src/test/java/org/apache/james/mpt/imapmailbox/jpa/JpaNonAuthenticatedState.java
index fcc0f67..e02e440 100644
--- a/mpt/impl/imap-mailbox/jpa/src/test/java/org/apache/james/mpt/imapmailbox/jpa/JpaNonAuthenticatedState.java
+++ b/mpt/impl/imap-mailbox/jpa/src/test/java/org/apache/james/mpt/imapmailbox/jpa/JpaNonAuthenticatedState.java
@@ -35,6 +35,7 @@ public class JpaNonAuthenticatedState extends NonAuthenticatedState {
     public void setUp() throws Exception {
         Injector injector = Guice.createInjector(new JpaMailboxTestModule());
         system = injector.getInstance(ImapHostSystem.class);
+        system.beforeTest();
         super.setUp();
     }
     

http://git-wip-us.apache.org/repos/asf/james-project/blob/a18a4488/mpt/impl/imap-mailbox/jpa/src/test/java/org/apache/james/mpt/imapmailbox/jpa/JpaPartialFetch.java
----------------------------------------------------------------------
diff --git a/mpt/impl/imap-mailbox/jpa/src/test/java/org/apache/james/mpt/imapmailbox/jpa/JpaPartialFetch.java b/mpt/impl/imap-mailbox/jpa/src/test/java/org/apache/james/mpt/imapmailbox/jpa/JpaPartialFetch.java
index be83b77..2e71729 100644
--- a/mpt/impl/imap-mailbox/jpa/src/test/java/org/apache/james/mpt/imapmailbox/jpa/JpaPartialFetch.java
+++ b/mpt/impl/imap-mailbox/jpa/src/test/java/org/apache/james/mpt/imapmailbox/jpa/JpaPartialFetch.java
@@ -35,6 +35,7 @@ public class JpaPartialFetch extends PartialFetch {
     public void setUp() throws Exception {
         Injector injector = Guice.createInjector(new JpaMailboxTestModule());
         system = injector.getInstance(ImapHostSystem.class);
+        system.beforeTest();
         super.setUp();
     }
     

http://git-wip-us.apache.org/repos/asf/james-project/blob/a18a4488/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 79dea51..a942095 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
@@ -35,6 +35,7 @@ public class JpaQuotaTest extends QuotaTest {
     public void setUp() throws Exception {
         Injector injector = Guice.createInjector(new JpaMailboxTestModule());
         system = injector.getInstance(ImapHostSystem.class);
+        system.beforeTest();
         super.setUp();
     }
     

http://git-wip-us.apache.org/repos/asf/james-project/blob/a18a4488/mpt/impl/imap-mailbox/jpa/src/test/java/org/apache/james/mpt/imapmailbox/jpa/JpaRename.java
----------------------------------------------------------------------
diff --git a/mpt/impl/imap-mailbox/jpa/src/test/java/org/apache/james/mpt/imapmailbox/jpa/JpaRename.java b/mpt/impl/imap-mailbox/jpa/src/test/java/org/apache/james/mpt/imapmailbox/jpa/JpaRename.java
index 1756f8d..4000b20 100644
--- a/mpt/impl/imap-mailbox/jpa/src/test/java/org/apache/james/mpt/imapmailbox/jpa/JpaRename.java
+++ b/mpt/impl/imap-mailbox/jpa/src/test/java/org/apache/james/mpt/imapmailbox/jpa/JpaRename.java
@@ -35,6 +35,7 @@ public class JpaRename extends Rename {
     public void setUp() throws Exception {
         Injector injector = Guice.createInjector(new JpaMailboxTestModule());
         system = injector.getInstance(ImapHostSystem.class);
+        system.beforeTest();
         super.setUp();
     }
     

http://git-wip-us.apache.org/repos/asf/james-project/blob/a18a4488/mpt/impl/imap-mailbox/jpa/src/test/java/org/apache/james/mpt/imapmailbox/jpa/JpaSearch.java
----------------------------------------------------------------------
diff --git a/mpt/impl/imap-mailbox/jpa/src/test/java/org/apache/james/mpt/imapmailbox/jpa/JpaSearch.java b/mpt/impl/imap-mailbox/jpa/src/test/java/org/apache/james/mpt/imapmailbox/jpa/JpaSearch.java
index e700bc5..11cc901 100644
--- a/mpt/impl/imap-mailbox/jpa/src/test/java/org/apache/james/mpt/imapmailbox/jpa/JpaSearch.java
+++ b/mpt/impl/imap-mailbox/jpa/src/test/java/org/apache/james/mpt/imapmailbox/jpa/JpaSearch.java
@@ -35,6 +35,7 @@ public class JpaSearch extends Search {
     public void setUp() throws Exception {
         Injector injector = Guice.createInjector(new JpaMailboxTestModule());
         system = injector.getInstance(ImapHostSystem.class);
+        system.beforeTest();
         super.setUp();
     }
     

http://git-wip-us.apache.org/repos/asf/james-project/blob/a18a4488/mpt/impl/imap-mailbox/jpa/src/test/java/org/apache/james/mpt/imapmailbox/jpa/JpaSecurity.java
----------------------------------------------------------------------
diff --git a/mpt/impl/imap-mailbox/jpa/src/test/java/org/apache/james/mpt/imapmailbox/jpa/JpaSecurity.java b/mpt/impl/imap-mailbox/jpa/src/test/java/org/apache/james/mpt/imapmailbox/jpa/JpaSecurity.java
index b1b2378..6a1c07a 100644
--- a/mpt/impl/imap-mailbox/jpa/src/test/java/org/apache/james/mpt/imapmailbox/jpa/JpaSecurity.java
+++ b/mpt/impl/imap-mailbox/jpa/src/test/java/org/apache/james/mpt/imapmailbox/jpa/JpaSecurity.java
@@ -35,6 +35,7 @@ public class JpaSecurity extends Security {
     public void setUp() throws Exception {
         Injector injector = Guice.createInjector(new JpaMailboxTestModule());
         system = injector.getInstance(ImapHostSystem.class);
+        system.beforeTest();
         super.setUp();
     }
     

http://git-wip-us.apache.org/repos/asf/james-project/blob/a18a4488/mpt/impl/imap-mailbox/jpa/src/test/java/org/apache/james/mpt/imapmailbox/jpa/JpaSelect.java
----------------------------------------------------------------------
diff --git a/mpt/impl/imap-mailbox/jpa/src/test/java/org/apache/james/mpt/imapmailbox/jpa/JpaSelect.java b/mpt/impl/imap-mailbox/jpa/src/test/java/org/apache/james/mpt/imapmailbox/jpa/JpaSelect.java
index 7c1fe54..9b01128 100644
--- a/mpt/impl/imap-mailbox/jpa/src/test/java/org/apache/james/mpt/imapmailbox/jpa/JpaSelect.java
+++ b/mpt/impl/imap-mailbox/jpa/src/test/java/org/apache/james/mpt/imapmailbox/jpa/JpaSelect.java
@@ -35,6 +35,7 @@ public class JpaSelect extends Select {
     public void setUp() throws Exception {
         Injector injector = Guice.createInjector(new JpaMailboxTestModule());
         system = injector.getInstance(ImapHostSystem.class);
+        system.beforeTest();
         super.setUp();
     }
     

http://git-wip-us.apache.org/repos/asf/james-project/blob/a18a4488/mpt/impl/imap-mailbox/jpa/src/test/java/org/apache/james/mpt/imapmailbox/jpa/JpaSelectedInbox.java
----------------------------------------------------------------------
diff --git a/mpt/impl/imap-mailbox/jpa/src/test/java/org/apache/james/mpt/imapmailbox/jpa/JpaSelectedInbox.java b/mpt/impl/imap-mailbox/jpa/src/test/java/org/apache/james/mpt/imapmailbox/jpa/JpaSelectedInbox.java
index 369e5e1..9766626 100644
--- a/mpt/impl/imap-mailbox/jpa/src/test/java/org/apache/james/mpt/imapmailbox/jpa/JpaSelectedInbox.java
+++ b/mpt/impl/imap-mailbox/jpa/src/test/java/org/apache/james/mpt/imapmailbox/jpa/JpaSelectedInbox.java
@@ -35,6 +35,7 @@ public class JpaSelectedInbox extends SelectedInbox {
     public void setUp() throws Exception {
         Injector injector = Guice.createInjector(new JpaMailboxTestModule());
         system = injector.getInstance(ImapHostSystem.class);
+        system.beforeTest();
         super.setUp();
     }
     

http://git-wip-us.apache.org/repos/asf/james-project/blob/a18a4488/mpt/impl/imap-mailbox/jpa/src/test/java/org/apache/james/mpt/imapmailbox/jpa/JpaSelectedState.java
----------------------------------------------------------------------
diff --git a/mpt/impl/imap-mailbox/jpa/src/test/java/org/apache/james/mpt/imapmailbox/jpa/JpaSelectedState.java b/mpt/impl/imap-mailbox/jpa/src/test/java/org/apache/james/mpt/imapmailbox/jpa/JpaSelectedState.java
index 4921fd2..1613068 100644
--- a/mpt/impl/imap-mailbox/jpa/src/test/java/org/apache/james/mpt/imapmailbox/jpa/JpaSelectedState.java
+++ b/mpt/impl/imap-mailbox/jpa/src/test/java/org/apache/james/mpt/imapmailbox/jpa/JpaSelectedState.java
@@ -35,6 +35,7 @@ public class JpaSelectedState extends SelectedState {
     public void setUp() throws Exception {
         Injector injector = Guice.createInjector(new JpaMailboxTestModule());
         system = injector.getInstance(ImapHostSystem.class);
+        system.beforeTest();
         super.setUp();
     }
     

http://git-wip-us.apache.org/repos/asf/james-project/blob/a18a4488/mpt/impl/imap-mailbox/jpa/src/test/java/org/apache/james/mpt/imapmailbox/jpa/JpaUidSearch.java
----------------------------------------------------------------------
diff --git a/mpt/impl/imap-mailbox/jpa/src/test/java/org/apache/james/mpt/imapmailbox/jpa/JpaUidSearch.java b/mpt/impl/imap-mailbox/jpa/src/test/java/org/apache/james/mpt/imapmailbox/jpa/JpaUidSearch.java
index 189a5c4..463ca8c 100644
--- a/mpt/impl/imap-mailbox/jpa/src/test/java/org/apache/james/mpt/imapmailbox/jpa/JpaUidSearch.java
+++ b/mpt/impl/imap-mailbox/jpa/src/test/java/org/apache/james/mpt/imapmailbox/jpa/JpaUidSearch.java
@@ -35,6 +35,7 @@ public class JpaUidSearch extends UidSearch {
     public void setUp() throws Exception {
         Injector injector = Guice.createInjector(new JpaMailboxTestModule());
         system = injector.getInstance(ImapHostSystem.class);
+        system.beforeTest();
         super.setUp();
     }
     

http://git-wip-us.apache.org/repos/asf/james-project/blob/a18a4488/mpt/impl/imap-mailbox/jpa/src/test/java/org/apache/james/mpt/imapmailbox/jpa/JpaUidSearchOnIndex.java
----------------------------------------------------------------------
diff --git a/mpt/impl/imap-mailbox/jpa/src/test/java/org/apache/james/mpt/imapmailbox/jpa/JpaUidSearchOnIndex.java b/mpt/impl/imap-mailbox/jpa/src/test/java/org/apache/james/mpt/imapmailbox/jpa/JpaUidSearchOnIndex.java
index ec991ae..1a7ed96 100644
--- a/mpt/impl/imap-mailbox/jpa/src/test/java/org/apache/james/mpt/imapmailbox/jpa/JpaUidSearchOnIndex.java
+++ b/mpt/impl/imap-mailbox/jpa/src/test/java/org/apache/james/mpt/imapmailbox/jpa/JpaUidSearchOnIndex.java
@@ -35,6 +35,7 @@ public class JpaUidSearchOnIndex extends UidSearchOnIndex {
     public void setUp() throws Exception {
         Injector injector = Guice.createInjector(new JpaMailboxTestModule());
         system = injector.getInstance(ImapHostSystem.class);
+        system.beforeTest();
         super.setUp();
     }
     

http://git-wip-us.apache.org/repos/asf/james-project/blob/a18a4488/mpt/impl/imap-mailbox/jpa/src/test/java/org/apache/james/mpt/imapmailbox/jpa/JpaUserFlagsSupport.java
----------------------------------------------------------------------
diff --git a/mpt/impl/imap-mailbox/jpa/src/test/java/org/apache/james/mpt/imapmailbox/jpa/JpaUserFlagsSupport.java b/mpt/impl/imap-mailbox/jpa/src/test/java/org/apache/james/mpt/imapmailbox/jpa/JpaUserFlagsSupport.java
index 893708f..d546b88 100644
--- a/mpt/impl/imap-mailbox/jpa/src/test/java/org/apache/james/mpt/imapmailbox/jpa/JpaUserFlagsSupport.java
+++ b/mpt/impl/imap-mailbox/jpa/src/test/java/org/apache/james/mpt/imapmailbox/jpa/JpaUserFlagsSupport.java
@@ -35,6 +35,7 @@ public class JpaUserFlagsSupport extends UserFlagsSupport {
     public void setUp() throws Exception {
         Injector injector = Guice.createInjector(new JpaMailboxTestModule());
         system = injector.getInstance(ImapHostSystem.class);
+        system.beforeTest();
         super.setUp();
     }
     

http://git-wip-us.apache.org/repos/asf/james-project/blob/a18a4488/mpt/impl/imap-mailbox/jpa/src/test/java/org/apache/james/mpt/imapmailbox/jpa/host/JPAHostSystem.java
----------------------------------------------------------------------
diff --git a/mpt/impl/imap-mailbox/jpa/src/test/java/org/apache/james/mpt/imapmailbox/jpa/host/JPAHostSystem.java b/mpt/impl/imap-mailbox/jpa/src/test/java/org/apache/james/mpt/imapmailbox/jpa/host/JPAHostSystem.java
index 31b8571..d87e6a5 100644
--- a/mpt/impl/imap-mailbox/jpa/src/test/java/org/apache/james/mpt/imapmailbox/jpa/host/JPAHostSystem.java
+++ b/mpt/impl/imap-mailbox/jpa/src/test/java/org/apache/james/mpt/imapmailbox/jpa/host/JPAHostSystem.java
@@ -73,15 +73,17 @@ public class JPAHostSystem extends JamesImapHostSystem {
         Feature.USER_FLAGS_SUPPORT,
         Feature.ANNOTATION_SUPPORT,
         Feature.QUOTA_SUPPORT);
-    private final JPAPerUserMaxQuotaManager maxQuotaManager;
 
     public static JamesImapHostSystem build() throws Exception {
         return new JPAHostSystem();
     }
     
-    private final OpenJPAMailboxManager mailboxManager;
+    private JPAPerUserMaxQuotaManager maxQuotaManager;
+    private OpenJPAMailboxManager mailboxManager;
 
-    public JPAHostSystem() throws Exception {
+    @Override
+    public void beforeTest() throws Exception {
+        super.beforeTest();
         EntityManagerFactory entityManagerFactory = JPA_TEST_CLUSTER.getEntityManagerFactory();
         JVMMailboxPathLocker locker = new JVMMailboxPathLocker();
         JPAUidProvider uidProvider = new JPAUidProvider(locker, entityManagerFactory);
@@ -118,17 +120,18 @@ public class JPAHostSystem extends JamesImapHostSystem {
         configure(new DefaultImapDecoderFactory().buildImapDecoder(),
                 new DefaultImapEncoderFactory().buildImapEncoder(),
                 defaultImapProcessorFactory);
-
     }
 
-    public void resetData() throws Exception {
+    @Override
+    public void afterTest() throws Exception {
         resetUserMetaData();
-        MailboxSession session = mailboxManager.createSystemSession("test");
-        mailboxManager.startProcessingRequest(session);
-        mailboxManager.deleteEverything(session);
-        mailboxManager.endProcessingRequest(session);
-        mailboxManager.logout(session, false);
-        
+        if (mailboxManager != null) {
+            MailboxSession session = mailboxManager.createSystemSession("test");
+            mailboxManager.startProcessingRequest(session);
+            mailboxManager.deleteEverything(session);
+            mailboxManager.endProcessingRequest(session);
+            mailboxManager.logout(session, false);
+        }
     }
     
     public void resetUserMetaData() throws Exception {

http://git-wip-us.apache.org/repos/asf/james-project/blob/a18a4488/mpt/impl/imap-mailbox/lucenesearch/src/test/java/org/apache/james/mpt/imapmailbox/lucenesearch/host/LuceneSearchHostSystem.java
----------------------------------------------------------------------
diff --git a/mpt/impl/imap-mailbox/lucenesearch/src/test/java/org/apache/james/mpt/imapmailbox/lucenesearch/host/LuceneSearchHostSystem.java b/mpt/impl/imap-mailbox/lucenesearch/src/test/java/org/apache/james/mpt/imapmailbox/lucenesearch/host/LuceneSearchHostSystem.java
index 27f3ab0..6139462 100644
--- a/mpt/impl/imap-mailbox/lucenesearch/src/test/java/org/apache/james/mpt/imapmailbox/lucenesearch/host/LuceneSearchHostSystem.java
+++ b/mpt/impl/imap-mailbox/lucenesearch/src/test/java/org/apache/james/mpt/imapmailbox/lucenesearch/host/LuceneSearchHostSystem.java
@@ -76,12 +76,13 @@ public class LuceneSearchHostSystem extends JamesImapHostSystem {
 
     @Override
     public void beforeTest() throws Exception {
+        super.beforeTest();
         this.tempFile = Files.createTempDir();
         initFields();
     }
 
     @Override
-    public void resetData() throws Exception {
+    public void afterTest() throws Exception {
         tempFile.deleteOnExit();
 
         resetUserMetaData();
@@ -90,7 +91,6 @@ public class LuceneSearchHostSystem extends JamesImapHostSystem {
         mailboxManager.deleteEverything(session);
         mailboxManager.endProcessingRequest(session);
         mailboxManager.logout(session, false);
-        
     }
 
     public void resetUserMetaData() throws Exception {

http://git-wip-us.apache.org/repos/asf/james-project/blob/a18a4488/mpt/impl/imap-mailbox/maildir/src/test/java/org/apache/james/mpt/imapmailbox/maildir/MaildirAuthenticatePlain.java
----------------------------------------------------------------------
diff --git a/mpt/impl/imap-mailbox/maildir/src/test/java/org/apache/james/mpt/imapmailbox/maildir/MaildirAuthenticatePlain.java b/mpt/impl/imap-mailbox/maildir/src/test/java/org/apache/james/mpt/imapmailbox/maildir/MaildirAuthenticatePlain.java
index 3dcc89a..1c4880b 100644
--- a/mpt/impl/imap-mailbox/maildir/src/test/java/org/apache/james/mpt/imapmailbox/maildir/MaildirAuthenticatePlain.java
+++ b/mpt/impl/imap-mailbox/maildir/src/test/java/org/apache/james/mpt/imapmailbox/maildir/MaildirAuthenticatePlain.java
@@ -35,6 +35,7 @@ public class MaildirAuthenticatePlain extends AuthenticatePlain {
     public void setUp() throws Exception {
         Injector injector = Guice.createInjector(new MaildirMailboxTestModule());
         system = injector.getInstance(ImapHostSystem.class);
+        system.beforeTest();
         super.setUp();
     }
     

http://git-wip-us.apache.org/repos/asf/james-project/blob/a18a4488/mpt/impl/imap-mailbox/maildir/src/test/java/org/apache/james/mpt/imapmailbox/maildir/MaildirAuthenticatedState.java
----------------------------------------------------------------------
diff --git a/mpt/impl/imap-mailbox/maildir/src/test/java/org/apache/james/mpt/imapmailbox/maildir/MaildirAuthenticatedState.java b/mpt/impl/imap-mailbox/maildir/src/test/java/org/apache/james/mpt/imapmailbox/maildir/MaildirAuthenticatedState.java
index 7844082..a004f20 100644
--- a/mpt/impl/imap-mailbox/maildir/src/test/java/org/apache/james/mpt/imapmailbox/maildir/MaildirAuthenticatedState.java
+++ b/mpt/impl/imap-mailbox/maildir/src/test/java/org/apache/james/mpt/imapmailbox/maildir/MaildirAuthenticatedState.java
@@ -35,6 +35,7 @@ public class MaildirAuthenticatedState extends AuthenticatedState {
     public void setUp() throws Exception {
         Injector injector = Guice.createInjector(new MaildirMailboxTestModule());
         system = injector.getInstance(ImapHostSystem.class);
+        system.beforeTest();
         super.setUp();
     }
     

http://git-wip-us.apache.org/repos/asf/james-project/blob/a18a4488/mpt/impl/imap-mailbox/maildir/src/test/java/org/apache/james/mpt/imapmailbox/maildir/MaildirConcurrentSessions.java
----------------------------------------------------------------------
diff --git a/mpt/impl/imap-mailbox/maildir/src/test/java/org/apache/james/mpt/imapmailbox/maildir/MaildirConcurrentSessions.java b/mpt/impl/imap-mailbox/maildir/src/test/java/org/apache/james/mpt/imapmailbox/maildir/MaildirConcurrentSessions.java
index 38d1196..46da204 100644
--- a/mpt/impl/imap-mailbox/maildir/src/test/java/org/apache/james/mpt/imapmailbox/maildir/MaildirConcurrentSessions.java
+++ b/mpt/impl/imap-mailbox/maildir/src/test/java/org/apache/james/mpt/imapmailbox/maildir/MaildirConcurrentSessions.java
@@ -35,6 +35,7 @@ public class MaildirConcurrentSessions extends ConcurrentSessions {
     public void setUp() throws Exception {
         Injector injector = Guice.createInjector(new MaildirMailboxTestModule());
         system = injector.getInstance(ImapHostSystem.class);
+        system.beforeTest();
         super.setUp();
     }
     

http://git-wip-us.apache.org/repos/asf/james-project/blob/a18a4488/mpt/impl/imap-mailbox/maildir/src/test/java/org/apache/james/mpt/imapmailbox/maildir/MaildirCondstore.java
----------------------------------------------------------------------
diff --git a/mpt/impl/imap-mailbox/maildir/src/test/java/org/apache/james/mpt/imapmailbox/maildir/MaildirCondstore.java b/mpt/impl/imap-mailbox/maildir/src/test/java/org/apache/james/mpt/imapmailbox/maildir/MaildirCondstore.java
index ee51fcb..29b6e82 100644
--- a/mpt/impl/imap-mailbox/maildir/src/test/java/org/apache/james/mpt/imapmailbox/maildir/MaildirCondstore.java
+++ b/mpt/impl/imap-mailbox/maildir/src/test/java/org/apache/james/mpt/imapmailbox/maildir/MaildirCondstore.java
@@ -35,6 +35,7 @@ public class MaildirCondstore extends Condstore {
     public void setUp() throws Exception {
         Injector injector = Guice.createInjector(new MaildirMailboxTestModule());
         system = injector.getInstance(JamesImapHostSystem.class);
+        system.beforeTest();
         super.setUp();
     }
     

http://git-wip-us.apache.org/repos/asf/james-project/blob/a18a4488/mpt/impl/imap-mailbox/maildir/src/test/java/org/apache/james/mpt/imapmailbox/maildir/MaildirCopy.java
----------------------------------------------------------------------
diff --git a/mpt/impl/imap-mailbox/maildir/src/test/java/org/apache/james/mpt/imapmailbox/maildir/MaildirCopy.java b/mpt/impl/imap-mailbox/maildir/src/test/java/org/apache/james/mpt/imapmailbox/maildir/MaildirCopy.java
index 2004bc8..3393d82 100644
--- a/mpt/impl/imap-mailbox/maildir/src/test/java/org/apache/james/mpt/imapmailbox/maildir/MaildirCopy.java
+++ b/mpt/impl/imap-mailbox/maildir/src/test/java/org/apache/james/mpt/imapmailbox/maildir/MaildirCopy.java
@@ -35,6 +35,7 @@ public class MaildirCopy extends Copy {
     public void setUp() throws Exception {
         Injector injector = Guice.createInjector(new MaildirMailboxTestModule());
         system = injector.getInstance(ImapHostSystem.class);
+        system.beforeTest();
         super.setUp();
     }
     

http://git-wip-us.apache.org/repos/asf/james-project/blob/a18a4488/mpt/impl/imap-mailbox/maildir/src/test/java/org/apache/james/mpt/imapmailbox/maildir/MaildirEvents.java
----------------------------------------------------------------------
diff --git a/mpt/impl/imap-mailbox/maildir/src/test/java/org/apache/james/mpt/imapmailbox/maildir/MaildirEvents.java b/mpt/impl/imap-mailbox/maildir/src/test/java/org/apache/james/mpt/imapmailbox/maildir/MaildirEvents.java
index eabedd4..1d74bed 100644
--- a/mpt/impl/imap-mailbox/maildir/src/test/java/org/apache/james/mpt/imapmailbox/maildir/MaildirEvents.java
+++ b/mpt/impl/imap-mailbox/maildir/src/test/java/org/apache/james/mpt/imapmailbox/maildir/MaildirEvents.java
@@ -35,6 +35,7 @@ public class MaildirEvents extends Events {
     public void setUp() throws Exception {
         Injector injector = Guice.createInjector(new MaildirMailboxTestModule());
         system = injector.getInstance(ImapHostSystem.class);
+        system.beforeTest();
         super.setUp();
     }
     

http://git-wip-us.apache.org/repos/asf/james-project/blob/a18a4488/mpt/impl/imap-mailbox/maildir/src/test/java/org/apache/james/mpt/imapmailbox/maildir/MaildirExpunge.java
----------------------------------------------------------------------
diff --git a/mpt/impl/imap-mailbox/maildir/src/test/java/org/apache/james/mpt/imapmailbox/maildir/MaildirExpunge.java b/mpt/impl/imap-mailbox/maildir/src/test/java/org/apache/james/mpt/imapmailbox/maildir/MaildirExpunge.java
index e224268..cdfe2ae 100644
--- a/mpt/impl/imap-mailbox/maildir/src/test/java/org/apache/james/mpt/imapmailbox/maildir/MaildirExpunge.java
+++ b/mpt/impl/imap-mailbox/maildir/src/test/java/org/apache/james/mpt/imapmailbox/maildir/MaildirExpunge.java
@@ -35,6 +35,7 @@ public class MaildirExpunge extends Expunge {
     public void setUp() throws Exception {
         Injector injector = Guice.createInjector(new MaildirMailboxTestModule());
         system = injector.getInstance(ImapHostSystem.class);
+        system.beforeTest();
         super.setUp();
     }
     

http://git-wip-us.apache.org/repos/asf/james-project/blob/a18a4488/mpt/impl/imap-mailbox/maildir/src/test/java/org/apache/james/mpt/imapmailbox/maildir/MaildirFetch.java
----------------------------------------------------------------------
diff --git a/mpt/impl/imap-mailbox/maildir/src/test/java/org/apache/james/mpt/imapmailbox/maildir/MaildirFetch.java b/mpt/impl/imap-mailbox/maildir/src/test/java/org/apache/james/mpt/imapmailbox/maildir/MaildirFetch.java
index 4f6d64f..e7a787a 100644
--- a/mpt/impl/imap-mailbox/maildir/src/test/java/org/apache/james/mpt/imapmailbox/maildir/MaildirFetch.java
+++ b/mpt/impl/imap-mailbox/maildir/src/test/java/org/apache/james/mpt/imapmailbox/maildir/MaildirFetch.java
@@ -35,6 +35,7 @@ public class MaildirFetch extends Fetch {
     public void setUp() throws Exception {
         Injector injector = Guice.createInjector(new MaildirMailboxTestModule());
         system = injector.getInstance(ImapHostSystem.class);
+        system.beforeTest();
         super.setUp();
     }
     

http://git-wip-us.apache.org/repos/asf/james-project/blob/a18a4488/mpt/impl/imap-mailbox/maildir/src/test/java/org/apache/james/mpt/imapmailbox/maildir/MaildirFetchBodySection.java
----------------------------------------------------------------------
diff --git a/mpt/impl/imap-mailbox/maildir/src/test/java/org/apache/james/mpt/imapmailbox/maildir/MaildirFetchBodySection.java b/mpt/impl/imap-mailbox/maildir/src/test/java/org/apache/james/mpt/imapmailbox/maildir/MaildirFetchBodySection.java
index ce8a9c3..a73524a 100644
--- a/mpt/impl/imap-mailbox/maildir/src/test/java/org/apache/james/mpt/imapmailbox/maildir/MaildirFetchBodySection.java
+++ b/mpt/impl/imap-mailbox/maildir/src/test/java/org/apache/james/mpt/imapmailbox/maildir/MaildirFetchBodySection.java
@@ -35,6 +35,7 @@ public class MaildirFetchBodySection extends FetchBodySection {
     public void setUp() throws Exception {
         Injector injector = Guice.createInjector(new MaildirMailboxTestModule());
         system = injector.getInstance(ImapHostSystem.class);
+        system.beforeTest();
         super.setUp();
     }
     

http://git-wip-us.apache.org/repos/asf/james-project/blob/a18a4488/mpt/impl/imap-mailbox/maildir/src/test/java/org/apache/james/mpt/imapmailbox/maildir/MaildirFetchBodyStructure.java
----------------------------------------------------------------------
diff --git a/mpt/impl/imap-mailbox/maildir/src/test/java/org/apache/james/mpt/imapmailbox/maildir/MaildirFetchBodyStructure.java b/mpt/impl/imap-mailbox/maildir/src/test/java/org/apache/james/mpt/imapmailbox/maildir/MaildirFetchBodyStructure.java
index 70574ed..46b2027 100644
--- a/mpt/impl/imap-mailbox/maildir/src/test/java/org/apache/james/mpt/imapmailbox/maildir/MaildirFetchBodyStructure.java
+++ b/mpt/impl/imap-mailbox/maildir/src/test/java/org/apache/james/mpt/imapmailbox/maildir/MaildirFetchBodyStructure.java
@@ -35,6 +35,7 @@ public class MaildirFetchBodyStructure extends FetchBodyStructure {
     public void setUp() throws Exception {
         Injector injector = Guice.createInjector(new MaildirMailboxTestModule());
         system = injector.getInstance(ImapHostSystem.class);
+        system.beforeTest();
         super.setUp();
     }
     

http://git-wip-us.apache.org/repos/asf/james-project/blob/a18a4488/mpt/impl/imap-mailbox/maildir/src/test/java/org/apache/james/mpt/imapmailbox/maildir/MaildirFetchHeaders.java
----------------------------------------------------------------------
diff --git a/mpt/impl/imap-mailbox/maildir/src/test/java/org/apache/james/mpt/imapmailbox/maildir/MaildirFetchHeaders.java b/mpt/impl/imap-mailbox/maildir/src/test/java/org/apache/james/mpt/imapmailbox/maildir/MaildirFetchHeaders.java
index 43c707a..d5e7419 100644
--- a/mpt/impl/imap-mailbox/maildir/src/test/java/org/apache/james/mpt/imapmailbox/maildir/MaildirFetchHeaders.java
+++ b/mpt/impl/imap-mailbox/maildir/src/test/java/org/apache/james/mpt/imapmailbox/maildir/MaildirFetchHeaders.java
@@ -35,6 +35,7 @@ public class MaildirFetchHeaders extends FetchHeaders {
     public void setUp() throws Exception {
         Injector injector = Guice.createInjector(new MaildirMailboxTestModule());
         system = injector.getInstance(ImapHostSystem.class);
+        system.beforeTest();
         super.setUp();
     }
     

http://git-wip-us.apache.org/repos/asf/james-project/blob/a18a4488/mpt/impl/imap-mailbox/maildir/src/test/java/org/apache/james/mpt/imapmailbox/maildir/MaildirListing.java
----------------------------------------------------------------------
diff --git a/mpt/impl/imap-mailbox/maildir/src/test/java/org/apache/james/mpt/imapmailbox/maildir/MaildirListing.java b/mpt/impl/imap-mailbox/maildir/src/test/java/org/apache/james/mpt/imapmailbox/maildir/MaildirListing.java
index f04baf2..fce3fbc 100644
--- a/mpt/impl/imap-mailbox/maildir/src/test/java/org/apache/james/mpt/imapmailbox/maildir/MaildirListing.java
+++ b/mpt/impl/imap-mailbox/maildir/src/test/java/org/apache/james/mpt/imapmailbox/maildir/MaildirListing.java
@@ -35,6 +35,7 @@ public class MaildirListing extends Listing {
     public void setUp() throws Exception {
         Injector injector = Guice.createInjector(new MaildirMailboxTestModule());
         system = injector.getInstance(ImapHostSystem.class);
+        system.beforeTest();
         super.setUp();
     }
     

http://git-wip-us.apache.org/repos/asf/james-project/blob/a18a4488/mpt/impl/imap-mailbox/maildir/src/test/java/org/apache/james/mpt/imapmailbox/maildir/MaildirNonAuthenticatedState.java
----------------------------------------------------------------------
diff --git a/mpt/impl/imap-mailbox/maildir/src/test/java/org/apache/james/mpt/imapmailbox/maildir/MaildirNonAuthenticatedState.java b/mpt/impl/imap-mailbox/maildir/src/test/java/org/apache/james/mpt/imapmailbox/maildir/MaildirNonAuthenticatedState.java
index 162e929..1956d13 100644
--- a/mpt/impl/imap-mailbox/maildir/src/test/java/org/apache/james/mpt/imapmailbox/maildir/MaildirNonAuthenticatedState.java
+++ b/mpt/impl/imap-mailbox/maildir/src/test/java/org/apache/james/mpt/imapmailbox/maildir/MaildirNonAuthenticatedState.java
@@ -35,6 +35,7 @@ public class MaildirNonAuthenticatedState extends NonAuthenticatedState {
     public void setUp() throws Exception {
         Injector injector = Guice.createInjector(new MaildirMailboxTestModule());
         system = injector.getInstance(ImapHostSystem.class);
+        system.beforeTest();
         super.setUp();
     }
     

http://git-wip-us.apache.org/repos/asf/james-project/blob/a18a4488/mpt/impl/imap-mailbox/maildir/src/test/java/org/apache/james/mpt/imapmailbox/maildir/MaildirPartialFetch.java
----------------------------------------------------------------------
diff --git a/mpt/impl/imap-mailbox/maildir/src/test/java/org/apache/james/mpt/imapmailbox/maildir/MaildirPartialFetch.java b/mpt/impl/imap-mailbox/maildir/src/test/java/org/apache/james/mpt/imapmailbox/maildir/MaildirPartialFetch.java
index 168e0a6..a784a8c 100644
--- a/mpt/impl/imap-mailbox/maildir/src/test/java/org/apache/james/mpt/imapmailbox/maildir/MaildirPartialFetch.java
+++ b/mpt/impl/imap-mailbox/maildir/src/test/java/org/apache/james/mpt/imapmailbox/maildir/MaildirPartialFetch.java
@@ -35,6 +35,7 @@ public class MaildirPartialFetch extends PartialFetch {
     public void setUp() throws Exception {
         Injector injector = Guice.createInjector(new MaildirMailboxTestModule());
         system = injector.getInstance(ImapHostSystem.class);
+        system.beforeTest();
         super.setUp();
     }
     

http://git-wip-us.apache.org/repos/asf/james-project/blob/a18a4488/mpt/impl/imap-mailbox/maildir/src/test/java/org/apache/james/mpt/imapmailbox/maildir/MaildirRename.java
----------------------------------------------------------------------
diff --git a/mpt/impl/imap-mailbox/maildir/src/test/java/org/apache/james/mpt/imapmailbox/maildir/MaildirRename.java b/mpt/impl/imap-mailbox/maildir/src/test/java/org/apache/james/mpt/imapmailbox/maildir/MaildirRename.java
index df5b232..018b369 100644
--- a/mpt/impl/imap-mailbox/maildir/src/test/java/org/apache/james/mpt/imapmailbox/maildir/MaildirRename.java
+++ b/mpt/impl/imap-mailbox/maildir/src/test/java/org/apache/james/mpt/imapmailbox/maildir/MaildirRename.java
@@ -35,6 +35,7 @@ public class MaildirRename extends Rename {
     public void setUp() throws Exception {
         Injector injector = Guice.createInjector(new MaildirMailboxTestModule());
         system = injector.getInstance(ImapHostSystem.class);
+        system.beforeTest();
         super.setUp();
     }
     

http://git-wip-us.apache.org/repos/asf/james-project/blob/a18a4488/mpt/impl/imap-mailbox/maildir/src/test/java/org/apache/james/mpt/imapmailbox/maildir/MaildirSearch.java
----------------------------------------------------------------------
diff --git a/mpt/impl/imap-mailbox/maildir/src/test/java/org/apache/james/mpt/imapmailbox/maildir/MaildirSearch.java b/mpt/impl/imap-mailbox/maildir/src/test/java/org/apache/james/mpt/imapmailbox/maildir/MaildirSearch.java
index 40b7e41..51e17c3 100644
--- a/mpt/impl/imap-mailbox/maildir/src/test/java/org/apache/james/mpt/imapmailbox/maildir/MaildirSearch.java
+++ b/mpt/impl/imap-mailbox/maildir/src/test/java/org/apache/james/mpt/imapmailbox/maildir/MaildirSearch.java
@@ -35,6 +35,7 @@ public class MaildirSearch extends Search {
     public void setUp() throws Exception {
         Injector injector = Guice.createInjector(new MaildirMailboxTestModule());
         system = injector.getInstance(ImapHostSystem.class);
+        system.beforeTest();
         super.setUp();
     }
     

http://git-wip-us.apache.org/repos/asf/james-project/blob/a18a4488/mpt/impl/imap-mailbox/maildir/src/test/java/org/apache/james/mpt/imapmailbox/maildir/MaildirSecurity.java
----------------------------------------------------------------------
diff --git a/mpt/impl/imap-mailbox/maildir/src/test/java/org/apache/james/mpt/imapmailbox/maildir/MaildirSecurity.java b/mpt/impl/imap-mailbox/maildir/src/test/java/org/apache/james/mpt/imapmailbox/maildir/MaildirSecurity.java
index 91a5d95..7bf4fe9 100644
--- a/mpt/impl/imap-mailbox/maildir/src/test/java/org/apache/james/mpt/imapmailbox/maildir/MaildirSecurity.java
+++ b/mpt/impl/imap-mailbox/maildir/src/test/java/org/apache/james/mpt/imapmailbox/maildir/MaildirSecurity.java
@@ -35,6 +35,7 @@ public class MaildirSecurity extends Security {
     public void setUp() throws Exception {
         Injector injector = Guice.createInjector(new MaildirMailboxTestModule());
         system = injector.getInstance(ImapHostSystem.class);
+        system.beforeTest();
         super.setUp();
     }
     

http://git-wip-us.apache.org/repos/asf/james-project/blob/a18a4488/mpt/impl/imap-mailbox/maildir/src/test/java/org/apache/james/mpt/imapmailbox/maildir/MaildirSelect.java
----------------------------------------------------------------------
diff --git a/mpt/impl/imap-mailbox/maildir/src/test/java/org/apache/james/mpt/imapmailbox/maildir/MaildirSelect.java b/mpt/impl/imap-mailbox/maildir/src/test/java/org/apache/james/mpt/imapmailbox/maildir/MaildirSelect.java
index dda44a9..cdda4a9 100644
--- a/mpt/impl/imap-mailbox/maildir/src/test/java/org/apache/james/mpt/imapmailbox/maildir/MaildirSelect.java
+++ b/mpt/impl/imap-mailbox/maildir/src/test/java/org/apache/james/mpt/imapmailbox/maildir/MaildirSelect.java
@@ -35,6 +35,7 @@ public class MaildirSelect extends Select {
     public void setUp() throws Exception {
         Injector injector = Guice.createInjector(new MaildirMailboxTestModule());
         system = injector.getInstance(ImapHostSystem.class);
+        system.beforeTest();
         super.setUp();
     }
     

http://git-wip-us.apache.org/repos/asf/james-project/blob/a18a4488/mpt/impl/imap-mailbox/maildir/src/test/java/org/apache/james/mpt/imapmailbox/maildir/MaildirSelectedInbox.java
----------------------------------------------------------------------
diff --git a/mpt/impl/imap-mailbox/maildir/src/test/java/org/apache/james/mpt/imapmailbox/maildir/MaildirSelectedInbox.java b/mpt/impl/imap-mailbox/maildir/src/test/java/org/apache/james/mpt/imapmailbox/maildir/MaildirSelectedInbox.java
index 4c0d518..9f66709 100644
--- a/mpt/impl/imap-mailbox/maildir/src/test/java/org/apache/james/mpt/imapmailbox/maildir/MaildirSelectedInbox.java
+++ b/mpt/impl/imap-mailbox/maildir/src/test/java/org/apache/james/mpt/imapmailbox/maildir/MaildirSelectedInbox.java
@@ -35,6 +35,7 @@ public class MaildirSelectedInbox extends SelectedInbox {
     public void setUp() throws Exception {
         Injector injector = Guice.createInjector(new MaildirMailboxTestModule());
         system = injector.getInstance(ImapHostSystem.class);
+        system.beforeTest();
         super.setUp();
     }
     

http://git-wip-us.apache.org/repos/asf/james-project/blob/a18a4488/mpt/impl/imap-mailbox/maildir/src/test/java/org/apache/james/mpt/imapmailbox/maildir/MaildirSelectedState.java
----------------------------------------------------------------------
diff --git a/mpt/impl/imap-mailbox/maildir/src/test/java/org/apache/james/mpt/imapmailbox/maildir/MaildirSelectedState.java b/mpt/impl/imap-mailbox/maildir/src/test/java/org/apache/james/mpt/imapmailbox/maildir/MaildirSelectedState.java
index 87aea1b..b6652bc 100644
--- a/mpt/impl/imap-mailbox/maildir/src/test/java/org/apache/james/mpt/imapmailbox/maildir/MaildirSelectedState.java
+++ b/mpt/impl/imap-mailbox/maildir/src/test/java/org/apache/james/mpt/imapmailbox/maildir/MaildirSelectedState.java
@@ -35,6 +35,7 @@ public class MaildirSelectedState extends SelectedState {
     public void setUp() throws Exception {
         Injector injector = Guice.createInjector(new MaildirMailboxTestModule());
         system = injector.getInstance(ImapHostSystem.class);
+        system.beforeTest();
         super.setUp();
     }
     

http://git-wip-us.apache.org/repos/asf/james-project/blob/a18a4488/mpt/impl/imap-mailbox/maildir/src/test/java/org/apache/james/mpt/imapmailbox/maildir/MaildirUidSearch.java
----------------------------------------------------------------------
diff --git a/mpt/impl/imap-mailbox/maildir/src/test/java/org/apache/james/mpt/imapmailbox/maildir/MaildirUidSearch.java b/mpt/impl/imap-mailbox/maildir/src/test/java/org/apache/james/mpt/imapmailbox/maildir/MaildirUidSearch.java
index 0c82593..6e0435a 100644
--- a/mpt/impl/imap-mailbox/maildir/src/test/java/org/apache/james/mpt/imapmailbox/maildir/MaildirUidSearch.java
+++ b/mpt/impl/imap-mailbox/maildir/src/test/java/org/apache/james/mpt/imapmailbox/maildir/MaildirUidSearch.java
@@ -35,6 +35,7 @@ public class MaildirUidSearch extends UidSearch {
     public void setUp() throws Exception {
         Injector injector = Guice.createInjector(new MaildirMailboxTestModule());
         system = injector.getInstance(ImapHostSystem.class);
+        system.beforeTest();
         super.setUp();
     }
     

http://git-wip-us.apache.org/repos/asf/james-project/blob/a18a4488/mpt/impl/imap-mailbox/maildir/src/test/java/org/apache/james/mpt/imapmailbox/maildir/MaildirUidSearchOnIndex.java
----------------------------------------------------------------------
diff --git a/mpt/impl/imap-mailbox/maildir/src/test/java/org/apache/james/mpt/imapmailbox/maildir/MaildirUidSearchOnIndex.java b/mpt/impl/imap-mailbox/maildir/src/test/java/org/apache/james/mpt/imapmailbox/maildir/MaildirUidSearchOnIndex.java
index 9927ec8..bd97389 100644
--- a/mpt/impl/imap-mailbox/maildir/src/test/java/org/apache/james/mpt/imapmailbox/maildir/MaildirUidSearchOnIndex.java
+++ b/mpt/impl/imap-mailbox/maildir/src/test/java/org/apache/james/mpt/imapmailbox/maildir/MaildirUidSearchOnIndex.java
@@ -35,6 +35,7 @@ public class MaildirUidSearchOnIndex extends UidSearchOnIndex {
     public void setUp() throws Exception {
         Injector injector = Guice.createInjector(new MaildirMailboxTestModule());
         system = injector.getInstance(ImapHostSystem.class);
+        system.beforeTest();
         super.setUp();
     }
     

http://git-wip-us.apache.org/repos/asf/james-project/blob/a18a4488/mpt/impl/imap-mailbox/maildir/src/test/java/org/apache/james/mpt/imapmailbox/maildir/host/MaildirHostSystem.java
----------------------------------------------------------------------
diff --git a/mpt/impl/imap-mailbox/maildir/src/test/java/org/apache/james/mpt/imapmailbox/maildir/host/MaildirHostSystem.java b/mpt/impl/imap-mailbox/maildir/src/test/java/org/apache/james/mpt/imapmailbox/maildir/host/MaildirHostSystem.java
index f5d93cc..f03ad97 100644
--- a/mpt/impl/imap-mailbox/maildir/src/test/java/org/apache/james/mpt/imapmailbox/maildir/host/MaildirHostSystem.java
+++ b/mpt/impl/imap-mailbox/maildir/src/test/java/org/apache/james/mpt/imapmailbox/maildir/host/MaildirHostSystem.java
@@ -30,7 +30,6 @@ import org.apache.james.mailbox.acl.GroupMembershipResolver;
 import org.apache.james.mailbox.acl.MailboxACLResolver;
 import org.apache.james.mailbox.acl.SimpleGroupMembershipResolver;
 import org.apache.james.mailbox.acl.UnionMailboxACLResolver;
-import org.apache.james.mailbox.exception.MailboxException;
 import org.apache.james.mailbox.maildir.MaildirMailboxSessionMapperFactory;
 import org.apache.james.mailbox.maildir.MaildirStore;
 import org.apache.james.mailbox.model.MailboxPath;
@@ -53,13 +52,15 @@ public class MaildirHostSystem extends JamesImapHostSystem {
     private static final String MAILDIR_HOME = "target/Maildir";
     private static final ImapFeatures SUPPORTED_FEATURES = ImapFeatures.of();
     
-    private final StoreMailboxManager mailboxManager;
+    private StoreMailboxManager mailboxManager;
 
     public static JamesImapHostSystem build() throws Exception {
         return new MaildirHostSystem();
     }
     
-    public MaildirHostSystem() throws MailboxException {
+    @Override
+    public void beforeTest() throws Exception {
+        super.beforeTest();
         JVMMailboxPathLocker locker = new JVMMailboxPathLocker();
         MaildirStore store = new MaildirStore(MAILDIR_HOME + "/%user", locker);
         MaildirMailboxSessionMapperFactory mailboxSessionMapperFactory = new MaildirMailboxSessionMapperFactory(store);
@@ -88,7 +89,7 @@ public class MaildirHostSystem extends JamesImapHostSystem {
 
 
     @Override
-    public void resetData() throws Exception {
+    public void afterTest() throws Exception {
         resetUserMetaData();
         try {
         	FileUtils.deleteDirectory(new File(MAILDIR_HOME));

http://git-wip-us.apache.org/repos/asf/james-project/blob/a18a4488/mpt/impl/managesieve/cassandra/pom.xml
----------------------------------------------------------------------
diff --git a/mpt/impl/managesieve/cassandra/pom.xml b/mpt/impl/managesieve/cassandra/pom.xml
index 7be717d..bdefdac 100644
--- a/mpt/impl/managesieve/cassandra/pom.xml
+++ b/mpt/impl/managesieve/cassandra/pom.xml
@@ -30,6 +30,7 @@
 
     <name>Apache James MPT ManageSieve Cassandra</name>
 
+
     <dependencies>
         <dependency>
             <groupId>${project.groupId}</groupId>
@@ -48,11 +49,6 @@
             <groupId>${project.groupId}</groupId>
             <artifactId>james-server-data-cassandra</artifactId>
         </dependency>
-        <dependency>
-            <groupId>org.cassandraunit</groupId>
-            <artifactId>cassandra-unit</artifactId>
-            <scope>test</scope>
-        </dependency>
     </dependencies>
 
     <build>

http://git-wip-us.apache.org/repos/asf/james-project/blob/a18a4488/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 8232ecd..ae45946 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
@@ -19,21 +19,25 @@
 
 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.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();
+    
     private ManageSieveHostSystem system;
 
     @Before
     public void setUp() throws Exception {
-        Injector injector = Guice.createInjector(new CassandraModule());
+        Injector injector = Guice.createInjector(new CassandraModule(cassandraServer.getIp(), cassandraServer.getBindingPort()));
         system = injector.getInstance(ManageSieveHostSystem.class);
         system.beforeTest();
         super.setUp();

http://git-wip-us.apache.org/repos/asf/james-project/blob/a18a4488/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 f66278f..802e685 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
@@ -19,21 +19,25 @@
 
 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.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();
+    
     private ManageSieveHostSystem system;
 
     @Before
     public void setUp() throws Exception {
-        Injector injector = Guice.createInjector(new CassandraModule());
+        Injector injector = Guice.createInjector(new CassandraModule(cassandraServer.getIp(), cassandraServer.getBindingPort()));
         system = injector.getInstance(ManageSieveHostSystem.class);
         system.beforeTest();
         super.setUp();

http://git-wip-us.apache.org/repos/asf/james-project/blob/a18a4488/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 2f883d3..a137f79 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
@@ -19,21 +19,25 @@
 
 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.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();
+    
     private ManageSieveHostSystem system;
 
     @Before
     public void setUp() throws Exception {
-        Injector injector = Guice.createInjector(new CassandraModule());
+        Injector injector = Guice.createInjector(new CassandraModule(cassandraServer.getIp(), cassandraServer.getBindingPort()));
         system = injector.getInstance(ManageSieveHostSystem.class);
         system.beforeTest();
         super.setUp();

http://git-wip-us.apache.org/repos/asf/james-project/blob/a18a4488/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 f2da260..24f02ee 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
@@ -19,21 +19,25 @@
 
 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.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();
+    
     private ManageSieveHostSystem system;
 
     @Before
     public void setUp() throws Exception {
-        Injector injector = Guice.createInjector(new CassandraModule());
+        Injector injector = Guice.createInjector(new CassandraModule(cassandraServer.getIp(), cassandraServer.getBindingPort()));
         system = injector.getInstance(ManageSieveHostSystem.class);
         system.beforeTest();
         super.setUp();

http://git-wip-us.apache.org/repos/asf/james-project/blob/a18a4488/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 6aa0753..7b9caac 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
@@ -19,21 +19,25 @@
 
 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.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();
+    
     private ManageSieveHostSystem system;
 
     @Before
     public void setUp() throws Exception {
-        Injector injector = Guice.createInjector(new CassandraModule());
+        Injector injector = Guice.createInjector(new CassandraModule(cassandraServer.getIp(), cassandraServer.getBindingPort()));
         system = injector.getInstance(ManageSieveHostSystem.class);
         system.beforeTest();
         super.setUp();

http://git-wip-us.apache.org/repos/asf/james-project/blob/a18a4488/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 97f5ac0..0571979 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
@@ -19,21 +19,25 @@
 
 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.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();
+    
     private ManageSieveHostSystem system;
 
     @Before
     public void setUp() throws Exception {
-        Injector injector = Guice.createInjector(new CassandraModule());
+        Injector injector = Guice.createInjector(new CassandraModule(cassandraServer.getIp(), cassandraServer.getBindingPort()));
         system = injector.getInstance(ManageSieveHostSystem.class);
         system.beforeTest();
         super.setUp();

http://git-wip-us.apache.org/repos/asf/james-project/blob/a18a4488/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 19d794b..92292a6 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
@@ -19,21 +19,25 @@
 
 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.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();
+    
     private ManageSieveHostSystem system;
 
     @Before
     public void setUp() throws Exception {
-        Injector injector = Guice.createInjector(new CassandraModule());
+        Injector injector = Guice.createInjector(new CassandraModule(cassandraServer.getIp(), cassandraServer.getBindingPort()));
         system = injector.getInstance(ManageSieveHostSystem.class);
         system.beforeTest();
         super.setUp();

http://git-wip-us.apache.org/repos/asf/james-project/blob/a18a4488/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 d63953d..c3b6512 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
@@ -19,20 +19,25 @@
 
 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.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();
+    
     private ManageSieveHostSystem system;
 
     @Before
     public void setUp() throws Exception {
-        Injector injector = Guice.createInjector(new CassandraModule());
+        Injector injector = Guice.createInjector(new CassandraModule(cassandraServer.getIp(), cassandraServer.getBindingPort()));
         system = injector.getInstance(ManageSieveHostSystem.class);
         system.beforeTest();
         super.setUp();

http://git-wip-us.apache.org/repos/asf/james-project/blob/a18a4488/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 6c22f05..cd0018d 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
@@ -19,22 +19,30 @@
 
 package org.apache.james.mpt.managesieve.cassandra;
 
+import org.apache.james.mpt.host.ManageSieveHostSystem;
+import org.apache.james.mpt.managesieve.cassandra.host.CassandraHostSystem;
+
 import com.google.inject.AbstractModule;
 import com.google.inject.Provides;
 import com.google.inject.Singleton;
-import org.apache.james.mpt.host.ManageSieveHostSystem;
-import org.apache.james.mpt.managesieve.cassandra.host.CassandraHostSystem;
 
 public class CassandraModule extends AbstractModule {
 
+    private final String cassandraHost;
+    private final int cassandraPort;
+
+    public CassandraModule(String cassandraHost, int cassandraPort) {
+        this.cassandraHost = cassandraHost;
+        this.cassandraPort = cassandraPort;
+    }
+    
     @Override
     protected void configure() {
-
     }
 
     @Provides
     @Singleton
     public ManageSieveHostSystem provideHostSystem() throws Exception {
-        return new CassandraHostSystem();
+        return new CassandraHostSystem(cassandraHost, cassandraPort);
     }
 }


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


[04/13] james-project git commit: JAMES-2133 Switch from cassandraunit to cassandra in docker

Posted by ma...@apache.org.
http://git-wip-us.apache.org/repos/asf/james-project/blob/a18a4488/server/container/guice/cassandra-guice/src/test/java/org/apache/james/JamesServerWithRetryConnectionTest.java
----------------------------------------------------------------------
diff --git a/server/container/guice/cassandra-guice/src/test/java/org/apache/james/JamesServerWithRetryConnectionTest.java b/server/container/guice/cassandra-guice/src/test/java/org/apache/james/JamesServerWithRetryConnectionTest.java
index ce18ad9..678dcc2 100644
--- a/server/container/guice/cassandra-guice/src/test/java/org/apache/james/JamesServerWithRetryConnectionTest.java
+++ b/server/container/guice/cassandra-guice/src/test/java/org/apache/james/JamesServerWithRetryConnectionTest.java
@@ -30,7 +30,6 @@ import java.util.concurrent.ExecutorService;
 import java.util.concurrent.Executors;
 import java.util.concurrent.TimeUnit;
 
-import org.apache.james.util.streams.SwarmGenericContainer;
 import org.junit.After;
 import org.junit.Before;
 import org.junit.Rule;
@@ -75,32 +74,36 @@ public class JamesServerWithRetryConnectionTest {
 
     @Test
     public void serverShouldRetryToConnectToCassandraWhenStartService() throws Exception {
-        jamesServer = cassandraJmapTestRule.jmapServer();
-        dockerCassandraRule.getCassandraContainer().stop();
+        jamesServer = cassandraJmapTestRule.jmapServer(dockerCassandraRule.getModule());
+        dockerCassandraRule.pause();
 
-        waitToStartContainer(WAITING_TIME, dockerCassandraRule.getCassandraContainer());
+        waitToStartContainer(WAITING_TIME, dockerCassandraRule::unpause);
 
         assertThatServerStartCorrectly();
     }
 
     @Test
     public void serverShouldRetryToConnectToElasticSearchWhenStartService() throws Exception {
-        jamesServer = cassandraJmapTestRule.jmapServer();
-        dockerElasticSearchRule.getElasticSearchContainer().stop();
+        jamesServer = cassandraJmapTestRule.jmapServer(dockerCassandraRule.getModule());
+        dockerElasticSearchRule.pause();
 
-        waitToStartContainer(WAITING_TIME, dockerElasticSearchRule.getElasticSearchContainer());
+        waitToStartContainer(WAITING_TIME, dockerElasticSearchRule::unpause);
 
         assertThatServerStartCorrectly();
     }
 
-    private void waitToStartContainer(long waitingTime, SwarmGenericContainer dockerContainer) {
+    interface StartAction {
+        void execute();
+    }
+    
+    private void waitToStartContainer(long waitingTime, StartAction action) {
         executorService.submit(() -> {
             try {
                 Thread.sleep(waitingTime);
             } catch (InterruptedException e) {
                 throw Throwables.propagate(e);
             }
-            dockerContainer.start();
+            action.execute();
         });
     }
 

http://git-wip-us.apache.org/repos/asf/james-project/blob/a18a4488/server/container/guice/cassandra-guice/src/test/java/org/apache/james/modules/CassandraJmapServerModule.java
----------------------------------------------------------------------
diff --git a/server/container/guice/cassandra-guice/src/test/java/org/apache/james/modules/CassandraJmapServerModule.java b/server/container/guice/cassandra-guice/src/test/java/org/apache/james/modules/CassandraJmapServerModule.java
index 5a61948..29434d5 100644
--- a/server/container/guice/cassandra-guice/src/test/java/org/apache/james/modules/CassandraJmapServerModule.java
+++ b/server/container/guice/cassandra-guice/src/test/java/org/apache/james/modules/CassandraJmapServerModule.java
@@ -25,7 +25,6 @@ import java.util.function.Supplier;
 import javax.inject.Singleton;
 
 import org.apache.james.backends.cassandra.CassandraCluster;
-import org.apache.james.backends.cassandra.EmbeddedCassandra;
 import org.apache.james.backends.es.EmbeddedElasticSearch;
 import org.apache.james.mailbox.extractor.TextExtractor;
 import org.apache.james.mailbox.store.extractor.DefaultTextExtractor;
@@ -34,22 +33,25 @@ import org.junit.rules.TemporaryFolder;
 import com.datastax.driver.core.Session;
 import com.google.inject.AbstractModule;
 import com.google.inject.Provides;
+import com.google.inject.name.Names;
 
 public class CassandraJmapServerModule extends AbstractModule {
 
     private static final int LIMIT_TO_3_MESSAGES = 3;
     private final Supplier<File> fileSupplier;
     private final EmbeddedElasticSearch embeddedElasticSearch;
-    private final EmbeddedCassandra cassandra;
+    private final String cassandraHost;
+    private final int cassandraPort;
 
-    public CassandraJmapServerModule(Supplier<File> fileSupplier, EmbeddedElasticSearch embeddedElasticSearch, EmbeddedCassandra cassandra) {
+    public CassandraJmapServerModule(Supplier<File> fileSupplier, EmbeddedElasticSearch embeddedElasticSearch, String cassandraHost, int cassandraPort) {
         this.fileSupplier = fileSupplier;
         this.embeddedElasticSearch = embeddedElasticSearch;
-        this.cassandra = cassandra;
+        this.cassandraHost = cassandraHost;
+        this.cassandraPort = cassandraPort;
     }
 
-    public CassandraJmapServerModule(TemporaryFolder temporaryFolder, EmbeddedElasticSearch embeddedElasticSearch, EmbeddedCassandra cassandra) {
-        this(temporaryFolder::getRoot, embeddedElasticSearch, cassandra);
+    public CassandraJmapServerModule(TemporaryFolder temporaryFolder, EmbeddedElasticSearch embeddedElasticSearch, String cassandraHost, int cassandraPort) {
+        this(temporaryFolder::getRoot, embeddedElasticSearch, cassandraHost, cassandraPort);
     }
 
 
@@ -59,7 +61,8 @@ public class CassandraJmapServerModule extends AbstractModule {
         install(new TestFilesystemModule(fileSupplier));
         install(new TestJMAPServerModule(LIMIT_TO_3_MESSAGES));
         install(binder -> binder.bind(TextExtractor.class).to(DefaultTextExtractor.class));
-        bind(EmbeddedCassandra.class).toInstance(cassandra);
+        install(binder -> binder.bindConstant().annotatedWith(Names.named("cassandraHost")).to(cassandraHost));
+        install(binder -> binder.bindConstant().annotatedWith(Names.named("cassandraPort")).to(cassandraPort));
     }
     
     @Provides

http://git-wip-us.apache.org/repos/asf/james-project/blob/a18a4488/server/container/guice/cassandra-guice/src/test/java/org/apache/james/modules/mailbox/CassandraSessionModuleTest.java
----------------------------------------------------------------------
diff --git a/server/container/guice/cassandra-guice/src/test/java/org/apache/james/modules/mailbox/CassandraSessionModuleTest.java b/server/container/guice/cassandra-guice/src/test/java/org/apache/james/modules/mailbox/CassandraSessionModuleTest.java
index 5ed9f0f..29c3853 100644
--- a/server/container/guice/cassandra-guice/src/test/java/org/apache/james/modules/mailbox/CassandraSessionModuleTest.java
+++ b/server/container/guice/cassandra-guice/src/test/java/org/apache/james/modules/mailbox/CassandraSessionModuleTest.java
@@ -23,7 +23,7 @@ import static org.assertj.core.api.Assertions.assertThat;
 
 import org.apache.commons.configuration.ConfigurationException;
 import org.apache.commons.configuration.PropertiesConfiguration;
-import org.apache.james.backends.cassandra.CassandraConfiguration;
+import org.apache.james.backends.cassandra.init.CassandraConfiguration;
 import org.junit.Before;
 import org.junit.Test;
 

http://git-wip-us.apache.org/repos/asf/james-project/blob/a18a4488/server/container/guice/cassandra-ldap-guice/pom.xml
----------------------------------------------------------------------
diff --git a/server/container/guice/cassandra-ldap-guice/pom.xml b/server/container/guice/cassandra-ldap-guice/pom.xml
index aa60944..1c1d96d 100644
--- a/server/container/guice/cassandra-ldap-guice/pom.xml
+++ b/server/container/guice/cassandra-ldap-guice/pom.xml
@@ -41,6 +41,12 @@
     <dependencies>
         <dependency>
             <groupId>${project.groupId}</groupId>
+            <artifactId>apache-james-backends-cassandra</artifactId>
+            <type>test-jar</type>
+            <scope>test</scope>
+        </dependency>
+        <dependency>
+            <groupId>${project.groupId}</groupId>
             <artifactId>apache-james-backends-es</artifactId>
             <type>test-jar</type>
             <scope>test</scope>
@@ -112,11 +118,6 @@
             <scope>test</scope>
         </dependency>
         <dependency>
-            <groupId>org.cassandraunit</groupId>
-            <artifactId>cassandra-unit</artifactId>
-            <scope>test</scope>
-        </dependency>
-        <dependency>
             <groupId>org.testcontainers</groupId>
             <artifactId>testcontainers</artifactId>
             <scope>test</scope>

http://git-wip-us.apache.org/repos/asf/james-project/blob/a18a4488/server/container/guice/cassandra-ldap-guice/src/test/java/org/apache/james/CassandraLdapJmapTestRule.java
----------------------------------------------------------------------
diff --git a/server/container/guice/cassandra-ldap-guice/src/test/java/org/apache/james/CassandraLdapJmapTestRule.java b/server/container/guice/cassandra-ldap-guice/src/test/java/org/apache/james/CassandraLdapJmapTestRule.java
index aa6233d..25a7dca 100644
--- a/server/container/guice/cassandra-ldap-guice/src/test/java/org/apache/james/CassandraLdapJmapTestRule.java
+++ b/server/container/guice/cassandra-ldap-guice/src/test/java/org/apache/james/CassandraLdapJmapTestRule.java
@@ -39,7 +39,7 @@ public class CassandraLdapJmapTestRule implements TestRule {
 
     public static CassandraLdapJmapTestRule defaultTestRule() {
         return new CassandraLdapJmapTestRule(
-            AggregateGuiceModuleTestRule.of(new EmbeddedElasticSearchRule(), new EmbeddedCassandraRule()));
+            AggregateGuiceModuleTestRule.of(new EmbeddedElasticSearchRule(), new DockerCassandraRule()));
     }
 
     private GuiceModuleTestRule guiceModuleTestRule;

http://git-wip-us.apache.org/repos/asf/james-project/blob/a18a4488/server/container/metrics/metrics-es-reporter/src/test/java/org/apache/james/metric/es/ESReporterTest.java
----------------------------------------------------------------------
diff --git a/server/container/metrics/metrics-es-reporter/src/test/java/org/apache/james/metric/es/ESReporterTest.java b/server/container/metrics/metrics-es-reporter/src/test/java/org/apache/james/metric/es/ESReporterTest.java
index 293c80d..2878e90 100644
--- a/server/container/metrics/metrics-es-reporter/src/test/java/org/apache/james/metric/es/ESReporterTest.java
+++ b/server/container/metrics/metrics-es-reporter/src/test/java/org/apache/james/metric/es/ESReporterTest.java
@@ -63,7 +63,7 @@ public class ESReporterTest {
 
     @Before
     public void setUp() {
-        clientProvider = ClientProviderImpl.forHost(esContainer.getIp(), ES_APPLICATIVE_PORT);
+        clientProvider = ClientProviderImpl.forHost(esContainer.getHostIp(), esContainer.getMappedPort(ES_APPLICATIVE_PORT));
         await().atMost(Duration.ONE_MINUTE)
             .until(() -> elasticSearchStarted(clientProvider));
 
@@ -72,7 +72,7 @@ public class ESReporterTest {
         esMetricReporter = new ESMetricReporter(
             ESReporterConfiguration.builder()
                 .enabled()
-                .onHost(esContainer.getIp(), ES_HTTP_PORT)
+                .onHost(esContainer.getHostIp(), esContainer.getMappedPort(ES_HTTP_PORT))
                 .onIndex(INDEX)
                 .periodInSecond(PERIOD_IN_SECOND)
                 .build(),

http://git-wip-us.apache.org/repos/asf/james-project/blob/a18a4488/server/container/util-java8/src/test/java/org/apache/james/util/streams/SwarmGenericContainer.java
----------------------------------------------------------------------
diff --git a/server/container/util-java8/src/test/java/org/apache/james/util/streams/SwarmGenericContainer.java b/server/container/util-java8/src/test/java/org/apache/james/util/streams/SwarmGenericContainer.java
index 2622ea8..8b50aa2 100644
--- a/server/container/util-java8/src/test/java/org/apache/james/util/streams/SwarmGenericContainer.java
+++ b/server/container/util-java8/src/test/java/org/apache/james/util/streams/SwarmGenericContainer.java
@@ -28,6 +28,7 @@ import org.junit.runner.Description;
 import org.junit.runners.model.Statement;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
+import org.testcontainers.DockerClientFactory;
 import org.testcontainers.containers.GenericContainer;
 import org.testcontainers.containers.wait.WaitStrategy;
 import org.testcontainers.images.builder.ImageFromDockerfile;
@@ -105,9 +106,25 @@ public class SwarmGenericContainer implements TestRule {
         container.stop();
     }
 
+    public void pause() {
+        DockerClientFactory.instance().client().pauseContainerCmd(container.getContainerInfo().getId());
+    }
+
+    public void unpause() {
+        DockerClientFactory.instance().client().unpauseContainerCmd(container.getContainerInfo().getId());
+    }
+
+    public Integer getMappedPort(int originalPort) {
+        return container.getMappedPort(originalPort);
+    }
+
     @SuppressWarnings("deprecation")
-    public String getIp() {
-        return getContainerInfo().getNetworkSettings().getIpAddress();
+    public String getContainerIp() {
+        return container.getContainerInfo().getNetworkSettings().getIpAddress();
+    }
+    
+    public String getHostIp() {
+        return container.getContainerIpAddress();
     }
 
     public InspectContainerResponse getContainerInfo() {

http://git-wip-us.apache.org/repos/asf/james-project/blob/a18a4488/server/data/data-cassandra/pom.xml
----------------------------------------------------------------------
diff --git a/server/data/data-cassandra/pom.xml b/server/data/data-cassandra/pom.xml
index 2b0b28d..85ee4e4 100644
--- a/server/data/data-cassandra/pom.xml
+++ b/server/data/data-cassandra/pom.xml
@@ -112,17 +112,12 @@
             <scope>test</scope>
         </dependency>
         <dependency>
-            <groupId>org.cassandraunit</groupId>
-            <artifactId>cassandra-unit</artifactId>
-            <scope>test</scope>
-        </dependency>
-        <dependency>
             <groupId>org.slf4j</groupId>
             <artifactId>slf4j-api</artifactId>
         </dependency>
         <dependency>
-            <groupId>org.slf4j</groupId>
-            <artifactId>slf4j-simple</artifactId>
+            <groupId>org.testcontainers</groupId>
+            <artifactId>testcontainers</artifactId>
             <scope>test</scope>
         </dependency>
     </dependencies>

http://git-wip-us.apache.org/repos/asf/james-project/blob/a18a4488/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 b710e4e..f5abd9f 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
@@ -20,16 +20,32 @@
 package org.apache.james.domainlist.cassandra;
 
 import org.apache.james.backends.cassandra.CassandraCluster;
+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.Before;
+import org.junit.ClassRule;
 
 public class CassandraDomainListTest extends AbstractDomainListTest {
 
+    @ClassRule public static DockerCassandraRule cassandraServer = new DockerCassandraRule();
+
     private CassandraCluster cassandra;
 
+    @Before
+    public void setUp() throws Exception {
+        cassandra = CassandraCluster.create(new CassandraDomainListModule(), cassandraServer.getIp(), cassandraServer.getBindingPort());
+        super.setUp();
+    }
+
+    @After
+    public void tearDown() {
+        cassandra.close();
+    }
+
     @Override
     protected DomainList createDomainList() {
-        cassandra = CassandraCluster.create(new CassandraDomainListModule());
         CassandraDomainList testee = new CassandraDomainList(getDNSServer("localhost"), cassandra.getConf());
         testee.setAutoDetect(false);
         testee.setAutoDetectIP(false);

http://git-wip-us.apache.org/repos/asf/james-project/blob/a18a4488/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 171dd71..a5b21d8 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
@@ -20,34 +20,34 @@ package org.apache.james.rrt.cassandra;
 
 import org.apache.commons.configuration.DefaultConfigurationBuilder;
 import org.apache.james.backends.cassandra.CassandraCluster;
+import org.apache.james.backends.cassandra.DockerCassandraRule;
 import org.apache.james.backends.cassandra.utils.CassandraUtils;
 import org.apache.james.rrt.api.RecipientRewriteTableException;
 import org.apache.james.rrt.lib.AbstractRecipientRewriteTable;
 import org.apache.james.rrt.lib.AbstractRecipientRewriteTableTest;
-
-import cucumber.api.java.After;
-import cucumber.api.java.Before;
+import org.junit.After;
+import org.junit.Before;
+import org.junit.ClassRule;
 
 public class CassandraRecipientRewriteTableTest extends AbstractRecipientRewriteTableTest {
 
+    @ClassRule public static DockerCassandraRule cassandraServer = new DockerCassandraRule();
+
     private CassandraCluster cassandra;
 
     @Before
-    @Override
     public void setUp() throws Exception {
-        cassandra = CassandraCluster.create(new CassandraRRTModule());
-        cassandra.ensureAllTables();
+        cassandra = CassandraCluster.create(new CassandraRRTModule(), cassandraServer.getIp(), cassandraServer.getBindingPort());
         super.setUp();
     }
 
     @After
-    @Override
     public void tearDown() throws Exception {
         super.tearDown();
-        cassandra.clearAllTables();
         cassandra.close();
     }
 
+
     @Override
     protected AbstractRecipientRewriteTable getRecipientRewriteTable() throws Exception {
         CassandraRecipientRewriteTable rrt = new CassandraRecipientRewriteTable(cassandra.getConf(), CassandraUtils.WITH_DEFAULT_CONFIGURATION);

http://git-wip-us.apache.org/repos/asf/james-project/blob/a18a4488/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 b3d1166..a1c8138 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,14 +39,12 @@ public class CassandraStepdefs {
 
     @Before
     public void setup() throws Throwable {
-        cassandra = CassandraCluster.create(new CassandraRRTModule());
-        cassandra.ensureAllTables();
+        cassandra = CassandraCluster.create(new CassandraRRTModule(), RewriteTablesTest.cassandraServer.getIp(), RewriteTablesTest.cassandraServer.getBindingPort());
         mainStepdefs.rewriteTable = getRecipientRewriteTable(); 
     }
 
     @After
     public void tearDown() {
-        cassandra.clearAllTables();
         cassandra.close();
     }
 

http://git-wip-us.apache.org/repos/asf/james-project/blob/a18a4488/server/data/data-cassandra/src/test/java/org/apache/james/rrt/cassandra/RewriteTablesTest.java
----------------------------------------------------------------------
diff --git a/server/data/data-cassandra/src/test/java/org/apache/james/rrt/cassandra/RewriteTablesTest.java b/server/data/data-cassandra/src/test/java/org/apache/james/rrt/cassandra/RewriteTablesTest.java
index 766ba86..392ff7e 100644
--- a/server/data/data-cassandra/src/test/java/org/apache/james/rrt/cassandra/RewriteTablesTest.java
+++ b/server/data/data-cassandra/src/test/java/org/apache/james/rrt/cassandra/RewriteTablesTest.java
@@ -18,6 +18,8 @@
  ****************************************************************/
 package org.apache.james.rrt.cassandra;
 
+import org.apache.james.backends.cassandra.DockerCassandraRule;
+import org.junit.ClassRule;
 import org.junit.runner.RunWith;
 
 import cucumber.api.CucumberOptions;
@@ -29,4 +31,6 @@ import cucumber.api.junit.Cucumber;
         glue = { "org.apache.james.rrt.lib", "org.apache.james.rrt.cassandra" }
     )
 public class RewriteTablesTest {
+    
+    @ClassRule public static DockerCassandraRule cassandraServer = new DockerCassandraRule();
 }

http://git-wip-us.apache.org/repos/asf/james-project/blob/a18a4488/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 d1c8beb..93ac85b 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
@@ -24,9 +24,11 @@ import static org.assertj.core.api.Assertions.assertThat;
 import java.util.Optional;
 
 import org.apache.james.backends.cassandra.CassandraCluster;
+import org.apache.james.backends.cassandra.DockerCassandraRule;
 import org.apache.james.sieve.cassandra.model.ActiveScriptInfo;
 import org.junit.After;
 import org.junit.Before;
+import org.junit.ClassRule;
 import org.junit.Test;
 
 public class CassandraActiveScriptDAOTest {
@@ -34,20 +36,20 @@ public class CassandraActiveScriptDAOTest {
     public static final String USER = "user";
     public static final String SCRIPT_NAME = "sciptName";
     public static final String NEW_SCRIPT_NAME = "newScriptName";
+
+    @ClassRule public static DockerCassandraRule cassandraServer = new DockerCassandraRule();
     
     private CassandraCluster cassandra;
     private CassandraActiveScriptDAO activeScriptDAO;
 
     @Before
-    public void setUp() {
-        cassandra = CassandraCluster.create(new CassandraSieveRepositoryModule());
-        cassandra.ensureAllTables();
+    public void setUp() throws Exception {
+        cassandra = CassandraCluster.create(new CassandraSieveRepositoryModule(), cassandraServer.getIp(), cassandraServer.getBindingPort());
         activeScriptDAO = new CassandraActiveScriptDAO(cassandra.getConf());
     }
 
     @After
     public void tearDown() {
-        cassandra.clearAllTables();
         cassandra.close();
     }
 

http://git-wip-us.apache.org/repos/asf/james-project/blob/a18a4488/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 f665ddd..95750b9 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
@@ -25,10 +25,12 @@ import java.util.List;
 import java.util.Optional;
 
 import org.apache.james.backends.cassandra.CassandraCluster;
+import org.apache.james.backends.cassandra.DockerCassandraRule;
 import org.apache.james.sieve.cassandra.model.Script;
 import org.apache.james.sieverepository.api.ScriptSummary;
 import org.junit.After;
 import org.junit.Before;
+import org.junit.ClassRule;
 import org.junit.Test;
 
 public class CassandraSieveDAOTest {
@@ -54,24 +56,24 @@ public class CassandraSieveDAOTest {
         .copyOf(SCRIPT)
         .content("newContent")
         .build();
+
+    @ClassRule public static DockerCassandraRule cassandraServer = new DockerCassandraRule();
     
     private CassandraCluster cassandra;
     private CassandraSieveDAO sieveDAO;
 
     @Before
-    public void setUp() {
-        cassandra = CassandraCluster.create(new CassandraSieveRepositoryModule());
-        cassandra.ensureAllTables();
+    public void setUp() throws Exception {
+        cassandra = CassandraCluster.create(new CassandraSieveRepositoryModule(), cassandraServer.getIp(), cassandraServer.getBindingPort());
         sieveDAO = new CassandraSieveDAO(cassandra.getConf());
     }
 
     @After
     public void tearDown() {
-        cassandra.clearAllTables();
         cassandra.close();
     }
-
-    @Test
+    
+     @Test
     public void getScriptShouldReturnEmptyByDefault() {
         assertThat(sieveDAO.getScript(USER, SCRIPT_NAME).join().isPresent())
             .isFalse();

http://git-wip-us.apache.org/repos/asf/james-project/blob/a18a4488/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 e3ff18a..49de699 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
@@ -24,26 +24,30 @@ import static org.assertj.core.api.Assertions.assertThat;
 import java.util.Optional;
 
 import org.apache.james.backends.cassandra.CassandraCluster;
+import org.apache.james.backends.cassandra.DockerCassandraRule;
 import org.junit.After;
 import org.junit.Before;
+import org.junit.ClassRule;
 import org.junit.Test;
 
 public class CassandraSieveQuotaDAOTest {
 
     public static final String USER = "user";
+
+    
+    @ClassRule public static DockerCassandraRule cassandraServer = new DockerCassandraRule();
+    
     private CassandraCluster cassandra;
     private CassandraSieveQuotaDAO sieveQuotaDAO;
 
     @Before
-    public void setUp() {
-        cassandra = CassandraCluster.create(new CassandraSieveRepositoryModule());
-        cassandra.ensureAllTables();
+    public void setUp() throws Exception {
+        cassandra = CassandraCluster.create(new CassandraSieveRepositoryModule(), cassandraServer.getIp(), cassandraServer.getBindingPort());
         sieveQuotaDAO = new CassandraSieveQuotaDAO(cassandra.getConf());
     }
 
     @After
     public void tearDown() {
-        cassandra.clearAllTables();
         cassandra.close();
     }
 

http://git-wip-us.apache.org/repos/asf/james-project/blob/a18a4488/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 8d37f63..8f039fb 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
@@ -20,12 +20,31 @@
 package org.apache.james.sieve.cassandra;
 
 import org.apache.james.backends.cassandra.CassandraCluster;
+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.Before;
+import org.junit.ClassRule;
 
 public class CassandraSieveRepositoryTest extends AbstractSieveRepositoryTest {
-    private CassandraCluster cassandra = CassandraCluster.create(new CassandraSieveRepositoryModule());
+    
 
+    @ClassRule public static DockerCassandraRule cassandraServer = new DockerCassandraRule();
+    
+    private CassandraCluster cassandra;
+
+    @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();
+    }
+    
     @Override
     protected SieveRepository createSieveRepository() throws Exception {
         return new CassandraSieveRepository(
@@ -33,10 +52,4 @@ public class CassandraSieveRepositoryTest extends AbstractSieveRepositoryTest {
             new CassandraSieveQuotaDAO(cassandra.getConf()),
             new CassandraActiveScriptDAO(cassandra.getConf()));
     }
-
-    @Override
-    protected void cleanUp() throws Exception {
-        cassandra.clearAllTables();
-        cassandra.close();
-    }
 }
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/james-project/blob/a18a4488/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 326bc6b..7ac7e55 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
@@ -20,23 +20,34 @@
 package org.apache.james.user.cassandra;
 
 import org.apache.james.backends.cassandra.CassandraCluster;
+import org.apache.james.backends.cassandra.DockerCassandraRule;
 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.Before;
+import org.junit.ClassRule;
 
 public class CassandraUsersRepositoryTest extends AbstractUsersRepositoryTest {
 
+    @ClassRule public static DockerCassandraRule cassandraServer = new DockerCassandraRule();
+    
     private CassandraCluster cassandra;
 
+    @Before
+    public void setUp() throws Exception {
+        cassandra = CassandraCluster.create(new CassandraUsersRepositoryModule(), cassandraServer.getIp(), cassandraServer.getBindingPort());
+        super.setUp();
+    }
+    
     @After
-    public void tearDown() {
-        cassandra.clearAllTables();
+    public void tearDown() throws Exception {
+        super.tearDown();
+        cassandra.close();
     }
 
     @Override
     protected AbstractUsersRepository getUsersRepository() throws Exception {
-        cassandra = CassandraCluster.create(new CassandraUsersRepositoryModule());
         return new CassandraUsersRepository(cassandra.getConf(), CassandraUtils.WITH_DEFAULT_CONFIGURATION);
     }
 }

http://git-wip-us.apache.org/repos/asf/james-project/blob/a18a4488/server/data/data-file/src/test/java/org/apache/james/rrt/file/XMLRecipientRewriteTableTest.java
----------------------------------------------------------------------
diff --git a/server/data/data-file/src/test/java/org/apache/james/rrt/file/XMLRecipientRewriteTableTest.java b/server/data/data-file/src/test/java/org/apache/james/rrt/file/XMLRecipientRewriteTableTest.java
index b5a5771..07d7f79 100644
--- a/server/data/data-file/src/test/java/org/apache/james/rrt/file/XMLRecipientRewriteTableTest.java
+++ b/server/data/data-file/src/test/java/org/apache/james/rrt/file/XMLRecipientRewriteTableTest.java
@@ -22,6 +22,7 @@ import java.util.ArrayList;
 import java.util.List;
 import java.util.Optional;
 
+import org.apache.commons.configuration.DefaultConfigurationBuilder;
 import org.apache.james.rrt.api.RecipientRewriteTable;
 import org.apache.james.rrt.api.RecipientRewriteTableException;
 import org.apache.james.rrt.lib.AbstractRecipientRewriteTable;
@@ -30,7 +31,7 @@ import org.apache.james.rrt.lib.MappingImpl;
 import org.apache.james.rrt.lib.Mappings;
 import org.apache.james.rrt.lib.MappingsImpl;
 import org.apache.james.rrt.lib.MappingsImpl.Builder;
-import org.apache.commons.configuration.DefaultConfigurationBuilder;
+import org.junit.After;
 import org.junit.Before;
 import org.junit.Ignore;
 import org.junit.Test;
@@ -43,12 +44,17 @@ public class XMLRecipientRewriteTableTest extends AbstractRecipientRewriteTableT
     private final DefaultConfigurationBuilder defaultConfiguration = new DefaultConfigurationBuilder();
 
     @Before
-    @Override
     public void setUp() throws Exception {
         defaultConfiguration.setDelimiterParsingDisabled(true);
         super.setUp();
     }
 
+    @After
+    public void tearDown() throws Exception {
+        super.tearDown();
+    }
+
+
     @Override
     protected AbstractRecipientRewriteTable getRecipientRewriteTable() throws Exception {
         return new XMLRecipientRewriteTable();

http://git-wip-us.apache.org/repos/asf/james-project/blob/a18a4488/server/data/data-file/src/test/java/org/apache/james/sieverepository/file/SieveFileRepositoryTest.java
----------------------------------------------------------------------
diff --git a/server/data/data-file/src/test/java/org/apache/james/sieverepository/file/SieveFileRepositoryTest.java b/server/data/data-file/src/test/java/org/apache/james/sieverepository/file/SieveFileRepositoryTest.java
index f2a7daf..fa92742 100644
--- a/server/data/data-file/src/test/java/org/apache/james/sieverepository/file/SieveFileRepositoryTest.java
+++ b/server/data/data-file/src/test/java/org/apache/james/sieverepository/file/SieveFileRepositoryTest.java
@@ -6,6 +6,8 @@ import org.apache.commons.io.FileUtils;
 import org.apache.james.filesystem.api.FileSystem;
 import org.apache.james.sieverepository.api.SieveRepository;
 import org.apache.james.sieverepository.lib.AbstractSieveRepositoryTest;
+import org.junit.After;
+import org.junit.Before;
 
 import java.io.File;
 import java.io.FileInputStream;
@@ -17,9 +19,10 @@ public class SieveFileRepositoryTest extends AbstractSieveRepositoryTest {
 
     private static final String SIEVE_ROOT = FileSystem.FILE_PROTOCOL + "sieve";
 
-    private final FileSystem fileSystem;
+    private FileSystem fileSystem;
 
-    public SieveFileRepositoryTest() {
+    @Before
+    public void setUp() throws Exception {
         this.fileSystem = new FileSystem() {
             public File getBasedir() throws FileNotFoundException {
                 return new File(System.getProperty("java.io.tmpdir"));
@@ -31,6 +34,7 @@ public class SieveFileRepositoryTest extends AbstractSieveRepositoryTest {
                 return new File(getBasedir(), fileURL.substring(FileSystem.FILE_PROTOCOL.length()));
             }
         };
+        super.setUp();
     }
 
     @Override
@@ -38,8 +42,8 @@ public class SieveFileRepositoryTest extends AbstractSieveRepositoryTest {
         return new SieveFileRepository(fileSystem);
     }
 
-    @Override
-    protected void cleanUp() throws Exception {
+    @After
+    public void tearDown() throws Exception {
         File root = fileSystem.getFile(SIEVE_ROOT);
         // Remove files from the previous test, if any
         if (root.exists()) {

http://git-wip-us.apache.org/repos/asf/james-project/blob/a18a4488/server/data/data-hbase/src/test/java/org/apache/james/domainlist/hbase/HBaseDomainListTest.java
----------------------------------------------------------------------
diff --git a/server/data/data-hbase/src/test/java/org/apache/james/domainlist/hbase/HBaseDomainListTest.java b/server/data/data-hbase/src/test/java/org/apache/james/domainlist/hbase/HBaseDomainListTest.java
index e78ba41..2df0de2 100644
--- a/server/data/data-hbase/src/test/java/org/apache/james/domainlist/hbase/HBaseDomainListTest.java
+++ b/server/data/data-hbase/src/test/java/org/apache/james/domainlist/hbase/HBaseDomainListTest.java
@@ -25,6 +25,8 @@ import org.apache.james.domainlist.api.DomainListException;
 import org.apache.james.domainlist.lib.AbstractDomainListTest;
 import org.apache.james.mailbox.hbase.HBaseClusterSingleton;
 import org.apache.james.system.hbase.TablePool;
+import org.junit.After;
+import org.junit.Before;
 import org.junit.BeforeClass;
 import org.junit.Ignore;
 import org.junit.Test;
@@ -44,6 +46,19 @@ public class HBaseDomainListTest extends AbstractDomainListTest {
         TablePool.getInstance(cluster.getConf());
     }
 
+    @Before
+    public void setUp() throws Exception {
+        super.setUp();
+    }
+    
+    @After
+    public void tearDown() throws DomainListException {
+        DomainList domainList = createDomainList();
+        for (String domain: domainList.getDomains()) {
+            domainList.removeDomain(domain);
+        }
+    }
+
     /**
      * @see org.apache.james.domainlist.lib.AbstractDomainListTest#createDomainList()
      */

http://git-wip-us.apache.org/repos/asf/james-project/blob/a18a4488/server/data/data-hbase/src/test/java/org/apache/james/rrt/hbase/HBaseRecipientRewriteTableTest.java
----------------------------------------------------------------------
diff --git a/server/data/data-hbase/src/test/java/org/apache/james/rrt/hbase/HBaseRecipientRewriteTableTest.java b/server/data/data-hbase/src/test/java/org/apache/james/rrt/hbase/HBaseRecipientRewriteTableTest.java
index e8769ca..acfa754 100644
--- a/server/data/data-hbase/src/test/java/org/apache/james/rrt/hbase/HBaseRecipientRewriteTableTest.java
+++ b/server/data/data-hbase/src/test/java/org/apache/james/rrt/hbase/HBaseRecipientRewriteTableTest.java
@@ -18,14 +18,13 @@
  ****************************************************************/
 package org.apache.james.rrt.hbase;
 
-import java.io.IOException;
-
 import org.apache.commons.configuration.DefaultConfigurationBuilder;
 import org.apache.james.mailbox.hbase.HBaseClusterSingleton;
 import org.apache.james.rrt.api.RecipientRewriteTableException;
 import org.apache.james.rrt.lib.AbstractRecipientRewriteTable;
 import org.apache.james.rrt.lib.AbstractRecipientRewriteTableTest;
 import org.apache.james.system.hbase.TablePool;
+import org.junit.After;
 import org.junit.Before;
 
 /**
@@ -39,10 +38,16 @@ public class HBaseRecipientRewriteTableTest extends AbstractRecipientRewriteTabl
     private static final HBaseClusterSingleton cluster = HBaseClusterSingleton.build();
 
     @Before
-    public void setMeUp() throws IOException {
+    public void setMeUp() throws Exception {
         TablePool.getInstance(cluster.getConf());
+        super.setUp();
     }
 
+    @After
+    public void tearDown() throws Exception {
+        super.tearDown();
+    }
+    
     /**
      * @see org.apache.james.rrt.lib.AbstractRecipientRewriteTableTest#getRecipientRewriteTable()
      */

http://git-wip-us.apache.org/repos/asf/james-project/blob/a18a4488/server/data/data-jdbc/src/test/java/org/apache/james/mailrepository/jdbc/JDBCMailRepositoryTest.java
----------------------------------------------------------------------
diff --git a/server/data/data-jdbc/src/test/java/org/apache/james/mailrepository/jdbc/JDBCMailRepositoryTest.java b/server/data/data-jdbc/src/test/java/org/apache/james/mailrepository/jdbc/JDBCMailRepositoryTest.java
index 766df10..13a42ce 100644
--- a/server/data/data-jdbc/src/test/java/org/apache/james/mailrepository/jdbc/JDBCMailRepositoryTest.java
+++ b/server/data/data-jdbc/src/test/java/org/apache/james/mailrepository/jdbc/JDBCMailRepositoryTest.java
@@ -30,12 +30,6 @@ import org.apache.james.mailrepository.api.MailRepository;
 
 public class JDBCMailRepositoryTest extends AbstractMailRepositoryTest {
 
-    /**
-     * @return
-     * @throws ServiceException
-     * @throws ConfigurationException
-     * @throws Exception
-     */
     @Override
     protected MailRepository getMailRepository() throws Exception {
         MockFileSystem fs = new MockFileSystem();

http://git-wip-us.apache.org/repos/asf/james-project/blob/a18a4488/server/data/data-jdbc/src/test/java/org/apache/james/rrt/jdbc/JDBCRecipientRewriteTableTest.java
----------------------------------------------------------------------
diff --git a/server/data/data-jdbc/src/test/java/org/apache/james/rrt/jdbc/JDBCRecipientRewriteTableTest.java b/server/data/data-jdbc/src/test/java/org/apache/james/rrt/jdbc/JDBCRecipientRewriteTableTest.java
index bd5d614..b7c0fc3 100644
--- a/server/data/data-jdbc/src/test/java/org/apache/james/rrt/jdbc/JDBCRecipientRewriteTableTest.java
+++ b/server/data/data-jdbc/src/test/java/org/apache/james/rrt/jdbc/JDBCRecipientRewriteTableTest.java
@@ -25,12 +25,25 @@ import org.apache.james.filesystem.api.mock.MockFileSystem;
 import org.apache.james.rrt.api.RecipientRewriteTableException;
 import org.apache.james.rrt.lib.AbstractRecipientRewriteTable;
 import org.apache.james.rrt.lib.AbstractRecipientRewriteTableTest;
+import org.junit.After;
+import org.junit.Before;
 
 /**
  * Test the JDBC Virtual User Table implementation.
  */
 public class JDBCRecipientRewriteTableTest extends AbstractRecipientRewriteTableTest {
 
+    @Before
+    public void setUp() throws Exception {
+        super.setUp();
+    }
+
+    @After
+    public void tearDown() throws Exception {
+        super.tearDown();
+    }
+
+
     /**
      * @see org.apache.james.rrt.lib.AbstractRecipientRewriteTableTest#getRecipientRewriteTable()
      */

http://git-wip-us.apache.org/repos/asf/james-project/blob/a18a4488/server/data/data-jdbc/src/test/java/org/apache/james/user/jdbc/DefaultUsersJdbcRepositoryTest.java
----------------------------------------------------------------------
diff --git a/server/data/data-jdbc/src/test/java/org/apache/james/user/jdbc/DefaultUsersJdbcRepositoryTest.java b/server/data/data-jdbc/src/test/java/org/apache/james/user/jdbc/DefaultUsersJdbcRepositoryTest.java
index 90935d5..5c868c1 100644
--- a/server/data/data-jdbc/src/test/java/org/apache/james/user/jdbc/DefaultUsersJdbcRepositoryTest.java
+++ b/server/data/data-jdbc/src/test/java/org/apache/james/user/jdbc/DefaultUsersJdbcRepositoryTest.java
@@ -30,12 +30,24 @@ import org.apache.james.filesystem.api.mock.MockFileSystem;
 import org.apache.james.lifecycle.api.LifecycleUtil;
 import org.apache.james.user.api.UsersRepositoryException;
 import org.apache.james.user.lib.AbstractUsersRepository;
+import org.junit.After;
+import org.junit.Before;
 
 /**
  * Test basic behaviors of UsersFileRepository
  */
 public class DefaultUsersJdbcRepositoryTest extends AbstractUsersJdbcRepositoryTest {
 
+    @Before
+    public void setUp() throws Exception {
+        super.setUp();
+    }
+
+    @After
+    public void tearDown() throws Exception {
+        super.tearDown();
+    }
+
     /**
      * Create the repository to be tested.
      * 

http://git-wip-us.apache.org/repos/asf/james-project/blob/a18a4488/server/data/data-jdbc/src/test/java/org/apache/james/user/jdbc/JamesUsersJdbcRepositoryTest.java
----------------------------------------------------------------------
diff --git a/server/data/data-jdbc/src/test/java/org/apache/james/user/jdbc/JamesUsersJdbcRepositoryTest.java b/server/data/data-jdbc/src/test/java/org/apache/james/user/jdbc/JamesUsersJdbcRepositoryTest.java
index 1e69cb8..c04a713 100644
--- a/server/data/data-jdbc/src/test/java/org/apache/james/user/jdbc/JamesUsersJdbcRepositoryTest.java
+++ b/server/data/data-jdbc/src/test/java/org/apache/james/user/jdbc/JamesUsersJdbcRepositoryTest.java
@@ -30,12 +30,25 @@ import org.apache.james.filesystem.api.mock.MockFileSystem;
 import org.apache.james.lifecycle.api.LifecycleUtil;
 import org.apache.james.user.api.UsersRepositoryException;
 import org.apache.james.user.lib.AbstractUsersRepository;
+import org.junit.After;
+import org.junit.Before;
 
 /**
  * Test basic behaviors of UsersFileRepository
  */
 public class JamesUsersJdbcRepositoryTest extends AbstractUsersJdbcRepositoryTest {
 
+    @Before
+    public void setUp() throws Exception {
+        super.setUp();
+    }
+
+    @After
+    public void tearDown() throws Exception {
+        super.tearDown();
+    }
+
+
     /**
      * Create the repository to be tested.
      *

http://git-wip-us.apache.org/repos/asf/james-project/blob/a18a4488/server/data/data-jmap-cassandra/pom.xml
----------------------------------------------------------------------
diff --git a/server/data/data-jmap-cassandra/pom.xml b/server/data/data-jmap-cassandra/pom.xml
index 93e89b3..6aa4e01 100644
--- a/server/data/data-jmap-cassandra/pom.xml
+++ b/server/data/data-jmap-cassandra/pom.xml
@@ -78,11 +78,6 @@
             <scope>test</scope>
         </dependency>
         <dependency>
-            <groupId>org.cassandraunit</groupId>
-            <artifactId>cassandra-unit</artifactId>
-            <scope>test</scope>
-        </dependency>
-        <dependency>
             <groupId>org.mockito</groupId>
             <artifactId>mockito-core</artifactId>
             <scope>test</scope>
@@ -91,6 +86,11 @@
             <groupId>org.slf4j</groupId>
             <artifactId>slf4j-api</artifactId>
         </dependency>
+        <dependency>
+            <groupId>org.testcontainers</groupId>
+            <artifactId>testcontainers</artifactId>
+            <scope>test</scope>
+        </dependency>
     </dependencies>
 
     <build>

http://git-wip-us.apache.org/repos/asf/james-project/blob/a18a4488/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 da5f421..a465a42 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
@@ -20,21 +20,35 @@
 package org.apache.james.jmap.cassandra.access;
 
 import org.apache.james.backends.cassandra.CassandraCluster;
+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.Before;
+import org.junit.ClassRule;
 
 public class CassandraAccessTokenRepositoryTest extends AccessTokenRepositoryTest {
-    private static final CassandraCluster CLUSTER = CassandraCluster.create(new CassandraAccessModule());
+    
 
+    @ClassRule public static DockerCassandraRule cassandraServer = new DockerCassandraRule();
+    
+    private CassandraCluster cassandra;
+
+    @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();
+    }
+    
     @Override
     protected AccessTokenRepository provideAccessTokenRepository() {
         return new CassandraAccessTokenRepository(
-            new CassandraAccessTokenDAO(CLUSTER.getConf(), AccessTokenRepositoryTest.TTL_IN_MS));
+            new CassandraAccessTokenDAO(cassandra.getConf(), AccessTokenRepositoryTest.TTL_IN_MS));
     }
 
-    @After
-    public void tearDown() {
-        CLUSTER.clearAllTables();
-   }
 }

http://git-wip-us.apache.org/repos/asf/james-project/blob/a18a4488/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 f09e276..1ef9edf 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
@@ -20,23 +20,34 @@
 package org.apache.james.jmap.cassandra.vacation;
 
 import org.apache.james.backends.cassandra.CassandraCluster;
+import org.apache.james.backends.cassandra.DockerCassandraRule;
 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.Before;
+import org.junit.ClassRule;
 
 public class CassandraNotificationRegistryTest extends AbstractNotificationRegistryTest {
 
+    @ClassRule public static DockerCassandraRule cassandraServer = new DockerCassandraRule();
+    
     private CassandraCluster cassandra;
 
-    @Override
-    protected NotificationRegistry createNotificationRegistry(ZonedDateTimeProvider zonedDateTimeProvider) {
-        cassandra = CassandraCluster.create(new CassandraNotificationRegistryModule());
-        return new CassandraNotificationRegistry(zonedDateTimeProvider, new CassandraNotificationRegistryDAO(cassandra.getConf()));
+    @Before
+    public void setUp() throws Exception {
+        cassandra = CassandraCluster.create(new CassandraNotificationRegistryModule(), cassandraServer.getIp(), cassandraServer.getBindingPort());
+        super.setUp();
     }
 
     @After
     public void tearDown() {
-        cassandra.clearAllTables();
+        cassandra.close();
+    }
+    
+    @Override
+    protected NotificationRegistry createNotificationRegistry(ZonedDateTimeProvider zonedDateTimeProvider) {
+        return new CassandraNotificationRegistry(zonedDateTimeProvider, new CassandraNotificationRegistryDAO(cassandra.getConf()));
     }
+
 }

http://git-wip-us.apache.org/repos/asf/james-project/blob/a18a4488/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 f45f020..788790b 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
@@ -20,24 +20,36 @@
 package org.apache.james.jmap.cassandra.vacation;
 
 import org.apache.james.backends.cassandra.CassandraCluster;
+import org.apache.james.backends.cassandra.DockerCassandraRule;
 import org.apache.james.backends.cassandra.init.CassandraModuleComposite;
 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.Before;
+import org.junit.ClassRule;
 
 public class CassandraVacationRepositoryTest extends AbstractVacationRepositoryTest {
 
+    @ClassRule public static DockerCassandraRule cassandraServer = new DockerCassandraRule();
+    
     private CassandraCluster cassandra;
 
-    @Override
-    protected VacationRepository createVacationRepository() {
-        cassandra = CassandraCluster.create(new CassandraModuleComposite(new CassandraVacationModule(), new CassandraZonedDateTimeModule()));
-        return new CassandraVacationRepository(new CassandraVacationDAO(cassandra.getConf(), cassandra.getTypesProvider()));
+    @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.clearAllTables();
+        cassandra.close();
+    }
+    
+    @Override
+    protected VacationRepository createVacationRepository() {
+        return new CassandraVacationRepository(new CassandraVacationDAO(cassandra.getConf(), cassandra.getTypesProvider()));
     }
+
 }

http://git-wip-us.apache.org/repos/asf/james-project/blob/a18a4488/server/data/data-jmap/src/test/java/org/apache/james/jmap/api/access/AccessTokenRepositoryTest.java
----------------------------------------------------------------------
diff --git a/server/data/data-jmap/src/test/java/org/apache/james/jmap/api/access/AccessTokenRepositoryTest.java b/server/data/data-jmap/src/test/java/org/apache/james/jmap/api/access/AccessTokenRepositoryTest.java
index b7f6c32..d8fa18d 100644
--- a/server/data/data-jmap/src/test/java/org/apache/james/jmap/api/access/AccessTokenRepositoryTest.java
+++ b/server/data/data-jmap/src/test/java/org/apache/james/jmap/api/access/AccessTokenRepositoryTest.java
@@ -25,7 +25,6 @@ import static org.assertj.core.api.Assertions.assertThatThrownBy;
 import java.util.concurrent.CompletionException;
 
 import org.apache.james.jmap.api.access.exceptions.InvalidAccessToken;
-import org.junit.Before;
 import org.junit.Test;
 
 public abstract class AccessTokenRepositoryTest {
@@ -38,8 +37,7 @@ public abstract class AccessTokenRepositoryTest {
 
     protected abstract AccessTokenRepository provideAccessTokenRepository();
 
-    @Before
-    public final void setUp() {
+    public void setUp() throws Exception {
         this.accessTokenRepository = provideAccessTokenRepository();
     }
 

http://git-wip-us.apache.org/repos/asf/james-project/blob/a18a4488/server/data/data-jmap/src/test/java/org/apache/james/jmap/api/vacation/AbstractVacationRepositoryTest.java
----------------------------------------------------------------------
diff --git a/server/data/data-jmap/src/test/java/org/apache/james/jmap/api/vacation/AbstractVacationRepositoryTest.java b/server/data/data-jmap/src/test/java/org/apache/james/jmap/api/vacation/AbstractVacationRepositoryTest.java
index 3b72f18..71340ff 100644
--- a/server/data/data-jmap/src/test/java/org/apache/james/jmap/api/vacation/AbstractVacationRepositoryTest.java
+++ b/server/data/data-jmap/src/test/java/org/apache/james/jmap/api/vacation/AbstractVacationRepositoryTest.java
@@ -50,7 +50,7 @@ public abstract class AbstractVacationRepositoryTest {
     protected abstract VacationRepository createVacationRepository();
 
     @Before
-    public void setUp() {
+    public void setUp() throws Exception {
         vacationRepository = createVacationRepository();
     }
 

http://git-wip-us.apache.org/repos/asf/james-project/blob/a18a4488/server/data/data-jmap/src/test/java/org/apache/james/jmap/memory/access/MemoryAccessTokenRepositoryTest.java
----------------------------------------------------------------------
diff --git a/server/data/data-jmap/src/test/java/org/apache/james/jmap/memory/access/MemoryAccessTokenRepositoryTest.java b/server/data/data-jmap/src/test/java/org/apache/james/jmap/memory/access/MemoryAccessTokenRepositoryTest.java
index 6cb063a..9c32627 100644
--- a/server/data/data-jmap/src/test/java/org/apache/james/jmap/memory/access/MemoryAccessTokenRepositoryTest.java
+++ b/server/data/data-jmap/src/test/java/org/apache/james/jmap/memory/access/MemoryAccessTokenRepositoryTest.java
@@ -21,8 +21,15 @@ package org.apache.james.jmap.memory.access;
 
 import org.apache.james.jmap.api.access.AccessTokenRepository;
 import org.apache.james.jmap.api.access.AccessTokenRepositoryTest;
+import org.junit.Before;
 
 public class MemoryAccessTokenRepositoryTest extends AccessTokenRepositoryTest {
+    
+    @Before
+    public void setUp() throws Exception {
+        super.setUp();
+    }
+    
     @Override
     protected AccessTokenRepository provideAccessTokenRepository() {
         return new MemoryAccessTokenRepository(AccessTokenRepositoryTest.TTL_IN_MS);

http://git-wip-us.apache.org/repos/asf/james-project/blob/a18a4488/server/data/data-jpa/src/test/java/org/apache/james/domainlist/jpa/JPADomainListTest.java
----------------------------------------------------------------------
diff --git a/server/data/data-jpa/src/test/java/org/apache/james/domainlist/jpa/JPADomainListTest.java b/server/data/data-jpa/src/test/java/org/apache/james/domainlist/jpa/JPADomainListTest.java
index 04e8c61..57694af 100644
--- a/server/data/data-jpa/src/test/java/org/apache/james/domainlist/jpa/JPADomainListTest.java
+++ b/server/data/data-jpa/src/test/java/org/apache/james/domainlist/jpa/JPADomainListTest.java
@@ -20,8 +20,11 @@ package org.apache.james.domainlist.jpa;
 
 import org.apache.james.backends.jpa.JpaTestCluster;
 import org.apache.james.domainlist.api.DomainList;
+import org.apache.james.domainlist.api.DomainListException;
 import org.apache.james.domainlist.jpa.model.JPADomain;
 import org.apache.james.domainlist.lib.AbstractDomainListTest;
+import org.junit.After;
+import org.junit.Before;
 
 /**
  * Test the JPA implementation of the DomainList.
@@ -30,6 +33,19 @@ public class JPADomainListTest extends AbstractDomainListTest {
 
     private static final JpaTestCluster JPA_TEST_CLUSTER = JpaTestCluster.create(JPADomain.class);
 
+    @Before
+    public void setUp() throws Exception {
+        super.setUp();
+    }
+
+    @After
+    public void tearDown() throws DomainListException {
+        DomainList domainList = createDomainList();
+        for (String domain: domainList.getDomains()) {
+            domainList.removeDomain(domain);
+        }
+    }
+
     @Override
     protected DomainList createDomainList() {
         JPADomainList jpaDomainList = new JPADomainList(getDNSServer("localhost"),

http://git-wip-us.apache.org/repos/asf/james-project/blob/a18a4488/server/data/data-jpa/src/test/java/org/apache/james/rrt/jpa/JPARecipientRewriteTableTest.java
----------------------------------------------------------------------
diff --git a/server/data/data-jpa/src/test/java/org/apache/james/rrt/jpa/JPARecipientRewriteTableTest.java b/server/data/data-jpa/src/test/java/org/apache/james/rrt/jpa/JPARecipientRewriteTableTest.java
index 5b49a8a..523356a 100644
--- a/server/data/data-jpa/src/test/java/org/apache/james/rrt/jpa/JPARecipientRewriteTableTest.java
+++ b/server/data/data-jpa/src/test/java/org/apache/james/rrt/jpa/JPARecipientRewriteTableTest.java
@@ -24,6 +24,8 @@ import org.apache.james.rrt.api.RecipientRewriteTableException;
 import org.apache.james.rrt.jpa.model.JPARecipientRewrite;
 import org.apache.james.rrt.lib.AbstractRecipientRewriteTable;
 import org.apache.james.rrt.lib.AbstractRecipientRewriteTableTest;
+import org.junit.After;
+import org.junit.Before;
 
 /**
  * Test the JPA Virtual User Table implementation.
@@ -32,6 +34,16 @@ public class JPARecipientRewriteTableTest extends AbstractRecipientRewriteTableT
 
     private static final JpaTestCluster JPA_TEST_CLUSTER = JpaTestCluster.create(JPARecipientRewrite.class);
 
+    @Before
+    public void setUp() throws Exception {
+        super.setUp();
+    }
+
+    @After
+    public void tearDown() throws Exception {
+        super.tearDown();
+    }
+
     @Override
     protected AbstractRecipientRewriteTable getRecipientRewriteTable() throws Exception {
         JPARecipientRewriteTable localVirtualUserTable = new JPARecipientRewriteTable();

http://git-wip-us.apache.org/repos/asf/james-project/blob/a18a4488/server/data/data-jpa/src/test/java/org/apache/james/user/jpa/JpaUsersRepositoryTest.java
----------------------------------------------------------------------
diff --git a/server/data/data-jpa/src/test/java/org/apache/james/user/jpa/JpaUsersRepositoryTest.java b/server/data/data-jpa/src/test/java/org/apache/james/user/jpa/JpaUsersRepositoryTest.java
index 63012b3..ac298f3 100644
--- a/server/data/data-jpa/src/test/java/org/apache/james/user/jpa/JpaUsersRepositoryTest.java
+++ b/server/data/data-jpa/src/test/java/org/apache/james/user/jpa/JpaUsersRepositoryTest.java
@@ -24,14 +24,21 @@ import org.apache.james.user.jpa.model.JPAUser;
 import org.apache.james.user.lib.AbstractUsersRepository;
 import org.apache.james.user.lib.AbstractUsersRepositoryTest;
 import org.junit.After;
+import org.junit.Before;
 
 public class JpaUsersRepositoryTest extends AbstractUsersRepositoryTest {
 
     private static final JpaTestCluster JPA_TEST_CLUSTER = JpaTestCluster.create(JPAUser.class);
 
-    @After
+    @Before
     @Override
+    public void setUp() throws Exception {
+        super.setUp();
+    }
+
+    @After
     public void tearDown() throws Exception {
+        super.tearDown();
         JPA_TEST_CLUSTER.clear("JAMES_USER");
     }
 

http://git-wip-us.apache.org/repos/asf/james-project/blob/a18a4488/server/data/data-ldap-integration-testing/src/test/java/org/apache/james/user/ldap/LdapGenericContainer.java
----------------------------------------------------------------------
diff --git a/server/data/data-ldap-integration-testing/src/test/java/org/apache/james/user/ldap/LdapGenericContainer.java b/server/data/data-ldap-integration-testing/src/test/java/org/apache/james/user/ldap/LdapGenericContainer.java
index d1f3b9c..7be9d6b 100644
--- a/server/data/data-ldap-integration-testing/src/test/java/org/apache/james/user/ldap/LdapGenericContainer.java
+++ b/server/data/data-ldap-integration-testing/src/test/java/org/apache/james/user/ldap/LdapGenericContainer.java
@@ -86,9 +86,17 @@ public class LdapGenericContainer extends ExternalResource {
         container.stop();
     }
 
+    public void pause() {
+        container.pause();
+    }
+
+    public void unpause() {
+        container.unpause();
+    }
+
     public String getLdapHost() {
         return "ldap://" +
-                container.getIp() +
+                container.getContainerIp() +
                 ":" +
                 LdapGenericContainer.DEFAULT_LDAP_PORT;
     }

http://git-wip-us.apache.org/repos/asf/james-project/blob/a18a4488/server/data/data-ldap-integration-testing/src/test/java/org/apache/james/user/ldap/ReadOnlyUsersLDAPRepositoryTest.java
----------------------------------------------------------------------
diff --git a/server/data/data-ldap-integration-testing/src/test/java/org/apache/james/user/ldap/ReadOnlyUsersLDAPRepositoryTest.java b/server/data/data-ldap-integration-testing/src/test/java/org/apache/james/user/ldap/ReadOnlyUsersLDAPRepositoryTest.java
index 01e21d1..785d74f 100644
--- a/server/data/data-ldap-integration-testing/src/test/java/org/apache/james/user/ldap/ReadOnlyUsersLDAPRepositoryTest.java
+++ b/server/data/data-ldap-integration-testing/src/test/java/org/apache/james/user/ldap/ReadOnlyUsersLDAPRepositoryTest.java
@@ -136,13 +136,13 @@ public class ReadOnlyUsersLDAPRepositoryTest {
         startUsersRepository(ldapRepositoryConfigurationWithVirtualHosting());
         ldapRepository.test(JAMES_USER_MAIL, PASSWORD);
 
-        ldapContainer.stop();
+        ldapContainer.pause();
         try {
             ldapRepository.test(JAMES_USER_MAIL, PASSWORD);
         } catch (Exception e) {
             LOGGER.info("This exception is expected as we shut down the LDAP and forced its use", e);
         }
-        startLdapContainer();
+        ldapContainer.unpause();
 
         assertThat(ldapRepository.test(JAMES_USER_MAIL, PASSWORD)).isTrue();
     }

http://git-wip-us.apache.org/repos/asf/james-project/blob/a18a4488/server/data/data-library/src/test/java/org/apache/james/domainlist/lib/AbstractDomainListTest.java
----------------------------------------------------------------------
diff --git a/server/data/data-library/src/test/java/org/apache/james/domainlist/lib/AbstractDomainListTest.java b/server/data/data-library/src/test/java/org/apache/james/domainlist/lib/AbstractDomainListTest.java
index 2f4b66d..03a0555 100644
--- a/server/data/data-library/src/test/java/org/apache/james/domainlist/lib/AbstractDomainListTest.java
+++ b/server/data/data-library/src/test/java/org/apache/james/domainlist/lib/AbstractDomainListTest.java
@@ -29,8 +29,6 @@ import org.apache.james.dnsservice.api.DNSService;
 import org.apache.james.dnsservice.api.mock.MockDNSService;
 import org.apache.james.domainlist.api.DomainList;
 import org.apache.james.domainlist.api.DomainListException;
-import org.junit.After;
-import org.junit.Before;
 import org.junit.Test;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -50,16 +48,10 @@ public abstract class AbstractDomainListTest {
 
     private DomainList domainList;
 
-    @Before
     public void setUp() throws Exception {
         domainList = createDomainList();
     }
 
-    @After
-    public void tearDown() throws Exception {
-        deleteAll();
-    }
-
     @Test
     public void createListDomains() throws DomainListException {
         domainList.addDomain(DOMAIN_3);
@@ -161,23 +153,6 @@ public abstract class AbstractDomainListTest {
     }
 
     /**
-     * Delete all possible domains from database.
-     */
-    private void deleteAll() throws DomainListException {
-        for (String domain : domainList.getDomains()) {
-            deleteWithoutError(domain);
-        }
-    }
-
-    private void deleteWithoutError(String domain) {
-        try {
-            domainList.removeDomain(domain);
-        } catch(DomainListException e) {
-            LOGGER.info("Ignored error", e);
-        }
-    }
-
-    /**
      * Return a fake DNSServer.
      */
     protected DNSService getDNSServer(final String hostName) {

http://git-wip-us.apache.org/repos/asf/james-project/blob/a18a4488/server/data/data-library/src/test/java/org/apache/james/rrt/lib/AbstractRecipientRewriteTableTest.java
----------------------------------------------------------------------
diff --git a/server/data/data-library/src/test/java/org/apache/james/rrt/lib/AbstractRecipientRewriteTableTest.java b/server/data/data-library/src/test/java/org/apache/james/rrt/lib/AbstractRecipientRewriteTableTest.java
index 67a414d..c41059c 100644
--- a/server/data/data-library/src/test/java/org/apache/james/rrt/lib/AbstractRecipientRewriteTableTest.java
+++ b/server/data/data-library/src/test/java/org/apache/james/rrt/lib/AbstractRecipientRewriteTableTest.java
@@ -27,8 +27,6 @@ import org.apache.james.lifecycle.api.LifecycleUtil;
 import org.apache.james.rrt.api.RecipientRewriteTable;
 import org.apache.james.rrt.api.RecipientRewriteTable.ErrorMappingException;
 import org.apache.james.rrt.api.RecipientRewriteTableException;
-import org.junit.After;
-import org.junit.Before;
 import org.junit.Rule;
 import org.junit.Test;
 import org.junit.rules.ExpectedException;
@@ -48,12 +46,10 @@ public abstract class AbstractRecipientRewriteTableTest {
     protected final static int ADDRESS_TYPE = 2;
     protected final static int ALIASDOMAIN_TYPE = 3;
 
-    @Before
     public void setUp() throws Exception {
         virtualUserTable = getRecipientRewriteTable();
     }
 
-    @After
     public void tearDown() throws Exception {
 
         Map<String, Mappings> mappings = virtualUserTable.getAllMappings();
@@ -348,7 +344,7 @@ public abstract class AbstractRecipientRewriteTableTest {
 
         addMapping(user, domain, address, ADDRESS_TYPE);
         addMapping(user, domain, address, REGEX_TYPE);
-        
+
         assertThat(virtualUserTable.getMappings(user, domain)).hasSize(2);
     }
 

http://git-wip-us.apache.org/repos/asf/james-project/blob/a18a4488/server/data/data-library/src/test/java/org/apache/james/sieverepository/lib/AbstractSieveRepositoryTest.java
----------------------------------------------------------------------
diff --git a/server/data/data-library/src/test/java/org/apache/james/sieverepository/lib/AbstractSieveRepositoryTest.java b/server/data/data-library/src/test/java/org/apache/james/sieverepository/lib/AbstractSieveRepositoryTest.java
index b545160..b614a4c 100644
--- a/server/data/data-library/src/test/java/org/apache/james/sieverepository/lib/AbstractSieveRepositoryTest.java
+++ b/server/data/data-library/src/test/java/org/apache/james/sieverepository/lib/AbstractSieveRepositoryTest.java
@@ -32,8 +32,6 @@ import org.apache.james.sieverepository.api.exception.QuotaExceededException;
 import org.apache.james.sieverepository.api.exception.QuotaNotFoundException;
 import org.apache.james.sieverepository.api.exception.ScriptNotFoundException;
 import org.joda.time.DateTime;
-import org.junit.After;
-import org.junit.Before;
 import org.junit.Test;
 
 public abstract class AbstractSieveRepositoryTest {
@@ -50,16 +48,10 @@ public abstract class AbstractSieveRepositoryTest {
 
     protected SieveRepository sieveRepository;
 
-    @Before
     public void setUp() throws Exception {
         sieveRepository = createSieveRepository();
     }
 
-    @After
-    public void tearDown() throws Exception {
-        cleanUp();
-    }
-
     @Test(expected = ScriptNotFoundException.class)
     public void getScriptShouldThrowIfUnableToFindScript() throws Exception {
         sieveRepository.getScript(USER, SCRIPT_NAME);
@@ -353,6 +345,4 @@ public abstract class AbstractSieveRepositoryTest {
 
     protected abstract SieveRepository createSieveRepository() throws Exception;
 
-    protected abstract void cleanUp() throws Exception;
-
 }

http://git-wip-us.apache.org/repos/asf/james-project/blob/a18a4488/server/data/data-library/src/test/java/org/apache/james/user/lib/AbstractUsersRepositoryTest.java
----------------------------------------------------------------------
diff --git a/server/data/data-library/src/test/java/org/apache/james/user/lib/AbstractUsersRepositoryTest.java b/server/data/data-library/src/test/java/org/apache/james/user/lib/AbstractUsersRepositoryTest.java
index 1b8a0e7..a4d889d 100644
--- a/server/data/data-library/src/test/java/org/apache/james/user/lib/AbstractUsersRepositoryTest.java
+++ b/server/data/data-library/src/test/java/org/apache/james/user/lib/AbstractUsersRepositoryTest.java
@@ -29,9 +29,7 @@ import org.apache.james.user.api.AlreadyExistInUsersRepositoryException;
 import org.apache.james.user.api.UsersRepositoryException;
 import org.apache.james.user.api.model.User;
 import org.apache.mailet.MailAddress;
-import org.junit.After;
 import org.junit.Assume;
-import org.junit.Before;
 import org.junit.Test;
 
 
@@ -54,7 +52,6 @@ public abstract class AbstractUsersRepositoryTest {
     private String user3;
     private String admin;
     
-    @Before 
     public void setUp() throws Exception { 
         this.usersRepository = getUsersRepository();
         SimpleDomainList domainList = new SimpleDomainList();
@@ -66,7 +63,6 @@ public abstract class AbstractUsersRepositoryTest {
         admin = login("admin");
     }
 
-    @After
     public void tearDown() throws Exception {
         disposeUsersRepository();
     }

http://git-wip-us.apache.org/repos/asf/james-project/blob/a18a4488/server/data/data-memory/src/test/java/org/apache/james/domainlist/memory/MemoryDomainListTest.java
----------------------------------------------------------------------
diff --git a/server/data/data-memory/src/test/java/org/apache/james/domainlist/memory/MemoryDomainListTest.java b/server/data/data-memory/src/test/java/org/apache/james/domainlist/memory/MemoryDomainListTest.java
index f6f06f9..95c79cc 100644
--- a/server/data/data-memory/src/test/java/org/apache/james/domainlist/memory/MemoryDomainListTest.java
+++ b/server/data/data-memory/src/test/java/org/apache/james/domainlist/memory/MemoryDomainListTest.java
@@ -21,9 +21,15 @@ package org.apache.james.domainlist.memory;
 
 import org.apache.james.domainlist.api.DomainList;
 import org.apache.james.domainlist.lib.AbstractDomainListTest;
+import org.junit.Before;
 
 public class MemoryDomainListTest extends AbstractDomainListTest {
 
+    @Before
+    public void setUp() throws Exception {
+        super.setUp();
+    }
+
     @Override
     protected DomainList createDomainList() {
         MemoryDomainList testee = new MemoryDomainList(getDNSServer("localhost"));

http://git-wip-us.apache.org/repos/asf/james-project/blob/a18a4488/server/data/data-memory/src/test/java/org/apache/james/rrt/memory/MemoryRecipientRewriteTableTest.java
----------------------------------------------------------------------
diff --git a/server/data/data-memory/src/test/java/org/apache/james/rrt/memory/MemoryRecipientRewriteTableTest.java b/server/data/data-memory/src/test/java/org/apache/james/rrt/memory/MemoryRecipientRewriteTableTest.java
index b099737..999cbef 100644
--- a/server/data/data-memory/src/test/java/org/apache/james/rrt/memory/MemoryRecipientRewriteTableTest.java
+++ b/server/data/data-memory/src/test/java/org/apache/james/rrt/memory/MemoryRecipientRewriteTableTest.java
@@ -23,9 +23,21 @@ import org.apache.commons.configuration.DefaultConfigurationBuilder;
 import org.apache.james.rrt.api.RecipientRewriteTableException;
 import org.apache.james.rrt.lib.AbstractRecipientRewriteTable;
 import org.apache.james.rrt.lib.AbstractRecipientRewriteTableTest;
+import org.junit.After;
+import org.junit.Before;
 
 public class MemoryRecipientRewriteTableTest extends AbstractRecipientRewriteTableTest {
 
+    @Before
+    public void setUp() throws Exception {
+        super.setUp();
+    }
+
+    @After
+    public void tearDown() throws Exception {
+        super.tearDown();
+    }
+
     @Override
     protected AbstractRecipientRewriteTable getRecipientRewriteTable() throws Exception {
         AbstractRecipientRewriteTable rrt = new MemoryRecipientRewriteTable();

http://git-wip-us.apache.org/repos/asf/james-project/blob/a18a4488/server/data/data-memory/src/test/java/org/apache/james/user/memory/MemoryUsersRepositoryTest.java
----------------------------------------------------------------------
diff --git a/server/data/data-memory/src/test/java/org/apache/james/user/memory/MemoryUsersRepositoryTest.java b/server/data/data-memory/src/test/java/org/apache/james/user/memory/MemoryUsersRepositoryTest.java
index 4057eb7..05e096c 100644
--- a/server/data/data-memory/src/test/java/org/apache/james/user/memory/MemoryUsersRepositoryTest.java
+++ b/server/data/data-memory/src/test/java/org/apache/james/user/memory/MemoryUsersRepositoryTest.java
@@ -21,9 +21,15 @@ package org.apache.james.user.memory;
 
 import org.apache.james.user.lib.AbstractUsersRepository;
 import org.apache.james.user.lib.AbstractUsersRepositoryTest;
+import org.junit.Before;
 
 public class MemoryUsersRepositoryTest extends AbstractUsersRepositoryTest {
 
+    @Before
+    public void setUp() throws Exception {
+        super.setUp();
+    }
+    
     @Override
     protected AbstractUsersRepository getUsersRepository() throws Exception {
         return MemoryUsersRepository.withVirtualHosting();

http://git-wip-us.apache.org/repos/asf/james-project/blob/a18a4488/server/mailet/integration-testing/src/test/java/org/apache/james/transport/mailets/amqp/AmqpRule.java
----------------------------------------------------------------------
diff --git a/server/mailet/integration-testing/src/test/java/org/apache/james/transport/mailets/amqp/AmqpRule.java b/server/mailet/integration-testing/src/test/java/org/apache/james/transport/mailets/amqp/AmqpRule.java
index 3923fc9..06341df 100644
--- a/server/mailet/integration-testing/src/test/java/org/apache/james/transport/mailets/amqp/AmqpRule.java
+++ b/server/mailet/integration-testing/src/test/java/org/apache/james/transport/mailets/amqp/AmqpRule.java
@@ -54,7 +54,7 @@ public class AmqpRule extends ExternalResource {
 
     @Override
     protected void before() throws Throwable {
-        amqpUri = "amqp://" + rabbitMqContainer.getIp();
+        amqpUri = "amqp://" + rabbitMqContainer.getContainerIp();
         ConnectionFactory factory = new ConnectionFactory();
         factory.setUri(amqpUri);
         waitingForRabbitToBeReady(factory);

http://git-wip-us.apache.org/repos/asf/james-project/blob/a18a4488/server/protocols/jmap-integration-testing/cassandra-jmap-integration-testing/pom.xml
----------------------------------------------------------------------
diff --git a/server/protocols/jmap-integration-testing/cassandra-jmap-integration-testing/pom.xml b/server/protocols/jmap-integration-testing/cassandra-jmap-integration-testing/pom.xml
index 20de651..b2e3329 100644
--- a/server/protocols/jmap-integration-testing/cassandra-jmap-integration-testing/pom.xml
+++ b/server/protocols/jmap-integration-testing/cassandra-jmap-integration-testing/pom.xml
@@ -41,6 +41,12 @@
         </dependency>
         <dependency>
             <groupId>${project.groupId}</groupId>
+            <artifactId>apache-james-backends-cassandra</artifactId>
+            <type>test-jar</type>
+            <scope>test</scope>
+        </dependency>
+        <dependency>
+            <groupId>${project.groupId}</groupId>
             <artifactId>apache-james-mailbox-api</artifactId>
             <type>test-jar</type>
             <scope>test</scope>
@@ -133,11 +139,6 @@
             <scope>test</scope>
         </dependency>
         <dependency>
-            <groupId>org.cassandraunit</groupId>
-            <artifactId>cassandra-unit</artifactId>
-            <scope>test</scope>
-        </dependency>
-        <dependency>
             <groupId>org.hamcrest</groupId>
             <artifactId>java-hamcrest</artifactId>
             <scope>test</scope>

http://git-wip-us.apache.org/repos/asf/james-project/blob/a18a4488/server/protocols/jmap-integration-testing/cassandra-jmap-integration-testing/src/test/java/org/apache/james/jmap/cassandra/CassandraGetMailboxesMethodTest.java
----------------------------------------------------------------------
diff --git a/server/protocols/jmap-integration-testing/cassandra-jmap-integration-testing/src/test/java/org/apache/james/jmap/cassandra/CassandraGetMailboxesMethodTest.java b/server/protocols/jmap-integration-testing/cassandra-jmap-integration-testing/src/test/java/org/apache/james/jmap/cassandra/CassandraGetMailboxesMethodTest.java
index ce824ef..34f0335 100644
--- a/server/protocols/jmap-integration-testing/cassandra-jmap-integration-testing/src/test/java/org/apache/james/jmap/cassandra/CassandraGetMailboxesMethodTest.java
+++ b/server/protocols/jmap-integration-testing/cassandra-jmap-integration-testing/src/test/java/org/apache/james/jmap/cassandra/CassandraGetMailboxesMethodTest.java
@@ -20,18 +20,23 @@
 package org.apache.james.jmap.cassandra;
 
 import org.apache.james.CassandraJmapTestRule;
+import org.apache.james.DockerCassandraRule;
 import org.apache.james.GuiceJamesServer;
 import org.apache.james.jmap.methods.integration.GetMailboxesMethodTest;
+import org.junit.ClassRule;
 import org.junit.Rule;
 
 public class CassandraGetMailboxesMethodTest extends GetMailboxesMethodTest {
 
+    @ClassRule
+    public static DockerCassandraRule cassandra = new DockerCassandraRule();
+    
     @Rule 
     public CassandraJmapTestRule rule = CassandraJmapTestRule.defaultTestRule();
     
     @Override
     protected GuiceJamesServer createJmapServer() {
-        return rule.jmapServer();
+        return rule.jmapServer(cassandra.getModule());
     }
     
 }

http://git-wip-us.apache.org/repos/asf/james-project/blob/a18a4488/server/protocols/jmap-integration-testing/cassandra-jmap-integration-testing/src/test/java/org/apache/james/jmap/cassandra/CassandraGetMessageListMethodTest.java
----------------------------------------------------------------------
diff --git a/server/protocols/jmap-integration-testing/cassandra-jmap-integration-testing/src/test/java/org/apache/james/jmap/cassandra/CassandraGetMessageListMethodTest.java b/server/protocols/jmap-integration-testing/cassandra-jmap-integration-testing/src/test/java/org/apache/james/jmap/cassandra/CassandraGetMessageListMethodTest.java
index 8207859..7e4abe5 100644
--- a/server/protocols/jmap-integration-testing/cassandra-jmap-integration-testing/src/test/java/org/apache/james/jmap/cassandra/CassandraGetMessageListMethodTest.java
+++ b/server/protocols/jmap-integration-testing/cassandra-jmap-integration-testing/src/test/java/org/apache/james/jmap/cassandra/CassandraGetMessageListMethodTest.java
@@ -20,18 +20,23 @@
 package org.apache.james.jmap.cassandra;
 
 import org.apache.james.CassandraJmapTestRule;
+import org.apache.james.DockerCassandraRule;
 import org.apache.james.GuiceJamesServer;
 import org.apache.james.jmap.methods.integration.GetMessageListMethodTest;
+import org.junit.ClassRule;
 import org.junit.Rule;
 
 public class CassandraGetMessageListMethodTest extends GetMessageListMethodTest {
 
+    @ClassRule
+    public static DockerCassandraRule cassandra = new DockerCassandraRule();
+    
     @Rule 
     public CassandraJmapTestRule rule = CassandraJmapTestRule.defaultTestRule();
     
     @Override
     protected GuiceJamesServer createJmapServer() {
-        return rule.jmapServer();
+        return rule.jmapServer(cassandra.getModule());
     }
 
     @Override

http://git-wip-us.apache.org/repos/asf/james-project/blob/a18a4488/server/protocols/jmap-integration-testing/cassandra-jmap-integration-testing/src/test/java/org/apache/james/jmap/cassandra/CassandraGetVacationResponseTest.java
----------------------------------------------------------------------
diff --git a/server/protocols/jmap-integration-testing/cassandra-jmap-integration-testing/src/test/java/org/apache/james/jmap/cassandra/CassandraGetVacationResponseTest.java b/server/protocols/jmap-integration-testing/cassandra-jmap-integration-testing/src/test/java/org/apache/james/jmap/cassandra/CassandraGetVacationResponseTest.java
index 96101bc..7d7a3cc 100644
--- a/server/protocols/jmap-integration-testing/cassandra-jmap-integration-testing/src/test/java/org/apache/james/jmap/cassandra/CassandraGetVacationResponseTest.java
+++ b/server/protocols/jmap-integration-testing/cassandra-jmap-integration-testing/src/test/java/org/apache/james/jmap/cassandra/CassandraGetVacationResponseTest.java
@@ -20,19 +20,24 @@
 package org.apache.james.jmap.cassandra;
 
 import org.apache.james.CassandraJmapTestRule;
+import org.apache.james.DockerCassandraRule;
 import org.apache.james.GuiceJamesServer;
 import org.apache.james.jmap.methods.integration.GetVacationResponseTest;
 import org.apache.james.util.date.ZonedDateTimeProvider;
+import org.junit.ClassRule;
 import org.junit.Rule;
 
 public class CassandraGetVacationResponseTest extends GetVacationResponseTest {
 
+    @ClassRule
+    public static DockerCassandraRule cassandra = new DockerCassandraRule();
+    
     @Rule 
     public CassandraJmapTestRule rule = CassandraJmapTestRule.defaultTestRule();
     
     @Override
     protected GuiceJamesServer createJmapServer(ZonedDateTimeProvider zonedDateTimeProvider) {
-        return rule.jmapServer()
+        return rule.jmapServer(cassandra.getModule())
                 .overrideWith(binder -> binder.bind(ZonedDateTimeProvider.class).toInstance(zonedDateTimeProvider));
     }
 

http://git-wip-us.apache.org/repos/asf/james-project/blob/a18a4488/server/protocols/jmap-integration-testing/cassandra-jmap-integration-testing/src/test/java/org/apache/james/jmap/cassandra/CassandraJmapAuthenticationTest.java
----------------------------------------------------------------------
diff --git a/server/protocols/jmap-integration-testing/cassandra-jmap-integration-testing/src/test/java/org/apache/james/jmap/cassandra/CassandraJmapAuthenticationTest.java b/server/protocols/jmap-integration-testing/cassandra-jmap-integration-testing/src/test/java/org/apache/james/jmap/cassandra/CassandraJmapAuthenticationTest.java
index 71a42c3..db874ef 100644
--- a/server/protocols/jmap-integration-testing/cassandra-jmap-integration-testing/src/test/java/org/apache/james/jmap/cassandra/CassandraJmapAuthenticationTest.java
+++ b/server/protocols/jmap-integration-testing/cassandra-jmap-integration-testing/src/test/java/org/apache/james/jmap/cassandra/CassandraJmapAuthenticationTest.java
@@ -19,20 +19,25 @@
 package org.apache.james.jmap.cassandra;
 
 import org.apache.james.CassandraJmapTestRule;
+import org.apache.james.DockerCassandraRule;
 import org.apache.james.GuiceJamesServer;
 import org.apache.james.jmap.FixedDateZonedDateTimeProvider;
 import org.apache.james.jmap.JMAPAuthenticationTest;
 import org.apache.james.util.date.ZonedDateTimeProvider;
+import org.junit.ClassRule;
 import org.junit.Rule;
 
 public class CassandraJmapAuthenticationTest extends JMAPAuthenticationTest {
 
+    @ClassRule
+    public static DockerCassandraRule cassandra = new DockerCassandraRule();
+    
     @Rule 
     public CassandraJmapTestRule rule = CassandraJmapTestRule.defaultTestRule();
     
     @Override
     protected GuiceJamesServer createJmapServer(FixedDateZonedDateTimeProvider zonedDateTimeProvider) {
-        return rule.jmapServer()
+        return rule.jmapServer(cassandra.getModule())
                 .overrideWith(binder -> binder.bind(ZonedDateTimeProvider.class).toInstance(zonedDateTimeProvider));
     }
 

http://git-wip-us.apache.org/repos/asf/james-project/blob/a18a4488/server/protocols/jmap-integration-testing/cassandra-jmap-integration-testing/src/test/java/org/apache/james/jmap/cassandra/CassandraSetMailboxesMethodTest.java
----------------------------------------------------------------------
diff --git a/server/protocols/jmap-integration-testing/cassandra-jmap-integration-testing/src/test/java/org/apache/james/jmap/cassandra/CassandraSetMailboxesMethodTest.java b/server/protocols/jmap-integration-testing/cassandra-jmap-integration-testing/src/test/java/org/apache/james/jmap/cassandra/CassandraSetMailboxesMethodTest.java
index cdad450..5eb0929 100644
--- a/server/protocols/jmap-integration-testing/cassandra-jmap-integration-testing/src/test/java/org/apache/james/jmap/cassandra/CassandraSetMailboxesMethodTest.java
+++ b/server/protocols/jmap-integration-testing/cassandra-jmap-integration-testing/src/test/java/org/apache/james/jmap/cassandra/CassandraSetMailboxesMethodTest.java
@@ -20,19 +20,24 @@
 package org.apache.james.jmap.cassandra;
 
 import org.apache.james.CassandraJmapTestRule;
+import org.apache.james.DockerCassandraRule;
 import org.apache.james.GuiceJamesServer;
 import org.apache.james.jmap.methods.integration.SetMailboxesMethodTest;
+import org.junit.ClassRule;
 import org.junit.Ignore;
 import org.junit.Rule;
 
 public class CassandraSetMailboxesMethodTest extends SetMailboxesMethodTest {
 
+    @ClassRule
+    public static DockerCassandraRule cassandra = new DockerCassandraRule();
+    
     @Rule 
     public CassandraJmapTestRule rule = CassandraJmapTestRule.defaultTestRule();
     
     @Override
     protected GuiceJamesServer createJmapServer() {
-        return rule.jmapServer();
+        return rule.jmapServer(cassandra.getModule());
     }
 
     @Override
@@ -40,13 +45,14 @@ public class CassandraSetMailboxesMethodTest extends SetMailboxesMethodTest {
         rule.await();
     }
 
-    @Ignore
     @Override
+    @Ignore
     public void setMailboxesShouldCreateWhenOverLimitName() throws Exception {
     }
 
-    @Ignore
     @Override
+    @Ignore
     public void setMailboxesShouldUpdateMailboxWhenOverLimitName() throws Exception {
     }
+
 }


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


[05/13] james-project git commit: JAMES-2133 Switch from cassandraunit to cassandra in docker

Posted by ma...@apache.org.
http://git-wip-us.apache.org/repos/asf/james-project/blob/a18a4488/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 5245878..1663e8b 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
@@ -19,21 +19,25 @@
 
 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.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();
+    
     private ManageSieveHostSystem system;
 
     @Before
     public void setUp() throws Exception {
-        Injector injector = Guice.createInjector(new CassandraModule());
+        Injector injector = Guice.createInjector(new CassandraModule(cassandraServer.getIp(), cassandraServer.getBindingPort()));
         system = injector.getInstance(ManageSieveHostSystem.class);
         system.beforeTest();
         super.setUp();

http://git-wip-us.apache.org/repos/asf/james-project/blob/a18a4488/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 e406fe3..9ba8908 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
@@ -19,21 +19,25 @@
 
 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.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();
+    
     private ManageSieveHostSystem system;
 
     @Before
     public void setUp() throws Exception {
-        Injector injector = Guice.createInjector(new CassandraModule());
+        Injector injector = Guice.createInjector(new CassandraModule(cassandraServer.getIp(), cassandraServer.getBindingPort()));
         system = injector.getInstance(ManageSieveHostSystem.class);
         system.beforeTest();
         super.setUp();

http://git-wip-us.apache.org/repos/asf/james-project/blob/a18a4488/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 a95f9d1..2ae6162 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
@@ -19,21 +19,25 @@
 
 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.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();
+    
     private ManageSieveHostSystem system;
 
     @Before
     public void setUp() throws Exception {
-        Injector injector = Guice.createInjector(new CassandraModule());
+        Injector injector = Guice.createInjector(new CassandraModule(cassandraServer.getIp(), cassandraServer.getBindingPort()));
         system = injector.getInstance(ManageSieveHostSystem.class);
         system.beforeTest();
         super.setUp();

http://git-wip-us.apache.org/repos/asf/james-project/blob/a18a4488/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 a82b69f..f47b3c6 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
@@ -19,21 +19,25 @@
 
 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.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();
+    
     private ManageSieveHostSystem system;
 
     @Before
     public void setUp() throws Exception {
-        Injector injector = Guice.createInjector(new CassandraModule());
+        Injector injector = Guice.createInjector(new CassandraModule(cassandraServer.getIp(), cassandraServer.getBindingPort()));
         system = injector.getInstance(ManageSieveHostSystem.class);
         system.beforeTest();
         super.setUp();

http://git-wip-us.apache.org/repos/asf/james-project/blob/a18a4488/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 15a2a7a..e4506d1 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
@@ -19,21 +19,25 @@
 
 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.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();
+    
     private ManageSieveHostSystem system;
 
     @Before
     public void setUp() throws Exception {
-        Injector injector = Guice.createInjector(new CassandraModule());
+        Injector injector = Guice.createInjector(new CassandraModule(cassandraServer.getIp(), cassandraServer.getBindingPort()));
         system = injector.getInstance(ManageSieveHostSystem.class);
         system.beforeTest();
         super.setUp();

http://git-wip-us.apache.org/repos/asf/james-project/blob/a18a4488/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 66b524a..bf3a509 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
@@ -19,21 +19,25 @@
 
 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.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();
+    
     private ManageSieveHostSystem system;
 
     @Before
     public void setUp() throws Exception {
-        Injector injector = Guice.createInjector(new CassandraModule());
+        Injector injector = Guice.createInjector(new CassandraModule(cassandraServer.getIp(), cassandraServer.getBindingPort()));
         system = injector.getInstance(ManageSieveHostSystem.class);
         system.beforeTest();
         super.setUp();

http://git-wip-us.apache.org/repos/asf/james-project/blob/a18a4488/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 3b24879..28c89df 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
@@ -19,6 +19,7 @@
 
 package org.apache.james.mpt.managesieve.cassandra.host;
 
+import org.apache.james.backends.cassandra.CassandraCluster;
 import org.apache.james.backends.cassandra.init.CassandraModuleComposite;
 import org.apache.james.backends.cassandra.utils.CassandraUtils;
 import org.apache.james.mpt.host.JamesManageSieveHostSystem;
@@ -30,34 +31,39 @@ import org.apache.james.sieve.cassandra.CassandraSieveRepositoryModule;
 import org.apache.james.sieverepository.api.SieveRepository;
 import org.apache.james.user.api.UsersRepository;
 import org.apache.james.user.cassandra.CassandraUsersRepository;
-import org.apache.james.backends.cassandra.CassandraCluster;
 import org.apache.james.user.cassandra.CassandraUsersRepositoryModule;
 
 public class CassandraHostSystem extends JamesManageSieveHostSystem {
-    private static CassandraCluster CASSANDRA_CLUSTER = CassandraCluster.create(new CassandraModuleComposite(
-        new CassandraSieveRepositoryModule(),
-        new CassandraUsersRepositoryModule()));
+    
+    private final String cassandraHost;
+    private final int cassandraPort;
+    private CassandraCluster cassandra;
 
-    public CassandraHostSystem() throws Exception {
-        super(createUsersRepository(), createSieveRepository());
+    public CassandraHostSystem(String cassandraHost, int cassandraPort) {
+        this.cassandraHost = cassandraHost;
+        this.cassandraPort = cassandraPort;
+    }
+    
+    @Override
+    public void beforeTest() throws Exception {
+        CassandraModuleComposite modules = new CassandraModuleComposite(
+                new CassandraSieveRepositoryModule(),
+                new CassandraUsersRepositoryModule());
+        cassandra = CassandraCluster.create(modules, cassandraHost, cassandraPort);
+        super.beforeTest();
     }
 
-    protected static SieveRepository createSieveRepository() throws Exception {
+    protected SieveRepository createSieveRepository() throws Exception {
         return new CassandraSieveRepository(
-            new CassandraSieveDAO(CASSANDRA_CLUSTER.getConf()),
-            new CassandraSieveQuotaDAO(CASSANDRA_CLUSTER.getConf()),
-            new CassandraActiveScriptDAO(CASSANDRA_CLUSTER.getConf()));
+            new CassandraSieveDAO(cassandra.getConf()),
+            new CassandraSieveQuotaDAO(cassandra.getConf()),
+            new CassandraActiveScriptDAO(cassandra.getConf()));
     }
 
-    protected static UsersRepository createUsersRepository() {
-        CassandraUsersRepository cassandraUsersRepository = new CassandraUsersRepository(CASSANDRA_CLUSTER.getConf(), CassandraUtils.WITH_DEFAULT_CONFIGURATION);
+    protected UsersRepository createUsersRepository() {
+        CassandraUsersRepository cassandraUsersRepository = new CassandraUsersRepository(cassandra.getConf(), CassandraUtils.WITH_DEFAULT_CONFIGURATION);
         cassandraUsersRepository.setEnableVirtualHosting(false);
         return cassandraUsersRepository;
     }
 
-    @Override
-    protected void resetData() throws Exception {
-        CASSANDRA_CLUSTER.clearAllTables();
-    }
-
 }

http://git-wip-us.apache.org/repos/asf/james-project/blob/a18a4488/mpt/impl/managesieve/core/pom.xml
----------------------------------------------------------------------
diff --git a/mpt/impl/managesieve/core/pom.xml b/mpt/impl/managesieve/core/pom.xml
index b808c33..9773cd1 100644
--- a/mpt/impl/managesieve/core/pom.xml
+++ b/mpt/impl/managesieve/core/pom.xml
@@ -55,6 +55,10 @@
             <groupId>org.slf4j</groupId>
             <artifactId>slf4j-simple</artifactId>
         </dependency>
+        <dependency>
+            <groupId>org.testcontainers</groupId>
+            <artifactId>testcontainers</artifactId>
+        </dependency>
     </dependencies>
 
     <build>

http://git-wip-us.apache.org/repos/asf/james-project/blob/a18a4488/mpt/impl/managesieve/core/src/main/java/org/apache/james/mpt/host/JamesManageSieveHostSystem.java
----------------------------------------------------------------------
diff --git a/mpt/impl/managesieve/core/src/main/java/org/apache/james/mpt/host/JamesManageSieveHostSystem.java b/mpt/impl/managesieve/core/src/main/java/org/apache/james/mpt/host/JamesManageSieveHostSystem.java
index a69e521..5cec736 100644
--- a/mpt/impl/managesieve/core/src/main/java/org/apache/james/mpt/host/JamesManageSieveHostSystem.java
+++ b/mpt/impl/managesieve/core/src/main/java/org/apache/james/mpt/host/JamesManageSieveHostSystem.java
@@ -31,17 +31,26 @@ import org.apache.jsieve.ConfigurationManager;
 
 public abstract class JamesManageSieveHostSystem implements ManageSieveHostSystem {
 
-    private final UsersRepository usersRepository;
-    protected final SieveRepository sieveRepository;
-    private final ManageSieveProcessor processor;
+    private UsersRepository usersRepository;
+    private SieveRepository sieveRepository;
+    private ManageSieveProcessor processor;
 
-    public JamesManageSieveHostSystem(UsersRepository usersRepository, SieveRepository sieveRepository) throws Exception {
-        this.usersRepository = usersRepository;
-        this.sieveRepository = sieveRepository;
+    @Override
+    public void beforeTest() throws Exception {
+        this.usersRepository = createUsersRepository();
+        this.sieveRepository = createSieveRepository();
         this.processor = new ManageSieveProcessor(new ArgumentParser(new CoreProcessor(sieveRepository, usersRepository, new Parser(new ConfigurationManager()))));
     }
 
     @Override
+    public void afterTest() throws Exception {
+    }
+    
+    protected abstract SieveRepository createSieveRepository() throws Exception;
+
+    protected abstract UsersRepository createUsersRepository();
+
+    @Override
     public boolean addUser(String user, String password) throws Exception {
         usersRepository.addUser(user, password);
         return true;
@@ -57,19 +66,4 @@ public abstract class JamesManageSieveHostSystem implements ManageSieveHostSyste
         return new ManageSieveSession(processor, continuation);
     }
 
-    @Override
-    public void beforeTests() throws Exception {}
-
-    @Override
-    public void afterTests() throws Exception {}
-
-    @Override
-    public void beforeTest() throws Exception {}
-
-    @Override
-    public void afterTest() throws Exception {
-        resetData();
-    }
-
-    protected abstract void resetData() throws Exception;
 }

http://git-wip-us.apache.org/repos/asf/james-project/blob/a18a4488/mpt/impl/managesieve/file/src/test/java/org/apache/james/mpt/managesieve/file/host/FileHostSystem.java
----------------------------------------------------------------------
diff --git a/mpt/impl/managesieve/file/src/test/java/org/apache/james/mpt/managesieve/file/host/FileHostSystem.java b/mpt/impl/managesieve/file/src/test/java/org/apache/james/mpt/managesieve/file/host/FileHostSystem.java
index 7bd28dc..92e218f 100644
--- a/mpt/impl/managesieve/file/src/test/java/org/apache/james/mpt/managesieve/file/host/FileHostSystem.java
+++ b/mpt/impl/managesieve/file/src/test/java/org/apache/james/mpt/managesieve/file/host/FileHostSystem.java
@@ -30,6 +30,7 @@ import org.apache.james.filesystem.api.FileSystem;
 import org.apache.james.mpt.host.JamesManageSieveHostSystem;
 import org.apache.james.sieverepository.api.SieveRepository;
 import org.apache.james.sieverepository.file.SieveFileRepository;
+import org.apache.james.user.api.UsersRepository;
 import org.apache.james.user.memory.MemoryUsersRepository;
 
 public class FileHostSystem extends JamesManageSieveHostSystem {
@@ -51,16 +52,19 @@ public class FileHostSystem extends JamesManageSieveHostSystem {
         };
     }
 
-    protected static SieveRepository createSieveRepository() throws Exception {
-        return new SieveFileRepository(fileSystem);
+    @Override
+    protected UsersRepository createUsersRepository() {
+        return MemoryUsersRepository.withoutVirtualHosting();
     }
 
-    public FileHostSystem() throws Exception {
-        super(MemoryUsersRepository.withoutVirtualHosting(), createSieveRepository());
+    @Override
+    protected SieveRepository createSieveRepository() throws Exception {
+        return new SieveFileRepository(fileSystem);
     }
-
+    
     @Override
-    protected void resetData() throws Exception {
+    public void afterTest() throws Exception {
+        super.afterTest();
         File root = fileSystem.getFile(SIEVE_ROOT);
         // Remove files from the previous test, if any
         if (root.exists()) {

http://git-wip-us.apache.org/repos/asf/james-project/blob/a18a4488/mpt/impl/smtp/cassandra/pom.xml
----------------------------------------------------------------------
diff --git a/mpt/impl/smtp/cassandra/pom.xml b/mpt/impl/smtp/cassandra/pom.xml
index 46f9120..f9ded92 100644
--- a/mpt/impl/smtp/cassandra/pom.xml
+++ b/mpt/impl/smtp/cassandra/pom.xml
@@ -94,11 +94,6 @@
             <artifactId>guava</artifactId>
         </dependency>
         <dependency>
-            <groupId>org.cassandraunit</groupId>
-            <artifactId>cassandra-unit</artifactId>
-            <scope>test</scope>
-        </dependency>
-        <dependency>
             <groupId>org.slf4j</groupId>
             <artifactId>slf4j-simple</artifactId>
         </dependency>

http://git-wip-us.apache.org/repos/asf/james-project/blob/a18a4488/mpt/impl/smtp/cassandra/src/test/java/org/apache/james/mpt/smtp/CassandraForwardSmtpTest.java
----------------------------------------------------------------------
diff --git a/mpt/impl/smtp/cassandra/src/test/java/org/apache/james/mpt/smtp/CassandraForwardSmtpTest.java b/mpt/impl/smtp/cassandra/src/test/java/org/apache/james/mpt/smtp/CassandraForwardSmtpTest.java
index 0cda129..0adbeb0 100644
--- a/mpt/impl/smtp/cassandra/src/test/java/org/apache/james/mpt/smtp/CassandraForwardSmtpTest.java
+++ b/mpt/impl/smtp/cassandra/src/test/java/org/apache/james/mpt/smtp/CassandraForwardSmtpTest.java
@@ -19,19 +19,24 @@
 
 package org.apache.james.mpt.smtp;
 
+import org.apache.james.backends.cassandra.DockerCassandraRule;
 import org.junit.After;
 import org.junit.Before;
+import org.junit.ClassRule;
 
 import com.google.inject.Guice;
 import com.google.inject.Injector;
 
 public class CassandraForwardSmtpTest extends ForwardSmtpTest {
 
+    @ClassRule public static DockerCassandraRule cassandraServer = new DockerCassandraRule();
+    
     private SmtpHostSystem system;
 
     @Before
     public void setUp() throws Exception {
-        Injector injector = Guice.createInjector(new SmtpTestModule(SmtpTestModule.Port.SMTP));
+        Injector injector = Guice.createInjector(
+                new SmtpTestModule(SmtpTestModule.Port.SMTP, cassandraServer.getIp(), cassandraServer.getBindingPort()));
         system = injector.getInstance(SmtpHostSystem.class);
         system.beforeTest();
         super.setUp();

http://git-wip-us.apache.org/repos/asf/james-project/blob/a18a4488/mpt/impl/smtp/cassandra/src/test/java/org/apache/james/mpt/smtp/CassandraSmtpStarttlsCommandTest.java
----------------------------------------------------------------------
diff --git a/mpt/impl/smtp/cassandra/src/test/java/org/apache/james/mpt/smtp/CassandraSmtpStarttlsCommandTest.java b/mpt/impl/smtp/cassandra/src/test/java/org/apache/james/mpt/smtp/CassandraSmtpStarttlsCommandTest.java
index d807faf..5fa2d7a 100644
--- a/mpt/impl/smtp/cassandra/src/test/java/org/apache/james/mpt/smtp/CassandraSmtpStarttlsCommandTest.java
+++ b/mpt/impl/smtp/cassandra/src/test/java/org/apache/james/mpt/smtp/CassandraSmtpStarttlsCommandTest.java
@@ -19,19 +19,24 @@
 
 package org.apache.james.mpt.smtp;
 
+import org.apache.james.backends.cassandra.DockerCassandraRule;
 import org.junit.After;
 import org.junit.Before;
+import org.junit.ClassRule;
 
 import com.google.inject.Guice;
 import com.google.inject.Injector;
 
 public class CassandraSmtpStarttlsCommandTest extends SmtpStarttlsCommandTest {
 
+    @ClassRule public static DockerCassandraRule cassandraServer = new DockerCassandraRule();
+    
     private SmtpHostSystem system;
 
     @Before
     public void setUp() throws Exception {
-        Injector injector = Guice.createInjector(new SmtpTestModule(SmtpTestModule.Port.SMTP_START_TTLS));
+        Injector injector = Guice.createInjector(
+                new SmtpTestModule(SmtpTestModule.Port.SMTP_START_TTLS, cassandraServer.getIp(), cassandraServer.getBindingPort()));
         system = injector.getInstance(SmtpHostSystem.class);
         system.beforeTest();
         super.setUp();

http://git-wip-us.apache.org/repos/asf/james-project/blob/a18a4488/mpt/impl/smtp/cassandra/src/test/java/org/apache/james/mpt/smtp/SmtpTestModule.java
----------------------------------------------------------------------
diff --git a/mpt/impl/smtp/cassandra/src/test/java/org/apache/james/mpt/smtp/SmtpTestModule.java b/mpt/impl/smtp/cassandra/src/test/java/org/apache/james/mpt/smtp/SmtpTestModule.java
index e86db9d..d383838 100644
--- a/mpt/impl/smtp/cassandra/src/test/java/org/apache/james/mpt/smtp/SmtpTestModule.java
+++ b/mpt/impl/smtp/cassandra/src/test/java/org/apache/james/mpt/smtp/SmtpTestModule.java
@@ -35,15 +35,19 @@ public class SmtpTestModule extends AbstractModule {
         }
     }
     
-    private Port smtpPort;
+    private final Port smtpPort;
+    private final String cassandraHost;
+    private final int cassandraPort;
 
-    public SmtpTestModule(Port smtpPort) {
+    public SmtpTestModule(Port smtpPort, String cassandraHost, int cassandraPort) {
         this.smtpPort = smtpPort;
+        this.cassandraHost = cassandraHost;
+        this.cassandraPort = cassandraPort;
     }
     
     @Override
     protected void configure() {
-        bind(SmtpHostSystem.class).toInstance(new CassandraJamesSmtpHostSystem(smtpPort.port));
+        bind(SmtpHostSystem.class).toInstance(new CassandraJamesSmtpHostSystem(smtpPort.port, cassandraHost, cassandraPort));
     }
 
 }

http://git-wip-us.apache.org/repos/asf/james-project/blob/a18a4488/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 82ffba8..5dcb1ae 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
@@ -23,9 +23,9 @@ import java.util.Iterator;
 
 import org.apache.james.CassandraJamesServerMain;
 import org.apache.james.GuiceJamesServer;
-import org.apache.james.backends.cassandra.EmbeddedCassandra;
 import org.apache.james.backends.es.EmbeddedElasticSearch;
 import org.apache.james.dnsservice.api.DNSService;
+import org.apache.james.dnsservice.api.InMemoryDNSService;
 import org.apache.james.mailbox.elasticsearch.MailboxElasticsearchConstants;
 import org.apache.james.modules.CassandraJmapServerModule;
 import org.apache.james.modules.protocols.ProtocolHandlerModule;
@@ -33,7 +33,6 @@ import org.apache.james.modules.protocols.SMTPServerModule;
 import org.apache.james.mpt.monitor.SystemLoggingMonitor;
 import org.apache.james.mpt.session.ExternalSessionFactory;
 import org.apache.james.mpt.smtp.SmtpHostSystem;
-import org.apache.james.dnsservice.api.InMemoryDNSService;
 import org.apache.james.utils.DataProbeImpl;
 import org.junit.rules.TemporaryFolder;
 
@@ -43,15 +42,18 @@ import com.google.common.base.Splitter;
 public class CassandraJamesSmtpHostSystem extends ExternalSessionFactory implements SmtpHostSystem {
 
     private TemporaryFolder folder;
-    private EmbeddedCassandra embeddedCassandra;
     private EmbeddedElasticSearch embeddedElasticSearch;
 
     private GuiceJamesServer jamesServer;
     private InMemoryDNSService inMemoryDNSService;
+    private final String cassandraHost;
+    private final int cassandraPort;
 
 
-    public CassandraJamesSmtpHostSystem(int smtpPort) {
+    public CassandraJamesSmtpHostSystem(int smtpPort, String cassandraHost, int cassandraPort) {
         super("localhost", smtpPort, new SystemLoggingMonitor(), "220 mydomain.tld smtp");
+        this.cassandraHost = cassandraHost;
+        this.cassandraPort = cassandraPort;
     }
 
     @Override
@@ -78,21 +80,12 @@ public class CassandraJamesSmtpHostSystem extends ExternalSessionFactory impleme
     }
 
     @Override
-    public void beforeTests() throws Exception {
-    }
-
-    @Override
-    public void afterTests() throws Exception {
-    }
-
-    @Override
     public void beforeTest() throws Exception {
         inMemoryDNSService = new InMemoryDNSService();
         folder = new TemporaryFolder();
         folder.create();
         embeddedElasticSearch = new EmbeddedElasticSearch(folder.getRoot().toPath(), MailboxElasticsearchConstants.MAILBOX_INDEX);
         embeddedElasticSearch.before();
-        embeddedCassandra = EmbeddedCassandra.createStartServer();
         jamesServer = createJamesServer();
         jamesServer.start();
     }
@@ -110,7 +103,7 @@ public class CassandraJamesSmtpHostSystem extends ExternalSessionFactory impleme
     protected GuiceJamesServer createJamesServer() {
         return new GuiceJamesServer()
             .combineWith(CassandraJamesServerMain.cassandraServerModule, new SMTPServerModule(), new ProtocolHandlerModule())
-            .overrideWith(new CassandraJmapServerModule(folder::getRoot, embeddedElasticSearch, embeddedCassandra),
+            .overrideWith(new CassandraJmapServerModule(folder::getRoot, embeddedElasticSearch, cassandraHost, cassandraPort),
                 (binder) -> binder.bind(DNSService.class).toInstance(inMemoryDNSService));
     }
 }

http://git-wip-us.apache.org/repos/asf/james-project/blob/a18a4488/mpt/impl/smtp/core/src/main/java/org/apache/james/mpt/smtp/ForwardSmtpTest.java
----------------------------------------------------------------------
diff --git a/mpt/impl/smtp/core/src/main/java/org/apache/james/mpt/smtp/ForwardSmtpTest.java b/mpt/impl/smtp/core/src/main/java/org/apache/james/mpt/smtp/ForwardSmtpTest.java
index fdc47e7..8510c53 100644
--- a/mpt/impl/smtp/core/src/main/java/org/apache/james/mpt/smtp/ForwardSmtpTest.java
+++ b/mpt/impl/smtp/core/src/main/java/org/apache/james/mpt/smtp/ForwardSmtpTest.java
@@ -35,7 +35,6 @@ import org.junit.rules.RuleChain;
 import org.junit.rules.TemporaryFolder;
 
 import com.google.common.base.Charsets;
-import com.google.common.net.InetAddresses;
 import com.jayway.restassured.RestAssured;
 import com.jayway.restassured.builder.RequestSpecBuilder;
 import com.jayway.restassured.http.ContentType;
@@ -49,6 +48,7 @@ public abstract class ForwardSmtpTest {
 
     private final TemporaryFolder folder = new TemporaryFolder();
     private final SwarmGenericContainer fakeSmtp = new SwarmGenericContainer("weave/rest-smtp-sink:latest")
+            .withExposedPorts(25)
             .withAffinityToContainer();
     
     @Rule
@@ -67,7 +67,7 @@ public abstract class ForwardSmtpTest {
                 .withLocale(Locale.US)
                 .withUser(USER_AT_DOMAIN, PASSWORD);
 
-        InetAddress containerIp = InetAddresses.forString(fakeSmtp.getIp());
+        InetAddress containerIp = InetAddress.getByName(fakeSmtp.getContainerIp());
         
         hostSystem.getInMemoryDnsService()
             .registerRecord("yopmail.com", containerIp, "yopmail.com");

http://git-wip-us.apache.org/repos/asf/james-project/blob/a18a4488/server/container/guice/cassandra-guice/pom.xml
----------------------------------------------------------------------
diff --git a/server/container/guice/cassandra-guice/pom.xml b/server/container/guice/cassandra-guice/pom.xml
index 6f8123d..53f397c 100644
--- a/server/container/guice/cassandra-guice/pom.xml
+++ b/server/container/guice/cassandra-guice/pom.xml
@@ -43,6 +43,7 @@
             <groupId>${project.groupId}</groupId>
             <artifactId>apache-james-backends-cassandra</artifactId>
             <type>test-jar</type>
+            <scope>test</scope>
         </dependency>
         <dependency>
             <groupId>${project.groupId}</groupId>
@@ -205,11 +206,6 @@
             <scope>test</scope>
         </dependency>
         <dependency>
-            <groupId>org.cassandraunit</groupId>
-            <artifactId>cassandra-unit</artifactId>
-            <scope>test</scope>
-        </dependency>
-        <dependency>
             <groupId>org.hdrhistogram</groupId>
             <artifactId>HdrHistogram</artifactId>
             <version>2.1.4</version>

http://git-wip-us.apache.org/repos/asf/james-project/blob/a18a4488/server/container/guice/cassandra-guice/src/main/java/org/apache/james/modules/mailbox/CassandraSessionConfiguration.java
----------------------------------------------------------------------
diff --git a/server/container/guice/cassandra-guice/src/main/java/org/apache/james/modules/mailbox/CassandraSessionConfiguration.java b/server/container/guice/cassandra-guice/src/main/java/org/apache/james/modules/mailbox/CassandraSessionConfiguration.java
deleted file mode 100644
index 33c755c..0000000
--- a/server/container/guice/cassandra-guice/src/main/java/org/apache/james/modules/mailbox/CassandraSessionConfiguration.java
+++ /dev/null
@@ -1,29 +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.mailbox;
-
-import org.apache.commons.configuration.ConfigurationException;
-import org.apache.commons.configuration.PropertiesConfiguration;
-
-public interface CassandraSessionConfiguration {
-
-    PropertiesConfiguration getConfiguration() throws ConfigurationException;
-
-}

http://git-wip-us.apache.org/repos/asf/james-project/blob/a18a4488/server/container/guice/cassandra-guice/src/main/java/org/apache/james/modules/mailbox/CassandraSessionModule.java
----------------------------------------------------------------------
diff --git a/server/container/guice/cassandra-guice/src/main/java/org/apache/james/modules/mailbox/CassandraSessionModule.java b/server/container/guice/cassandra-guice/src/main/java/org/apache/james/modules/mailbox/CassandraSessionModule.java
index 144d5d3..885e39a 100644
--- a/server/container/guice/cassandra-guice/src/main/java/org/apache/james/modules/mailbox/CassandraSessionModule.java
+++ b/server/container/guice/cassandra-guice/src/main/java/org/apache/james/modules/mailbox/CassandraSessionModule.java
@@ -19,24 +19,18 @@
 package org.apache.james.modules.mailbox;
 
 import java.io.FileNotFoundException;
-import java.time.LocalDateTime;
-import java.util.Arrays;
 import java.util.List;
 import java.util.Optional;
 import java.util.Set;
-import java.util.concurrent.ExecutionException;
 import java.util.concurrent.ScheduledExecutorService;
-import java.util.concurrent.TimeUnit;
 
 import org.apache.commons.configuration.ConfigurationException;
 import org.apache.commons.configuration.PropertiesConfiguration;
-import org.apache.james.backends.cassandra.CassandraConfiguration;
 import org.apache.james.backends.cassandra.components.CassandraModule;
+import org.apache.james.backends.cassandra.init.CassandraConfiguration;
 import org.apache.james.backends.cassandra.init.CassandraModuleComposite;
+import org.apache.james.backends.cassandra.init.CassandraSessionConfiguration;
 import org.apache.james.backends.cassandra.init.CassandraZonedDateTimeModule;
-import org.apache.james.backends.cassandra.init.ClusterBuilder;
-import org.apache.james.backends.cassandra.init.ClusterWithKeyspaceCreatedFactory;
-import org.apache.james.backends.cassandra.init.QueryLoggerConfiguration;
 import org.apache.james.backends.cassandra.init.SessionWithInitializedTablesFactory;
 import org.apache.james.backends.cassandra.utils.CassandraUtils;
 import org.apache.james.backends.cassandra.versions.CassandraSchemaVersionDAO;
@@ -45,21 +39,13 @@ import org.apache.james.backends.cassandra.versions.CassandraSchemaVersionManage
 import org.apache.james.backends.cassandra.versions.CassandraSchemaVersionModule;
 import org.apache.james.lifecycle.api.Configurable;
 import org.apache.james.mailbox.store.BatchSizes;
-import org.apache.james.util.Host;
 import org.apache.james.utils.ConfigurationPerformer;
 import org.apache.james.utils.PropertiesProvider;
-import org.apache.james.utils.RetryExecutorUtil;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
 import com.datastax.driver.core.Cluster;
-import com.datastax.driver.core.HostDistance;
-import com.datastax.driver.core.PerHostPercentileTracker;
-import com.datastax.driver.core.PoolingOptions;
-import com.datastax.driver.core.QueryLogger;
 import com.datastax.driver.core.Session;
-import com.datastax.driver.core.exceptions.NoHostAvailableException;
-import com.github.steveash.guavate.Guavate;
 import com.google.common.annotations.VisibleForTesting;
 import com.google.common.collect.ImmutableList;
 import com.google.inject.AbstractModule;
@@ -69,21 +55,12 @@ import com.google.inject.Scopes;
 import com.google.inject.Singleton;
 import com.google.inject.multibindings.Multibinder;
 import com.nurkiewicz.asyncretry.AsyncRetryExecutor;
-import com.nurkiewicz.asyncretry.function.RetryCallable;
 
 public class CassandraSessionModule extends AbstractModule {
 
     private static final Logger LOGGER = LoggerFactory.getLogger(CassandraSessionModule.class);
 
-    private static final int DEFAULT_CONNECTION_MAX_RETRIES = 10;
-    private static final int DEFAULT_CONNECTION_MIN_DELAY = 5000;
-    private static final long CASSANDRA_HIGHEST_TRACKABLE_LATENCY_MILLIS = TimeUnit.SECONDS.toMillis(10);
-    private static final int DEFAULT_REPLICATION_FACTOR = 1;
-    private static final String DEFAULT_KEYSPACE = "apache_james";
-    private static final String CASSANDRA_NODES = "cassandra.nodes";
     private static final String LOCALHOST = "127.0.0.1";
-    private static final int DEFAULT_READ_TIMEOUT_MILLIS = 5000;
-    private static final int DEFAULT_CONNECT_TIMEOUT_MILLIS = 5000;
     private static final String BATCHSIZES_FILE_NAME = "batchsizes";
     private static final String MAILBOX_MAX_RETRY_ACL = "mailbox.max.retry.acl";
     private static final String MAILBOX_MAX_RETRY_MODSEQ = "mailbox.max.retry.modseq";
@@ -95,11 +72,14 @@ public class CassandraSessionModule extends AbstractModule {
     private static final String CHUNK_SIZE_MESSAGE_READ = "chunk.size.message.read";
     private static final String CHUNK_SIZE_EXPUNGE = "chunk.size.expunge";
     private static final String BLOB_PART_SIZE = "mailbox.blob.part.size";
+    private static final String CASSANDRA_NODES = "cassandra.nodes";
 
     @Override
     protected void configure() {
         bind(ScheduledExecutorService.class).toProvider(ScheduledExecutorServiceProvider.class);
         bind(CassandraUtils.class).in(Scopes.SINGLETON);
+        bind(Session.class).toProvider(SessionWithInitializedTablesFactory.class);
+        bind(Cluster.class).toProvider(ResilientClusterProvider.class);
 
         Multibinder<CassandraModule> cassandraDataDefinitions = Multibinder.newSetBinder(binder(), CassandraModule.class);
         cassandraDataDefinitions.addBinding().to(CassandraZonedDateTimeModule.class);
@@ -119,14 +99,6 @@ public class CassandraSessionModule extends AbstractModule {
 
     @Provides
     @Singleton
-    Session provideSession(CassandraSessionConfiguration configuration, Cluster cluster, CassandraModule cassandraModule)
-            throws FileNotFoundException, ConfigurationException{
-        String keyspace = configuration.getConfiguration().getString("cassandra.keyspace", DEFAULT_KEYSPACE);
-        return new SessionWithInitializedTablesFactory(cassandraModule).createSession(cluster, keyspace);
-    }
-
-    @Provides
-    @Singleton
     CassandraSessionConfiguration getCassandraSessionConfiguration(PropertiesProvider propertiesProvider) {
         return () -> getConfiguration(propertiesProvider);
     }
@@ -152,115 +124,6 @@ public class CassandraSessionModule extends AbstractModule {
         }
     }
 
-    @Provides
-    @Singleton
-    Cluster provideCluster(CassandraSessionConfiguration cassandraSessionConfiguration, AsyncRetryExecutor executor) throws ConfigurationException, ExecutionException, InterruptedException {
-        PropertiesConfiguration configuration = cassandraSessionConfiguration.getConfiguration();
-        List<Host> servers = listCassandraServers(configuration);
-        QueryLoggerConfiguration queryLoggerConfiguration = getCassandraQueryLoggerConf(configuration);
-
-        int maxRetries = configuration.getInt("cassandra.retryConnection.maxRetries", DEFAULT_CONNECTION_MAX_RETRIES);
-        int minDelay = configuration.getInt("cassandra.retryConnection.minDelay", DEFAULT_CONNECTION_MIN_DELAY);
-
-        return RetryExecutorUtil.retryOnExceptions(executor, maxRetries, minDelay, NoHostAvailableException.class)
-                .getWithRetry(getClusterRetryCallable(configuration, servers, queryLoggerConfiguration))
-                .get();
-    }
-
-    private RetryCallable<Cluster> getClusterRetryCallable(PropertiesConfiguration configuration, List<Host> servers, QueryLoggerConfiguration queryLoggerConfiguration) {
-        LOGGER.info("Trying to connect to Cassandra service at {}", LocalDateTime.now());
-
-        return context -> ClusterWithKeyspaceCreatedFactory
-            .config(ClusterBuilder.builder()
-                    .servers(servers)
-                    .poolingOptions(readPoolingOptions(configuration))
-                    .queryLoggerConfiguration(queryLoggerConfiguration)
-                    .readTimeoutMillis(configuration.getInt("cassandra.readTimeoutMillis", DEFAULT_READ_TIMEOUT_MILLIS))
-                    .connectTimeoutMillis(configuration.getInt("cassandra.connectTimeoutMillis", DEFAULT_CONNECT_TIMEOUT_MILLIS))
-                    .build(),
-                    configuration.getString("cassandra.keyspace", DEFAULT_KEYSPACE))
-            .replicationFactor(configuration.getInt("cassandra.replication.factor", DEFAULT_REPLICATION_FACTOR))
-            .clusterWithInitializedKeyspace();
-    }
-
-    private Optional<PoolingOptions> readPoolingOptions(PropertiesConfiguration configuration) {
-
-        Optional<Integer> maxConnections = Optional.ofNullable(configuration.getInteger("cassandra.pooling.local.max.connections", null));
-        Optional<Integer> maxRequests = Optional.ofNullable(configuration.getInteger("cassandra.pooling.local.max.requests", null));
-        Optional<Integer> poolingTimeout = Optional.ofNullable(configuration.getInteger("cassandra.pooling.timeout", null));
-        Optional<Integer> heartbeatTimeout = Optional.ofNullable(configuration.getInteger("cassandra.pooling.heartbeat.timeout", null));
-
-        if (!maxConnections.isPresent()
-            && !maxRequests.isPresent()
-            && !poolingTimeout.isPresent()
-            && !heartbeatTimeout.isPresent()) {
-            return Optional.empty();
-        }
-        PoolingOptions result = new PoolingOptions();
-
-        maxConnections.ifPresent(value -> {
-            result.setMaxConnectionsPerHost(HostDistance.LOCAL, value);
-            result.setMaxConnectionsPerHost(HostDistance.REMOTE, value);
-        });
-        maxRequests.ifPresent(value -> {
-            result.setMaxRequestsPerConnection(HostDistance.LOCAL, value);
-            result.setMaxRequestsPerConnection(HostDistance.REMOTE, value);
-        });
-        poolingTimeout.ifPresent(result::setPoolTimeoutMillis);
-        heartbeatTimeout.ifPresent(result::setHeartbeatIntervalSeconds);
-
-        return Optional.of(result);
-    }
-
-    private List<Host> listCassandraServers(PropertiesConfiguration configuration) {
-        String[] ipAndPorts = configuration.getStringArray(CASSANDRA_NODES);
-
-        return Arrays.stream(ipAndPorts)
-                .map(string -> Host.parseConfString(string, ClusterBuilder.DEFAULT_CASSANDRA_PORT))
-                .collect(Guavate.toImmutableList());
-    }
-
-    private Optional<Integer> getOptionalIntegerFromConf(PropertiesConfiguration configuration, String key) {
-        return Optional.ofNullable(configuration.getInteger(key, null));
-    }
-
-    private Optional<Double> getOptionalDoubleFromConf(PropertiesConfiguration configuration, String key) {
-        return Optional.ofNullable(configuration.getDouble(key, null));
-    }
-
-    private QueryLoggerConfiguration getCassandraQueryLoggerConf(PropertiesConfiguration configuration) {
-        QueryLoggerConfiguration.Builder builder = QueryLoggerConfiguration.builder();
-
-        Optional<Long> constantThreshold = getOptionalIntegerFromConf(configuration, "cassandra.query.logger.constant.threshold")
-            .map(Long::valueOf);
-
-        constantThreshold.ifPresent(builder::withConstantThreshold);
-
-        getOptionalIntegerFromConf(configuration, "cassandra.query.logger.max.logged.parameters")
-            .ifPresent(builder::withMaxLoggedParameters);
-
-        getOptionalIntegerFromConf(configuration, "cassandra.query.logger.max.query.string.length")
-            .ifPresent(builder::withMaxQueryStringLength);
-
-        getOptionalIntegerFromConf(configuration, "cassandra.query.logger.max.parameter.value.length")
-            .ifPresent(builder::withMaxParameterValueLength);
-
-        Optional<Double> percentileLatencyConf = getOptionalDoubleFromConf(configuration, "cassandra.query.slow.query.latency.threshold.percentile");
-
-        if (!percentileLatencyConf.isPresent() && !constantThreshold.isPresent()) {
-            percentileLatencyConf = Optional.of(QueryLogger.DEFAULT_SLOW_QUERY_THRESHOLD_PERCENTILE);
-        }
-
-        percentileLatencyConf.ifPresent(slowQueryLatencyThresholdPercentile -> {
-            PerHostPercentileTracker tracker = PerHostPercentileTracker
-                .builder(CASSANDRA_HIGHEST_TRACKABLE_LATENCY_MILLIS)
-                .build();
-
-            builder.withDynamicThreshold(tracker, slowQueryLatencyThresholdPercentile);
-        });
-
-        return builder.build();
-    }
 
     @Provides
     private AsyncRetryExecutor provideAsyncRetryExecutor(ScheduledExecutorService scheduler) {

http://git-wip-us.apache.org/repos/asf/james-project/blob/a18a4488/server/container/guice/cassandra-guice/src/main/java/org/apache/james/modules/mailbox/ResilientClusterProvider.java
----------------------------------------------------------------------
diff --git a/server/container/guice/cassandra-guice/src/main/java/org/apache/james/modules/mailbox/ResilientClusterProvider.java b/server/container/guice/cassandra-guice/src/main/java/org/apache/james/modules/mailbox/ResilientClusterProvider.java
new file mode 100644
index 0000000..c8be620
--- /dev/null
+++ b/server/container/guice/cassandra-guice/src/main/java/org/apache/james/modules/mailbox/ResilientClusterProvider.java
@@ -0,0 +1,178 @@
+package org.apache.james.modules.mailbox;
+
+import java.time.LocalDateTime;
+import java.util.Arrays;
+import java.util.List;
+import java.util.Optional;
+import java.util.concurrent.ExecutionException;
+import java.util.concurrent.TimeUnit;
+
+import javax.annotation.PreDestroy;
+import javax.inject.Inject;
+import javax.inject.Provider;
+import javax.inject.Singleton;
+
+import org.apache.commons.configuration.ConfigurationException;
+import org.apache.commons.configuration.PropertiesConfiguration;
+import org.apache.james.backends.cassandra.init.CassandraSessionConfiguration;
+import org.apache.james.backends.cassandra.init.ClusterBuilder;
+import org.apache.james.backends.cassandra.init.ClusterWithKeyspaceCreatedFactory;
+import org.apache.james.backends.cassandra.init.QueryLoggerConfiguration;
+import org.apache.james.util.Host;
+import org.apache.james.utils.RetryExecutorUtil;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import com.datastax.driver.core.Cluster;
+import com.datastax.driver.core.HostDistance;
+import com.datastax.driver.core.PerHostPercentileTracker;
+import com.datastax.driver.core.PoolingOptions;
+import com.datastax.driver.core.QueryLogger;
+import com.datastax.driver.core.exceptions.NoHostAvailableException;
+import com.github.steveash.guavate.Guavate;
+import com.nurkiewicz.asyncretry.AsyncRetryExecutor;
+import com.nurkiewicz.asyncretry.function.RetryCallable;
+
+@Singleton
+public class ResilientClusterProvider implements Provider<Cluster> {
+
+    private static final int DEFAULT_CONNECTION_MAX_RETRIES = 10;
+    private static final int DEFAULT_CONNECTION_MIN_DELAY = 5000;
+    private static final long CASSANDRA_HIGHEST_TRACKABLE_LATENCY_MILLIS = TimeUnit.SECONDS.toMillis(10);
+    private static final int DEFAULT_REPLICATION_FACTOR = 1;
+    private static final String DEFAULT_KEYSPACE = "apache_james";
+    private static final int DEFAULT_READ_TIMEOUT_MILLIS = 5000;
+    private static final int DEFAULT_CONNECT_TIMEOUT_MILLIS = 5000;
+    private static final String CASSANDRA_NODES = "cassandra.nodes";
+
+    private static final Logger LOGGER = LoggerFactory.getLogger(ResilientClusterProvider.class);
+    private final Cluster cluster;
+
+    @Inject
+    private ResilientClusterProvider(CassandraSessionConfiguration cassandraSessionConfiguration, AsyncRetryExecutor executor) throws ConfigurationException, ExecutionException, InterruptedException {
+        PropertiesConfiguration configuration = cassandraSessionConfiguration.getConfiguration();
+        List<Host> servers = listCassandraServers(configuration);
+        LOGGER.warn("CASSANDRA NODES : {}", servers);
+        QueryLoggerConfiguration queryLoggerConfiguration = getCassandraQueryLoggerConf(configuration);
+
+        int maxRetries = configuration.getInt("cassandra.retryConnection.maxRetries", DEFAULT_CONNECTION_MAX_RETRIES);
+        int minDelay = configuration.getInt("cassandra.retryConnection.minDelay", DEFAULT_CONNECTION_MIN_DELAY);
+
+        cluster = RetryExecutorUtil.retryOnExceptions(executor, maxRetries, minDelay, NoHostAvailableException.class)
+                .getWithRetry(getClusterRetryCallable(configuration, servers, queryLoggerConfiguration))
+                .get();
+    }
+
+    private RetryCallable<Cluster> getClusterRetryCallable(PropertiesConfiguration configuration, List<Host> servers, QueryLoggerConfiguration queryLoggerConfiguration) {
+        LOGGER.info("Trying to connect to Cassandra service at {} (list {})", LocalDateTime.now(), servers);
+
+        return context -> {
+            Cluster cluster = ClusterBuilder.builder()
+                    .servers(servers)
+                    .poolingOptions(readPoolingOptions(configuration))
+                    .queryLoggerConfiguration(queryLoggerConfiguration)
+                    .readTimeoutMillis(configuration.getInt("cassandra.readTimeoutMillis", DEFAULT_READ_TIMEOUT_MILLIS))
+                    .connectTimeoutMillis(configuration.getInt("cassandra.connectTimeoutMillis", DEFAULT_CONNECT_TIMEOUT_MILLIS))
+                    .build();
+            try {
+                return ClusterWithKeyspaceCreatedFactory
+                    .config(cluster,
+                            configuration.getString("cassandra.keyspace", DEFAULT_KEYSPACE))
+                    .replicationFactor(configuration.getInt("cassandra.replication.factor", DEFAULT_REPLICATION_FACTOR))
+                    .clusterWithInitializedKeyspace();
+            } catch (Exception e) {
+                cluster.close();
+                throw e;
+            }
+        };
+    }
+
+    private Optional<PoolingOptions> readPoolingOptions(PropertiesConfiguration configuration) {
+
+        Optional<Integer> maxConnections = Optional.ofNullable(configuration.getInteger("cassandra.pooling.local.max.connections", null));
+        Optional<Integer> maxRequests = Optional.ofNullable(configuration.getInteger("cassandra.pooling.local.max.requests", null));
+        Optional<Integer> poolingTimeout = Optional.ofNullable(configuration.getInteger("cassandra.pooling.timeout", null));
+        Optional<Integer> heartbeatTimeout = Optional.ofNullable(configuration.getInteger("cassandra.pooling.heartbeat.timeout", null));
+
+        if (!maxConnections.isPresent()
+            && !maxRequests.isPresent()
+            && !poolingTimeout.isPresent()
+            && !heartbeatTimeout.isPresent()) {
+            return Optional.empty();
+        }
+        PoolingOptions result = new PoolingOptions();
+
+        maxConnections.ifPresent(value -> {
+            result.setMaxConnectionsPerHost(HostDistance.LOCAL, value);
+            result.setMaxConnectionsPerHost(HostDistance.REMOTE, value);
+        });
+        maxRequests.ifPresent(value -> {
+            result.setMaxRequestsPerConnection(HostDistance.LOCAL, value);
+            result.setMaxRequestsPerConnection(HostDistance.REMOTE, value);
+        });
+        poolingTimeout.ifPresent(result::setPoolTimeoutMillis);
+        heartbeatTimeout.ifPresent(result::setHeartbeatIntervalSeconds);
+
+        return Optional.of(result);
+    }
+
+    private List<Host> listCassandraServers(PropertiesConfiguration configuration) {
+        String[] ipAndPorts = configuration.getStringArray(CASSANDRA_NODES);
+
+        return Arrays.stream(ipAndPorts)
+                .map(string -> Host.parseConfString(string, ClusterBuilder.DEFAULT_CASSANDRA_PORT))
+                .collect(Guavate.toImmutableList());
+    }
+
+    private Optional<Integer> getOptionalIntegerFromConf(PropertiesConfiguration configuration, String key) {
+        return Optional.ofNullable(configuration.getInteger(key, null));
+    }
+
+    private Optional<Double> getOptionalDoubleFromConf(PropertiesConfiguration configuration, String key) {
+        return Optional.ofNullable(configuration.getDouble(key, null));
+    }
+
+    private QueryLoggerConfiguration getCassandraQueryLoggerConf(PropertiesConfiguration configuration) {
+        QueryLoggerConfiguration.Builder builder = QueryLoggerConfiguration.builder();
+
+        Optional<Long> constantThreshold = getOptionalIntegerFromConf(configuration, "cassandra.query.logger.constant.threshold")
+            .map(Long::valueOf);
+
+        constantThreshold.ifPresent(builder::withConstantThreshold);
+
+        getOptionalIntegerFromConf(configuration, "cassandra.query.logger.max.logged.parameters")
+            .ifPresent(builder::withMaxLoggedParameters);
+
+        getOptionalIntegerFromConf(configuration, "cassandra.query.logger.max.query.string.length")
+            .ifPresent(builder::withMaxQueryStringLength);
+
+        getOptionalIntegerFromConf(configuration, "cassandra.query.logger.max.parameter.value.length")
+            .ifPresent(builder::withMaxParameterValueLength);
+
+        Optional<Double> percentileLatencyConf = getOptionalDoubleFromConf(configuration, "cassandra.query.slow.query.latency.threshold.percentile");
+
+        if (!percentileLatencyConf.isPresent() && !constantThreshold.isPresent()) {
+            percentileLatencyConf = Optional.of(QueryLogger.DEFAULT_SLOW_QUERY_THRESHOLD_PERCENTILE);
+        }
+
+        percentileLatencyConf.ifPresent(slowQueryLatencyThresholdPercentile -> {
+            PerHostPercentileTracker tracker = PerHostPercentileTracker
+                .builder(CASSANDRA_HIGHEST_TRACKABLE_LATENCY_MILLIS)
+                .build();
+
+            builder.withDynamicThreshold(tracker, slowQueryLatencyThresholdPercentile);
+        });
+
+        return builder.build();
+    }
+
+    public Cluster get() {
+        return cluster;
+    }
+
+    @PreDestroy
+    public void stop() {
+        cluster.closeAsync();
+    }
+    
+}

http://git-wip-us.apache.org/repos/asf/james-project/blob/a18a4488/server/container/guice/cassandra-guice/src/test/java/org/apache/james/CassandraJamesServerTest.java
----------------------------------------------------------------------
diff --git a/server/container/guice/cassandra-guice/src/test/java/org/apache/james/CassandraJamesServerTest.java b/server/container/guice/cassandra-guice/src/test/java/org/apache/james/CassandraJamesServerTest.java
index b15491e..5b4dbd6 100644
--- a/server/container/guice/cassandra-guice/src/test/java/org/apache/james/CassandraJamesServerTest.java
+++ b/server/container/guice/cassandra-guice/src/test/java/org/apache/james/CassandraJamesServerTest.java
@@ -19,16 +19,20 @@
 
 package org.apache.james;
 
+import org.junit.ClassRule;
 import org.junit.Rule;
 
 public class CassandraJamesServerTest extends AbstractJmapJamesServerTest {
 
+    @ClassRule
+    public static DockerCassandraRule cassandra = new DockerCassandraRule();
+    
     @Rule
     public CassandraJmapTestRule cassandraJmap = CassandraJmapTestRule.defaultTestRule();
 
     @Override
     protected GuiceJamesServer createJamesServer() {
-        return cassandraJmap.jmapServer();
+        return cassandraJmap.jmapServer(cassandra.getModule());
     }
 
     @Override

http://git-wip-us.apache.org/repos/asf/james-project/blob/a18a4488/server/container/guice/cassandra-guice/src/test/java/org/apache/james/CassandraJmapTestRule.java
----------------------------------------------------------------------
diff --git a/server/container/guice/cassandra-guice/src/test/java/org/apache/james/CassandraJmapTestRule.java b/server/container/guice/cassandra-guice/src/test/java/org/apache/james/CassandraJmapTestRule.java
index d57d171..5b031a4 100644
--- a/server/container/guice/cassandra-guice/src/test/java/org/apache/james/CassandraJmapTestRule.java
+++ b/server/container/guice/cassandra-guice/src/test/java/org/apache/james/CassandraJmapTestRule.java
@@ -34,8 +34,7 @@ public class CassandraJmapTestRule implements TestRule {
     private static final int LIMIT_TO_3_MESSAGES = 3;
 
     public static CassandraJmapTestRule defaultTestRule() {
-        return new CassandraJmapTestRule(
-                AggregateGuiceModuleTestRule.of(new EmbeddedElasticSearchRule(), new EmbeddedCassandraRule()));
+        return new CassandraJmapTestRule(new EmbeddedElasticSearchRule());
     }
 
     private GuiceModuleTestRule guiceModuleTestRule;

http://git-wip-us.apache.org/repos/asf/james-project/blob/a18a4488/server/container/guice/cassandra-guice/src/test/java/org/apache/james/CassandraLogConfigurationTest.java
----------------------------------------------------------------------
diff --git a/server/container/guice/cassandra-guice/src/test/java/org/apache/james/CassandraLogConfigurationTest.java b/server/container/guice/cassandra-guice/src/test/java/org/apache/james/CassandraLogConfigurationTest.java
index 659453e..090c1ff 100644
--- a/server/container/guice/cassandra-guice/src/test/java/org/apache/james/CassandraLogConfigurationTest.java
+++ b/server/container/guice/cassandra-guice/src/test/java/org/apache/james/CassandraLogConfigurationTest.java
@@ -27,7 +27,7 @@ import java.nio.channels.SocketChannel;
 import java.nio.charset.Charset;
 
 import org.apache.commons.configuration.PropertiesConfiguration;
-import org.apache.james.modules.mailbox.CassandraSessionConfiguration;
+import org.apache.james.backends.cassandra.init.CassandraSessionConfiguration;
 import org.junit.After;
 import org.junit.Before;
 import org.junit.Rule;
@@ -69,7 +69,7 @@ public class CassandraLogConfigurationTest {
     public void serverShouldStartWithMinimalConfigAboutAConstantThresholdSlowQueryLogger() throws Exception {
         jamesServer = cassandraJmapTestRule.jmapServer(
             (binder) -> binder.bind(CassandraSessionConfiguration.class).toInstance(() -> {
-                PropertiesConfiguration configuration = dockerCassandraRule.getCassandraConfigurationForDocker();
+                PropertiesConfiguration configuration = dockerCassandraRule.getCassandraConfigurationForDocker("keyspace1");
 
                 configuration.addProperty("cassandra.query.logger.constant.threshold", 100);
 
@@ -84,7 +84,7 @@ public class CassandraLogConfigurationTest {
         jamesServer = cassandraJmapTestRule.jmapServer(
             (binder) ->
                 binder.bind(CassandraSessionConfiguration.class).toInstance(() -> {
-                    PropertiesConfiguration configuration = dockerCassandraRule.getCassandraConfigurationForDocker();
+                    PropertiesConfiguration configuration = dockerCassandraRule.getCassandraConfigurationForDocker("keyspace2");
 
                     configuration.addProperty("cassandra.query.slow.query.latency.threshold.percentile", 90);
                     configuration.addProperty("cassandra.query.logger.max.logged.parameters", 9);
@@ -104,7 +104,7 @@ public class CassandraLogConfigurationTest {
         jamesServer = cassandraJmapTestRule.jmapServer(
             (binder) ->
                 binder.bind(CassandraSessionConfiguration.class).toInstance(() -> {
-                    PropertiesConfiguration configuration = dockerCassandraRule.getCassandraConfigurationForDocker();
+                    PropertiesConfiguration configuration = dockerCassandraRule.getCassandraConfigurationForDocker("keyspace3");
 
                     configuration.addProperty("cassandra.query.slow.query.latency.threshold.percentile", 90);
                     configuration.addProperty("cassandra.query.logger.constant.threshold", 100);

http://git-wip-us.apache.org/repos/asf/james-project/blob/a18a4488/server/container/guice/cassandra-guice/src/test/java/org/apache/james/CassandraMessageIdManagerInjectionTest.java
----------------------------------------------------------------------
diff --git a/server/container/guice/cassandra-guice/src/test/java/org/apache/james/CassandraMessageIdManagerInjectionTest.java b/server/container/guice/cassandra-guice/src/test/java/org/apache/james/CassandraMessageIdManagerInjectionTest.java
index e8395cb..b88289a 100644
--- a/server/container/guice/cassandra-guice/src/test/java/org/apache/james/CassandraMessageIdManagerInjectionTest.java
+++ b/server/container/guice/cassandra-guice/src/test/java/org/apache/james/CassandraMessageIdManagerInjectionTest.java
@@ -30,6 +30,7 @@ import org.apache.james.mailbox.MessageIdManager;
 import org.apache.james.utils.ConfigurationPerformer;
 import org.junit.After;
 import org.junit.Before;
+import org.junit.ClassRule;
 import org.junit.Rule;
 import org.junit.Test;
 
@@ -40,8 +41,12 @@ import com.google.inject.multibindings.Multibinder;
 
 public class CassandraMessageIdManagerInjectionTest {
 
+    @ClassRule
+    public static DockerCassandraRule cassandra = new DockerCassandraRule();
+    
     @Rule
     public CassandraJmapTestRule cassandraJmap = CassandraJmapTestRule.defaultTestRule();
+    
     private GuiceJamesServer server;
 
     @Before
@@ -52,7 +57,7 @@ public class CassandraMessageIdManagerInjectionTest {
                 Multibinder.newSetBinder(binder(), ConfigurationPerformer.class).addBinding().to(CallMe.class);
             }
         };
-        server = cassandraJmap.jmapServer(module);
+        server = cassandraJmap.jmapServer(module, cassandra.getModule());
         server.start();
     }
 

http://git-wip-us.apache.org/repos/asf/james-project/blob/a18a4488/server/container/guice/cassandra-guice/src/test/java/org/apache/james/CassandraNodeConfTest.java
----------------------------------------------------------------------
diff --git a/server/container/guice/cassandra-guice/src/test/java/org/apache/james/CassandraNodeConfTest.java b/server/container/guice/cassandra-guice/src/test/java/org/apache/james/CassandraNodeConfTest.java
index 9bc6de5..1124382 100644
--- a/server/container/guice/cassandra-guice/src/test/java/org/apache/james/CassandraNodeConfTest.java
+++ b/server/container/guice/cassandra-guice/src/test/java/org/apache/james/CassandraNodeConfTest.java
@@ -27,15 +27,18 @@ import java.nio.channels.SocketChannel;
 import java.nio.charset.Charset;
 
 import org.apache.commons.configuration.PropertiesConfiguration;
-import org.apache.james.modules.mailbox.CassandraSessionConfiguration;
+import org.apache.james.backends.cassandra.init.CassandraSessionConfiguration;
 import org.junit.After;
 import org.junit.Before;
 import org.junit.Rule;
 import org.junit.Test;
 import org.testcontainers.DockerClientFactory;
 
+import com.google.common.base.Joiner;
+
 public class CassandraNodeConfTest {
 
+    private static final int CASSANDRA_PORT = 9042;
     private static final int IMAP_PORT = 1143;
 
     private static String getDockerHostIp() {
@@ -74,7 +77,10 @@ public class CassandraNodeConfTest {
     @Test
     public void serverShouldStartWhenOneCassandraNodeIsUnreachable() throws Exception {
         String unreachableNode = "10.2.3.42";
-        PropertiesConfiguration configuration = getCassandraConfigurationForDocker(unreachableNode + "," + dockerCassandraRule.getIp());
+        PropertiesConfiguration configuration = getCassandraConfigurationForDocker(
+                Joiner.on(',')
+                    .join(unreachableNode, 
+                          dockerCassandraRule.getIp() + ":" + dockerCassandraRule.getMappedPort(CASSANDRA_PORT)));
 
         jamesServer = cassandraJmapTestRule.jmapServer(
                 (binder) -> binder.bind(CassandraSessionConfiguration.class).toInstance(() -> configuration));
@@ -84,7 +90,7 @@ public class CassandraNodeConfTest {
 
     @Test
     public void configShouldWorkWithNonDefaultPort() throws Exception {
-        PropertiesConfiguration configuration = getCassandraConfigurationForDocker(getDockerHostIp() + ":" + dockerCassandraRule.getBindingPort());
+        PropertiesConfiguration configuration = getCassandraConfigurationForDocker(getDockerHostIp() + ":" + dockerCassandraRule.getMappedPort(CASSANDRA_PORT));
         jamesServer = cassandraJmapTestRule.jmapServer(
                 (binder) -> binder.bind(CassandraSessionConfiguration.class).toInstance(() -> configuration));
 

http://git-wip-us.apache.org/repos/asf/james-project/blob/a18a4488/server/container/guice/cassandra-guice/src/test/java/org/apache/james/CassandraVersionCheckingTest.java
----------------------------------------------------------------------
diff --git a/server/container/guice/cassandra-guice/src/test/java/org/apache/james/CassandraVersionCheckingTest.java b/server/container/guice/cassandra-guice/src/test/java/org/apache/james/CassandraVersionCheckingTest.java
index f66c7bb..9e71aa6 100644
--- a/server/container/guice/cassandra-guice/src/test/java/org/apache/james/CassandraVersionCheckingTest.java
+++ b/server/container/guice/cassandra-guice/src/test/java/org/apache/james/CassandraVersionCheckingTest.java
@@ -34,6 +34,7 @@ import org.apache.james.backends.cassandra.versions.CassandraSchemaVersionDAO;
 import org.apache.james.backends.cassandra.versions.CassandraSchemaVersionManager;
 import org.junit.After;
 import org.junit.Before;
+import org.junit.ClassRule;
 import org.junit.Rule;
 import org.junit.Test;
 import org.junit.rules.ExpectedException;
@@ -45,6 +46,10 @@ public class CassandraVersionCheckingTest {
     private static final int MIN_VERSION = 2;
     private static final int MAX_VERSION = 4;
 
+
+    @ClassRule
+    public static DockerCassandraRule cassandra = new DockerCassandraRule();
+
     @Rule
     public CassandraJmapTestRule cassandraJmapTestRule = CassandraJmapTestRule.defaultTestRule();
 
@@ -75,6 +80,7 @@ public class CassandraVersionCheckingTest {
             .thenReturn(CompletableFuture.completedFuture(Optional.of(MAX_VERSION)));
 
         jamesServer = cassandraJmapTestRule.jmapServer(
+            cassandra.getModule(),
             binder -> binder.bind(CassandraSchemaVersionDAO.class)
                 .toInstance(versionDAO),
             binder -> binder.bind(CassandraSchemaVersionManager.class)
@@ -89,6 +95,7 @@ public class CassandraVersionCheckingTest {
             .thenReturn(CompletableFuture.completedFuture(Optional.of(MIN_VERSION + 1)));
 
         jamesServer = cassandraJmapTestRule.jmapServer(
+            cassandra.getModule(),
             binder -> binder.bind(CassandraSchemaVersionDAO.class)
                 .toInstance(versionDAO),
             binder -> binder.bind(CassandraSchemaVersionManager.class)
@@ -103,6 +110,7 @@ public class CassandraVersionCheckingTest {
             .thenReturn(CompletableFuture.completedFuture(Optional.of(MIN_VERSION)));
 
         jamesServer = cassandraJmapTestRule.jmapServer(
+            cassandra.getModule(),
             binder -> binder.bind(CassandraSchemaVersionDAO.class)
                 .toInstance(versionDAO),
             binder -> binder.bind(CassandraSchemaVersionManager.class)
@@ -117,6 +125,7 @@ public class CassandraVersionCheckingTest {
             .thenReturn(CompletableFuture.completedFuture(Optional.of(MIN_VERSION - 1)));
 
         jamesServer = cassandraJmapTestRule.jmapServer(
+            cassandra.getModule(),
             binder -> binder.bind(CassandraSchemaVersionDAO.class)
                 .toInstance(versionDAO),
             binder -> binder.bind(CassandraSchemaVersionManager.class)
@@ -133,6 +142,7 @@ public class CassandraVersionCheckingTest {
             .thenReturn(CompletableFuture.completedFuture(Optional.of(MAX_VERSION + 1)));
 
         jamesServer = cassandraJmapTestRule.jmapServer(
+            cassandra.getModule(),
             binder -> binder.bind(CassandraSchemaVersionDAO.class)
                 .toInstance(versionDAO),
             binder -> binder.bind(CassandraSchemaVersionManager.class)

http://git-wip-us.apache.org/repos/asf/james-project/blob/a18a4488/server/container/guice/cassandra-guice/src/test/java/org/apache/james/CassandraWithTikaTest.java
----------------------------------------------------------------------
diff --git a/server/container/guice/cassandra-guice/src/test/java/org/apache/james/CassandraWithTikaTest.java b/server/container/guice/cassandra-guice/src/test/java/org/apache/james/CassandraWithTikaTest.java
index 5894933..479a82d 100644
--- a/server/container/guice/cassandra-guice/src/test/java/org/apache/james/CassandraWithTikaTest.java
+++ b/server/container/guice/cassandra-guice/src/test/java/org/apache/james/CassandraWithTikaTest.java
@@ -29,7 +29,7 @@ public class CassandraWithTikaTest extends AbstractJmapJamesServerTest {
     public CassandraJmapTestRule cassandraJmap = new CassandraJmapTestRule(
         AggregateGuiceModuleTestRule.of(
             new EmbeddedElasticSearchRule(),
-            new EmbeddedCassandraRule(),
+            new DockerCassandraRule(),
             guiceTikaRule));
 
     @Override

http://git-wip-us.apache.org/repos/asf/james-project/blob/a18a4488/server/container/guice/cassandra-guice/src/test/java/org/apache/james/DefaultCassandraJamesServerTest.java
----------------------------------------------------------------------
diff --git a/server/container/guice/cassandra-guice/src/test/java/org/apache/james/DefaultCassandraJamesServerTest.java b/server/container/guice/cassandra-guice/src/test/java/org/apache/james/DefaultCassandraJamesServerTest.java
index 4c41e12..c2960e4 100644
--- a/server/container/guice/cassandra-guice/src/test/java/org/apache/james/DefaultCassandraJamesServerTest.java
+++ b/server/container/guice/cassandra-guice/src/test/java/org/apache/james/DefaultCassandraJamesServerTest.java
@@ -27,11 +27,15 @@ import org.apache.james.utils.FailingPropertiesProvider;
 import org.apache.james.utils.PropertiesProvider;
 import org.junit.After;
 import org.junit.Before;
+import org.junit.ClassRule;
 import org.junit.Rule;
 import org.junit.Test;
 
 public class DefaultCassandraJamesServerTest {
 
+    @ClassRule
+    public static DockerCassandraRule cassandra = new DockerCassandraRule();
+    
     @Rule
     public CassandraJmapTestRule cassandraJmap = CassandraJmapTestRule.defaultTestRule();
 
@@ -39,7 +43,7 @@ public class DefaultCassandraJamesServerTest {
 
     @Before
     public void setUp() {
-        guiceJamesServer = cassandraJmap.jmapServer()
+        guiceJamesServer = cassandraJmap.jmapServer(cassandra.getModule())
             .overrideWith(binder -> binder.bind(PropertiesProvider.class).to(FailingPropertiesProvider.class))
             .overrideWith(binder -> binder.bind(ConfigurationProvider.class).toInstance(s -> new HierarchicalConfiguration()));
     }

http://git-wip-us.apache.org/repos/asf/james-project/blob/a18a4488/server/container/guice/cassandra-guice/src/test/java/org/apache/james/DockerCassandraRule.java
----------------------------------------------------------------------
diff --git a/server/container/guice/cassandra-guice/src/test/java/org/apache/james/DockerCassandraRule.java b/server/container/guice/cassandra-guice/src/test/java/org/apache/james/DockerCassandraRule.java
index 232c57b..dc7c199 100644
--- a/server/container/guice/cassandra-guice/src/test/java/org/apache/james/DockerCassandraRule.java
+++ b/server/container/guice/cassandra-guice/src/test/java/org/apache/james/DockerCassandraRule.java
@@ -18,33 +18,25 @@
  ****************************************************************/
 
 package org.apache.james;
-import java.util.Arrays;
-
 import org.apache.commons.configuration.PropertiesConfiguration;
-import org.apache.james.modules.mailbox.CassandraSessionConfiguration;
-import org.apache.james.util.streams.SwarmGenericContainer;
+import org.apache.commons.lang3.RandomStringUtils;
+import org.apache.james.backends.cassandra.init.CassandraSessionConfiguration;
 import org.junit.runner.Description;
 import org.junit.runners.model.Statement;
+import org.testcontainers.containers.GenericContainer;
 
-import com.github.dockerjava.api.model.ExposedPort;
-import com.github.dockerjava.api.model.Ports;
 import com.google.inject.Module;
 
 
 public class DockerCassandraRule implements GuiceModuleTestRule {
 
-    private static final int CASSANDRA_PORT = 9042;
-
-    private static boolean isBindingToEveryThing(Ports.Binding binding) {
-        String bindingIp = binding.getHostIp();
-        return bindingIp == null || bindingIp.equals("0.0.0.0");
-    }
-
-    public PropertiesConfiguration getCassandraConfigurationForDocker() {
+    private org.apache.james.backends.cassandra.DockerCassandraRule cassandraContainer = new org.apache.james.backends.cassandra.DockerCassandraRule();
+    
+    public PropertiesConfiguration getCassandraConfigurationForDocker(String keyspace) {
         PropertiesConfiguration configuration = new PropertiesConfiguration();
 
-        configuration.addProperty("cassandra.nodes", getIp() + ":" + CASSANDRA_PORT);
-        configuration.addProperty("cassandra.keyspace", "apache_james");
+        configuration.addProperty("cassandra.nodes", cassandraContainer.getIp() + ":" + cassandraContainer.getBindingPort());
+        configuration.addProperty("cassandra.keyspace", keyspace);
         configuration.addProperty("cassandra.replication.factor", 1);
         configuration.addProperty("cassandra.retryConnection.maxRetries", 20);
         configuration.addProperty("cassandra.retryConnection.minDelay", 5000);
@@ -52,9 +44,6 @@ public class DockerCassandraRule implements GuiceModuleTestRule {
         return configuration;
     }
 
-    private SwarmGenericContainer cassandraContainer = new SwarmGenericContainer("cassandra:2.2")
-        .withExposedPorts(CASSANDRA_PORT);
-
     @Override
     public Statement apply(Statement base, Description description) {
         return cassandraContainer.apply(base, description);
@@ -66,29 +55,36 @@ public class DockerCassandraRule implements GuiceModuleTestRule {
 
     @Override
     public Module getModule() {
-        return (binder) -> binder.bind(CassandraSessionConfiguration.class).toInstance(this::getCassandraConfigurationForDocker);
+        String keyspace = RandomStringUtils.randomAlphabetic(12);
+        return (binder) -> binder.bind(CassandraSessionConfiguration.class).toInstance(() -> getCassandraConfigurationForDocker(keyspace));
     }
 
     public String getIp() {
         return cassandraContainer.getIp();
     }
 
-    public int getBindingPort() {
-        Ports.Binding[] bindings =  cassandraContainer
-                .getContainerInfo()
-                .getNetworkSettings()
-                .getPorts()
-                .getBindings()
-                .get(ExposedPort.tcp(CASSANDRA_PORT));
-
-        return Integer.valueOf(
-                Arrays.stream(bindings)
-                    .filter(DockerCassandraRule::isBindingToEveryThing)
-                    .map(Ports.Binding::getHostPortSpec)
-                    .findFirst().get());
+    public Integer getMappedPort(int originalPort) {
+        return cassandraContainer.getBindingPort();
+    }
+
+    public void start() {
+        cassandraContainer.start();
     }
 
-    public SwarmGenericContainer getCassandraContainer() {
-        return cassandraContainer;
+    public void stop() {
+        cassandraContainer.stop();
     }
+
+    public GenericContainer<?> getRawContainer() {
+        return cassandraContainer.getRawContainer();
+    }
+
+    public void pause() {
+        cassandraContainer.pause();
+    }
+
+    public void unpause() {
+        cassandraContainer.unpause();
+    }
+
 }

http://git-wip-us.apache.org/repos/asf/james-project/blob/a18a4488/server/container/guice/cassandra-guice/src/test/java/org/apache/james/DockerElasticSearchRule.java
----------------------------------------------------------------------
diff --git a/server/container/guice/cassandra-guice/src/test/java/org/apache/james/DockerElasticSearchRule.java b/server/container/guice/cassandra-guice/src/test/java/org/apache/james/DockerElasticSearchRule.java
index 4cd4186..75fe4a3 100644
--- a/server/container/guice/cassandra-guice/src/test/java/org/apache/james/DockerElasticSearchRule.java
+++ b/server/container/guice/cassandra-guice/src/test/java/org/apache/james/DockerElasticSearchRule.java
@@ -37,7 +37,7 @@ public class DockerElasticSearchRule implements GuiceModuleTestRule {
         PropertiesConfiguration configuration = new PropertiesConfiguration();
 
         configuration.addProperty("elasticsearch.masterHost", getIp());
-        configuration.addProperty("elasticsearch.port", ELASTIC_SEARCH_PORT);
+        configuration.addProperty("elasticsearch.port", elasticSearchContainer.getMappedPort(ELASTIC_SEARCH_PORT));
 
         configuration.addProperty("elasticsearch.nb.shards", 1);
         configuration.addProperty("elasticsearch.nb.replica", 0);
@@ -45,7 +45,7 @@ public class DockerElasticSearchRule implements GuiceModuleTestRule {
         configuration.addProperty("elasticsearch.retryConnection.minDelay", 3000);
         configuration.addProperty("elasticsearch.indexAttachments", false);
         configuration.addProperty("elasticsearch.http.host", getIp());
-        configuration.addProperty("elasticsearch.http.port", ELASTIC_SEARCH_HTTP_PORT);
+        configuration.addProperty("elasticsearch.http.port", elasticSearchContainer.getMappedPort(ELASTIC_SEARCH_HTTP_PORT));
         configuration.addProperty("elasticsearch.metrics.reports.enabled", true);
         configuration.addProperty("elasticsearch.metrics.reports.period", 30);
         configuration.addProperty("elasticsearch.metrics.reports.index", "james-metrics");
@@ -71,10 +71,18 @@ public class DockerElasticSearchRule implements GuiceModuleTestRule {
     }
 
     public String getIp() {
-        return elasticSearchContainer.getIp();
+        return elasticSearchContainer.getHostIp();
     }
 
     public SwarmGenericContainer getElasticSearchContainer() {
         return elasticSearchContainer;
     }
+
+    public void pause() {
+        elasticSearchContainer.pause();
+    }
+
+    public void unpause() {
+        elasticSearchContainer.unpause();
+    }
 }

http://git-wip-us.apache.org/repos/asf/james-project/blob/a18a4488/server/container/guice/cassandra-guice/src/test/java/org/apache/james/ESReporterTest.java
----------------------------------------------------------------------
diff --git a/server/container/guice/cassandra-guice/src/test/java/org/apache/james/ESReporterTest.java b/server/container/guice/cassandra-guice/src/test/java/org/apache/james/ESReporterTest.java
index 2cc679d..2e46abf 100644
--- a/server/container/guice/cassandra-guice/src/test/java/org/apache/james/ESReporterTest.java
+++ b/server/container/guice/cassandra-guice/src/test/java/org/apache/james/ESReporterTest.java
@@ -68,7 +68,7 @@ public class ESReporterTest {
     private Timer timer;
 
     @Rule
-    public CassandraJmapTestRule cassandraJmap = new CassandraJmapTestRule(embeddedElasticSearchRule, new EmbeddedCassandraRule());
+    public CassandraJmapTestRule cassandraJmap = new CassandraJmapTestRule(embeddedElasticSearchRule, new DockerCassandraRule());
 
     private GuiceJamesServer server;
     private AccessToken accessToken;

http://git-wip-us.apache.org/repos/asf/james-project/blob/a18a4488/server/container/guice/cassandra-guice/src/test/java/org/apache/james/EmbeddedCassandraRule.java
----------------------------------------------------------------------
diff --git a/server/container/guice/cassandra-guice/src/test/java/org/apache/james/EmbeddedCassandraRule.java b/server/container/guice/cassandra-guice/src/test/java/org/apache/james/EmbeddedCassandraRule.java
deleted file mode 100644
index c9a65a7..0000000
--- a/server/container/guice/cassandra-guice/src/test/java/org/apache/james/EmbeddedCassandraRule.java
+++ /dev/null
@@ -1,75 +0,0 @@
-/****************************************************************
- * Licensed to the Apache Software Foundation (ASF) under one   *
- * or more contributor license agreements.  See the NOTICE file *
- * distributed with this work for additional information        *
- * regarding copyright ownership.  The ASF licenses this file   *
- * to you under the Apache License, Version 2.0 (the            *
- * "License"); you may not use this file except in compliance   *
- * with the License.  You may obtain a copy of the License at   *
- *                                                              *
- *   http://www.apache.org/licenses/LICENSE-2.0                 *
- *                                                              *
- * Unless required by applicable law or agreed to in writing,   *
- * software distributed under the License is distributed on an  *
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY       *
- * KIND, either express or implied.  See the License for the    *
- * specific language governing permissions and limitations      *
- * under the License.                                           *
- ****************************************************************/
-
-package org.apache.james;
-import javax.inject.Inject;
-import javax.inject.Provider;
-
-import org.apache.james.backends.cassandra.CassandraCluster;
-import org.apache.james.backends.cassandra.EmbeddedCassandra;
-import org.junit.runner.Description;
-import org.junit.runners.model.Statement;
-
-import com.datastax.driver.core.Session;
-import com.google.inject.Module;
-import com.google.inject.Scopes;
-import com.google.inject.util.Modules;
-
-
-public class EmbeddedCassandraRule implements GuiceModuleTestRule {
-
-    public static class SessionProvider implements Provider<Session> {
-
-        private final Session session;
-
-        @Inject
-        private SessionProvider(CassandraCluster cluster) {
-            session = cluster.getConf();
-        }
-
-        @Override
-        public Session get() {
-            return session;
-        }
-    }
-
-    private EmbeddedCassandra cassandra;
-
-    @Override
-    public Statement apply(Statement base, Description description) {
-        return new Statement() {
-            @Override
-            public void evaluate() throws Throwable {
-                cassandra = EmbeddedCassandra.createStartServer();
-                base.evaluate();
-            }
-        };
-    }
-
-    @Override
-    public void await() {
-    }
-
-    @Override
-    public Module getModule() {
-        return Modules.combine(
-                (binder) -> binder.bind(EmbeddedCassandra.class).toInstance(cassandra),
-                (binder) -> binder.bind(Session.class).toProvider(SessionProvider.class).in(Scopes.SINGLETON));
-    }
-}

http://git-wip-us.apache.org/repos/asf/james-project/blob/a18a4488/server/container/guice/cassandra-guice/src/test/java/org/apache/james/JamesCapabilitiesServerTest.java
----------------------------------------------------------------------
diff --git a/server/container/guice/cassandra-guice/src/test/java/org/apache/james/JamesCapabilitiesServerTest.java b/server/container/guice/cassandra-guice/src/test/java/org/apache/james/JamesCapabilitiesServerTest.java
index 3dbce73..5fee8a5 100644
--- a/server/container/guice/cassandra-guice/src/test/java/org/apache/james/JamesCapabilitiesServerTest.java
+++ b/server/container/guice/cassandra-guice/src/test/java/org/apache/james/JamesCapabilitiesServerTest.java
@@ -26,8 +26,6 @@ import java.util.EnumSet;
 
 import org.apache.activemq.store.PersistenceAdapter;
 import org.apache.activemq.store.memory.MemoryPersistenceAdapter;
-import org.apache.james.backends.cassandra.CassandraCluster;
-import org.apache.james.backends.cassandra.components.CassandraModule;
 import org.apache.james.backends.es.EmbeddedElasticSearch;
 import org.apache.james.jmap.methods.GetMessageListMethod;
 import org.apache.james.mailbox.MailboxManager;
@@ -41,24 +39,22 @@ import org.junit.Test;
 import org.junit.rules.RuleChain;
 import org.junit.rules.TemporaryFolder;
 
-import com.datastax.driver.core.Session;
-import com.google.inject.AbstractModule;
 import com.google.inject.Module;
-import com.google.inject.Provides;
-import com.google.inject.Singleton;
 
 public class JamesCapabilitiesServerTest {
 
     private GuiceJamesServer server;
     private TemporaryFolder temporaryFolder = new TemporaryFolder();
     private EmbeddedElasticSearch embeddedElasticSearch = new EmbeddedElasticSearch(temporaryFolder, MailboxElasticsearchConstants.MAILBOX_INDEX);
-
+    private DockerCassandraRule cassandraServer = new DockerCassandraRule();
+    
     @Rule
-    public RuleChain chain = RuleChain.outerRule(temporaryFolder).around(embeddedElasticSearch);
+    public RuleChain chain = RuleChain.outerRule(temporaryFolder).around(embeddedElasticSearch).around(cassandraServer);
 
     @After
     public void teardown() {
         server.stop();
+        
     }
     
     private GuiceJamesServer createCassandraJamesServer(final MailboxManager mailboxManager) {
@@ -69,22 +65,9 @@ public class JamesCapabilitiesServerTest {
             .overrideWith((binder) -> binder.bind(PersistenceAdapter.class).to(MemoryPersistenceAdapter.class))
             .overrideWith(new TestElasticSearchModule(embeddedElasticSearch),
                 new TestFilesystemModule(temporaryFolder),
+                cassandraServer.getModule(),
                 new TestJMAPServerModule(GetMessageListMethod.DEFAULT_MAXIMUM_LIMIT),
-                mockMailboxManager,
-                new AbstractModule() {
-
-                    @Override
-                    protected void configure() {
-                    }
-
-                    @Provides
-                    @Singleton
-                    Session provideSession(CassandraModule cassandraModule) {
-                        CassandraCluster cassandra = CassandraCluster.create(cassandraModule);
-                        return cassandra.getConf();
-                    }
-
-                });
+                mockMailboxManager);
     }
     
     @Test


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


[08/13] james-project git commit: JAMES-2133 Switch from cassandraunit to cassandra in docker

Posted by ma...@apache.org.
http://git-wip-us.apache.org/repos/asf/james-project/blob/a18a4488/mailbox/jpa/src/test/java/org/apache/james/mailbox/jpa/JPASubscriptionManagerTest.java
----------------------------------------------------------------------
diff --git a/mailbox/jpa/src/test/java/org/apache/james/mailbox/jpa/JPASubscriptionManagerTest.java b/mailbox/jpa/src/test/java/org/apache/james/mailbox/jpa/JPASubscriptionManagerTest.java
index edf4623..69021a8 100644
--- a/mailbox/jpa/src/test/java/org/apache/james/mailbox/jpa/JPASubscriptionManagerTest.java
+++ b/mailbox/jpa/src/test/java/org/apache/james/mailbox/jpa/JPASubscriptionManagerTest.java
@@ -28,11 +28,17 @@ import org.apache.james.mailbox.jpa.mail.JPAModSeqProvider;
 import org.apache.james.mailbox.jpa.mail.JPAUidProvider;
 import org.apache.james.mailbox.store.JVMMailboxPathLocker;
 import org.junit.After;
+import org.junit.Before;
 
 public class JPASubscriptionManagerTest extends AbstractSubscriptionManagerTest{
 
     private static final JpaTestCluster JPA_TEST_CLUSTER = JpaTestCluster.create(JPAMailboxFixture.MAILBOX_PERSISTANCE_CLASSES);
     
+    @Before
+    public void setUp() throws Exception {
+        super.setup();
+    }
+    
     @Override
     public SubscriptionManager createSubscriptionManager() {
         JVMMailboxPathLocker locker = new JVMMailboxPathLocker();

http://git-wip-us.apache.org/repos/asf/james-project/blob/a18a4488/mailbox/jpa/src/test/java/org/apache/james/mailbox/jpa/JpaMailboxManagerStressTest.java
----------------------------------------------------------------------
diff --git a/mailbox/jpa/src/test/java/org/apache/james/mailbox/jpa/JpaMailboxManagerStressTest.java b/mailbox/jpa/src/test/java/org/apache/james/mailbox/jpa/JpaMailboxManagerStressTest.java
index a3ed58c..3ddf4cd 100644
--- a/mailbox/jpa/src/test/java/org/apache/james/mailbox/jpa/JpaMailboxManagerStressTest.java
+++ b/mailbox/jpa/src/test/java/org/apache/james/mailbox/jpa/JpaMailboxManagerStressTest.java
@@ -27,12 +27,18 @@ import org.apache.james.mailbox.MailboxManagerStressTest;
 import org.apache.james.mailbox.exception.MailboxException;
 import org.apache.james.mailbox.jpa.openjpa.OpenJPAMailboxManager;
 import org.junit.After;
+import org.junit.Before;
 
 public class JpaMailboxManagerStressTest extends MailboxManagerStressTest {
 
     private static final JpaTestCluster JPA_TEST_CLUSTER = JpaTestCluster.create(JPAMailboxFixture.MAILBOX_PERSISTANCE_CLASSES);
     private Optional<OpenJPAMailboxManager> openJPAMailboxManager = Optional.empty();
 
+    @Before
+    public void setUp() throws Exception {
+        super.setUp();
+    }
+    
     @Override
     protected MailboxManager provideManager() {
         if (!openJPAMailboxManager.isPresent()) {

http://git-wip-us.apache.org/repos/asf/james-project/blob/a18a4488/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 1a68198..19ce386 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
@@ -19,7 +19,6 @@
 
 package org.apache.james.mailbox.jpa.mail;
 
-import java.io.IOException;
 import java.util.List;
 import java.util.Random;
 
@@ -98,11 +97,6 @@ public class JPAMapperProvider implements MapperProvider {
     }
 
     @Override
-    public void ensureMapperPrepared() throws MailboxException {
-
-    }
-
-    @Override
     public boolean supportPartialAttachmentFetch() {
         return false;
     }
@@ -132,8 +126,4 @@ public class JPAMapperProvider implements MapperProvider {
         throw new NotImplementedException();
     }
 
-    @Override
-    public void close() throws IOException {
-
-    }
 }

http://git-wip-us.apache.org/repos/asf/james-project/blob/a18a4488/mailbox/jpa/src/test/java/org/apache/james/mailbox/jpa/mail/JpaAnnotationMapperTest.java
----------------------------------------------------------------------
diff --git a/mailbox/jpa/src/test/java/org/apache/james/mailbox/jpa/mail/JpaAnnotationMapperTest.java b/mailbox/jpa/src/test/java/org/apache/james/mailbox/jpa/mail/JpaAnnotationMapperTest.java
index f61200f..c35cbf3 100644
--- a/mailbox/jpa/src/test/java/org/apache/james/mailbox/jpa/mail/JpaAnnotationMapperTest.java
+++ b/mailbox/jpa/src/test/java/org/apache/james/mailbox/jpa/mail/JpaAnnotationMapperTest.java
@@ -23,11 +23,17 @@ import org.apache.james.backends.jpa.JpaTestCluster;
 import org.apache.james.mailbox.jpa.JPAMailboxFixture;
 import org.apache.james.mailbox.store.mail.model.AnnotationMapperTest;
 import org.apache.james.mailbox.store.mail.model.MapperProvider;
+import org.junit.Before;
 
 public class JpaAnnotationMapperTest extends AnnotationMapperTest {
 
     public static final JpaTestCluster JPA_TEST_CLUSTER = JpaTestCluster.create(JPAMailboxFixture.MAILBOX_PERSISTANCE_CLASSES);
 
+    @Before
+    public void setUp() throws Exception {
+        super.setUp();
+    }
+    
     @Override
     protected MapperProvider createMapperProvider() {
         return new JPAMapperProvider(JPA_TEST_CLUSTER);

http://git-wip-us.apache.org/repos/asf/james-project/blob/a18a4488/mailbox/jpa/src/test/java/org/apache/james/mailbox/jpa/mail/JpaMailboxMapperTest.java
----------------------------------------------------------------------
diff --git a/mailbox/jpa/src/test/java/org/apache/james/mailbox/jpa/mail/JpaMailboxMapperTest.java b/mailbox/jpa/src/test/java/org/apache/james/mailbox/jpa/mail/JpaMailboxMapperTest.java
index 4dde441..224b8f1 100644
--- a/mailbox/jpa/src/test/java/org/apache/james/mailbox/jpa/mail/JpaMailboxMapperTest.java
+++ b/mailbox/jpa/src/test/java/org/apache/james/mailbox/jpa/mail/JpaMailboxMapperTest.java
@@ -23,13 +23,25 @@ import org.apache.james.backends.jpa.JpaTestCluster;
 import org.apache.james.mailbox.jpa.JPAMailboxFixture;
 import org.apache.james.mailbox.store.mail.model.MailboxMapperTest;
 import org.apache.james.mailbox.store.mail.model.MapperProvider;
+import org.junit.After;
+import org.junit.Before;
 
 public class JpaMailboxMapperTest extends MailboxMapperTest {
 
     public static final JpaTestCluster JPA_TEST_CLUSTER = JpaTestCluster.create(JPAMailboxFixture.MAILBOX_PERSISTANCE_CLASSES);
 
+    @Before
+    public void setUp() throws Exception {
+        super.setUp();
+    }
+    
     @Override
     protected MapperProvider createMapperProvider() {
         return new JPAMapperProvider(JPA_TEST_CLUSTER);
     }
+    
+    @After
+    public void cleanUp() {
+        JPA_TEST_CLUSTER.clear(JPAMailboxFixture.MAILBOX_TABLE_NAMES);
+    }
 }

http://git-wip-us.apache.org/repos/asf/james-project/blob/a18a4488/mailbox/jpa/src/test/java/org/apache/james/mailbox/jpa/mail/JpaMessageMapperTest.java
----------------------------------------------------------------------
diff --git a/mailbox/jpa/src/test/java/org/apache/james/mailbox/jpa/mail/JpaMessageMapperTest.java b/mailbox/jpa/src/test/java/org/apache/james/mailbox/jpa/mail/JpaMessageMapperTest.java
index 1230ae4..2e9328e 100644
--- a/mailbox/jpa/src/test/java/org/apache/james/mailbox/jpa/mail/JpaMessageMapperTest.java
+++ b/mailbox/jpa/src/test/java/org/apache/james/mailbox/jpa/mail/JpaMessageMapperTest.java
@@ -23,13 +23,25 @@ import org.apache.james.backends.jpa.JpaTestCluster;
 import org.apache.james.mailbox.jpa.JPAMailboxFixture;
 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.Before;
 
 public class JpaMessageMapperTest extends MessageMapperTest {
 
     public static final JpaTestCluster JPA_TEST_CLUSTER = JpaTestCluster.create(JPAMailboxFixture.MAILBOX_PERSISTANCE_CLASSES);
 
+    @Before
+    public void setUp() throws Exception {
+        super.setUp();
+    }
+    
     @Override
     protected MapperProvider createMapperProvider() {
         return new JPAMapperProvider(JPA_TEST_CLUSTER);
     }
+    
+    @After
+    public void cleanUp() {
+        JPA_TEST_CLUSTER.clear(JPAMailboxFixture.MAILBOX_TABLE_NAMES);
+    }
 }

http://git-wip-us.apache.org/repos/asf/james-project/blob/a18a4488/mailbox/maildir/src/test/java/org/apache/james/mailbox/maildir/DomainUserMaildirMailboxManagerStressTest.java
----------------------------------------------------------------------
diff --git a/mailbox/maildir/src/test/java/org/apache/james/mailbox/maildir/DomainUserMaildirMailboxManagerStressTest.java b/mailbox/maildir/src/test/java/org/apache/james/mailbox/maildir/DomainUserMaildirMailboxManagerStressTest.java
index 58d8fe9..d90cd2f 100644
--- a/mailbox/maildir/src/test/java/org/apache/james/mailbox/maildir/DomainUserMaildirMailboxManagerStressTest.java
+++ b/mailbox/maildir/src/test/java/org/apache/james/mailbox/maildir/DomainUserMaildirMailboxManagerStressTest.java
@@ -21,6 +21,7 @@ package org.apache.james.mailbox.maildir;
 
 import org.apache.james.mailbox.MailboxManager;
 import org.apache.james.mailbox.MailboxManagerStressTest;
+import org.junit.Before;
 import org.junit.Rule;
 import org.junit.rules.TemporaryFolder;
 
@@ -30,6 +31,11 @@ public class DomainUserMaildirMailboxManagerStressTest extends MailboxManagerStr
     @Rule
     public TemporaryFolder tmpFolder = new TemporaryFolder();
     
+    @Before
+    public void setUp() throws Exception {
+        super.setUp();
+    }
+    
     @Override
     protected MailboxManager provideManager() {
         try {

http://git-wip-us.apache.org/repos/asf/james-project/blob/a18a4488/mailbox/maildir/src/test/java/org/apache/james/mailbox/maildir/DomainUserMaildirMailboxManagerTest.java
----------------------------------------------------------------------
diff --git a/mailbox/maildir/src/test/java/org/apache/james/mailbox/maildir/DomainUserMaildirMailboxManagerTest.java b/mailbox/maildir/src/test/java/org/apache/james/mailbox/maildir/DomainUserMaildirMailboxManagerTest.java
index ab27808..ab0a6d2 100644
--- a/mailbox/maildir/src/test/java/org/apache/james/mailbox/maildir/DomainUserMaildirMailboxManagerTest.java
+++ b/mailbox/maildir/src/test/java/org/apache/james/mailbox/maildir/DomainUserMaildirMailboxManagerTest.java
@@ -23,6 +23,7 @@ import java.io.UnsupportedEncodingException;
 import org.apache.james.mailbox.MailboxManager;
 import org.apache.james.mailbox.MailboxManagerTest;
 import org.apache.james.mailbox.exception.MailboxException;
+import org.junit.Before;
 import org.junit.Ignore;
 import org.junit.Rule;
 import org.junit.rules.TemporaryFolder;
@@ -34,6 +35,11 @@ public class DomainUserMaildirMailboxManagerTest extends MailboxManagerTest {
     @Rule
     public TemporaryFolder tmpFolder = new TemporaryFolder();
 
+    @Before
+    public void setUp() throws Exception {
+        super.setUp();
+    }
+    
     @Override
     protected MailboxManager provideMailboxManager() {
         try {

http://git-wip-us.apache.org/repos/asf/james-project/blob/a18a4488/mailbox/maildir/src/test/java/org/apache/james/mailbox/maildir/FullUserMaildirMailboxManagerStressTest.java
----------------------------------------------------------------------
diff --git a/mailbox/maildir/src/test/java/org/apache/james/mailbox/maildir/FullUserMaildirMailboxManagerStressTest.java b/mailbox/maildir/src/test/java/org/apache/james/mailbox/maildir/FullUserMaildirMailboxManagerStressTest.java
index e2ef938..3e87c41 100644
--- a/mailbox/maildir/src/test/java/org/apache/james/mailbox/maildir/FullUserMaildirMailboxManagerStressTest.java
+++ b/mailbox/maildir/src/test/java/org/apache/james/mailbox/maildir/FullUserMaildirMailboxManagerStressTest.java
@@ -21,6 +21,7 @@ package org.apache.james.mailbox.maildir;
 
 import org.apache.james.mailbox.MailboxManager;
 import org.apache.james.mailbox.MailboxManagerStressTest;
+import org.junit.Before;
 import org.junit.Rule;
 import org.junit.rules.TemporaryFolder;
 
@@ -30,6 +31,11 @@ public class FullUserMaildirMailboxManagerStressTest extends MailboxManagerStres
     @Rule
     public TemporaryFolder tmpFolder = new TemporaryFolder();
     
+    @Before
+    public void setUp() throws Exception {
+        super.setUp();
+    }
+    
     @Override
     protected MailboxManager provideManager() {
         try {

http://git-wip-us.apache.org/repos/asf/james-project/blob/a18a4488/mailbox/maildir/src/test/java/org/apache/james/mailbox/maildir/FullUserMaildirMailboxManagerTest.java
----------------------------------------------------------------------
diff --git a/mailbox/maildir/src/test/java/org/apache/james/mailbox/maildir/FullUserMaildirMailboxManagerTest.java b/mailbox/maildir/src/test/java/org/apache/james/mailbox/maildir/FullUserMaildirMailboxManagerTest.java
index d6140b8..a1abd45 100644
--- a/mailbox/maildir/src/test/java/org/apache/james/mailbox/maildir/FullUserMaildirMailboxManagerTest.java
+++ b/mailbox/maildir/src/test/java/org/apache/james/mailbox/maildir/FullUserMaildirMailboxManagerTest.java
@@ -23,6 +23,7 @@ import java.io.UnsupportedEncodingException;
 import org.apache.james.mailbox.MailboxManager;
 import org.apache.james.mailbox.MailboxManagerTest;
 import org.apache.james.mailbox.exception.MailboxException;
+import org.junit.Before;
 import org.junit.Ignore;
 import org.junit.Rule;
 import org.junit.rules.TemporaryFolder;
@@ -34,6 +35,11 @@ public class FullUserMaildirMailboxManagerTest extends MailboxManagerTest {
     @Rule
     public TemporaryFolder tmpFolder = new TemporaryFolder();
 
+    @Before
+    public void setUp() throws Exception {
+        super.setUp();
+    }
+    
     @Override
     protected MailboxManager provideMailboxManager() {
         try {

http://git-wip-us.apache.org/repos/asf/james-project/blob/a18a4488/mailbox/maildir/src/test/java/org/apache/james/mailbox/maildir/MaildirSubscriptionManagerTest.java
----------------------------------------------------------------------
diff --git a/mailbox/maildir/src/test/java/org/apache/james/mailbox/maildir/MaildirSubscriptionManagerTest.java b/mailbox/maildir/src/test/java/org/apache/james/mailbox/maildir/MaildirSubscriptionManagerTest.java
index 7b5c390..50b1052 100644
--- a/mailbox/maildir/src/test/java/org/apache/james/mailbox/maildir/MaildirSubscriptionManagerTest.java
+++ b/mailbox/maildir/src/test/java/org/apache/james/mailbox/maildir/MaildirSubscriptionManagerTest.java
@@ -22,12 +22,23 @@ import org.apache.james.mailbox.AbstractSubscriptionManagerTest;
 import org.apache.james.mailbox.SubscriptionManager;
 import org.apache.james.mailbox.store.JVMMailboxPathLocker;
 import org.apache.james.mailbox.store.StoreSubscriptionManager;
+import org.junit.Before;
+import org.junit.Rule;
+import org.junit.rules.TemporaryFolder;
 
 public class MaildirSubscriptionManagerTest extends AbstractSubscriptionManagerTest{
 
+    @Rule
+    public TemporaryFolder tmpFolder = new TemporaryFolder();
+    
+    @Before
+    public void setUp() throws Exception {
+        super.setup();
+    }
+    
     @Override
     public SubscriptionManager createSubscriptionManager() {
-        MaildirStore store = new MaildirStore("target/Maildir/%domain/%user", new JVMMailboxPathLocker());
+        MaildirStore store = new MaildirStore(tmpFolder + "/Maildir/%domain/%user", new JVMMailboxPathLocker());
         MaildirMailboxSessionMapperFactory factory = new MaildirMailboxSessionMapperFactory(store);
         return new StoreSubscriptionManager(factory);
     }

http://git-wip-us.apache.org/repos/asf/james-project/blob/a18a4488/mailbox/maildir/src/test/java/org/apache/james/mailbox/maildir/UserMaildirMailboxManagerStressTest.java
----------------------------------------------------------------------
diff --git a/mailbox/maildir/src/test/java/org/apache/james/mailbox/maildir/UserMaildirMailboxManagerStressTest.java b/mailbox/maildir/src/test/java/org/apache/james/mailbox/maildir/UserMaildirMailboxManagerStressTest.java
index f7c8479..f12e6f4 100644
--- a/mailbox/maildir/src/test/java/org/apache/james/mailbox/maildir/UserMaildirMailboxManagerStressTest.java
+++ b/mailbox/maildir/src/test/java/org/apache/james/mailbox/maildir/UserMaildirMailboxManagerStressTest.java
@@ -21,6 +21,7 @@ package org.apache.james.mailbox.maildir;
 
 import org.apache.james.mailbox.MailboxManager;
 import org.apache.james.mailbox.MailboxManagerStressTest;
+import org.junit.Before;
 import org.junit.Rule;
 import org.junit.rules.TemporaryFolder;
 
@@ -30,6 +31,11 @@ public class UserMaildirMailboxManagerStressTest extends MailboxManagerStressTes
     @Rule
     public TemporaryFolder tmpFolder = new TemporaryFolder();
     
+    @Before
+    public void setUp() throws Exception {
+        super.setUp();
+    }
+    
     @Override
     protected MailboxManager provideManager() {
         try {

http://git-wip-us.apache.org/repos/asf/james-project/blob/a18a4488/mailbox/memory/src/test/java/org/apache/james/mailbox/inmemory/InMemoryCombinationManagerTest.java
----------------------------------------------------------------------
diff --git a/mailbox/memory/src/test/java/org/apache/james/mailbox/inmemory/InMemoryCombinationManagerTest.java b/mailbox/memory/src/test/java/org/apache/james/mailbox/inmemory/InMemoryCombinationManagerTest.java
index 3f60bde..0a63c02 100644
--- a/mailbox/memory/src/test/java/org/apache/james/mailbox/inmemory/InMemoryCombinationManagerTest.java
+++ b/mailbox/memory/src/test/java/org/apache/james/mailbox/inmemory/InMemoryCombinationManagerTest.java
@@ -20,9 +20,15 @@ package org.apache.james.mailbox.inmemory;
 
 import org.apache.james.mailbox.store.AbstractCombinationManagerTest;
 import org.apache.james.mailbox.store.CombinationManagerTestSystem;
+import org.junit.Before;
 
 public class InMemoryCombinationManagerTest extends AbstractCombinationManagerTest {
 
+    @Before
+    public void setUp() throws Exception {
+        super.setUp();
+    }
+    
     @Override
     public CombinationManagerTestSystem createTestingData() {
         return MessageIdManagerTestSystemProvider.createManagersTestingData();

http://git-wip-us.apache.org/repos/asf/james-project/blob/a18a4488/mailbox/memory/src/test/java/org/apache/james/mailbox/inmemory/InMemoryCombinationManagerTestSystem.java
----------------------------------------------------------------------
diff --git a/mailbox/memory/src/test/java/org/apache/james/mailbox/inmemory/InMemoryCombinationManagerTestSystem.java b/mailbox/memory/src/test/java/org/apache/james/mailbox/inmemory/InMemoryCombinationManagerTestSystem.java
index 42f7a12..5b96a3a 100644
--- a/mailbox/memory/src/test/java/org/apache/james/mailbox/inmemory/InMemoryCombinationManagerTestSystem.java
+++ b/mailbox/memory/src/test/java/org/apache/james/mailbox/inmemory/InMemoryCombinationManagerTestSystem.java
@@ -50,10 +50,4 @@ public class InMemoryCombinationManagerTestSystem extends CombinationManagerTest
         return new SimpleMailbox(mailboxPath, UID_VALIDITY, messageManager.getId());
     }
 
-    @Override
-    public void clean() {
-
-    }
-
-
 }

http://git-wip-us.apache.org/repos/asf/james-project/blob/a18a4488/mailbox/memory/src/test/java/org/apache/james/mailbox/inmemory/InMemoryMessageIdManagerStorageTest.java
----------------------------------------------------------------------
diff --git a/mailbox/memory/src/test/java/org/apache/james/mailbox/inmemory/InMemoryMessageIdManagerStorageTest.java b/mailbox/memory/src/test/java/org/apache/james/mailbox/inmemory/InMemoryMessageIdManagerStorageTest.java
index 4172fe9..b9aa92b 100644
--- a/mailbox/memory/src/test/java/org/apache/james/mailbox/inmemory/InMemoryMessageIdManagerStorageTest.java
+++ b/mailbox/memory/src/test/java/org/apache/james/mailbox/inmemory/InMemoryMessageIdManagerStorageTest.java
@@ -20,9 +20,15 @@ package org.apache.james.mailbox.inmemory;
 
 import org.apache.james.mailbox.store.AbstractMessageIdManagerStorageTest;
 import org.apache.james.mailbox.store.MessageIdManagerTestSystem;
+import org.junit.Before;
 
 public class InMemoryMessageIdManagerStorageTest extends AbstractMessageIdManagerStorageTest {
 
+    @Before
+    public void setUp() throws Exception {
+        super.setUp();
+    }
+    
     @Override
     protected MessageIdManagerTestSystem createTestingData() {
         return MessageIdManagerTestSystemProvider.createTestingData();

http://git-wip-us.apache.org/repos/asf/james-project/blob/a18a4488/mailbox/memory/src/test/java/org/apache/james/mailbox/inmemory/InMemoryMessageIdManagerTestSystem.java
----------------------------------------------------------------------
diff --git a/mailbox/memory/src/test/java/org/apache/james/mailbox/inmemory/InMemoryMessageIdManagerTestSystem.java b/mailbox/memory/src/test/java/org/apache/james/mailbox/inmemory/InMemoryMessageIdManagerTestSystem.java
index 7c0b77e..e5c6600 100644
--- a/mailbox/memory/src/test/java/org/apache/james/mailbox/inmemory/InMemoryMessageIdManagerTestSystem.java
+++ b/mailbox/memory/src/test/java/org/apache/james/mailbox/inmemory/InMemoryMessageIdManagerTestSystem.java
@@ -102,11 +102,6 @@ public class InMemoryMessageIdManagerTestSystem extends MessageIdManagerTestSyst
     }
 
     @Override
-    public void clean() {
-
-    }
-
-    @Override
     public int getConstantMessageSize() {
         return CONTENT.length;
     }

http://git-wip-us.apache.org/repos/asf/james-project/blob/a18a4488/mailbox/memory/src/test/java/org/apache/james/mailbox/inmemory/MemoryMailboxManagerStressTest.java
----------------------------------------------------------------------
diff --git a/mailbox/memory/src/test/java/org/apache/james/mailbox/inmemory/MemoryMailboxManagerStressTest.java b/mailbox/memory/src/test/java/org/apache/james/mailbox/inmemory/MemoryMailboxManagerStressTest.java
index 2f23939..b8b03c1 100644
--- a/mailbox/memory/src/test/java/org/apache/james/mailbox/inmemory/MemoryMailboxManagerStressTest.java
+++ b/mailbox/memory/src/test/java/org/apache/james/mailbox/inmemory/MemoryMailboxManagerStressTest.java
@@ -21,8 +21,15 @@ package org.apache.james.mailbox.inmemory;
 
 import org.apache.james.mailbox.MailboxManager;
 import org.apache.james.mailbox.MailboxManagerStressTest;
+import org.junit.Before;
 
 public class MemoryMailboxManagerStressTest extends MailboxManagerStressTest {
+    
+    @Before
+    public void setUp() throws Exception {
+        super.setUp();
+    }
+    
     @Override
     protected MailboxManager provideManager() {
         return MemoryMailboxManagerProvider.provideMailboxManager();

http://git-wip-us.apache.org/repos/asf/james-project/blob/a18a4488/mailbox/memory/src/test/java/org/apache/james/mailbox/inmemory/MemoryMailboxManagerTest.java
----------------------------------------------------------------------
diff --git a/mailbox/memory/src/test/java/org/apache/james/mailbox/inmemory/MemoryMailboxManagerTest.java b/mailbox/memory/src/test/java/org/apache/james/mailbox/inmemory/MemoryMailboxManagerTest.java
index 9d77ed4..c958a14 100644
--- a/mailbox/memory/src/test/java/org/apache/james/mailbox/inmemory/MemoryMailboxManagerTest.java
+++ b/mailbox/memory/src/test/java/org/apache/james/mailbox/inmemory/MemoryMailboxManagerTest.java
@@ -21,8 +21,15 @@ package org.apache.james.mailbox.inmemory;
 
 import org.apache.james.mailbox.MailboxManager;
 import org.apache.james.mailbox.MailboxManagerTest;
+import org.junit.Before;
 
 public class MemoryMailboxManagerTest extends MailboxManagerTest {
+
+    @Before
+    public void setUp() throws Exception {
+        super.setUp();
+    }
+    
     @Override
     protected MailboxManager provideMailboxManager() {
         return MemoryMailboxManagerProvider.provideMailboxManager();

http://git-wip-us.apache.org/repos/asf/james-project/blob/a18a4488/mailbox/memory/src/test/java/org/apache/james/mailbox/inmemory/mail/InMemoryMailboxManagerAttachmentTest.java
----------------------------------------------------------------------
diff --git a/mailbox/memory/src/test/java/org/apache/james/mailbox/inmemory/mail/InMemoryMailboxManagerAttachmentTest.java b/mailbox/memory/src/test/java/org/apache/james/mailbox/inmemory/mail/InMemoryMailboxManagerAttachmentTest.java
index df422f0..9a9f755 100644
--- a/mailbox/memory/src/test/java/org/apache/james/mailbox/inmemory/mail/InMemoryMailboxManagerAttachmentTest.java
+++ b/mailbox/memory/src/test/java/org/apache/james/mailbox/inmemory/mail/InMemoryMailboxManagerAttachmentTest.java
@@ -37,6 +37,7 @@ import org.apache.james.mailbox.store.Authorizator;
 import org.apache.james.mailbox.store.MailboxSessionMapperFactory;
 import org.apache.james.mailbox.store.NoMailboxPathLocker;
 import org.apache.james.mailbox.store.mail.model.impl.MessageParser;
+import org.junit.Before;
 
 public class InMemoryMailboxManagerAttachmentTest extends AbstractMailboxManagerAttachmentTest {
 
@@ -44,7 +45,9 @@ public class InMemoryMailboxManagerAttachmentTest extends AbstractMailboxManager
     private InMemoryMailboxManager mailboxManager;
     private InMemoryMailboxManager parseFailingMailboxManager;
 
-    public InMemoryMailboxManagerAttachmentTest() throws Exception {
+
+    @Before
+    public void setUp() throws Exception {
         mailboxSessionMapperFactory = new InMemoryMailboxSessionMapperFactory();
         Authenticator noAuthenticator = null;
         Authorizator noAuthorizator = null;
@@ -58,6 +61,7 @@ public class InMemoryMailboxManagerAttachmentTest extends AbstractMailboxManager
         parseFailingMailboxManager = new InMemoryMailboxManager(mailboxSessionMapperFactory, noAuthenticator, noAuthorizator, new NoMailboxPathLocker(),
                 new UnionMailboxACLResolver(), null, failingMessageParser, messageIdFactory);
         parseFailingMailboxManager.init();
+        super.setUp();
     }
 
     @Override

http://git-wip-us.apache.org/repos/asf/james-project/blob/a18a4488/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 230adae..f9463fe 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
@@ -19,7 +19,6 @@
 
 package org.apache.james.mailbox.inmemory.mail;
 
-import java.io.IOException;
 import java.util.List;
 import java.util.Random;
 
@@ -93,11 +92,6 @@ public class InMemoryMapperProvider implements MapperProvider {
     }
 
     @Override
-    public void ensureMapperPrepared() throws MailboxException {
-
-    }
-
-    @Override
     public boolean supportPartialAttachmentFetch() {
         return false;
     }
@@ -134,8 +128,4 @@ public class InMemoryMapperProvider implements MapperProvider {
             .highestModSeq(new MockMailboxSession("user"), mailbox);
     }
 
-    @Override
-    public void close() throws IOException {
-
-    }
 }

http://git-wip-us.apache.org/repos/asf/james-project/blob/a18a4488/mailbox/memory/src/test/java/org/apache/james/mailbox/inmemory/mail/MemoryAnnotationMapperTest.java
----------------------------------------------------------------------
diff --git a/mailbox/memory/src/test/java/org/apache/james/mailbox/inmemory/mail/MemoryAnnotationMapperTest.java b/mailbox/memory/src/test/java/org/apache/james/mailbox/inmemory/mail/MemoryAnnotationMapperTest.java
index 816844c..1ed19c4 100644
--- a/mailbox/memory/src/test/java/org/apache/james/mailbox/inmemory/mail/MemoryAnnotationMapperTest.java
+++ b/mailbox/memory/src/test/java/org/apache/james/mailbox/inmemory/mail/MemoryAnnotationMapperTest.java
@@ -21,8 +21,15 @@ package org.apache.james.mailbox.inmemory.mail;
 
 import org.apache.james.mailbox.store.mail.model.AnnotationMapperTest;
 import org.apache.james.mailbox.store.mail.model.MapperProvider;
+import org.junit.Before;
 
 public class MemoryAnnotationMapperTest extends AnnotationMapperTest {
+    
+    @Before
+    public void setUp() throws Exception {
+        super.setUp();
+    }
+    
     @Override
     protected MapperProvider createMapperProvider() {
         return new InMemoryMapperProvider();

http://git-wip-us.apache.org/repos/asf/james-project/blob/a18a4488/mailbox/memory/src/test/java/org/apache/james/mailbox/inmemory/mail/MemoryAttachmentMapperTest.java
----------------------------------------------------------------------
diff --git a/mailbox/memory/src/test/java/org/apache/james/mailbox/inmemory/mail/MemoryAttachmentMapperTest.java b/mailbox/memory/src/test/java/org/apache/james/mailbox/inmemory/mail/MemoryAttachmentMapperTest.java
index a67688a..7b60d83 100644
--- a/mailbox/memory/src/test/java/org/apache/james/mailbox/inmemory/mail/MemoryAttachmentMapperTest.java
+++ b/mailbox/memory/src/test/java/org/apache/james/mailbox/inmemory/mail/MemoryAttachmentMapperTest.java
@@ -19,10 +19,18 @@
 
 package org.apache.james.mailbox.inmemory.mail;
 
+import org.apache.james.mailbox.exception.MailboxException;
 import org.apache.james.mailbox.store.mail.model.AttachmentMapperTest;
 import org.apache.james.mailbox.store.mail.model.MapperProvider;
+import org.junit.Before;
 
 public class MemoryAttachmentMapperTest extends AttachmentMapperTest {
+    
+    @Before
+    public void setUp() throws MailboxException {
+        super.setUp();
+    }
+    
     @Override
     protected MapperProvider createMapperProvider() {
         return new InMemoryMapperProvider();

http://git-wip-us.apache.org/repos/asf/james-project/blob/a18a4488/mailbox/memory/src/test/java/org/apache/james/mailbox/inmemory/mail/MemoryMailboxMapperTest.java
----------------------------------------------------------------------
diff --git a/mailbox/memory/src/test/java/org/apache/james/mailbox/inmemory/mail/MemoryMailboxMapperTest.java b/mailbox/memory/src/test/java/org/apache/james/mailbox/inmemory/mail/MemoryMailboxMapperTest.java
index 26acf6a..188b927 100644
--- a/mailbox/memory/src/test/java/org/apache/james/mailbox/inmemory/mail/MemoryMailboxMapperTest.java
+++ b/mailbox/memory/src/test/java/org/apache/james/mailbox/inmemory/mail/MemoryMailboxMapperTest.java
@@ -21,8 +21,15 @@ package org.apache.james.mailbox.inmemory.mail;
 
 import org.apache.james.mailbox.store.mail.model.MailboxMapperTest;
 import org.apache.james.mailbox.store.mail.model.MapperProvider;
+import org.junit.Before;
 
 public class MemoryMailboxMapperTest extends MailboxMapperTest {
+    
+    @Before
+    public void setUp() throws Exception {
+        super.setUp();
+    }
+    
     @Override
     protected MapperProvider createMapperProvider() {
         return new InMemoryMapperProvider();

http://git-wip-us.apache.org/repos/asf/james-project/blob/a18a4488/mailbox/memory/src/test/java/org/apache/james/mailbox/inmemory/mail/MemoryMessageMapperTest.java
----------------------------------------------------------------------
diff --git a/mailbox/memory/src/test/java/org/apache/james/mailbox/inmemory/mail/MemoryMessageMapperTest.java b/mailbox/memory/src/test/java/org/apache/james/mailbox/inmemory/mail/MemoryMessageMapperTest.java
index 298786d..fef061d 100644
--- a/mailbox/memory/src/test/java/org/apache/james/mailbox/inmemory/mail/MemoryMessageMapperTest.java
+++ b/mailbox/memory/src/test/java/org/apache/james/mailbox/inmemory/mail/MemoryMessageMapperTest.java
@@ -21,8 +21,15 @@ package org.apache.james.mailbox.inmemory.mail;
 
 import org.apache.james.mailbox.store.mail.model.MapperProvider;
 import org.apache.james.mailbox.store.mail.model.MessageMapperTest;
+import org.junit.Before;
 
 public class MemoryMessageMapperTest extends MessageMapperTest {
+    
+    @Before
+    public void setUp() throws Exception {
+        super.setUp();
+    }
+    
     @Override
     protected MapperProvider createMapperProvider() {
         return new InMemoryMapperProvider();

http://git-wip-us.apache.org/repos/asf/james-project/blob/a18a4488/mailbox/memory/src/test/java/org/apache/james/mailbox/inmemory/mail/MemoryMessageMoveTest.java
----------------------------------------------------------------------
diff --git a/mailbox/memory/src/test/java/org/apache/james/mailbox/inmemory/mail/MemoryMessageMoveTest.java b/mailbox/memory/src/test/java/org/apache/james/mailbox/inmemory/mail/MemoryMessageMoveTest.java
index 0b8e2fb..4d848c3 100644
--- a/mailbox/memory/src/test/java/org/apache/james/mailbox/inmemory/mail/MemoryMessageMoveTest.java
+++ b/mailbox/memory/src/test/java/org/apache/james/mailbox/inmemory/mail/MemoryMessageMoveTest.java
@@ -21,9 +21,15 @@ package org.apache.james.mailbox.inmemory.mail;
 
 import org.apache.james.mailbox.store.mail.model.MapperProvider;
 import org.apache.james.mailbox.store.mail.model.MessageMoveTest;
+import org.junit.Before;
 
 public class MemoryMessageMoveTest extends MessageMoveTest {
 
+    @Before
+    public void setUp() throws Exception {
+        super.setUp();
+    }
+    
     @Override
     protected MapperProvider createMapperProvider() {
         return new InMemoryMapperProvider();

http://git-wip-us.apache.org/repos/asf/james-project/blob/a18a4488/mailbox/memory/src/test/java/org/apache/james/mailbox/inmemory/mail/MemoryMessageWithAttachmentMapperTest.java
----------------------------------------------------------------------
diff --git a/mailbox/memory/src/test/java/org/apache/james/mailbox/inmemory/mail/MemoryMessageWithAttachmentMapperTest.java b/mailbox/memory/src/test/java/org/apache/james/mailbox/inmemory/mail/MemoryMessageWithAttachmentMapperTest.java
index 3bab206..525aa75 100644
--- a/mailbox/memory/src/test/java/org/apache/james/mailbox/inmemory/mail/MemoryMessageWithAttachmentMapperTest.java
+++ b/mailbox/memory/src/test/java/org/apache/james/mailbox/inmemory/mail/MemoryMessageWithAttachmentMapperTest.java
@@ -21,8 +21,15 @@ package org.apache.james.mailbox.inmemory.mail;
 
 import org.apache.james.mailbox.store.mail.model.MapperProvider;
 import org.apache.james.mailbox.store.mail.model.MessageWithAttachmentMapperTest;
+import org.junit.Before;
 
 public class MemoryMessageWithAttachmentMapperTest extends MessageWithAttachmentMapperTest {
+    
+    @Before
+    public void setUp() throws Exception {
+        super.setUp();
+    }
+    
     @Override
     protected MapperProvider createMapperProvider() {
         return new InMemoryMapperProvider();

http://git-wip-us.apache.org/repos/asf/james-project/blob/a18a4488/mailbox/store/src/test/java/org/apache/james/mailbox/store/AbstractCombinationManagerTest.java
----------------------------------------------------------------------
diff --git a/mailbox/store/src/test/java/org/apache/james/mailbox/store/AbstractCombinationManagerTest.java b/mailbox/store/src/test/java/org/apache/james/mailbox/store/AbstractCombinationManagerTest.java
index 61b51e6..21dd3fb 100644
--- a/mailbox/store/src/test/java/org/apache/james/mailbox/store/AbstractCombinationManagerTest.java
+++ b/mailbox/store/src/test/java/org/apache/james/mailbox/store/AbstractCombinationManagerTest.java
@@ -47,13 +47,12 @@ import org.apache.james.mailbox.model.MessageResult;
 import org.apache.james.mailbox.model.MultimailboxesSearchQuery;
 import org.apache.james.mailbox.model.SearchQuery;
 import org.apache.james.mailbox.store.mail.model.Mailbox;
-import org.junit.After;
-import org.junit.Before;
 import org.junit.Test;
 
 import com.google.common.collect.ImmutableList;
 
 public abstract class AbstractCombinationManagerTest {
+    
     private static final Flags FLAGS = new Flags();
     private static final byte[] MAIL_CONTENT = "Subject: test\r\n\r\ntestmail".getBytes();
     private static final int DEFAULT_MAXIMUM_LIMIT = 256;
@@ -74,7 +73,6 @@ public abstract class AbstractCombinationManagerTest {
 
     public abstract CombinationManagerTestSystem createTestingData() throws Exception ;
 
-    @Before
     public void setUp() throws Exception {
         session = new MockMailboxSession(MailboxManagerFixture.USER);
         testingData = createTestingData();
@@ -88,10 +86,6 @@ public abstract class AbstractCombinationManagerTest {
         messageManager2 = testingData.createMessageManager(mailbox2, session);
     }
 
-    @After
-    public void tearDown() throws Exception {
-        testingData.clean();
-    }
 
     @Test
     public void getMessageCountFromMessageManagerShouldReturnDataSetInMailboxesFromMessageIdManager() throws Exception {

http://git-wip-us.apache.org/repos/asf/james-project/blob/a18a4488/mailbox/store/src/test/java/org/apache/james/mailbox/store/AbstractMailboxManagerAttachmentTest.java
----------------------------------------------------------------------
diff --git a/mailbox/store/src/test/java/org/apache/james/mailbox/store/AbstractMailboxManagerAttachmentTest.java b/mailbox/store/src/test/java/org/apache/james/mailbox/store/AbstractMailboxManagerAttachmentTest.java
index a20217b..3657561 100644
--- a/mailbox/store/src/test/java/org/apache/james/mailbox/store/AbstractMailboxManagerAttachmentTest.java
+++ b/mailbox/store/src/test/java/org/apache/james/mailbox/store/AbstractMailboxManagerAttachmentTest.java
@@ -43,8 +43,6 @@ import org.apache.james.mailbox.store.mail.MessageMapper;
 import org.apache.james.mailbox.store.mail.MessageMapper.FetchType;
 import org.apache.james.mailbox.store.mail.model.Mailbox;
 import org.apache.james.mailbox.store.mail.model.MailboxMessage;
-import org.junit.After;
-import org.junit.Before;
 import org.junit.Test;
 
 public abstract class AbstractMailboxManagerAttachmentTest {
@@ -64,10 +62,6 @@ public abstract class AbstractMailboxManagerAttachmentTest {
     protected abstract MailboxManager getParseFailingMailboxManager();
     protected abstract MailboxSessionMapperFactory getMailboxSessionMapperFactory();
     
-    protected void clean() {
-    }
-
-    @Before
     public void setUp() throws Exception {
         mailboxSession = new MockMailboxSession(USERNAME);
         messageMapper = getMailboxSessionMapperFactory().getMessageMapper(mailboxSession);
@@ -80,11 +74,6 @@ public abstract class AbstractMailboxManagerAttachmentTest {
         attachmentMapper = getMailboxSessionMapperFactory().getAttachmentMapper(mailboxSession);
     }
 
-    @After
-    public void tearDown() {
-        clean();
-    }
-
     @Test
     public void appendMessageShouldStoreWithoutAttachmentWhenMailWithoutAttachment() throws Exception {
         String mail = "Subject: Test\n\nBody";

http://git-wip-us.apache.org/repos/asf/james-project/blob/a18a4488/mailbox/store/src/test/java/org/apache/james/mailbox/store/AbstractMessageIdManagerQuotaTest.java
----------------------------------------------------------------------
diff --git a/mailbox/store/src/test/java/org/apache/james/mailbox/store/AbstractMessageIdManagerQuotaTest.java b/mailbox/store/src/test/java/org/apache/james/mailbox/store/AbstractMessageIdManagerQuotaTest.java
index 757f434..98f2fb1 100644
--- a/mailbox/store/src/test/java/org/apache/james/mailbox/store/AbstractMessageIdManagerQuotaTest.java
+++ b/mailbox/store/src/test/java/org/apache/james/mailbox/store/AbstractMessageIdManagerQuotaTest.java
@@ -32,7 +32,6 @@ import org.apache.james.mailbox.quota.CurrentQuotaManager;
 import org.apache.james.mailbox.quota.MaxQuotaManager;
 import org.apache.james.mailbox.quota.QuotaManager;
 import org.apache.james.mailbox.store.mail.model.Mailbox;
-import org.junit.After;
 import org.junit.Before;
 import org.junit.Rule;
 import org.junit.Test;
@@ -77,11 +76,6 @@ public abstract class AbstractMessageIdManagerQuotaTest {
         mailbox3 = testingData.createMailbox(MailboxManagerFixture.MAILBOX_PATH3, session);
     }
 
-    @After
-    public void tearDown() {
-        testingData.clean();
-    }
-
     @Test
     public void setInMailboxesShouldNotThrowWhenMessageQuotaNotExceeded() throws Exception {
         maxQuotaManager.setDefaultMaxMessage(1);

http://git-wip-us.apache.org/repos/asf/james-project/blob/a18a4488/mailbox/store/src/test/java/org/apache/james/mailbox/store/AbstractMessageIdManagerSideEffectTest.java
----------------------------------------------------------------------
diff --git a/mailbox/store/src/test/java/org/apache/james/mailbox/store/AbstractMessageIdManagerSideEffectTest.java b/mailbox/store/src/test/java/org/apache/james/mailbox/store/AbstractMessageIdManagerSideEffectTest.java
index 8c84b8a..d7a1201 100644
--- a/mailbox/store/src/test/java/org/apache/james/mailbox/store/AbstractMessageIdManagerSideEffectTest.java
+++ b/mailbox/store/src/test/java/org/apache/james/mailbox/store/AbstractMessageIdManagerSideEffectTest.java
@@ -54,8 +54,6 @@ import org.apache.james.mailbox.store.event.MailboxEventDispatcher;
 import org.apache.james.mailbox.store.mail.model.Mailbox;
 import org.apache.james.mailbox.store.mail.model.MailboxMessage;
 import org.apache.james.mailbox.store.quota.QuotaImpl;
-import org.junit.After;
-import org.junit.Before;
 import org.junit.Rule;
 import org.junit.Test;
 import org.junit.rules.ExpectedException;
@@ -82,7 +80,6 @@ public abstract class AbstractMessageIdManagerSideEffectTest {
 
     protected abstract MessageIdManagerTestSystem createTestSystem(QuotaManager quotaManager, MailboxEventDispatcher dispatcher) throws Exception;
 
-    @Before
     public void setUp() throws Exception {
         dispatcher = mock(MailboxEventDispatcher.class);
         quotaManager = mock(QuotaManager.class);
@@ -96,10 +93,6 @@ public abstract class AbstractMessageIdManagerSideEffectTest {
         mailbox3 = testingData.createMailbox(MailboxManagerFixture.MAILBOX_PATH3, session);
     }
 
-    @After
-    public void tearDown() {
-        testingData.clean();
-    }
 
     @Test
     public void deleteShouldCallEventDispatcher() throws Exception {

http://git-wip-us.apache.org/repos/asf/james-project/blob/a18a4488/mailbox/store/src/test/java/org/apache/james/mailbox/store/AbstractMessageIdManagerStorageTest.java
----------------------------------------------------------------------
diff --git a/mailbox/store/src/test/java/org/apache/james/mailbox/store/AbstractMessageIdManagerStorageTest.java b/mailbox/store/src/test/java/org/apache/james/mailbox/store/AbstractMessageIdManagerStorageTest.java
index 626c9a7..1d964cb 100644
--- a/mailbox/store/src/test/java/org/apache/james/mailbox/store/AbstractMessageIdManagerStorageTest.java
+++ b/mailbox/store/src/test/java/org/apache/james/mailbox/store/AbstractMessageIdManagerStorageTest.java
@@ -38,8 +38,6 @@ import org.apache.james.mailbox.model.MailboxId;
 import org.apache.james.mailbox.model.MessageId;
 import org.apache.james.mailbox.model.MessageResult;
 import org.apache.james.mailbox.store.mail.model.Mailbox;
-import org.junit.After;
-import org.junit.Before;
 import org.junit.Rule;
 import org.junit.Test;
 import org.junit.rules.ExpectedException;
@@ -68,7 +66,6 @@ public abstract class AbstractMessageIdManagerStorageTest {
 
     protected abstract MessageIdManagerTestSystem createTestingData() throws Exception;
 
-    @Before
     public void setUp() throws Exception {
         session = new MockMailboxSession(MailboxManagerFixture.USER);
         otherSession = new MockMailboxSession(MailboxManagerFixture.OTHER_USER);
@@ -82,11 +79,6 @@ public abstract class AbstractMessageIdManagerStorageTest {
         mailbox4 = testingData.createMailbox(MailboxManagerFixture.MAILBOX_PATH4, otherSession);
     }
 
-    @After
-    public void tearDown() {
-        testingData.clean();
-    }
-
     @Test
     public void getMessagesShouldReturnEmptyListWhenMessageIdNotUsed() throws Exception {
         MessageId messageId = testingData.createNotUsedMessageId();

http://git-wip-us.apache.org/repos/asf/james-project/blob/a18a4488/mailbox/store/src/test/java/org/apache/james/mailbox/store/CombinationManagerTestSystem.java
----------------------------------------------------------------------
diff --git a/mailbox/store/src/test/java/org/apache/james/mailbox/store/CombinationManagerTestSystem.java b/mailbox/store/src/test/java/org/apache/james/mailbox/store/CombinationManagerTestSystem.java
index 97d0f0f..5c9743f 100644
--- a/mailbox/store/src/test/java/org/apache/james/mailbox/store/CombinationManagerTestSystem.java
+++ b/mailbox/store/src/test/java/org/apache/james/mailbox/store/CombinationManagerTestSystem.java
@@ -48,5 +48,4 @@ public abstract class CombinationManagerTestSystem {
 
     public abstract MessageManager createMessageManager(Mailbox mailbox, MailboxSession session) throws MailboxException;
 
-    public abstract void clean();
 }

http://git-wip-us.apache.org/repos/asf/james-project/blob/a18a4488/mailbox/store/src/test/java/org/apache/james/mailbox/store/MessageIdManagerTestSystem.java
----------------------------------------------------------------------
diff --git a/mailbox/store/src/test/java/org/apache/james/mailbox/store/MessageIdManagerTestSystem.java b/mailbox/store/src/test/java/org/apache/james/mailbox/store/MessageIdManagerTestSystem.java
index ecb45d8e..0fb31dc 100644
--- a/mailbox/store/src/test/java/org/apache/james/mailbox/store/MessageIdManagerTestSystem.java
+++ b/mailbox/store/src/test/java/org/apache/james/mailbox/store/MessageIdManagerTestSystem.java
@@ -60,7 +60,5 @@ public abstract class MessageIdManagerTestSystem {
 
     public abstract void deleteMailbox(MailboxId mailboxId, MailboxSession session);
 
-    public abstract void clean();
-
     public abstract int getConstantMessageSize();
 }

http://git-wip-us.apache.org/repos/asf/james-project/blob/a18a4488/mailbox/store/src/test/java/org/apache/james/mailbox/store/StoreMessageIdManagerSideEffectTest.java
----------------------------------------------------------------------
diff --git a/mailbox/store/src/test/java/org/apache/james/mailbox/store/StoreMessageIdManagerSideEffectTest.java b/mailbox/store/src/test/java/org/apache/james/mailbox/store/StoreMessageIdManagerSideEffectTest.java
index d4445e9..6fb614b 100644
--- a/mailbox/store/src/test/java/org/apache/james/mailbox/store/StoreMessageIdManagerSideEffectTest.java
+++ b/mailbox/store/src/test/java/org/apache/james/mailbox/store/StoreMessageIdManagerSideEffectTest.java
@@ -25,9 +25,14 @@ import org.apache.james.mailbox.model.TestMessageId;
 import org.apache.james.mailbox.quota.QuotaManager;
 import org.apache.james.mailbox.store.event.MailboxEventDispatcher;
 import org.apache.james.mailbox.store.quota.DefaultQuotaRootResolver;
+import org.junit.Before;
 
 public class StoreMessageIdManagerSideEffectTest extends AbstractMessageIdManagerSideEffectTest {
 
+    @Before
+    public void setUp() throws Exception {
+        super.setUp();
+    }
 
     @Override
     protected MessageIdManagerTestSystem createTestSystem(QuotaManager quotaManager, MailboxEventDispatcher dispatcher) throws Exception {

http://git-wip-us.apache.org/repos/asf/james-project/blob/a18a4488/mailbox/store/src/test/java/org/apache/james/mailbox/store/StoreMessageIdManagerTestSystem.java
----------------------------------------------------------------------
diff --git a/mailbox/store/src/test/java/org/apache/james/mailbox/store/StoreMessageIdManagerTestSystem.java b/mailbox/store/src/test/java/org/apache/james/mailbox/store/StoreMessageIdManagerTestSystem.java
index 2f68685..c312921 100644
--- a/mailbox/store/src/test/java/org/apache/james/mailbox/store/StoreMessageIdManagerTestSystem.java
+++ b/mailbox/store/src/test/java/org/apache/james/mailbox/store/StoreMessageIdManagerTestSystem.java
@@ -85,11 +85,6 @@ public class StoreMessageIdManagerTestSystem extends MessageIdManagerTestSystem
         return messageIdFactory.generate();
     }
 
-    @Override
-    public void clean() {
-        mapperFactory.clean();
-    }
-
     private MailboxMessage createMessage(MailboxId mailboxId, Flags flags, MessageId messageId, MessageUid uid) {
         MailboxMessage mailboxMessage = mock(MailboxMessage.class);
         when(mailboxMessage.getMessageId()).thenReturn(messageId);

http://git-wip-us.apache.org/repos/asf/james-project/blob/a18a4488/mailbox/store/src/test/java/org/apache/james/mailbox/store/mail/model/AnnotationMapperTest.java
----------------------------------------------------------------------
diff --git a/mailbox/store/src/test/java/org/apache/james/mailbox/store/mail/model/AnnotationMapperTest.java b/mailbox/store/src/test/java/org/apache/james/mailbox/store/mail/model/AnnotationMapperTest.java
index a3003d4..06b8f2a 100644
--- a/mailbox/store/src/test/java/org/apache/james/mailbox/store/mail/model/AnnotationMapperTest.java
+++ b/mailbox/store/src/test/java/org/apache/james/mailbox/store/mail/model/AnnotationMapperTest.java
@@ -26,9 +26,7 @@ import org.apache.james.mailbox.model.MailboxAnnotation;
 import org.apache.james.mailbox.model.MailboxAnnotationKey;
 import org.apache.james.mailbox.model.MailboxId;
 import org.apache.james.mailbox.store.mail.AnnotationMapper;
-import org.junit.After;
 import org.junit.Assume;
-import org.junit.Before;
 import org.junit.Rule;
 import org.junit.Test;
 import org.junit.rules.ExpectedException;
@@ -61,22 +59,14 @@ public abstract class AnnotationMapperTest {
 
     protected abstract MapperProvider createMapperProvider();
 
-    @Before
-    public final void setUp() throws MailboxException {
+    public void setUp() throws Exception {
         mapperProvider = createMapperProvider();
-        mapperProvider.ensureMapperPrepared();
         Assume.assumeTrue(mapperProvider.getSupportedCapabilities().contains(MapperProvider.Capabilities.ANNOTATION));
 
         this.annotationMapper = mapperProvider.createAnnotationMapper();
         this.mailboxId = mapperProvider.generateId();
     }
 
-    @After
-    public void tearDown() throws Exception {
-        mapperProvider.clearMapper();
-        mapperProvider.close();
-    }
-
     @Test
     public void insertAnnotationShouldThrowExceptionWithNilData() {
         expected.expect(IllegalArgumentException.class);

http://git-wip-us.apache.org/repos/asf/james-project/blob/a18a4488/mailbox/store/src/test/java/org/apache/james/mailbox/store/mail/model/AttachmentMapperTest.java
----------------------------------------------------------------------
diff --git a/mailbox/store/src/test/java/org/apache/james/mailbox/store/mail/model/AttachmentMapperTest.java b/mailbox/store/src/test/java/org/apache/james/mailbox/store/mail/model/AttachmentMapperTest.java
index 0da9407..a915d36 100644
--- a/mailbox/store/src/test/java/org/apache/james/mailbox/store/mail/model/AttachmentMapperTest.java
+++ b/mailbox/store/src/test/java/org/apache/james/mailbox/store/mail/model/AttachmentMapperTest.java
@@ -28,9 +28,7 @@ import org.apache.james.mailbox.exception.MailboxException;
 import org.apache.james.mailbox.model.Attachment;
 import org.apache.james.mailbox.model.AttachmentId;
 import org.apache.james.mailbox.store.mail.AttachmentMapper;
-import org.junit.After;
 import org.junit.Assume;
-import org.junit.Before;
 import org.junit.Rule;
 import org.junit.Test;
 import org.junit.rules.ExpectedException;
@@ -48,19 +46,12 @@ public abstract class AttachmentMapperTest {
 
     protected abstract MapperProvider createMapperProvider();
 
-    @Before
-    public final void setUp() throws MailboxException {
+    public void setUp() throws MailboxException {
         mapperProvider = createMapperProvider();
         Assume.assumeTrue(mapperProvider.getSupportedCapabilities().contains(MapperProvider.Capabilities.ATTACHMENT));
         this.attachmentMapper = mapperProvider.createAttachmentMapper();
     }
 
-    @After
-    public void tearDown() throws Exception {
-        mapperProvider.clearMapper();
-        mapperProvider.close();
-    }
-
     @Test
     public void getAttachmentShouldThrowWhenNullAttachmentId() throws Exception {
         expected.expect(IllegalArgumentException.class);

http://git-wip-us.apache.org/repos/asf/james-project/blob/a18a4488/mailbox/store/src/test/java/org/apache/james/mailbox/store/mail/model/MailboxMapperTest.java
----------------------------------------------------------------------
diff --git a/mailbox/store/src/test/java/org/apache/james/mailbox/store/mail/model/MailboxMapperTest.java b/mailbox/store/src/test/java/org/apache/james/mailbox/store/mail/model/MailboxMapperTest.java
index 598cfda..92ab5b8 100644
--- a/mailbox/store/src/test/java/org/apache/james/mailbox/store/mail/model/MailboxMapperTest.java
+++ b/mailbox/store/src/test/java/org/apache/james/mailbox/store/mail/model/MailboxMapperTest.java
@@ -32,9 +32,7 @@ import org.apache.james.mailbox.model.MailboxId;
 import org.apache.james.mailbox.model.MailboxPath;
 import org.apache.james.mailbox.store.mail.MailboxMapper;
 import org.apache.james.mailbox.store.mail.model.impl.SimpleMailbox;
-import org.junit.After;
 import org.junit.Assume;
-import org.junit.Before;
 import org.junit.Rule;
 import org.junit.Test;
 import org.junit.rules.ExpectedException;
@@ -86,8 +84,7 @@ public abstract class MailboxMapperTest {
 
     protected abstract MapperProvider createMapperProvider();
 
-    @Before
-    public final void setUp() throws MailboxException {
+    public void setUp() throws Exception {
         this.mapperProvider = createMapperProvider();
         Assume.assumeTrue(mapperProvider.getSupportedCapabilities().contains(MapperProvider.Capabilities.MAILBOX));
 
@@ -96,12 +93,6 @@ public abstract class MailboxMapperTest {
         initData();
     }
 
-    @After
-    public void tearDown() throws Exception {
-        mapperProvider.clearMapper();
-        mapperProvider.close();
-    }
-
     @Test
     public void findMailboxByPathWhenAbsentShouldFail() throws MailboxException {
         expected.expect(MailboxNotFoundException.class);

http://git-wip-us.apache.org/repos/asf/james-project/blob/a18a4488/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 ff9ada6..cea5d59 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
@@ -19,7 +19,6 @@
 
 package org.apache.james.mailbox.store.mail.model;
 
-import java.io.Closeable;
 import java.util.List;
 
 import org.apache.james.mailbox.MessageUid;
@@ -32,7 +31,7 @@ import org.apache.james.mailbox.store.mail.MailboxMapper;
 import org.apache.james.mailbox.store.mail.MessageIdMapper;
 import org.apache.james.mailbox.store.mail.MessageMapper;
 
-public interface MapperProvider extends Closeable {
+public interface MapperProvider {
     enum Capabilities {
         MESSAGE,
         MAILBOX,
@@ -66,8 +65,6 @@ public interface MapperProvider extends Closeable {
 
     void clearMapper() throws MailboxException;
 
-    void ensureMapperPrepared() throws MailboxException;
-
     boolean supportPartialAttachmentFetch();
     
     MessageId generateMessageId();

http://git-wip-us.apache.org/repos/asf/james-project/blob/a18a4488/mailbox/store/src/test/java/org/apache/james/mailbox/store/mail/model/MessageIdMapperTest.java
----------------------------------------------------------------------
diff --git a/mailbox/store/src/test/java/org/apache/james/mailbox/store/mail/model/MessageIdMapperTest.java b/mailbox/store/src/test/java/org/apache/james/mailbox/store/mail/model/MessageIdMapperTest.java
index 9a51f12..73d5a14 100644
--- a/mailbox/store/src/test/java/org/apache/james/mailbox/store/mail/model/MessageIdMapperTest.java
+++ b/mailbox/store/src/test/java/org/apache/james/mailbox/store/mail/model/MessageIdMapperTest.java
@@ -47,9 +47,7 @@ import org.apache.james.mailbox.store.mail.model.impl.SimpleMailbox;
 import org.apache.james.mailbox.store.mail.model.impl.SimpleMailboxMessage;
 import org.apache.james.util.concurrency.ConcurrentTestRunner;
 import org.assertj.core.data.MapEntry;
-import org.junit.After;
 import org.junit.Assume;
-import org.junit.Before;
 import org.junit.Rule;
 import org.junit.Test;
 import org.junit.rules.ExpectedException;
@@ -83,12 +81,10 @@ public abstract class MessageIdMapperTest {
 
     protected abstract MapperProvider provideMapper();
 
-    @Before
-    public final void setUp() throws MailboxException {
+    public void setUp() throws MailboxException {
         this.mapperProvider = provideMapper();
         Assume.assumeTrue(mapperProvider.getSupportedCapabilities().contains(MapperProvider.Capabilities.UNIQUE_MESSAGE_ID));
 
-        this.mapperProvider.ensureMapperPrepared();
         this.sut = mapperProvider.createMessageIdMapper();
         this.messageMapper = mapperProvider.createMessageMapper();
         this.mailboxMapper = mapperProvider.createMailboxMapper();
@@ -102,12 +98,6 @@ public abstract class MessageIdMapperTest {
         message4 = createMessage(benwaWorkMailbox, "Subject: Test4 \n\nBody4\n.\n", BODY_START, new PropertyBuilder());
     }
 
-    @After
-    public void tearDown() throws Exception {
-        mapperProvider.clearMapper();
-        mapperProvider.close();
-    }
-
     @Test
     public void findShouldReturnEmptyWhenIdListIsEmpty() throws MailboxException {
         assertThat(sut.find(ImmutableList.<MessageId> of(), FetchType.Full)).isEmpty();

http://git-wip-us.apache.org/repos/asf/james-project/blob/a18a4488/mailbox/store/src/test/java/org/apache/james/mailbox/store/mail/model/MessageMapperTest.java
----------------------------------------------------------------------
diff --git a/mailbox/store/src/test/java/org/apache/james/mailbox/store/mail/model/MessageMapperTest.java b/mailbox/store/src/test/java/org/apache/james/mailbox/store/mail/model/MessageMapperTest.java
index 3cfc96d..16004a1 100644
--- a/mailbox/store/src/test/java/org/apache/james/mailbox/store/mail/model/MessageMapperTest.java
+++ b/mailbox/store/src/test/java/org/apache/james/mailbox/store/mail/model/MessageMapperTest.java
@@ -51,9 +51,7 @@ import org.apache.james.mailbox.store.mail.model.impl.PropertyBuilder;
 import org.apache.james.mailbox.store.mail.model.impl.SimpleMailbox;
 import org.apache.james.mailbox.store.mail.model.impl.SimpleMailboxMessage;
 import org.apache.james.util.concurrency.ConcurrentTestRunner;
-import org.junit.After;
 import org.junit.Assume;
-import org.junit.Before;
 import org.junit.Rule;
 import org.junit.Test;
 import org.junit.rules.ExpectedException;
@@ -89,10 +87,8 @@ public abstract class MessageMapperTest {
 
     protected abstract MapperProvider createMapperProvider();
 
-    @Before
-    public final void setProducer() throws MailboxException {
+    public void setUp() throws Exception {
         this.mapperProvider = createMapperProvider();
-        this.mapperProvider.ensureMapperPrepared();
 
         Assume.assumeTrue(mapperProvider.getSupportedCapabilities().contains(MapperProvider.Capabilities.MESSAGE));
 
@@ -114,12 +110,6 @@ public abstract class MessageMapperTest {
         message6 = createMessage(benwaWorkMailbox, mapperProvider.generateMessageId(), "Subject: Test6 \n\nBody6\n.\n", BODY_START, new PropertyBuilder());
     }
 
-    @After
-    public void tearDown() throws Exception {
-        mapperProvider.clearMapper();
-        mapperProvider.close();
-    }
-
     @Test
     public void emptyMailboxShouldHaveZeroMessageCount() throws MailboxException {
         assertThat(messageMapper.countMessagesInMailbox(benwaInboxMailbox)).isEqualTo(0);

http://git-wip-us.apache.org/repos/asf/james-project/blob/a18a4488/mailbox/store/src/test/java/org/apache/james/mailbox/store/mail/model/MessageMoveTest.java
----------------------------------------------------------------------
diff --git a/mailbox/store/src/test/java/org/apache/james/mailbox/store/mail/model/MessageMoveTest.java b/mailbox/store/src/test/java/org/apache/james/mailbox/store/mail/model/MessageMoveTest.java
index de266ab..7efd7c8 100644
--- a/mailbox/store/src/test/java/org/apache/james/mailbox/store/mail/model/MessageMoveTest.java
+++ b/mailbox/store/src/test/java/org/apache/james/mailbox/store/mail/model/MessageMoveTest.java
@@ -37,9 +37,7 @@ import org.apache.james.mailbox.store.mail.MessageMapper.FetchType;
 import org.apache.james.mailbox.store.mail.model.impl.PropertyBuilder;
 import org.apache.james.mailbox.store.mail.model.impl.SimpleMailbox;
 import org.apache.james.mailbox.store.mail.model.impl.SimpleMailboxMessage;
-import org.junit.After;
 import org.junit.Assume;
-import org.junit.Before;
 import org.junit.Rule;
 import org.junit.Test;
 import org.junit.rules.ExpectedException;
@@ -64,10 +62,8 @@ public abstract class MessageMoveTest {
     @Rule
     public ExpectedException expected = ExpectedException.none();
 
-    @Before
-    public final void setUp() throws MailboxException {
+    public void setUp() throws Exception {
         this.mapperProvider = createMapperProvider();
-        this.mapperProvider.ensureMapperPrepared();
         Assume.assumeTrue(mapperProvider.getSupportedCapabilities().contains(MapperProvider.Capabilities.MOVE));
         this.messageMapper = mapperProvider.createMessageMapper();
         Assume.assumeNotNull(messageMapper);
@@ -77,12 +73,6 @@ public abstract class MessageMoveTest {
         message1 = createMessage(benwaInboxMailbox, mapperProvider.generateMessageId(), "Subject: Test1 \n\nBody1\n.\n", BODY_START, new PropertyBuilder());
     }
 
-    @After
-    public void tearDown() throws Exception {
-        mapperProvider.clearMapper();
-        mapperProvider.close();
-    }
-
     @Test
     public void movingAMessageShouldWork() throws Exception {
         messageMapper.add(benwaInboxMailbox, message1);

http://git-wip-us.apache.org/repos/asf/james-project/blob/a18a4488/mailbox/store/src/test/java/org/apache/james/mailbox/store/mail/model/MessageWithAttachmentMapperTest.java
----------------------------------------------------------------------
diff --git a/mailbox/store/src/test/java/org/apache/james/mailbox/store/mail/model/MessageWithAttachmentMapperTest.java b/mailbox/store/src/test/java/org/apache/james/mailbox/store/mail/model/MessageWithAttachmentMapperTest.java
index 0ece2a8..3320e67 100644
--- a/mailbox/store/src/test/java/org/apache/james/mailbox/store/mail/model/MessageWithAttachmentMapperTest.java
+++ b/mailbox/store/src/test/java/org/apache/james/mailbox/store/mail/model/MessageWithAttachmentMapperTest.java
@@ -44,9 +44,7 @@ import org.apache.james.mailbox.store.mail.MessageMapper;
 import org.apache.james.mailbox.store.mail.model.impl.PropertyBuilder;
 import org.apache.james.mailbox.store.mail.model.impl.SimpleMailbox;
 import org.apache.james.mailbox.store.mail.model.impl.SimpleMailboxMessage;
-import org.junit.After;
 import org.junit.Assume;
-import org.junit.Before;
 import org.junit.Rule;
 import org.junit.Test;
 import org.junit.rules.ExpectedException;
@@ -74,10 +72,8 @@ public abstract class MessageWithAttachmentMapperTest {
 
     protected abstract MapperProvider createMapperProvider();
 
-    @Before
-    public final void setUp() throws MailboxException {
+    public void setUp() throws Exception {
         this.mapperProvider = createMapperProvider();
-        this.mapperProvider.ensureMapperPrepared();
 
         Assume.assumeTrue(mapperProvider.getSupportedCapabilities().contains(MapperProvider.Capabilities.MESSAGE));
         Assume.assumeTrue(mapperProvider.getSupportedCapabilities().contains(MapperProvider.Capabilities.ATTACHMENT));
@@ -121,12 +117,6 @@ public abstract class MessageWithAttachmentMapperTest {
 
     }
 
-    @After
-    public void tearDown() throws Exception {
-        mapperProvider.clearMapper();
-        mapperProvider.close();
-    }
-
     @Test
     public void messagesRetrievedUsingFetchTypeFullShouldHaveAttachmentsLoadedWhenOneAttachment() throws MailboxException, IOException{
         saveMessages();

http://git-wip-us.apache.org/repos/asf/james-project/blob/a18a4488/mailbox/tika/src/test/java/org/apache/james/mailbox/tika/TikaContainer.java
----------------------------------------------------------------------
diff --git a/mailbox/tika/src/test/java/org/apache/james/mailbox/tika/TikaContainer.java b/mailbox/tika/src/test/java/org/apache/james/mailbox/tika/TikaContainer.java
index 2797182..82ac712 100644
--- a/mailbox/tika/src/test/java/org/apache/james/mailbox/tika/TikaContainer.java
+++ b/mailbox/tika/src/test/java/org/apache/james/mailbox/tika/TikaContainer.java
@@ -60,11 +60,11 @@ public class TikaContainer extends ExternalResource {
     }
 
     public String getIp() {
-        return tika.getIp();
+        return tika.getHostIp();
     }
 
     public int getPort() {
-        return DEFAULT_TIKA_PORT;
+        return tika.getMappedPort(DEFAULT_TIKA_PORT);
     }
 
     public int getTimeoutInMillis() {

http://git-wip-us.apache.org/repos/asf/james-project/blob/a18a4488/mpt/core/src/main/java/org/apache/james/mpt/api/HostSystem.java
----------------------------------------------------------------------
diff --git a/mpt/core/src/main/java/org/apache/james/mpt/api/HostSystem.java b/mpt/core/src/main/java/org/apache/james/mpt/api/HostSystem.java
index ccd0122..0464da4 100644
--- a/mpt/core/src/main/java/org/apache/james/mpt/api/HostSystem.java
+++ b/mpt/core/src/main/java/org/apache/james/mpt/api/HostSystem.java
@@ -54,10 +54,6 @@ public interface HostSystem extends SessionFactory {
      */
     Session newSession(Continuation continuation) throws Exception;
 
-    void beforeTests() throws Exception;
-
-    void afterTests() throws Exception;
-
     void beforeTest() throws Exception;
 
     void afterTest() throws Exception;

http://git-wip-us.apache.org/repos/asf/james-project/blob/a18a4488/mpt/core/src/main/java/org/apache/james/mpt/script/SimpleScriptedTestProtocol.java
----------------------------------------------------------------------
diff --git a/mpt/core/src/main/java/org/apache/james/mpt/script/SimpleScriptedTestProtocol.java b/mpt/core/src/main/java/org/apache/james/mpt/script/SimpleScriptedTestProtocol.java
index 30c7210..1655378 100644
--- a/mpt/core/src/main/java/org/apache/james/mpt/script/SimpleScriptedTestProtocol.java
+++ b/mpt/core/src/main/java/org/apache/james/mpt/script/SimpleScriptedTestProtocol.java
@@ -2,8 +2,8 @@ package org.apache.james.mpt.script;
 
 import org.apache.james.mpt.api.HostSystem;
 
-public class SimpleScriptedTestProtocol extends GenericSimpleScriptedTestProtocol<HostSystem, SimpleScriptedTestProtocol> {
 
+public class SimpleScriptedTestProtocol extends GenericSimpleScriptedTestProtocol<HostSystem, SimpleScriptedTestProtocol> {
     public SimpleScriptedTestProtocol(String scriptDirectory, HostSystem hostSystem) throws Exception {
         super(scriptDirectory, hostSystem);
     }

http://git-wip-us.apache.org/repos/asf/james-project/blob/a18a4488/mpt/impl/imap-mailbox/cassandra/pom.xml
----------------------------------------------------------------------
diff --git a/mpt/impl/imap-mailbox/cassandra/pom.xml b/mpt/impl/imap-mailbox/cassandra/pom.xml
index 6eccb8c..4c473f1 100644
--- a/mpt/impl/imap-mailbox/cassandra/pom.xml
+++ b/mpt/impl/imap-mailbox/cassandra/pom.xml
@@ -49,10 +49,5 @@
             <groupId>${project.groupId}</groupId>
             <artifactId>apache-james-mpt-imapmailbox-core</artifactId>
         </dependency>
-        <dependency>
-            <groupId>org.cassandraunit</groupId>
-            <artifactId>cassandra-unit</artifactId>
-            <scope>test</scope>
-        </dependency>
     </dependencies>
 </project>

http://git-wip-us.apache.org/repos/asf/james-project/blob/a18a4488/mpt/impl/imap-mailbox/cassandra/src/test/java/org/apache/james/mpt/imapmailbox/cassandra/CassandraAuthenticatePlain.java
----------------------------------------------------------------------
diff --git a/mpt/impl/imap-mailbox/cassandra/src/test/java/org/apache/james/mpt/imapmailbox/cassandra/CassandraAuthenticatePlain.java b/mpt/impl/imap-mailbox/cassandra/src/test/java/org/apache/james/mpt/imapmailbox/cassandra/CassandraAuthenticatePlain.java
index a86c2a1..a8e83d9 100644
--- a/mpt/impl/imap-mailbox/cassandra/src/test/java/org/apache/james/mpt/imapmailbox/cassandra/CassandraAuthenticatePlain.java
+++ b/mpt/impl/imap-mailbox/cassandra/src/test/java/org/apache/james/mpt/imapmailbox/cassandra/CassandraAuthenticatePlain.java
@@ -19,22 +19,27 @@
 
 package org.apache.james.mpt.imapmailbox.cassandra;
 
+import org.apache.james.backends.cassandra.DockerCassandraRule;
 import org.apache.james.mpt.api.ImapHostSystem;
 import org.apache.james.mpt.imapmailbox.suite.AuthenticatePlain;
 import org.junit.After;
 import org.junit.Before;
+import org.junit.ClassRule;
 
 import com.google.inject.Guice;
 import com.google.inject.Injector;
 
 public class CassandraAuthenticatePlain extends AuthenticatePlain {
 
-    private ImapHostSystem system;
+    @ClassRule public static DockerCassandraRule cassandraServer = new DockerCassandraRule();
 
+    private ImapHostSystem system;
+    
     @Before
     public void setUp() throws Exception {
-        Injector injector = Guice.createInjector(new CassandraMailboxTestModule());
+        Injector injector = Guice.createInjector(new CassandraMailboxTestModule(cassandraServer.getIp(), cassandraServer.getBindingPort()));
         system = injector.getInstance(ImapHostSystem.class);
+        system.beforeTest();
         super.setUp();
     }
     

http://git-wip-us.apache.org/repos/asf/james-project/blob/a18a4488/mpt/impl/imap-mailbox/cassandra/src/test/java/org/apache/james/mpt/imapmailbox/cassandra/CassandraAuthenticatedState.java
----------------------------------------------------------------------
diff --git a/mpt/impl/imap-mailbox/cassandra/src/test/java/org/apache/james/mpt/imapmailbox/cassandra/CassandraAuthenticatedState.java b/mpt/impl/imap-mailbox/cassandra/src/test/java/org/apache/james/mpt/imapmailbox/cassandra/CassandraAuthenticatedState.java
index 4a0b277..be1d1d8 100644
--- a/mpt/impl/imap-mailbox/cassandra/src/test/java/org/apache/james/mpt/imapmailbox/cassandra/CassandraAuthenticatedState.java
+++ b/mpt/impl/imap-mailbox/cassandra/src/test/java/org/apache/james/mpt/imapmailbox/cassandra/CassandraAuthenticatedState.java
@@ -19,22 +19,27 @@
 
 package org.apache.james.mpt.imapmailbox.cassandra;
 
+import org.apache.james.backends.cassandra.DockerCassandraRule;
 import org.apache.james.mpt.api.ImapHostSystem;
 import org.apache.james.mpt.imapmailbox.suite.AuthenticatedState;
 import org.junit.After;
 import org.junit.Before;
+import org.junit.ClassRule;
 
 import com.google.inject.Guice;
 import com.google.inject.Injector;
 
 public class CassandraAuthenticatedState extends AuthenticatedState {
 
-    private ImapHostSystem system;
+    @ClassRule public static DockerCassandraRule cassandraServer = new DockerCassandraRule();
 
+    private ImapHostSystem system;
+    
     @Before
     public void setUp() throws Exception {
-        Injector injector = Guice.createInjector(new CassandraMailboxTestModule());
+        Injector injector = Guice.createInjector(new CassandraMailboxTestModule(cassandraServer.getIp(), cassandraServer.getBindingPort()));
         system = injector.getInstance(ImapHostSystem.class);
+        system.beforeTest();
         super.setUp();
     }
     

http://git-wip-us.apache.org/repos/asf/james-project/blob/a18a4488/mpt/impl/imap-mailbox/cassandra/src/test/java/org/apache/james/mpt/imapmailbox/cassandra/CassandraConcurrentSessions.java
----------------------------------------------------------------------
diff --git a/mpt/impl/imap-mailbox/cassandra/src/test/java/org/apache/james/mpt/imapmailbox/cassandra/CassandraConcurrentSessions.java b/mpt/impl/imap-mailbox/cassandra/src/test/java/org/apache/james/mpt/imapmailbox/cassandra/CassandraConcurrentSessions.java
index 53963af..f235e5c 100644
--- a/mpt/impl/imap-mailbox/cassandra/src/test/java/org/apache/james/mpt/imapmailbox/cassandra/CassandraConcurrentSessions.java
+++ b/mpt/impl/imap-mailbox/cassandra/src/test/java/org/apache/james/mpt/imapmailbox/cassandra/CassandraConcurrentSessions.java
@@ -19,22 +19,27 @@
 
 package org.apache.james.mpt.imapmailbox.cassandra;
 
+import org.apache.james.backends.cassandra.DockerCassandraRule;
 import org.apache.james.mpt.api.ImapHostSystem;
 import org.apache.james.mpt.imapmailbox.suite.ConcurrentSessions;
 import org.junit.After;
 import org.junit.Before;
+import org.junit.ClassRule;
 
 import com.google.inject.Guice;
 import com.google.inject.Injector;
 
 public class CassandraConcurrentSessions extends ConcurrentSessions {
 
-    private ImapHostSystem system;
+    @ClassRule public static DockerCassandraRule cassandraServer = new DockerCassandraRule();
 
+    private ImapHostSystem system;
+    
     @Before
     public void setUp() throws Exception {
-        Injector injector = Guice.createInjector(new CassandraMailboxTestModule());
+        Injector injector = Guice.createInjector(new CassandraMailboxTestModule(cassandraServer.getIp(), cassandraServer.getBindingPort()));
         system = injector.getInstance(ImapHostSystem.class);
+        system.beforeTest();
         super.setUp();
     }
     

http://git-wip-us.apache.org/repos/asf/james-project/blob/a18a4488/mpt/impl/imap-mailbox/cassandra/src/test/java/org/apache/james/mpt/imapmailbox/cassandra/CassandraCondstore.java
----------------------------------------------------------------------
diff --git a/mpt/impl/imap-mailbox/cassandra/src/test/java/org/apache/james/mpt/imapmailbox/cassandra/CassandraCondstore.java b/mpt/impl/imap-mailbox/cassandra/src/test/java/org/apache/james/mpt/imapmailbox/cassandra/CassandraCondstore.java
index 38666f6..c5648d5 100644
--- a/mpt/impl/imap-mailbox/cassandra/src/test/java/org/apache/james/mpt/imapmailbox/cassandra/CassandraCondstore.java
+++ b/mpt/impl/imap-mailbox/cassandra/src/test/java/org/apache/james/mpt/imapmailbox/cassandra/CassandraCondstore.java
@@ -19,22 +19,27 @@
 
 package org.apache.james.mpt.imapmailbox.cassandra;
 
+import org.apache.james.backends.cassandra.DockerCassandraRule;
 import org.apache.james.mpt.host.JamesImapHostSystem;
 import org.apache.james.mpt.imapmailbox.suite.Condstore;
 import org.junit.After;
 import org.junit.Before;
+import org.junit.ClassRule;
 
 import com.google.inject.Guice;
 import com.google.inject.Injector;
 
 public class CassandraCondstore extends Condstore {
 
-    private JamesImapHostSystem system;
+    @ClassRule public static DockerCassandraRule cassandraServer = new DockerCassandraRule();
 
+    private JamesImapHostSystem system;
+    
     @Before
     public void setUp() throws Exception {
-        Injector injector = Guice.createInjector(new CassandraMailboxTestModule());
+        Injector injector = Guice.createInjector(new CassandraMailboxTestModule(cassandraServer.getIp(), cassandraServer.getBindingPort()));
         system = injector.getInstance(JamesImapHostSystem.class);
+        system.beforeTest();
         super.setUp();
     }
     

http://git-wip-us.apache.org/repos/asf/james-project/blob/a18a4488/mpt/impl/imap-mailbox/cassandra/src/test/java/org/apache/james/mpt/imapmailbox/cassandra/CassandraCopy.java
----------------------------------------------------------------------
diff --git a/mpt/impl/imap-mailbox/cassandra/src/test/java/org/apache/james/mpt/imapmailbox/cassandra/CassandraCopy.java b/mpt/impl/imap-mailbox/cassandra/src/test/java/org/apache/james/mpt/imapmailbox/cassandra/CassandraCopy.java
index 298593f..45aa8f9 100644
--- a/mpt/impl/imap-mailbox/cassandra/src/test/java/org/apache/james/mpt/imapmailbox/cassandra/CassandraCopy.java
+++ b/mpt/impl/imap-mailbox/cassandra/src/test/java/org/apache/james/mpt/imapmailbox/cassandra/CassandraCopy.java
@@ -19,22 +19,27 @@
 
 package org.apache.james.mpt.imapmailbox.cassandra;
 
+import org.apache.james.backends.cassandra.DockerCassandraRule;
 import org.apache.james.mpt.api.ImapHostSystem;
 import org.apache.james.mpt.imapmailbox.suite.Copy;
 import org.junit.After;
 import org.junit.Before;
+import org.junit.ClassRule;
 
 import com.google.inject.Guice;
 import com.google.inject.Injector;
 
 public class CassandraCopy extends Copy {
 
-    private ImapHostSystem system;
+    @ClassRule public static DockerCassandraRule cassandraServer = new DockerCassandraRule();
 
+    private ImapHostSystem system;
+    
     @Before
     public void setUp() throws Exception {
-        Injector injector = Guice.createInjector(new CassandraMailboxTestModule());
+        Injector injector = Guice.createInjector(new CassandraMailboxTestModule(cassandraServer.getIp(), cassandraServer.getBindingPort()));
         system = injector.getInstance(ImapHostSystem.class);
+        system.beforeTest();
         super.setUp();
     }
     

http://git-wip-us.apache.org/repos/asf/james-project/blob/a18a4488/mpt/impl/imap-mailbox/cassandra/src/test/java/org/apache/james/mpt/imapmailbox/cassandra/CassandraEvents.java
----------------------------------------------------------------------
diff --git a/mpt/impl/imap-mailbox/cassandra/src/test/java/org/apache/james/mpt/imapmailbox/cassandra/CassandraEvents.java b/mpt/impl/imap-mailbox/cassandra/src/test/java/org/apache/james/mpt/imapmailbox/cassandra/CassandraEvents.java
index 1632fd7..28007e6 100644
--- a/mpt/impl/imap-mailbox/cassandra/src/test/java/org/apache/james/mpt/imapmailbox/cassandra/CassandraEvents.java
+++ b/mpt/impl/imap-mailbox/cassandra/src/test/java/org/apache/james/mpt/imapmailbox/cassandra/CassandraEvents.java
@@ -19,22 +19,27 @@
 
 package org.apache.james.mpt.imapmailbox.cassandra;
 
+import org.apache.james.backends.cassandra.DockerCassandraRule;
 import org.apache.james.mpt.api.ImapHostSystem;
 import org.apache.james.mpt.imapmailbox.suite.Events;
 import org.junit.After;
 import org.junit.Before;
+import org.junit.ClassRule;
 
 import com.google.inject.Guice;
 import com.google.inject.Injector;
 
 public class CassandraEvents extends Events {
 
-    private ImapHostSystem system;
+    @ClassRule public static DockerCassandraRule cassandraServer = new DockerCassandraRule();
 
+    private ImapHostSystem system;
+    
     @Before
     public void setUp() throws Exception {
-        Injector injector = Guice.createInjector(new CassandraMailboxTestModule());
+        Injector injector = Guice.createInjector(new CassandraMailboxTestModule(cassandraServer.getIp(), cassandraServer.getBindingPort()));
         system = injector.getInstance(ImapHostSystem.class);
+        system.beforeTest();
         super.setUp();
     }
     

http://git-wip-us.apache.org/repos/asf/james-project/blob/a18a4488/mpt/impl/imap-mailbox/cassandra/src/test/java/org/apache/james/mpt/imapmailbox/cassandra/CassandraExpunge.java
----------------------------------------------------------------------
diff --git a/mpt/impl/imap-mailbox/cassandra/src/test/java/org/apache/james/mpt/imapmailbox/cassandra/CassandraExpunge.java b/mpt/impl/imap-mailbox/cassandra/src/test/java/org/apache/james/mpt/imapmailbox/cassandra/CassandraExpunge.java
index ef30799..a7ae30e 100644
--- a/mpt/impl/imap-mailbox/cassandra/src/test/java/org/apache/james/mpt/imapmailbox/cassandra/CassandraExpunge.java
+++ b/mpt/impl/imap-mailbox/cassandra/src/test/java/org/apache/james/mpt/imapmailbox/cassandra/CassandraExpunge.java
@@ -19,22 +19,27 @@
 
 package org.apache.james.mpt.imapmailbox.cassandra;
 
+import org.apache.james.backends.cassandra.DockerCassandraRule;
 import org.apache.james.mpt.api.ImapHostSystem;
 import org.apache.james.mpt.imapmailbox.suite.Expunge;
 import org.junit.After;
 import org.junit.Before;
+import org.junit.ClassRule;
 
 import com.google.inject.Guice;
 import com.google.inject.Injector;
 
 public class CassandraExpunge extends Expunge {
 
-    private ImapHostSystem system;
+    @ClassRule public static DockerCassandraRule cassandraServer = new DockerCassandraRule();
 
+    private ImapHostSystem system;
+    
     @Before
     public void setUp() throws Exception {
-        Injector injector = Guice.createInjector(new CassandraMailboxTestModule());
+        Injector injector = Guice.createInjector(new CassandraMailboxTestModule(cassandraServer.getIp(), cassandraServer.getBindingPort()));
         system = injector.getInstance(ImapHostSystem.class);
+        system.beforeTest();
         super.setUp();
     }
     

http://git-wip-us.apache.org/repos/asf/james-project/blob/a18a4488/mpt/impl/imap-mailbox/cassandra/src/test/java/org/apache/james/mpt/imapmailbox/cassandra/CassandraFetch.java
----------------------------------------------------------------------
diff --git a/mpt/impl/imap-mailbox/cassandra/src/test/java/org/apache/james/mpt/imapmailbox/cassandra/CassandraFetch.java b/mpt/impl/imap-mailbox/cassandra/src/test/java/org/apache/james/mpt/imapmailbox/cassandra/CassandraFetch.java
index c8f2eec..d5f6ddb 100644
--- a/mpt/impl/imap-mailbox/cassandra/src/test/java/org/apache/james/mpt/imapmailbox/cassandra/CassandraFetch.java
+++ b/mpt/impl/imap-mailbox/cassandra/src/test/java/org/apache/james/mpt/imapmailbox/cassandra/CassandraFetch.java
@@ -19,22 +19,27 @@
 
 package org.apache.james.mpt.imapmailbox.cassandra;
 
+import org.apache.james.backends.cassandra.DockerCassandraRule;
 import org.apache.james.mpt.api.ImapHostSystem;
 import org.apache.james.mpt.imapmailbox.suite.Fetch;
 import org.junit.After;
 import org.junit.Before;
+import org.junit.ClassRule;
 
 import com.google.inject.Guice;
 import com.google.inject.Injector;
 
 public class CassandraFetch extends Fetch {
 
-    private ImapHostSystem system;
+    @ClassRule public static DockerCassandraRule cassandraServer = new DockerCassandraRule();
 
+    private ImapHostSystem system;
+    
     @Before
     public void setUp() throws Exception {
-        Injector injector = Guice.createInjector(new CassandraMailboxTestModule());
+        Injector injector = Guice.createInjector(new CassandraMailboxTestModule(cassandraServer.getIp(), cassandraServer.getBindingPort()));
         system = injector.getInstance(ImapHostSystem.class);
+        system.beforeTest();
         super.setUp();
     }
     

http://git-wip-us.apache.org/repos/asf/james-project/blob/a18a4488/mpt/impl/imap-mailbox/cassandra/src/test/java/org/apache/james/mpt/imapmailbox/cassandra/CassandraFetchBodySection.java
----------------------------------------------------------------------
diff --git a/mpt/impl/imap-mailbox/cassandra/src/test/java/org/apache/james/mpt/imapmailbox/cassandra/CassandraFetchBodySection.java b/mpt/impl/imap-mailbox/cassandra/src/test/java/org/apache/james/mpt/imapmailbox/cassandra/CassandraFetchBodySection.java
index 67fd6ad..47fcb3f 100644
--- a/mpt/impl/imap-mailbox/cassandra/src/test/java/org/apache/james/mpt/imapmailbox/cassandra/CassandraFetchBodySection.java
+++ b/mpt/impl/imap-mailbox/cassandra/src/test/java/org/apache/james/mpt/imapmailbox/cassandra/CassandraFetchBodySection.java
@@ -19,22 +19,27 @@
 
 package org.apache.james.mpt.imapmailbox.cassandra;
 
+import org.apache.james.backends.cassandra.DockerCassandraRule;
 import org.apache.james.mpt.api.ImapHostSystem;
 import org.apache.james.mpt.imapmailbox.suite.FetchBodySection;
 import org.junit.After;
 import org.junit.Before;
+import org.junit.ClassRule;
 
 import com.google.inject.Guice;
 import com.google.inject.Injector;
 
 public class CassandraFetchBodySection extends FetchBodySection {
+    
+    @ClassRule public static DockerCassandraRule cassandraServer = new DockerCassandraRule();
 
     private ImapHostSystem system;
-
+    
     @Before
     public void setUp() throws Exception {
-        Injector injector = Guice.createInjector(new CassandraMailboxTestModule());
+        Injector injector = Guice.createInjector(new CassandraMailboxTestModule(cassandraServer.getIp(), cassandraServer.getBindingPort()));
         system = injector.getInstance(ImapHostSystem.class);
+        system.beforeTest();
         super.setUp();
     }
     

http://git-wip-us.apache.org/repos/asf/james-project/blob/a18a4488/mpt/impl/imap-mailbox/cassandra/src/test/java/org/apache/james/mpt/imapmailbox/cassandra/CassandraFetchBodyStructure.java
----------------------------------------------------------------------
diff --git a/mpt/impl/imap-mailbox/cassandra/src/test/java/org/apache/james/mpt/imapmailbox/cassandra/CassandraFetchBodyStructure.java b/mpt/impl/imap-mailbox/cassandra/src/test/java/org/apache/james/mpt/imapmailbox/cassandra/CassandraFetchBodyStructure.java
index c9e2cd7..c0b2a31 100644
--- a/mpt/impl/imap-mailbox/cassandra/src/test/java/org/apache/james/mpt/imapmailbox/cassandra/CassandraFetchBodyStructure.java
+++ b/mpt/impl/imap-mailbox/cassandra/src/test/java/org/apache/james/mpt/imapmailbox/cassandra/CassandraFetchBodyStructure.java
@@ -19,22 +19,27 @@
 
 package org.apache.james.mpt.imapmailbox.cassandra;
 
+import org.apache.james.backends.cassandra.DockerCassandraRule;
 import org.apache.james.mpt.api.ImapHostSystem;
 import org.apache.james.mpt.imapmailbox.suite.FetchBodyStructure;
 import org.junit.After;
 import org.junit.Before;
+import org.junit.ClassRule;
 
 import com.google.inject.Guice;
 import com.google.inject.Injector;
 
 public class CassandraFetchBodyStructure extends FetchBodyStructure {
+    
+    @ClassRule public static DockerCassandraRule cassandraServer = new DockerCassandraRule();
 
     private ImapHostSystem system;
-
+    
     @Before
     public void setUp() throws Exception {
-        Injector injector = Guice.createInjector(new CassandraMailboxTestModule());
+        Injector injector = Guice.createInjector(new CassandraMailboxTestModule(cassandraServer.getIp(), cassandraServer.getBindingPort()));
         system = injector.getInstance(ImapHostSystem.class);
+        system.beforeTest();
         super.setUp();
     }
     

http://git-wip-us.apache.org/repos/asf/james-project/blob/a18a4488/mpt/impl/imap-mailbox/cassandra/src/test/java/org/apache/james/mpt/imapmailbox/cassandra/CassandraFetchHeaders.java
----------------------------------------------------------------------
diff --git a/mpt/impl/imap-mailbox/cassandra/src/test/java/org/apache/james/mpt/imapmailbox/cassandra/CassandraFetchHeaders.java b/mpt/impl/imap-mailbox/cassandra/src/test/java/org/apache/james/mpt/imapmailbox/cassandra/CassandraFetchHeaders.java
index bd8c1e6..bd3be46 100644
--- a/mpt/impl/imap-mailbox/cassandra/src/test/java/org/apache/james/mpt/imapmailbox/cassandra/CassandraFetchHeaders.java
+++ b/mpt/impl/imap-mailbox/cassandra/src/test/java/org/apache/james/mpt/imapmailbox/cassandra/CassandraFetchHeaders.java
@@ -19,22 +19,27 @@
 
 package org.apache.james.mpt.imapmailbox.cassandra;
 
+import org.apache.james.backends.cassandra.DockerCassandraRule;
 import org.apache.james.mpt.api.ImapHostSystem;
 import org.apache.james.mpt.imapmailbox.suite.FetchHeaders;
 import org.junit.After;
 import org.junit.Before;
+import org.junit.ClassRule;
 
 import com.google.inject.Guice;
 import com.google.inject.Injector;
 
 public class CassandraFetchHeaders extends FetchHeaders {
 
-    private ImapHostSystem system;
+    @ClassRule public static DockerCassandraRule cassandraServer = new DockerCassandraRule();
 
+    private ImapHostSystem system;
+    
     @Before
     public void setUp() throws Exception {
-        Injector injector = Guice.createInjector(new CassandraMailboxTestModule());
+        Injector injector = Guice.createInjector(new CassandraMailboxTestModule(cassandraServer.getIp(), cassandraServer.getBindingPort()));
         system = injector.getInstance(ImapHostSystem.class);
+        system.beforeTest();
         super.setUp();
     }
     

http://git-wip-us.apache.org/repos/asf/james-project/blob/a18a4488/mpt/impl/imap-mailbox/cassandra/src/test/java/org/apache/james/mpt/imapmailbox/cassandra/CassandraListing.java
----------------------------------------------------------------------
diff --git a/mpt/impl/imap-mailbox/cassandra/src/test/java/org/apache/james/mpt/imapmailbox/cassandra/CassandraListing.java b/mpt/impl/imap-mailbox/cassandra/src/test/java/org/apache/james/mpt/imapmailbox/cassandra/CassandraListing.java
index 983ff29..c29de81 100644
--- a/mpt/impl/imap-mailbox/cassandra/src/test/java/org/apache/james/mpt/imapmailbox/cassandra/CassandraListing.java
+++ b/mpt/impl/imap-mailbox/cassandra/src/test/java/org/apache/james/mpt/imapmailbox/cassandra/CassandraListing.java
@@ -19,22 +19,27 @@
 
 package org.apache.james.mpt.imapmailbox.cassandra;
 
+import org.apache.james.backends.cassandra.DockerCassandraRule;
 import org.apache.james.mpt.api.ImapHostSystem;
 import org.apache.james.mpt.imapmailbox.suite.Listing;
 import org.junit.After;
 import org.junit.Before;
+import org.junit.ClassRule;
 
 import com.google.inject.Guice;
 import com.google.inject.Injector;
 
 public class CassandraListing extends Listing {
 
-    private ImapHostSystem system;
+    @ClassRule public static DockerCassandraRule cassandraServer = new DockerCassandraRule();
 
+    private ImapHostSystem system;
+    
     @Before
     public void setUp() throws Exception {
-        Injector injector = Guice.createInjector(new CassandraMailboxTestModule());
+        Injector injector = Guice.createInjector(new CassandraMailboxTestModule(cassandraServer.getIp(), cassandraServer.getBindingPort()));
         system = injector.getInstance(ImapHostSystem.class);
+        system.beforeTest();
         super.setUp();
     }
     


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


[09/13] james-project git commit: JAMES-2133 Switch from cassandraunit to cassandra in docker

Posted by ma...@apache.org.
http://git-wip-us.apache.org/repos/asf/james-project/blob/a18a4488/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 775ab0a..7e4e320 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
@@ -19,12 +19,61 @@
 
 package org.apache.james.mailbox.cassandra.mail;
 
+import org.apache.james.backends.cassandra.CassandraCluster;
+import org.apache.james.backends.cassandra.DockerCassandraRule;
+import org.apache.james.backends.cassandra.init.CassandraModuleComposite;
+import org.apache.james.mailbox.cassandra.modules.CassandraAclModule;
+import org.apache.james.mailbox.cassandra.modules.CassandraAnnotationModule;
+import org.apache.james.mailbox.cassandra.modules.CassandraApplicableFlagsModule;
+import org.apache.james.mailbox.cassandra.modules.CassandraAttachmentModule;
+import org.apache.james.mailbox.cassandra.modules.CassandraBlobModule;
+import org.apache.james.mailbox.cassandra.modules.CassandraDeletedMessageModule;
+import org.apache.james.mailbox.cassandra.modules.CassandraFirstUnseenModule;
+import org.apache.james.mailbox.cassandra.modules.CassandraMailboxCounterModule;
+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.CassandraUidModule;
 import org.apache.james.mailbox.store.mail.model.AnnotationMapperTest;
 import org.apache.james.mailbox.store.mail.model.MapperProvider;
+import org.junit.After;
+import org.junit.Before;
+import org.junit.ClassRule;
 
 public class CassandraAnnotationMapperTest extends AnnotationMapperTest {
+    
+    @ClassRule public static DockerCassandraRule cassandraServer = new DockerCassandraRule();
+    
+    private CassandraCluster cassandra;
+
+    @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();
+    }
+    
     @Override
     protected MapperProvider createMapperProvider() {
-        return new CassandraMapperProvider();
+        return new CassandraMapperProvider(cassandra);
     }
 }

http://git-wip-us.apache.org/repos/asf/james-project/blob/a18a4488/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 fd380db..f6b4004 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
@@ -24,11 +24,13 @@ import static org.assertj.core.api.Assertions.assertThat;
 import javax.mail.Flags;
 
 import org.apache.james.backends.cassandra.CassandraCluster;
+import org.apache.james.backends.cassandra.DockerCassandraRule;
 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.Before;
+import org.junit.ClassRule;
 import org.junit.Test;
 
 import com.google.common.collect.ImmutableSet;
@@ -39,21 +41,20 @@ public class CassandraApplicableFlagDAOTest {
     public static final String USER_FLAG2 = "User Flag 2";
     public static final CassandraId CASSANDRA_ID = CassandraId.timeBased();
 
+    @ClassRule public static DockerCassandraRule cassandraServer = new DockerCassandraRule();
+    
     private CassandraCluster cassandra;
 
     private CassandraApplicableFlagDAO testee;
 
     @Before
     public void setUp() throws Exception {
-        cassandra = CassandraCluster.create(new CassandraApplicableFlagsModule());
-        cassandra.ensureAllTables();
-
+        cassandra = CassandraCluster.create(new CassandraApplicableFlagsModule(), cassandraServer.getIp(), cassandraServer.getBindingPort());
         testee = new CassandraApplicableFlagDAO(cassandra.getConf());
     }
 
     @After
     public void tearDown() throws Exception {
-        cassandra.clearAllTables();
         cassandra.close();
     }
 

http://git-wip-us.apache.org/repos/asf/james-project/blob/a18a4488/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 c144e06..ed3948d 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
@@ -19,12 +19,62 @@
 
 package org.apache.james.mailbox.cassandra.mail;
 
+import org.apache.james.backends.cassandra.CassandraCluster;
+import org.apache.james.backends.cassandra.DockerCassandraRule;
+import org.apache.james.backends.cassandra.init.CassandraModuleComposite;
+import org.apache.james.mailbox.cassandra.modules.CassandraAclModule;
+import org.apache.james.mailbox.cassandra.modules.CassandraAnnotationModule;
+import org.apache.james.mailbox.cassandra.modules.CassandraApplicableFlagsModule;
+import org.apache.james.mailbox.cassandra.modules.CassandraAttachmentModule;
+import org.apache.james.mailbox.cassandra.modules.CassandraBlobModule;
+import org.apache.james.mailbox.cassandra.modules.CassandraDeletedMessageModule;
+import org.apache.james.mailbox.cassandra.modules.CassandraFirstUnseenModule;
+import org.apache.james.mailbox.cassandra.modules.CassandraMailboxCounterModule;
+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.CassandraUidModule;
+import org.apache.james.mailbox.exception.MailboxException;
 import org.apache.james.mailbox.store.mail.model.AttachmentMapperTest;
 import org.apache.james.mailbox.store.mail.model.MapperProvider;
+import org.junit.After;
+import org.junit.Before;
+import org.junit.ClassRule;
 
 public class CassandraAttachmentMapperTest extends AttachmentMapperTest {
+    
+    @ClassRule public static DockerCassandraRule cassandraServer = new DockerCassandraRule();
+    
+    private CassandraCluster cassandra;
+
+    @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();
+    }
+    
     @Override
     protected MapperProvider createMapperProvider() {
-        return new CassandraMapperProvider();
+        return new CassandraMapperProvider(cassandra);
     }
 }

http://git-wip-us.apache.org/repos/asf/james-project/blob/a18a4488/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraBlobsDAOTest.java
----------------------------------------------------------------------
diff --git a/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraBlobsDAOTest.java b/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraBlobsDAOTest.java
index d2f9ceb..f03a3f7 100644
--- a/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraBlobsDAOTest.java
+++ b/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraBlobsDAOTest.java
@@ -25,11 +25,13 @@ import java.io.IOException;
 import java.util.Optional;
 
 import org.apache.james.backends.cassandra.CassandraCluster;
-import org.apache.james.backends.cassandra.CassandraConfiguration;
+import org.apache.james.backends.cassandra.DockerCassandraRule;
+import org.apache.james.backends.cassandra.init.CassandraConfiguration;
 import org.apache.james.mailbox.cassandra.ids.BlobId;
 import org.apache.james.mailbox.cassandra.modules.CassandraBlobModule;
 import org.junit.After;
 import org.junit.Before;
+import org.junit.ClassRule;
 import org.junit.Test;
 
 import com.google.common.base.Charsets;
@@ -38,23 +40,27 @@ import com.google.common.base.Strings;
 public class CassandraBlobsDAOTest {
     private static final int CHUNK_SIZE = 1024;
     private static final int MULTIPLE_CHUNK_SIZE = 3;
+
+    
+
+    @ClassRule public static DockerCassandraRule cassandraServer = new DockerCassandraRule();
+    
     private CassandraCluster cassandra;
     private CassandraBlobsDAO testee;
 
     @Before
-    public void setUp() throws Exception {
-        cassandra = CassandraCluster.create(new CassandraBlobModule());
-        cassandra.ensureAllTables();
-
+    public void setUp() {
+        cassandra = CassandraCluster.create(
+                new CassandraBlobModule(), cassandraServer.getIp(), cassandraServer.getBindingPort());
+        
         testee = new CassandraBlobsDAO(cassandra.getConf(),
             CassandraConfiguration.builder()
                 .blobPartSize(CHUNK_SIZE)
-                .build());
+                .build());;
     }
 
     @After
-    public void tearDown() throws Exception {
-        cassandra.clearAllTables();
+    public void tearDown() {
         cassandra.close();
     }
 

http://git-wip-us.apache.org/repos/asf/james-project/blob/a18a4488/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 10c2e2d..98f6b28 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
@@ -19,22 +19,26 @@
 
 package org.apache.james.mailbox.cassandra.mail;
 
-import com.github.steveash.guavate.Guavate;
+import static org.assertj.core.api.Assertions.assertThat;
+
+import java.util.List;
 import java.util.UUID;
+
 import org.apache.james.backends.cassandra.CassandraCluster;
+import org.apache.james.backends.cassandra.DockerCassandraRule;
 import org.apache.james.mailbox.MessageUid;
 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.Before;
+import org.junit.ClassRule;
 import org.junit.Test;
 
-import java.util.List;
-
-import static org.assertj.core.api.Assertions.assertThat;
+import com.github.steveash.guavate.Guavate;
 
 public class CassandraDeletedMessageDAOTest {
+    
     public static final CassandraId MAILBOX_ID = CassandraId.of(UUID.fromString("110e8400-e29b-11d4-a716-446655440000"));
     public static final MessageUid UID_1 = MessageUid.of(1);
     public static final MessageUid UID_2 = MessageUid.of(2);
@@ -43,21 +47,20 @@ public class CassandraDeletedMessageDAOTest {
     public static final MessageUid UID_7 = MessageUid.of(7);
     public static final MessageUid UID_8 = MessageUid.of(8);
 
+    @ClassRule public static DockerCassandraRule cassandraServer = new DockerCassandraRule();
+    
     private CassandraCluster cassandra;
     private CassandraDeletedMessageDAO testee;
 
     @Before
     public void setUp() {
         cassandra = CassandraCluster.create(
-            new CassandraDeletedMessageModule());
-        cassandra.ensureAllTables();
-
+            new CassandraDeletedMessageModule(), cassandraServer.getIp(), cassandraServer.getBindingPort());
         testee = new CassandraDeletedMessageDAO(cassandra.getConf());
     }
 
     @After
     public void tearDown() {
-        cassandra.clearAllTables();
         cassandra.close();
     }
 

http://git-wip-us.apache.org/repos/asf/james-project/blob/a18a4488/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 45d8e20..1c885ac 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
@@ -22,27 +22,30 @@ package org.apache.james.mailbox.cassandra.mail;
 import static org.assertj.core.api.Assertions.assertThat;
 
 import org.apache.james.backends.cassandra.CassandraCluster;
+import org.apache.james.backends.cassandra.DockerCassandraRule;
 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.Before;
+import org.junit.ClassRule;
 import org.junit.Test;
 
 public class CassandraFirstUnseenDAOTest {
+    
     public static final CassandraId MAILBOX_ID = CassandraId.timeBased();
     public static final MessageUid UID_1 = MessageUid.of(1);
     public static final MessageUid UID_2 = MessageUid.of(2);
 
+    @ClassRule public static DockerCassandraRule cassandraServer = new DockerCassandraRule();
+    
     private CassandraCluster cassandra;
     private CassandraFirstUnseenDAO testee;
 
     @Before
     public void setUp() {
         cassandra = CassandraCluster.create(
-            new CassandraFirstUnseenModule());
-        cassandra.ensureAllTables();
-
+            new CassandraFirstUnseenModule(), cassandraServer.getIp(), cassandraServer.getBindingPort());
         testee = new CassandraFirstUnseenDAO(cassandra.getConf());
     }
 

http://git-wip-us.apache.org/repos/asf/james-project/blob/a18a4488/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 60a1dab..24eaff9 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
@@ -19,12 +19,61 @@
 
 package org.apache.james.mailbox.cassandra.mail;
 
+import org.apache.james.backends.cassandra.CassandraCluster;
+import org.apache.james.backends.cassandra.DockerCassandraRule;
+import org.apache.james.backends.cassandra.init.CassandraModuleComposite;
+import org.apache.james.mailbox.cassandra.modules.CassandraAclModule;
+import org.apache.james.mailbox.cassandra.modules.CassandraAnnotationModule;
+import org.apache.james.mailbox.cassandra.modules.CassandraApplicableFlagsModule;
+import org.apache.james.mailbox.cassandra.modules.CassandraAttachmentModule;
+import org.apache.james.mailbox.cassandra.modules.CassandraBlobModule;
+import org.apache.james.mailbox.cassandra.modules.CassandraDeletedMessageModule;
+import org.apache.james.mailbox.cassandra.modules.CassandraFirstUnseenModule;
+import org.apache.james.mailbox.cassandra.modules.CassandraMailboxCounterModule;
+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.CassandraUidModule;
 import org.apache.james.mailbox.store.mail.model.MailboxMapperTest;
 import org.apache.james.mailbox.store.mail.model.MapperProvider;
+import org.junit.After;
+import org.junit.Before;
+import org.junit.ClassRule;
 
 public class CassandraGenericMailboxMapperTest extends MailboxMapperTest {
+    
+    @ClassRule public static DockerCassandraRule cassandraServer = new DockerCassandraRule();
+    
+    private CassandraCluster cassandra;
+
+    @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();
+    }
+    
     @Override
     protected MapperProvider createMapperProvider() {
-        return new CassandraMapperProvider();
+        return new CassandraMapperProvider(cassandra);
     }
 }

http://git-wip-us.apache.org/repos/asf/james-project/blob/a18a4488/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 3dc96ea..33e8253 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
@@ -28,6 +28,7 @@ import java.util.Optional;
 import javax.mail.Flags;
 
 import org.apache.james.backends.cassandra.CassandraCluster;
+import org.apache.james.backends.cassandra.DockerCassandraRule;
 import org.apache.james.backends.cassandra.init.CassandraModuleComposite;
 import org.apache.james.mailbox.FlagsBuilder;
 import org.apache.james.mailbox.MessageUid;
@@ -48,6 +49,7 @@ 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.Before;
+import org.junit.ClassRule;
 import org.junit.Test;
 
 import com.github.steveash.guavate.Guavate;
@@ -60,6 +62,8 @@ public class CassandraIndexTableHandlerTest {
     public static final int UID_VALIDITY = 15;
     public static final long MODSEQ = 17;
 
+    @ClassRule public static DockerCassandraRule cassandraServer = new DockerCassandraRule();
+    
     private CassandraCluster cassandra;
     private CassandraMailboxCounterDAO mailboxCounterDAO;
     private CassandraMailboxRecentsDAO mailboxRecentsDAO;
@@ -77,9 +81,7 @@ public class CassandraIndexTableHandlerTest {
                 new CassandraMailboxRecentsModule(),
                 new CassandraFirstUnseenModule(),
                 new CassandraApplicableFlagsModule(),
-                new CassandraDeletedMessageModule()));
-        cassandra.ensureAllTables();
-
+                new CassandraDeletedMessageModule()), cassandraServer.getIp(), cassandraServer.getBindingPort());
         mailboxCounterDAO = new CassandraMailboxCounterDAO(cassandra.getConf());
         mailboxRecentsDAO = new CassandraMailboxRecentsDAO(cassandra.getConf());
         firstUnseenDAO = new CassandraFirstUnseenDAO(cassandra.getConf());
@@ -99,7 +101,6 @@ public class CassandraIndexTableHandlerTest {
 
     @After
     public void tearDown() {
-        cassandra.clearAllTables();
         cassandra.close();
     }
 

http://git-wip-us.apache.org/repos/asf/james-project/blob/a18a4488/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 4964d9a..07d9cc6 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
@@ -22,6 +22,7 @@ package org.apache.james.mailbox.cassandra.mail;
 import static org.assertj.core.api.Assertions.assertThat;
 
 import org.apache.james.backends.cassandra.CassandraCluster;
+import org.apache.james.backends.cassandra.DockerCassandraRule;
 import org.apache.james.mailbox.cassandra.ids.CassandraId;
 import org.apache.james.mailbox.cassandra.modules.CassandraMailboxCounterModule;
 import org.apache.james.mailbox.model.MailboxCounters;
@@ -29,21 +30,22 @@ import org.apache.james.mailbox.model.MailboxPath;
 import org.apache.james.mailbox.store.mail.model.impl.SimpleMailbox;
 import org.junit.After;
 import org.junit.Before;
+import org.junit.ClassRule;
 import org.junit.Test;
 
 public class CassandraMailboxCounterDAOTest {
     public static final int UID_VALIDITY = 15;
     public static final CassandraId MAILBOX_ID = CassandraId.timeBased();
 
+    @ClassRule public static DockerCassandraRule cassandraServer = new DockerCassandraRule();
+    
     private CassandraCluster cassandra;
     private CassandraMailboxCounterDAO testee;
     private SimpleMailbox mailbox;
 
     @Before
     public void setUp() {
-        cassandra = CassandraCluster.create(new CassandraMailboxCounterModule());
-        cassandra.ensureAllTables();
-
+        cassandra = CassandraCluster.create(new CassandraMailboxCounterModule(), cassandraServer.getIp(), cassandraServer.getBindingPort());
         testee = new CassandraMailboxCounterDAO(cassandra.getConf());
 
         mailbox = new SimpleMailbox(new MailboxPath("#private", "user", "name"), UID_VALIDITY, MAILBOX_ID);

http://git-wip-us.apache.org/repos/asf/james-project/blob/a18a4488/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 b3bbb78..ba5ead9 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
@@ -25,6 +25,7 @@ import java.util.List;
 import java.util.Optional;
 
 import org.apache.james.backends.cassandra.CassandraCluster;
+import org.apache.james.backends.cassandra.DockerCassandraRule;
 import org.apache.james.backends.cassandra.init.CassandraModuleComposite;
 import org.apache.james.mailbox.cassandra.ids.CassandraId;
 import org.apache.james.mailbox.cassandra.modules.CassandraAclModule;
@@ -34,6 +35,7 @@ import org.apache.james.mailbox.model.MailboxPath;
 import org.apache.james.mailbox.store.mail.model.impl.SimpleMailbox;
 import org.junit.After;
 import org.junit.Before;
+import org.junit.ClassRule;
 import org.junit.Test;
 
 import com.github.steveash.guavate.Guavate;
@@ -45,6 +47,9 @@ public class CassandraMailboxDAOTest {
     public static final MailboxPath NEW_MAILBOX_PATH = new MailboxPath(MailboxConstants.USER_NAMESPACE, "user", "xyz");
     public static CassandraId CASSANDRA_ID_1 = CassandraId.timeBased();
     public static CassandraId CASSANDRA_ID_2 = CassandraId.timeBased();
+
+    @ClassRule public static DockerCassandraRule cassandraServer = new DockerCassandraRule();
+    
     private CassandraCluster cassandra;
     private CassandraMailboxDAO testee;
     private SimpleMailbox mailbox1;
@@ -52,10 +57,11 @@ public class CassandraMailboxDAOTest {
 
     @Before
     public void setUp() {
-        cassandra = CassandraCluster.create(new CassandraModuleComposite(new CassandraMailboxModule(), new CassandraAclModule()));
-        cassandra.ensureAllTables();
+        CassandraModuleComposite modules = new CassandraModuleComposite(new CassandraMailboxModule(), new CassandraAclModule());
+        cassandra = CassandraCluster.create(modules, cassandraServer.getIp(), cassandraServer.getBindingPort());
 
         testee = new CassandraMailboxDAO(cassandra.getConf(), cassandra.getTypesProvider());
+
         mailbox1 = new SimpleMailbox(new MailboxPath(MailboxConstants.USER_NAMESPACE, "user", "abcd"),
             UID_VALIDITY_1,
             CASSANDRA_ID_1);
@@ -66,7 +72,6 @@ public class CassandraMailboxDAOTest {
 
     @After
     public void tearDown() {
-        cassandra.clearAllTables();
         cassandra.close();
     }
 

http://git-wip-us.apache.org/repos/asf/james-project/blob/a18a4488/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 b904598..ccafa4a 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
@@ -23,6 +23,7 @@ import static org.mockito.Mockito.mock;
 import static org.mockito.Mockito.when;
 
 import org.apache.james.backends.cassandra.CassandraCluster;
+import org.apache.james.backends.cassandra.DockerCassandraRule;
 import org.apache.james.backends.cassandra.init.CassandraModuleComposite;
 import org.apache.james.mailbox.MailboxManager;
 import org.apache.james.mailbox.cassandra.CassandraMailboxManager;
@@ -46,16 +47,23 @@ import org.apache.james.mailbox.store.Authorizator;
 import org.apache.james.mailbox.store.MailboxSessionMapperFactory;
 import org.apache.james.mailbox.store.NoMailboxPathLocker;
 import org.apache.james.mailbox.store.mail.model.impl.MessageParser;
-import org.junit.AfterClass;
-import org.junit.BeforeClass;
+import org.junit.After;
+import org.junit.Before;
+import org.junit.ClassRule;
 
 public class CassandraMailboxManagerAttachmentTest extends AbstractMailboxManagerAttachmentTest {
 
-    private static CassandraCluster cassandra;
+    @ClassRule public static DockerCassandraRule cassandraServer = new DockerCassandraRule();
 
-    @BeforeClass
-    public static void init() {
-        cassandra = CassandraCluster.create(
+    private CassandraMailboxSessionMapperFactory mailboxSessionMapperFactory;
+    private CassandraMailboxManager mailboxManager;
+    private CassandraMailboxManager parseFailingMailboxManager;
+    private CassandraCluster cassandra;
+
+    @Before
+    public void init() throws Exception {
+        
+        CassandraModuleComposite modules = 
                 new CassandraModuleComposite(
                     new CassandraAclModule(),
                     new CassandraMailboxModule(),
@@ -68,19 +76,19 @@ public class CassandraMailboxManagerAttachmentTest extends AbstractMailboxManage
                     new CassandraModSeqModule(),
                     new CassandraUidModule(),
                     new CassandraAttachmentModule(),
-                    new CassandraApplicableFlagsModule()));
+                    new CassandraApplicableFlagsModule());
+        cassandra = CassandraCluster.create(modules, cassandraServer.getIp(), cassandraServer.getBindingPort());
+        initSystemUnderTest();
+        super.setUp();
     }
 
-    @AfterClass
-    public static void close() {
+    @After
+    public void tearDown() {
         cassandra.close();
     }
 
-    private CassandraMailboxSessionMapperFactory mailboxSessionMapperFactory;
-    private CassandraMailboxManager mailboxManager;
-    private CassandraMailboxManager parseFailingMailboxManager;
-
-    public CassandraMailboxManagerAttachmentTest() throws Exception {
+    
+    private void initSystemUnderTest() throws Exception {
         CassandraMessageId.Factory messageIdFactory = new CassandraMessageId.Factory();
 
         CassandraMailboxDAO mailboxDAO = new CassandraMailboxDAO(cassandra.getConf(), cassandra.getTypesProvider());
@@ -129,9 +137,4 @@ public class CassandraMailboxManagerAttachmentTest extends AbstractMailboxManage
     protected MailboxManager getParseFailingMailboxManager() {
         return parseFailingMailboxManager;
     }
-
-    @Override
-    protected void clean() {
-        cassandra.clearAllTables();
-    }
 }

http://git-wip-us.apache.org/repos/asf/james-project/blob/a18a4488/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 bd849e9..8b3716f 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
@@ -25,7 +25,8 @@ import java.util.List;
 import java.util.concurrent.TimeUnit;
 
 import org.apache.james.backends.cassandra.CassandraCluster;
-import org.apache.james.backends.cassandra.CassandraConfiguration;
+import org.apache.james.backends.cassandra.DockerCassandraRule;
+import org.apache.james.backends.cassandra.init.CassandraConfiguration;
 import org.apache.james.backends.cassandra.init.CassandraModuleComposite;
 import org.apache.james.mailbox.cassandra.modules.CassandraAclModule;
 import org.apache.james.mailbox.cassandra.modules.CassandraMailboxModule;
@@ -35,22 +36,25 @@ import org.apache.james.mailbox.store.mail.model.impl.SimpleMailbox;
 import org.apache.james.util.concurrency.ConcurrentTestRunner;
 import org.junit.After;
 import org.junit.Before;
+import org.junit.ClassRule;
 import org.junit.Test;
 
 public class CassandraMailboxMapperConcurrencyTest {
 
-    public static final int UID_VALIDITY = 52;
-    public static final MailboxPath MAILBOX_PATH = new MailboxPath("#private", "user", "name");
-    public static final int THREAD_COUNT = 10;
-    public static final int OPERATION_COUNT = 10;
+    private static final int UID_VALIDITY = 52;
+    private static final MailboxPath MAILBOX_PATH = new MailboxPath("#private", "user", "name");
+    private static final int THREAD_COUNT = 10;
+    private static final int OPERATION_COUNT = 10;
+
+    @ClassRule public static DockerCassandraRule cassandraServer = new DockerCassandraRule();
+    
     private CassandraCluster cassandra;
     private CassandraMailboxMapper testee;
 
     @Before
     public void setUp() {
-        cassandra = CassandraCluster.create(new CassandraModuleComposite(new CassandraMailboxModule(), new CassandraAclModule()));
-        cassandra.ensureAllTables();
-
+        CassandraModuleComposite modules = new CassandraModuleComposite(new CassandraMailboxModule(), new CassandraAclModule());
+        cassandra = CassandraCluster.create(modules, cassandraServer.getIp(), cassandraServer.getBindingPort());
         CassandraMailboxDAO mailboxDAO = new CassandraMailboxDAO(cassandra.getConf(), cassandra.getTypesProvider());
         CassandraMailboxPathDAO mailboxPathDAO = new CassandraMailboxPathDAO(cassandra.getConf(), cassandra.getTypesProvider());
         testee = new CassandraMailboxMapper(cassandra.getConf(), mailboxDAO, mailboxPathDAO, CassandraConfiguration.DEFAULT_CONFIGURATION);
@@ -58,7 +62,6 @@ public class CassandraMailboxMapperConcurrencyTest {
 
     @After
     public void tearDown() {
-        cassandra.clearAllTables();
         cassandra.close();
     }
 

http://git-wip-us.apache.org/repos/asf/james-project/blob/a18a4488/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 8eb5136..f67ffc6 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
@@ -26,7 +26,8 @@ import java.util.Optional;
 
 import org.apache.commons.lang3.StringUtils;
 import org.apache.james.backends.cassandra.CassandraCluster;
-import org.apache.james.backends.cassandra.CassandraConfiguration;
+import org.apache.james.backends.cassandra.DockerCassandraRule;
+import org.apache.james.backends.cassandra.init.CassandraConfiguration;
 import org.apache.james.backends.cassandra.init.CassandraModuleComposite;
 import org.apache.james.mailbox.cassandra.mail.CassandraMailboxPathDAO.CassandraIdAndPath;
 import org.apache.james.mailbox.cassandra.modules.CassandraAclModule;
@@ -37,24 +38,27 @@ 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.Before;
+import org.junit.ClassRule;
 import org.junit.Test;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
 public class CassandraMailboxMapperTest {
+    
     private static final Logger LOGGER = LoggerFactory.getLogger(CassandraMailboxMapperTest.class);
+    private static final int UID_VALIDITY = 52;
+    private static final MailboxPath MAILBOX_PATH = new MailboxPath("#private", "user", "name");
 
-    public static final int UID_VALIDITY = 52;
-    public static final MailboxPath MAILBOX_PATH = new MailboxPath("#private", "user", "name");
+    @ClassRule public static DockerCassandraRule cassandraServer = new DockerCassandraRule();
+    
     private CassandraCluster cassandra;
     private CassandraMailboxPathDAO mailboxPathDAO;
     private CassandraMailboxMapper testee;
 
     @Before
     public void setUp() {
-        cassandra = CassandraCluster.create(new CassandraModuleComposite(new CassandraMailboxModule(), new CassandraAclModule()));
-        cassandra.ensureAllTables();
-
+        CassandraModuleComposite modules = new CassandraModuleComposite(new CassandraMailboxModule(), new CassandraAclModule());
+        cassandra = CassandraCluster.create(modules, cassandraServer.getIp(), cassandraServer.getBindingPort());
         CassandraMailboxDAO mailboxDAO = new CassandraMailboxDAO(cassandra.getConf(), cassandra.getTypesProvider());
         mailboxPathDAO = new CassandraMailboxPathDAO(cassandra.getConf(), cassandra.getTypesProvider());
         testee = new CassandraMailboxMapper(cassandra.getConf(), mailboxDAO, mailboxPathDAO, CassandraConfiguration.DEFAULT_CONFIGURATION);
@@ -62,7 +66,6 @@ public class CassandraMailboxMapperTest {
 
     @After
     public void tearDown() {
-        cassandra.clearAllTables();
         cassandra.close();
     }
 

http://git-wip-us.apache.org/repos/asf/james-project/blob/a18a4488/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 7e42ba1..430c086 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
@@ -24,12 +24,14 @@ import static org.assertj.core.api.Assertions.assertThat;
 import java.util.List;
 
 import org.apache.james.backends.cassandra.CassandraCluster;
+import org.apache.james.backends.cassandra.DockerCassandraRule;
 import org.apache.james.mailbox.cassandra.ids.CassandraId;
 import org.apache.james.mailbox.cassandra.mail.CassandraMailboxPathDAO.CassandraIdAndPath;
 import org.apache.james.mailbox.cassandra.modules.CassandraMailboxModule;
 import org.apache.james.mailbox.model.MailboxPath;
 import org.junit.After;
 import org.junit.Before;
+import org.junit.ClassRule;
 import org.junit.Test;
 
 import com.github.steveash.guavate.Guavate;
@@ -49,22 +51,21 @@ public class CassandraMailboxPathDAOTest {
     public static final MailboxPath USER_OUTBOX_MAILBOXPATH = new MailboxPath(PRIVATE_NAMESPACE, USER, "OUTBOX");
     public static final MailboxPath OTHER_USER_MAILBOXPATH = new MailboxPath(PRIVATE_NAMESPACE, OTHER_USER, "INBOX");
 
+    @ClassRule public static DockerCassandraRule cassandraServer = new DockerCassandraRule();
+    
     private CassandraCluster cassandra;
 
     private CassandraMailboxPathDAO testee;
 
     @Before
     public void setUp() throws Exception {
-        cassandra = CassandraCluster.create(new CassandraMailboxModule());
-        cassandra.ensureAllTables();
-
+        cassandra = CassandraCluster.create(new CassandraMailboxModule(), cassandraServer.getIp(), cassandraServer.getBindingPort());
         testee = new CassandraMailboxPathDAO(cassandra.getConf(), cassandra.getTypesProvider());
 
     }
 
     @After
     public void tearDown() throws Exception {
-        cassandra.clearAllTables();
         cassandra.close();
     }
 

http://git-wip-us.apache.org/repos/asf/james-project/blob/a18a4488/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 c0acc70..f4b7639 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
@@ -24,11 +24,13 @@ import static org.assertj.core.api.Assertions.assertThat;
 import java.util.stream.IntStream;
 
 import org.apache.james.backends.cassandra.CassandraCluster;
+import org.apache.james.backends.cassandra.DockerCassandraRule;
 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.Before;
+import org.junit.ClassRule;
 import org.junit.Test;
 
 import com.github.steveash.guavate.Guavate;
@@ -38,20 +40,19 @@ public class CassandraMailboxRecentDAOTest {
     public static final MessageUid UID2 = MessageUid.of(37L);
     public static final CassandraId CASSANDRA_ID = CassandraId.timeBased();
 
+    @ClassRule public static DockerCassandraRule cassandraServer = new DockerCassandraRule();
+    
     private CassandraCluster cassandra;
     private CassandraMailboxRecentsDAO testee;
 
     @Before
     public void setUp() {
-        cassandra = CassandraCluster.create(new CassandraMailboxRecentsModule());
-        cassandra.ensureAllTables();
-
+        cassandra = CassandraCluster.create(new CassandraMailboxRecentsModule(), cassandraServer.getIp(), cassandraServer.getBindingPort());
         testee = new CassandraMailboxRecentsDAO(cassandra.getConf());
     }
 
     @After
     public void tearDown() {
-        cassandra.clearAllTables();
         cassandra.close();
     }
 

http://git-wip-us.apache.org/repos/asf/james-project/blob/a18a4488/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 827e869..d29f520 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
@@ -21,26 +21,12 @@ package org.apache.james.mailbox.cassandra.mail;
 import java.util.List;
 
 import org.apache.james.backends.cassandra.CassandraCluster;
-import org.apache.james.backends.cassandra.init.CassandraModuleComposite;
 import org.apache.james.mailbox.MailboxSession;
 import org.apache.james.mailbox.MessageUid;
 import org.apache.james.mailbox.cassandra.CassandraMailboxSessionMapperFactory;
 import org.apache.james.mailbox.cassandra.ids.CassandraId;
 import org.apache.james.mailbox.cassandra.ids.CassandraMessageId;
 import org.apache.james.mailbox.cassandra.ids.CassandraMessageId.Factory;
-import org.apache.james.mailbox.cassandra.modules.CassandraAclModule;
-import org.apache.james.mailbox.cassandra.modules.CassandraAnnotationModule;
-import org.apache.james.mailbox.cassandra.modules.CassandraApplicableFlagsModule;
-import org.apache.james.mailbox.cassandra.modules.CassandraAttachmentModule;
-import org.apache.james.mailbox.cassandra.modules.CassandraBlobModule;
-import org.apache.james.mailbox.cassandra.modules.CassandraDeletedMessageModule;
-import org.apache.james.mailbox.cassandra.modules.CassandraFirstUnseenModule;
-import org.apache.james.mailbox.cassandra.modules.CassandraMailboxCounterModule;
-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.CassandraUidModule;
 import org.apache.james.mailbox.exception.MailboxException;
 import org.apache.james.mailbox.mock.MockMailboxSession;
 import org.apache.james.mailbox.model.MessageId;
@@ -65,22 +51,8 @@ public class CassandraMapperProvider implements MapperProvider {
     private final MockMailboxSession mailboxSession = new MockMailboxSession("benwa");
 
 
-    public CassandraMapperProvider() {
-        this.cassandra = CassandraCluster.create(
-                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()));
+    public CassandraMapperProvider(CassandraCluster cassandra) {
+        this.cassandra = cassandra;
         messageUidProvider = new MessageUidProvider();
         cassandraModSeqProvider = new CassandraModSeqProvider(this.cassandra.getConf());
     }
@@ -144,11 +116,6 @@ public class CassandraMapperProvider implements MapperProvider {
     }
 
     @Override
-    public void ensureMapperPrepared() throws MailboxException {
-        cassandra.ensureAllTables();
-    }
-
-    @Override
     public boolean supportPartialAttachmentFetch() {
         return true;
     }
@@ -180,8 +147,4 @@ public class CassandraMapperProvider implements MapperProvider {
         return cassandraModSeqProvider.highestModSeq(mailboxSession, mailbox);
     }
 
-    @Override
-    public void close() {
-        cassandra.close();
-    }
 }

http://git-wip-us.apache.org/repos/asf/james-project/blob/a18a4488/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 0fbfc71..ae0f3cf 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
@@ -16,7 +16,6 @@
  * specific language governing permissions and limitations      *
  * under the License.                                           *
  ****************************************************************/
-
 package org.apache.james.mailbox.cassandra.mail;
 
 import static org.assertj.core.api.Assertions.assertThat;
@@ -33,6 +32,7 @@ import javax.mail.util.SharedByteArrayInputStream;
 import org.apache.commons.io.IOUtils;
 import org.apache.commons.lang3.tuple.Pair;
 import org.apache.james.backends.cassandra.CassandraCluster;
+import org.apache.james.backends.cassandra.DockerCassandraRule;
 import org.apache.james.backends.cassandra.init.CassandraModuleComposite;
 import org.apache.james.mailbox.MessageUid;
 import org.apache.james.mailbox.cassandra.ids.CassandraId;
@@ -48,6 +48,7 @@ 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.Before;
+import org.junit.ClassRule;
 import org.junit.Test;
 
 import com.google.common.base.Charsets;
@@ -60,6 +61,8 @@ public class CassandraMessageDAOTest {
     private static final String CONTENT = "Subject: Test7 \n\nBody7\n.\n";
     private static final MessageUid messageUid = MessageUid.of(1);
 
+    @ClassRule public static DockerCassandraRule cassandraServer = new DockerCassandraRule();
+
     private CassandraCluster cassandra;
 
     private CassandraMessageDAO testee;
@@ -73,9 +76,7 @@ public class CassandraMessageDAOTest {
 
     @Before
     public void setUp() {
-        cassandra = CassandraCluster.create(new CassandraModuleComposite(new CassandraMessageModule(), new CassandraBlobModule()));
-        cassandra.ensureAllTables();
-
+        cassandra = CassandraCluster.create(new CassandraModuleComposite(new CassandraMessageModule(), new CassandraBlobModule()), cassandraServer.getIp(), cassandraServer.getBindingPort());
         messageIdFactory = new CassandraMessageId.Factory();
         messageId = messageIdFactory.generate();
         blobsDAO = new CassandraBlobsDAO(cassandra.getConf());
@@ -92,7 +93,6 @@ public class CassandraMessageDAOTest {
 
     @After
     public void tearDown() {
-        cassandra.clearAllTables();
         cassandra.close();
     }
 

http://git-wip-us.apache.org/repos/asf/james-project/blob/a18a4488/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 4856f1d..b56db70 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
@@ -29,6 +29,7 @@ import javax.mail.Flags;
 import javax.mail.Flags.Flag;
 
 import org.apache.james.backends.cassandra.CassandraCluster;
+import org.apache.james.backends.cassandra.DockerCassandraRule;
 import org.apache.james.mailbox.MessageUid;
 import org.apache.james.mailbox.cassandra.ids.CassandraId;
 import org.apache.james.mailbox.cassandra.ids.CassandraMessageId;
@@ -38,10 +39,13 @@ import org.apache.james.mailbox.model.ComposedMessageIdWithMetaData;
 import org.apache.james.mailbox.model.MessageRange;
 import org.junit.After;
 import org.junit.Before;
+import org.junit.ClassRule;
 import org.junit.Test;
 
 public class CassandraMessageIdDAOTest {
 
+    @ClassRule public static DockerCassandraRule cassandraServer = new DockerCassandraRule();
+    
     private CassandraCluster cassandra;
 
     private CassandraMessageId.Factory messageIdFactory;
@@ -50,16 +54,13 @@ public class CassandraMessageIdDAOTest {
 
     @Before
     public void setUp() {
-        cassandra = CassandraCluster.create(new CassandraMessageModule());
-        cassandra.ensureAllTables();
-
+        cassandra = CassandraCluster.create(new CassandraMessageModule(), cassandraServer.getIp(), cassandraServer.getBindingPort());
         messageIdFactory = new CassandraMessageId.Factory();
         testee = new CassandraMessageIdDAO(cassandra.getConf(), messageIdFactory);
     }
 
     @After
     public void tearDown() {
-        cassandra.clearAllTables();
         cassandra.close();
     }
 

http://git-wip-us.apache.org/repos/asf/james-project/blob/a18a4488/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 bc4bdfd..72c4544 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
@@ -19,11 +19,61 @@
 
 package org.apache.james.mailbox.cassandra.mail;
 
+import org.apache.james.backends.cassandra.CassandraCluster;
+import org.apache.james.backends.cassandra.DockerCassandraRule;
+import org.apache.james.backends.cassandra.init.CassandraModuleComposite;
+import org.apache.james.mailbox.cassandra.modules.CassandraAclModule;
+import org.apache.james.mailbox.cassandra.modules.CassandraAnnotationModule;
+import org.apache.james.mailbox.cassandra.modules.CassandraApplicableFlagsModule;
+import org.apache.james.mailbox.cassandra.modules.CassandraAttachmentModule;
+import org.apache.james.mailbox.cassandra.modules.CassandraBlobModule;
+import org.apache.james.mailbox.cassandra.modules.CassandraDeletedMessageModule;
+import org.apache.james.mailbox.cassandra.modules.CassandraFirstUnseenModule;
+import org.apache.james.mailbox.cassandra.modules.CassandraMailboxCounterModule;
+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.CassandraUidModule;
+import org.apache.james.mailbox.exception.MailboxException;
 import org.apache.james.mailbox.store.mail.model.MessageIdMapperTest;
+import org.junit.After;
+import org.junit.Before;
+import org.junit.ClassRule;
 
 public class CassandraMessageIdMapperTest extends MessageIdMapperTest {
+    
+    @ClassRule public static DockerCassandraRule cassandraServer = new DockerCassandraRule();
+    
+    private CassandraCluster cassandra;
+
+    @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();
+    }
+    
     @Override
     protected CassandraMapperProvider provideMapper() {
-        return new CassandraMapperProvider();
+        return new CassandraMapperProvider(cassandra);
     }
 }

http://git-wip-us.apache.org/repos/asf/james-project/blob/a18a4488/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 0b71c4b..05c461c 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
@@ -29,6 +29,7 @@ import javax.mail.Flags;
 import javax.mail.Flags.Flag;
 
 import org.apache.james.backends.cassandra.CassandraCluster;
+import org.apache.james.backends.cassandra.DockerCassandraRule;
 import org.apache.james.mailbox.MessageUid;
 import org.apache.james.mailbox.cassandra.ids.CassandraId;
 import org.apache.james.mailbox.cassandra.ids.CassandraMessageId;
@@ -37,6 +38,7 @@ import org.apache.james.mailbox.model.ComposedMessageId;
 import org.apache.james.mailbox.model.ComposedMessageIdWithMetaData;
 import org.junit.After;
 import org.junit.Before;
+import org.junit.ClassRule;
 import org.junit.Test;
 
 import com.datastax.driver.core.utils.UUIDs;
@@ -44,6 +46,8 @@ import com.github.steveash.guavate.Guavate;
 
 public class CassandraMessageIdToImapUidDAOTest {
 
+    @ClassRule public static DockerCassandraRule cassandraServer = new DockerCassandraRule();
+    
     private CassandraCluster cassandra;
     private CassandraMessageId.Factory messageIdFactory;
 
@@ -51,16 +55,13 @@ public class CassandraMessageIdToImapUidDAOTest {
 
     @Before
     public void setUp() {
-        cassandra = CassandraCluster.create(new CassandraMessageModule());
-        cassandra.ensureAllTables();
-
+        cassandra = CassandraCluster.create(new CassandraMessageModule(), cassandraServer.getIp(), cassandraServer.getBindingPort());
         messageIdFactory = new CassandraMessageId.Factory();
         testee = new CassandraMessageIdToImapUidDAO(cassandra.getConf(), messageIdFactory);
     }
 
     @After
     public void tearDown() {
-        cassandra.clearAllTables();
         cassandra.close();
     }
 

http://git-wip-us.apache.org/repos/asf/james-project/blob/a18a4488/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 391bea1..36710cc 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
@@ -19,12 +19,61 @@
 
 package org.apache.james.mailbox.cassandra.mail;
 
+import org.apache.james.backends.cassandra.CassandraCluster;
+import org.apache.james.backends.cassandra.DockerCassandraRule;
+import org.apache.james.backends.cassandra.init.CassandraModuleComposite;
+import org.apache.james.mailbox.cassandra.modules.CassandraAclModule;
+import org.apache.james.mailbox.cassandra.modules.CassandraAnnotationModule;
+import org.apache.james.mailbox.cassandra.modules.CassandraApplicableFlagsModule;
+import org.apache.james.mailbox.cassandra.modules.CassandraAttachmentModule;
+import org.apache.james.mailbox.cassandra.modules.CassandraBlobModule;
+import org.apache.james.mailbox.cassandra.modules.CassandraDeletedMessageModule;
+import org.apache.james.mailbox.cassandra.modules.CassandraFirstUnseenModule;
+import org.apache.james.mailbox.cassandra.modules.CassandraMailboxCounterModule;
+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.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.Before;
+import org.junit.ClassRule;
 
 public class CassandraMessageMapperTest extends MessageMapperTest {
+    
+    @ClassRule public static DockerCassandraRule cassandraServer = new DockerCassandraRule();
+    
+    private CassandraCluster cassandra;
+
+    @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();
+    }
+    
     @Override
     protected MapperProvider createMapperProvider() {
-        return new CassandraMapperProvider();
+        return new CassandraMapperProvider(cassandra);
     }
 }

http://git-wip-us.apache.org/repos/asf/james-project/blob/a18a4488/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 2bd7701..8f62042 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
@@ -19,12 +19,61 @@
 
 package org.apache.james.mailbox.cassandra.mail;
 
+import org.apache.james.backends.cassandra.CassandraCluster;
+import org.apache.james.backends.cassandra.DockerCassandraRule;
+import org.apache.james.backends.cassandra.init.CassandraModuleComposite;
+import org.apache.james.mailbox.cassandra.modules.CassandraAclModule;
+import org.apache.james.mailbox.cassandra.modules.CassandraAnnotationModule;
+import org.apache.james.mailbox.cassandra.modules.CassandraApplicableFlagsModule;
+import org.apache.james.mailbox.cassandra.modules.CassandraAttachmentModule;
+import org.apache.james.mailbox.cassandra.modules.CassandraBlobModule;
+import org.apache.james.mailbox.cassandra.modules.CassandraDeletedMessageModule;
+import org.apache.james.mailbox.cassandra.modules.CassandraFirstUnseenModule;
+import org.apache.james.mailbox.cassandra.modules.CassandraMailboxCounterModule;
+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.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.Before;
+import org.junit.ClassRule;
 
 public class CassandraMessageMoveTest extends MessageMoveTest {
+    
+    @ClassRule public static DockerCassandraRule cassandraServer = new DockerCassandraRule();
+    
+    private CassandraCluster cassandra;
+
+    @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();
+    }
+    
     @Override
     protected MapperProvider createMapperProvider() {
-        return new CassandraMapperProvider();
+        return new CassandraMapperProvider(cassandra);
     }
 }

http://git-wip-us.apache.org/repos/asf/james-project/blob/a18a4488/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 256298d..2d35c39 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
@@ -19,12 +19,61 @@
 
 package org.apache.james.mailbox.cassandra.mail;
 
+import org.apache.james.backends.cassandra.CassandraCluster;
+import org.apache.james.backends.cassandra.DockerCassandraRule;
+import org.apache.james.backends.cassandra.init.CassandraModuleComposite;
+import org.apache.james.mailbox.cassandra.modules.CassandraAclModule;
+import org.apache.james.mailbox.cassandra.modules.CassandraAnnotationModule;
+import org.apache.james.mailbox.cassandra.modules.CassandraApplicableFlagsModule;
+import org.apache.james.mailbox.cassandra.modules.CassandraAttachmentModule;
+import org.apache.james.mailbox.cassandra.modules.CassandraBlobModule;
+import org.apache.james.mailbox.cassandra.modules.CassandraDeletedMessageModule;
+import org.apache.james.mailbox.cassandra.modules.CassandraFirstUnseenModule;
+import org.apache.james.mailbox.cassandra.modules.CassandraMailboxCounterModule;
+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.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.Before;
+import org.junit.ClassRule;
 
 public class CassandraMessageWithAttachmentMapperTest extends MessageWithAttachmentMapperTest {
+    
+    @ClassRule public static DockerCassandraRule cassandraServer = new DockerCassandraRule();
+    
+    private CassandraCluster cassandra;
+
+    @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();
+    }
+    
     @Override
     protected MapperProvider createMapperProvider() {
-        return new CassandraMapperProvider();
+        return new CassandraMapperProvider(cassandra);
     }
 }

http://git-wip-us.apache.org/repos/asf/james-project/blob/a18a4488/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 8fcca84..becbeac 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
@@ -24,7 +24,8 @@ import static org.junit.Assert.assertEquals;
 import java.util.stream.LongStream;
 
 import org.apache.james.backends.cassandra.CassandraCluster;
-import org.apache.james.backends.cassandra.CassandraConfiguration;
+import org.apache.james.backends.cassandra.DockerCassandraRule;
+import org.apache.james.backends.cassandra.init.CassandraConfiguration;
 import org.apache.james.backends.cassandra.init.CassandraModuleComposite;
 import org.apache.james.mailbox.cassandra.modules.CassandraAclModule;
 import org.apache.james.mailbox.cassandra.modules.CassandraMailboxModule;
@@ -33,12 +34,15 @@ import org.apache.james.mailbox.model.MailboxPath;
 import org.apache.james.mailbox.store.mail.model.impl.SimpleMailbox;
 import org.junit.After;
 import org.junit.Before;
+import org.junit.ClassRule;
 import org.junit.Test;
 
 import com.github.fge.lambdas.Throwing;
 
 public class CassandraModSeqProviderTest {
 
+    @ClassRule public static DockerCassandraRule cassandraServer = new DockerCassandraRule();
+    
     private CassandraCluster cassandra;
     
     private CassandraModSeqProvider modSeqProvider;
@@ -46,13 +50,13 @@ public class CassandraModSeqProviderTest {
     private SimpleMailbox mailbox;
 
     @Before
-    public void setUpClass() throws Exception {
-        cassandra = CassandraCluster.create(
+    public void setUp() throws Exception {
+        CassandraModuleComposite modules = 
                 new CassandraModuleComposite(
                     new CassandraAclModule(),
                     new CassandraMailboxModule(),
-                    new CassandraModSeqModule()));
-        cassandra.ensureAllTables();
+                    new CassandraModSeqModule());
+        cassandra = CassandraCluster.create(modules, cassandraServer.getIp(), cassandraServer.getBindingPort());
         modSeqProvider = new CassandraModSeqProvider(cassandra.getConf());
         CassandraMailboxDAO mailboxDAO = new CassandraMailboxDAO(cassandra.getConf(), cassandra.getTypesProvider());
         CassandraMailboxPathDAO mailboxPathDAO = new CassandraMailboxPathDAO(cassandra.getConf(), cassandra.getTypesProvider());
@@ -64,7 +68,6 @@ public class CassandraModSeqProviderTest {
     
     @After
     public void cleanUp() {
-        cassandra.clearAllTables();
         cassandra.close();
     }
 

http://git-wip-us.apache.org/repos/asf/james-project/blob/a18a4488/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 c6b27d9..8f71f05 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
@@ -23,7 +23,8 @@ import java.util.Optional;
 import java.util.stream.LongStream;
 
 import org.apache.james.backends.cassandra.CassandraCluster;
-import org.apache.james.backends.cassandra.CassandraConfiguration;
+import org.apache.james.backends.cassandra.DockerCassandraRule;
+import org.apache.james.backends.cassandra.init.CassandraConfiguration;
 import org.apache.james.backends.cassandra.init.CassandraModuleComposite;
 import org.apache.james.mailbox.MessageUid;
 import org.apache.james.mailbox.cassandra.modules.CassandraAclModule;
@@ -33,16 +34,22 @@ import org.apache.james.mailbox.model.MailboxPath;
 import org.apache.james.mailbox.store.mail.model.impl.SimpleMailbox;
 import org.junit.After;
 import org.junit.Before;
+import org.junit.ClassRule;
 import org.junit.Test;
 
 import com.github.fge.lambdas.Throwing;
 
 public class CassandraUidProviderTest {
 
-    private final CassandraCluster cassandra = CassandraCluster.create(new CassandraModuleComposite(
-        new CassandraAclModule(),
-        new CassandraMailboxModule(),
-        new CassandraUidModule()));
+    @ClassRule public static DockerCassandraRule cassandraServer = new DockerCassandraRule();
+    
+    
+    private final CassandraModuleComposite modules = new CassandraModuleComposite(
+            new CassandraAclModule(),
+            new CassandraMailboxModule(),
+            new CassandraUidModule());
+    
+    private final CassandraCluster cassandra = CassandraCluster.create(modules, cassandraServer.getIp(), cassandraServer.getBindingPort());
     
     private CassandraUidProvider uidProvider;
     private CassandraMailboxMapper mapper;
@@ -50,7 +57,6 @@ public class CassandraUidProviderTest {
 
     @Before
     public void setUpClass() throws Exception {
-        cassandra.ensureAllTables();
         uidProvider = new CassandraUidProvider(cassandra.getConf());
         CassandraMailboxDAO mailboxDAO = new CassandraMailboxDAO(cassandra.getConf(), cassandra.getTypesProvider());
         CassandraMailboxPathDAO mailboxPathDAO = new CassandraMailboxPathDAO(cassandra.getConf(), cassandra.getTypesProvider());
@@ -62,7 +68,6 @@ public class CassandraUidProviderTest {
     
     @After
     public void cleanUp() {
-        cassandra.clearAllTables();
         cassandra.close();
     }
 

http://git-wip-us.apache.org/repos/asf/james-project/blob/a18a4488/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 f5f4893..836cd09 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
@@ -20,15 +20,18 @@
 package org.apache.james.mailbox.cassandra.quota;
 
 import org.apache.james.backends.cassandra.CassandraCluster;
+import org.apache.james.backends.cassandra.DockerCassandraRule;
 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.ClassRule;
 
 public class CassandraCurrentQuotaManagerTest extends StoreCurrentQuotaManagerTest {
 
-    private static final CassandraCluster cassandra = CassandraCluster.create(new CassandraQuotaModule());
+    @ClassRule public static DockerCassandraRule cassandraServer = new DockerCassandraRule();
+    
+    private final CassandraCluster cassandra = CassandraCluster.create(new CassandraQuotaModule(), cassandraServer.getIp(), cassandraServer.getBindingPort());
 
     @Override
     protected StoreCurrentQuotaManager provideTestee() {
@@ -37,11 +40,7 @@ public class CassandraCurrentQuotaManagerTest extends StoreCurrentQuotaManagerTe
 
     @After
     public void tearDown() {
-        cassandra.clearAllTables();
-    }
-
-    @AfterClass
-    public static void stop() {
         cassandra.close();
     }
+
 }

http://git-wip-us.apache.org/repos/asf/james-project/blob/a18a4488/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 499449c..150203e 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
@@ -20,25 +20,27 @@
 package org.apache.james.mailbox.cassandra.quota;
 
 import org.apache.james.backends.cassandra.CassandraCluster;
+import org.apache.james.backends.cassandra.DockerCassandraRule;
 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.ClassRule;
 
 public class CassandraPerUserMaxQuotaManagerTest extends GenericMaxQuotaManagerTest {
 
+    @ClassRule public static DockerCassandraRule cassandraServer = new DockerCassandraRule();
+    
     private CassandraCluster cassandra;
 
     @Override
     protected MaxQuotaManager provideMaxQuotaManager() {
-        cassandra = CassandraCluster.create(new CassandraQuotaModule());
-        cassandra.ensureAllTables();
+        cassandra = CassandraCluster.create(new CassandraQuotaModule(), cassandraServer.getIp(), cassandraServer.getBindingPort());
         return new CassandraPerUserMaxQuotaManager(cassandra.getConf());
     }
 
     @After
     public void cleanUp() {
-        cassandra.clearAllTables();
         cassandra.close();
     }
 

http://git-wip-us.apache.org/repos/asf/james-project/blob/a18a4488/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 a08b589..a8bca0e 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
@@ -19,30 +19,28 @@
 package org.apache.james.mailbox.cassandra.user;
 
 import org.apache.james.backends.cassandra.CassandraCluster;
+import org.apache.james.backends.cassandra.DockerCassandraRule;
 import org.apache.james.backends.cassandra.utils.CassandraUtils;
 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.ClassRule;
 
 public class CassandraSubscriptionMapperTest extends SubscriptionMapperTest {
 
-    private static final CassandraCluster cassandra = CassandraCluster.create(new CassandraSubscriptionModule());
+    @ClassRule public static DockerCassandraRule cassandraServer = new DockerCassandraRule();
+    
+    private final CassandraCluster cassandra = CassandraCluster.create(new CassandraSubscriptionModule(), cassandraServer.getIp(), cassandraServer.getBindingPort());
 
     @Override
     protected SubscriptionMapper createSubscriptionMapper() {
-        cassandra.ensureAllTables();
         return new CassandraSubscriptionMapper(cassandra.getConf(), CassandraUtils.WITH_DEFAULT_CONFIGURATION);
     }
 
     @After
     public void tearDown() {
-        cassandra.clearAllTables();
-    }
-
-    @AfterClass
-    public static void stop() {
         cassandra.close();
     }
+
 }

http://git-wip-us.apache.org/repos/asf/james-project/blob/a18a4488/mailbox/cassandra/src/test/resources/logback-test.xml
----------------------------------------------------------------------
diff --git a/mailbox/cassandra/src/test/resources/logback-test.xml b/mailbox/cassandra/src/test/resources/logback-test.xml
new file mode 100644
index 0000000..f2c08d8
--- /dev/null
+++ b/mailbox/cassandra/src/test/resources/logback-test.xml
@@ -0,0 +1,19 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<configuration>
+
+        <contextListener class="ch.qos.logback.classic.jul.LevelChangePropagator">
+                <resetJUL>true</resetJUL>
+        </contextListener>
+
+        <appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
+                <encoder>
+                        <pattern>%d{HH:mm:ss.SSS} [%-5level] %logger{15} - %msg%n%rEx</pattern>
+                        <immediateFlush>false</immediateFlush>
+                </encoder>
+        </appender>
+
+        <root level="INFO">
+                <appender-ref ref="CONSOLE" />
+        </root>
+
+</configuration>

http://git-wip-us.apache.org/repos/asf/james-project/blob/a18a4488/mailbox/jcr/src/test/java/org/apache/james/mailbox/jcr/JCRMailboxManagerStressTest.java
----------------------------------------------------------------------
diff --git a/mailbox/jcr/src/test/java/org/apache/james/mailbox/jcr/JCRMailboxManagerStressTest.java b/mailbox/jcr/src/test/java/org/apache/james/mailbox/jcr/JCRMailboxManagerStressTest.java
index 5a9c27c..1ad8662 100644
--- a/mailbox/jcr/src/test/java/org/apache/james/mailbox/jcr/JCRMailboxManagerStressTest.java
+++ b/mailbox/jcr/src/test/java/org/apache/james/mailbox/jcr/JCRMailboxManagerStressTest.java
@@ -29,6 +29,7 @@ import org.apache.james.mailbox.MailboxManagerStressTest;
 import org.apache.commons.io.FileUtils;
 import org.apache.jackrabbit.core.RepositoryImpl;
 import org.junit.After;
+import org.junit.Before;
 
 import com.google.common.base.Throwables;
 
@@ -36,6 +37,11 @@ public class JCRMailboxManagerStressTest extends MailboxManagerStressTest {
 
     private Optional<RepositoryImpl> repository = Optional.empty();
 
+    @Before
+    public void setUp() throws Exception {
+        super.setUp();
+    }
+    
     @Override
     protected MailboxManager provideManager() {
         String user = "user";

http://git-wip-us.apache.org/repos/asf/james-project/blob/a18a4488/mailbox/jcr/src/test/java/org/apache/james/mailbox/jcr/JCRMailboxManagerTest.java
----------------------------------------------------------------------
diff --git a/mailbox/jcr/src/test/java/org/apache/james/mailbox/jcr/JCRMailboxManagerTest.java b/mailbox/jcr/src/test/java/org/apache/james/mailbox/jcr/JCRMailboxManagerTest.java
index 4970196..01c63ea 100644
--- a/mailbox/jcr/src/test/java/org/apache/james/mailbox/jcr/JCRMailboxManagerTest.java
+++ b/mailbox/jcr/src/test/java/org/apache/james/mailbox/jcr/JCRMailboxManagerTest.java
@@ -28,6 +28,7 @@ import org.apache.james.mailbox.MailboxManagerTest;
 import org.apache.commons.io.FileUtils;
 import org.apache.jackrabbit.core.RepositoryImpl;
 import org.junit.After;
+import org.junit.Before;
 
 import com.google.common.base.Throwables;
 
@@ -35,6 +36,11 @@ public class JCRMailboxManagerTest extends MailboxManagerTest {
 
     private Optional<RepositoryImpl> repository = Optional.empty();
 
+    @Before
+    public void setUp() throws Exception {
+        super.setUp();
+    }
+    
     @Override
     protected MailboxManager provideMailboxManager() {
         String user = "user";

http://git-wip-us.apache.org/repos/asf/james-project/blob/a18a4488/mailbox/jcr/src/test/java/org/apache/james/mailbox/jcr/JCRSubscriptionManagerTest.java
----------------------------------------------------------------------
diff --git a/mailbox/jcr/src/test/java/org/apache/james/mailbox/jcr/JCRSubscriptionManagerTest.java b/mailbox/jcr/src/test/java/org/apache/james/mailbox/jcr/JCRSubscriptionManagerTest.java
index 92175c1..9fefd7b 100644
--- a/mailbox/jcr/src/test/java/org/apache/james/mailbox/jcr/JCRSubscriptionManagerTest.java
+++ b/mailbox/jcr/src/test/java/org/apache/james/mailbox/jcr/JCRSubscriptionManagerTest.java
@@ -28,7 +28,10 @@ import org.apache.jackrabbit.core.RepositoryImpl;
 import org.apache.jackrabbit.core.config.RepositoryConfig;
 import org.apache.james.mailbox.AbstractSubscriptionManagerTest;
 import org.apache.james.mailbox.SubscriptionManager;
+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.xml.sax.InputSource;
 
@@ -59,6 +62,16 @@ public class JCRSubscriptionManagerTest extends AbstractSubscriptionManagerTest
         FileUtils.forceDelete(new File(JACKRABBIT_HOME));
     }
 
+    @Before
+    public void setUp() throws Exception {
+        super.setup();
+    }
+    
+    @After
+    public void tearDown() throws SubscriptionException {
+        super.teardown();
+    }
+    
     @Override
     public SubscriptionManager createSubscriptionManager() {
         MailboxSessionJCRRepository sessionRepos = new GlobalMailboxSessionJCRRepository(repository, workspace, user, pass);

http://git-wip-us.apache.org/repos/asf/james-project/blob/a18a4488/mailbox/jpa/src/test/java/org/apache/james/mailbox/jpa/JPAMailboxManagerTest.java
----------------------------------------------------------------------
diff --git a/mailbox/jpa/src/test/java/org/apache/james/mailbox/jpa/JPAMailboxManagerTest.java b/mailbox/jpa/src/test/java/org/apache/james/mailbox/jpa/JPAMailboxManagerTest.java
index c6b5fda..0b5f58f 100644
--- a/mailbox/jpa/src/test/java/org/apache/james/mailbox/jpa/JPAMailboxManagerTest.java
+++ b/mailbox/jpa/src/test/java/org/apache/james/mailbox/jpa/JPAMailboxManagerTest.java
@@ -26,12 +26,18 @@ import org.apache.james.mailbox.MailboxManagerTest;
 import org.apache.james.mailbox.exception.MailboxException;
 import org.apache.james.mailbox.jpa.openjpa.OpenJPAMailboxManager;
 import org.junit.After;
+import org.junit.Before;
 
 public class JPAMailboxManagerTest extends MailboxManagerTest {
 
     private static final JpaTestCluster JPA_TEST_CLUSTER = JpaTestCluster.create(JPAMailboxFixture.MAILBOX_PERSISTANCE_CLASSES);
     private Optional<OpenJPAMailboxManager> openJPAMailboxManager = Optional.empty();
 
+    @Before
+    public void setUp() throws Exception {
+        super.setUp();
+    }
+    
     @Override
     protected MailboxManager provideMailboxManager() {
         if (!openJPAMailboxManager.isPresent()) {


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


[03/13] james-project git commit: JAMES-2133 Switch from cassandraunit to cassandra in docker

Posted by ma...@apache.org.
http://git-wip-us.apache.org/repos/asf/james-project/blob/a18a4488/server/protocols/jmap-integration-testing/cassandra-jmap-integration-testing/src/test/java/org/apache/james/jmap/cassandra/CassandraSetMessagesMethodTest.java
----------------------------------------------------------------------
diff --git a/server/protocols/jmap-integration-testing/cassandra-jmap-integration-testing/src/test/java/org/apache/james/jmap/cassandra/CassandraSetMessagesMethodTest.java b/server/protocols/jmap-integration-testing/cassandra-jmap-integration-testing/src/test/java/org/apache/james/jmap/cassandra/CassandraSetMessagesMethodTest.java
index 5ab494a..2691aaf 100644
--- a/server/protocols/jmap-integration-testing/cassandra-jmap-integration-testing/src/test/java/org/apache/james/jmap/cassandra/CassandraSetMessagesMethodTest.java
+++ b/server/protocols/jmap-integration-testing/cassandra-jmap-integration-testing/src/test/java/org/apache/james/jmap/cassandra/CassandraSetMessagesMethodTest.java
@@ -20,20 +20,25 @@
 package org.apache.james.jmap.cassandra;
 
 import org.apache.james.CassandraJmapTestRule;
+import org.apache.james.DockerCassandraRule;
 import org.apache.james.GuiceJamesServer;
 import org.apache.james.jmap.methods.integration.SetMessagesMethodTest;
 import org.apache.james.mailbox.cassandra.ids.CassandraMessageId;
 import org.apache.james.mailbox.model.MessageId;
+import org.junit.ClassRule;
 import org.junit.Rule;
 
 public class CassandraSetMessagesMethodTest extends SetMessagesMethodTest {
 
+    @ClassRule
+    public static DockerCassandraRule cassandra = new DockerCassandraRule();
+    
     @Rule 
     public CassandraJmapTestRule rule = CassandraJmapTestRule.defaultTestRule();
 
     @Override
     protected GuiceJamesServer createJmapServer() {
-        return rule.jmapServer();
+        return rule.jmapServer(cassandra.getModule());
     }
 
     @Override

http://git-wip-us.apache.org/repos/asf/james-project/blob/a18a4488/server/protocols/jmap-integration-testing/cassandra-jmap-integration-testing/src/test/java/org/apache/james/jmap/cassandra/CassandraSetVacationResponseTest.java
----------------------------------------------------------------------
diff --git a/server/protocols/jmap-integration-testing/cassandra-jmap-integration-testing/src/test/java/org/apache/james/jmap/cassandra/CassandraSetVacationResponseTest.java b/server/protocols/jmap-integration-testing/cassandra-jmap-integration-testing/src/test/java/org/apache/james/jmap/cassandra/CassandraSetVacationResponseTest.java
index ca9af6b..f1003e8 100644
--- a/server/protocols/jmap-integration-testing/cassandra-jmap-integration-testing/src/test/java/org/apache/james/jmap/cassandra/CassandraSetVacationResponseTest.java
+++ b/server/protocols/jmap-integration-testing/cassandra-jmap-integration-testing/src/test/java/org/apache/james/jmap/cassandra/CassandraSetVacationResponseTest.java
@@ -20,18 +20,23 @@
 package org.apache.james.jmap.cassandra;
 
 import org.apache.james.CassandraJmapTestRule;
+import org.apache.james.DockerCassandraRule;
 import org.apache.james.GuiceJamesServer;
 import org.apache.james.jmap.methods.integration.SetVacationResponseTest;
+import org.junit.ClassRule;
 import org.junit.Rule;
 
 public class CassandraSetVacationResponseTest extends SetVacationResponseTest {
 
+    @ClassRule
+    public static DockerCassandraRule cassandra = new DockerCassandraRule();
+    
     @Rule 
     public CassandraJmapTestRule rule = CassandraJmapTestRule.defaultTestRule();
     
     @Override
     protected GuiceJamesServer createJmapServer() {
-        return rule.jmapServer();
+        return rule.jmapServer(cassandra.getModule());
     }
 
     @Override

http://git-wip-us.apache.org/repos/asf/james-project/blob/a18a4488/server/protocols/jmap-integration-testing/cassandra-jmap-integration-testing/src/test/java/org/apache/james/jmap/cassandra/CassandraUserProvisionningConcurrencyTest.java
----------------------------------------------------------------------
diff --git a/server/protocols/jmap-integration-testing/cassandra-jmap-integration-testing/src/test/java/org/apache/james/jmap/cassandra/CassandraUserProvisionningConcurrencyTest.java b/server/protocols/jmap-integration-testing/cassandra-jmap-integration-testing/src/test/java/org/apache/james/jmap/cassandra/CassandraUserProvisionningConcurrencyTest.java
index ea63d10..d9c71f1 100644
--- a/server/protocols/jmap-integration-testing/cassandra-jmap-integration-testing/src/test/java/org/apache/james/jmap/cassandra/CassandraUserProvisionningConcurrencyTest.java
+++ b/server/protocols/jmap-integration-testing/cassandra-jmap-integration-testing/src/test/java/org/apache/james/jmap/cassandra/CassandraUserProvisionningConcurrencyTest.java
@@ -20,17 +20,23 @@
 package org.apache.james.jmap.cassandra;
 
 import org.apache.james.CassandraJmapTestRule;
+import org.apache.james.DockerCassandraRule;
 import org.apache.james.GuiceJamesServer;
 import org.apache.james.jmap.UserProvisionningConcurrencyTest;
+import org.junit.ClassRule;
 import org.junit.Rule;
 
 public class CassandraUserProvisionningConcurrencyTest extends UserProvisionningConcurrencyTest {
+
+    @ClassRule
+    public static DockerCassandraRule cassandra = new DockerCassandraRule();
+    
     @Rule
     public CassandraJmapTestRule rule = CassandraJmapTestRule.defaultTestRule();
 
     @Override
     protected GuiceJamesServer createJmapServer() {
-        return rule.jmapServer();
+        return rule.jmapServer(cassandra.getModule());
     }
 
 }

http://git-wip-us.apache.org/repos/asf/james-project/blob/a18a4488/server/protocols/jmap-integration-testing/cassandra-jmap-integration-testing/src/test/java/org/apache/james/jmap/cassandra/CassandraVacationIntegrationTest.java
----------------------------------------------------------------------
diff --git a/server/protocols/jmap-integration-testing/cassandra-jmap-integration-testing/src/test/java/org/apache/james/jmap/cassandra/CassandraVacationIntegrationTest.java b/server/protocols/jmap-integration-testing/cassandra-jmap-integration-testing/src/test/java/org/apache/james/jmap/cassandra/CassandraVacationIntegrationTest.java
index 186a3ce..197aad9 100644
--- a/server/protocols/jmap-integration-testing/cassandra-jmap-integration-testing/src/test/java/org/apache/james/jmap/cassandra/CassandraVacationIntegrationTest.java
+++ b/server/protocols/jmap-integration-testing/cassandra-jmap-integration-testing/src/test/java/org/apache/james/jmap/cassandra/CassandraVacationIntegrationTest.java
@@ -20,19 +20,23 @@
 package org.apache.james.jmap.cassandra;
 
 import org.apache.james.CassandraJmapTestRule;
+import org.apache.james.DockerCassandraRule;
 import org.apache.james.GuiceJamesServer;
 import org.apache.james.jmap.VacationIntegrationTest;
+import org.junit.ClassRule;
 import org.junit.Rule;
 
 public class CassandraVacationIntegrationTest extends VacationIntegrationTest {
 
+    @ClassRule
+    public static DockerCassandraRule cassandra = new DockerCassandraRule();
 
     @Rule 
     public CassandraJmapTestRule rule = CassandraJmapTestRule.defaultTestRule();
     
     @Override
     protected GuiceJamesServer createJmapServer() {
-        return rule.jmapServer();
+        return rule.jmapServer(cassandra.getModule());
     }
 
     @Override

http://git-wip-us.apache.org/repos/asf/james-project/blob/a18a4488/server/protocols/jmap-integration-testing/cassandra-jmap-integration-testing/src/test/java/org/apache/james/jmap/cassandra/CassandraVacationRelayIntegrationTest.java
----------------------------------------------------------------------
diff --git a/server/protocols/jmap-integration-testing/cassandra-jmap-integration-testing/src/test/java/org/apache/james/jmap/cassandra/CassandraVacationRelayIntegrationTest.java b/server/protocols/jmap-integration-testing/cassandra-jmap-integration-testing/src/test/java/org/apache/james/jmap/cassandra/CassandraVacationRelayIntegrationTest.java
index 57c5ff5..15d7d54 100644
--- a/server/protocols/jmap-integration-testing/cassandra-jmap-integration-testing/src/test/java/org/apache/james/jmap/cassandra/CassandraVacationRelayIntegrationTest.java
+++ b/server/protocols/jmap-integration-testing/cassandra-jmap-integration-testing/src/test/java/org/apache/james/jmap/cassandra/CassandraVacationRelayIntegrationTest.java
@@ -20,22 +20,29 @@
 package org.apache.james.jmap.cassandra;
 
 import org.apache.james.CassandraJmapTestRule;
+import org.apache.james.DockerCassandraRule;
 import org.apache.james.GuiceJamesServer;
 import org.apache.james.dnsservice.api.DNSService;
 import org.apache.james.dnsservice.api.InMemoryDNSService;
 import org.apache.james.jmap.VacationRelayIntegrationTest;
+import org.junit.ClassRule;
 import org.junit.Rule;
 
 public class CassandraVacationRelayIntegrationTest extends VacationRelayIntegrationTest {
 
     private final InMemoryDNSService inMemoryDNSService = new InMemoryDNSService();
 
+    @ClassRule
+    public static DockerCassandraRule cassandra = new DockerCassandraRule();
+    
     @Rule
     public CassandraJmapTestRule jamesServerRule = CassandraJmapTestRule.defaultTestRule();
 
     @Override
     protected GuiceJamesServer getJmapServer() {
-        return jamesServerRule.jmapServer((binder) -> binder.bind(DNSService.class).toInstance(inMemoryDNSService));
+        return jamesServerRule.jmapServer(
+                cassandra.getModule(),
+                (binder) -> binder.bind(DNSService.class).toInstance(inMemoryDNSService));
     }
 
     @Override

http://git-wip-us.apache.org/repos/asf/james-project/blob/a18a4488/server/protocols/jmap-integration-testing/cassandra-jmap-integration-testing/src/test/java/org/apache/james/jmap/cassandra/cucumber/CassandraStepdefs.java
----------------------------------------------------------------------
diff --git a/server/protocols/jmap-integration-testing/cassandra-jmap-integration-testing/src/test/java/org/apache/james/jmap/cassandra/cucumber/CassandraStepdefs.java b/server/protocols/jmap-integration-testing/cassandra-jmap-integration-testing/src/test/java/org/apache/james/jmap/cassandra/cucumber/CassandraStepdefs.java
index d19bb2f..34aef64 100644
--- a/server/protocols/jmap-integration-testing/cassandra-jmap-integration-testing/src/test/java/org/apache/james/jmap/cassandra/cucumber/CassandraStepdefs.java
+++ b/server/protocols/jmap-integration-testing/cassandra-jmap-integration-testing/src/test/java/org/apache/james/jmap/cassandra/cucumber/CassandraStepdefs.java
@@ -27,7 +27,7 @@ import org.apache.activemq.store.PersistenceAdapter;
 import org.apache.activemq.store.memory.MemoryPersistenceAdapter;
 import org.apache.james.CassandraJamesServerMain;
 import org.apache.james.GuiceJamesServer;
-import org.apache.james.backends.cassandra.EmbeddedCassandra;
+import org.apache.james.backends.cassandra.DockerCassandraRule;
 import org.apache.james.backends.es.EmbeddedElasticSearch;
 import org.apache.james.jmap.methods.integration.cucumber.MainStepdefs;
 import org.apache.james.mailbox.cassandra.ids.CassandraMessageId;
@@ -47,7 +47,7 @@ public class CassandraStepdefs {
     private final MainStepdefs mainStepdefs;
     private TemporaryFolder temporaryFolder = new TemporaryFolder();
     private EmbeddedElasticSearch embeddedElasticSearch = new EmbeddedElasticSearch(temporaryFolder, MailboxElasticsearchConstants.MAILBOX_INDEX);
-    private EmbeddedCassandra cassandra = EmbeddedCassandra.createStartServer();
+    private DockerCassandraRule cassandraServer = new DockerCassandraRule();
 
     @Inject
     private CassandraStepdefs(MainStepdefs mainStepdefs) {
@@ -58,10 +58,11 @@ public class CassandraStepdefs {
     public void init() throws Exception {
         temporaryFolder.create();
         embeddedElasticSearch.before();
+        cassandraServer.start();
         mainStepdefs.messageIdFactory = new CassandraMessageId.Factory();
         mainStepdefs.jmapServer = new GuiceJamesServer()
                 .combineWith(CassandraJamesServerMain.cassandraServerModule, CassandraJamesServerMain.protocols)
-                .overrideWith(new CassandraJmapServerModule(temporaryFolder, embeddedElasticSearch, cassandra))
+                .overrideWith(new CassandraJmapServerModule(temporaryFolder, embeddedElasticSearch, cassandraServer.getIp(), cassandraServer.getBindingPort()))
                 .overrideWith((binder) -> binder.bind(PersistenceAdapter.class).to(MemoryPersistenceAdapter.class));
         mainStepdefs.awaitMethod = () -> embeddedElasticSearch.awaitForElasticSearch();
         mainStepdefs.init();
@@ -71,7 +72,8 @@ public class CassandraStepdefs {
     public void tearDown() {
         ignoreFailures(mainStepdefs::tearDown,
                 () -> embeddedElasticSearch.after(),
-                () -> temporaryFolder.delete());
+                () -> temporaryFolder.delete(),
+                () -> cassandraServer.stop());
     }
 
     private void ignoreFailures(ThrowingRunnable... cleaners) {

http://git-wip-us.apache.org/repos/asf/james-project/blob/a18a4488/server/protocols/jmap-integration-testing/jmap-integration-testing-common/src/test/java/org/apache/james/jmap/ContainerTest.java
----------------------------------------------------------------------
diff --git a/server/protocols/jmap-integration-testing/jmap-integration-testing-common/src/test/java/org/apache/james/jmap/ContainerTest.java b/server/protocols/jmap-integration-testing/jmap-integration-testing-common/src/test/java/org/apache/james/jmap/ContainerTest.java
index 5ac9018..99f2d89 100644
--- a/server/protocols/jmap-integration-testing/jmap-integration-testing-common/src/test/java/org/apache/james/jmap/ContainerTest.java
+++ b/server/protocols/jmap-integration-testing/jmap-integration-testing-common/src/test/java/org/apache/james/jmap/ContainerTest.java
@@ -40,8 +40,8 @@ public class ContainerTest {
     public void containerShouldBeReachableOnExposedPort() throws IOException, URISyntaxException {
         Response response = Request.Get(new URIBuilder()
             .setScheme("http")
-            .setHost(container.getIp())
-            .setPort(80).build())
+            .setHost(container.getHostIp())
+            .setPort(container.getMappedPort(80)).build())
             .execute();
 
         assertThat(response.returnResponse().getStatusLine().getStatusCode())

http://git-wip-us.apache.org/repos/asf/james-project/blob/a18a4488/server/protocols/jmap-integration-testing/jmap-integration-testing-common/src/test/java/org/apache/james/jmap/VacationRelayIntegrationTest.java
----------------------------------------------------------------------
diff --git a/server/protocols/jmap-integration-testing/jmap-integration-testing-common/src/test/java/org/apache/james/jmap/VacationRelayIntegrationTest.java b/server/protocols/jmap-integration-testing/jmap-integration-testing-common/src/test/java/org/apache/james/jmap/VacationRelayIntegrationTest.java
index dbc6816..7bc8266 100644
--- a/server/protocols/jmap-integration-testing/jmap-integration-testing-common/src/test/java/org/apache/james/jmap/VacationRelayIntegrationTest.java
+++ b/server/protocols/jmap-integration-testing/jmap-integration-testing-common/src/test/java/org/apache/james/jmap/VacationRelayIntegrationTest.java
@@ -43,7 +43,6 @@ import org.junit.After;
 import org.junit.Before;
 import org.junit.Rule;
 import org.junit.Test;
-import org.testcontainers.shaded.com.google.common.net.InetAddresses;
 
 import com.google.common.base.Charsets;
 import com.jayway.awaitility.Awaitility;
@@ -83,7 +82,7 @@ public abstract class VacationRelayIntegrationTest {
     @Before
     public void setUp() throws Exception {
 
-        InetAddress containerIp = InetAddresses.forString(fakeSmtp.getIp());
+        InetAddress containerIp = InetAddress.getByName(fakeSmtp.getContainerIp());
         getInMemoryDns()
             .registerRecord("yopmail.com", containerIp, "yopmail.com");
 

http://git-wip-us.apache.org/repos/asf/james-project/blob/a18a4488/server/protocols/webadmin-integration-test/pom.xml
----------------------------------------------------------------------
diff --git a/server/protocols/webadmin-integration-test/pom.xml b/server/protocols/webadmin-integration-test/pom.xml
index bbdc8a5..319b8b2 100644
--- a/server/protocols/webadmin-integration-test/pom.xml
+++ b/server/protocols/webadmin-integration-test/pom.xml
@@ -35,6 +35,12 @@
     <dependencies>
         <dependency>
             <groupId>${project.groupId}</groupId>
+            <artifactId>apache-james-backends-cassandra</artifactId>
+            <type>test-jar</type>
+            <scope>test</scope>
+        </dependency>
+        <dependency>
+            <groupId>${project.groupId}</groupId>
             <artifactId>apache-james-backends-es</artifactId>
             <type>test-jar</type>
             <scope>test</scope>
@@ -99,11 +105,6 @@
             <scope>test</scope>
         </dependency>
         <dependency>
-            <groupId>org.cassandraunit</groupId>
-            <artifactId>cassandra-unit</artifactId>
-            <scope>test</scope>
-        </dependency>
-        <dependency>
             <groupId>org.hamcrest</groupId>
             <artifactId>java-hamcrest</artifactId>
             <scope>test</scope>

http://git-wip-us.apache.org/repos/asf/james-project/blob/a18a4488/server/protocols/webadmin-integration-test/src/test/java/org/apache/james/webadmin/integration/JwtFilterIntegrationTest.java
----------------------------------------------------------------------
diff --git a/server/protocols/webadmin-integration-test/src/test/java/org/apache/james/webadmin/integration/JwtFilterIntegrationTest.java b/server/protocols/webadmin-integration-test/src/test/java/org/apache/james/webadmin/integration/JwtFilterIntegrationTest.java
index dee4122..e15f178 100644
--- a/server/protocols/webadmin-integration-test/src/test/java/org/apache/james/webadmin/integration/JwtFilterIntegrationTest.java
+++ b/server/protocols/webadmin-integration-test/src/test/java/org/apache/james/webadmin/integration/JwtFilterIntegrationTest.java
@@ -29,6 +29,7 @@ import java.util.Optional;
 
 import org.apache.commons.io.IOUtils;
 import org.apache.james.CassandraJmapTestRule;
+import org.apache.james.DockerCassandraRule;
 import org.apache.james.GuiceJamesServer;
 import org.apache.james.jwt.JwtConfiguration;
 import org.apache.james.utils.DataProbeImpl;
@@ -38,6 +39,7 @@ import org.apache.james.webadmin.authentication.JwtFilter;
 import org.apache.james.webadmin.routes.DomainRoutes;
 import org.junit.After;
 import org.junit.Before;
+import org.junit.ClassRule;
 import org.junit.Rule;
 import org.junit.Test;
 
@@ -62,6 +64,9 @@ public class JwtFilterIntegrationTest {
         "xtedOK2JnQZn7t9sUzSrcyjWverm7gZkPptkIVoS8TsEeMMME5vFXe_nqkEG69q3kuBUm_33tbR5oNS0ZGZKlG9r41lHBjyf9J1xN4UYV8n866d" +
         "a7RPPCzshIWUtO0q9T2umWTnp-6OnOdBCkndrZmRR6pPxsD5YL0_77Wq8KT_5__fGA";
 
+    @ClassRule
+    public static DockerCassandraRule cassandra = new DockerCassandraRule();
+    
     @Rule
     public CassandraJmapTestRule cassandraJmapTestRule = CassandraJmapTestRule.defaultTestRule();
 
@@ -75,7 +80,7 @@ public class JwtFilterIntegrationTest {
             Optional.of(
                 IOUtils.toString(ClassLoader.getSystemResourceAsStream("jwt_publickey"), Charsets.UTF_8)));
 
-        guiceJamesServer = cassandraJmapTestRule.jmapServer()
+        guiceJamesServer = cassandraJmapTestRule.jmapServer(cassandra.getModule())
             .overrideWith(new WebAdminConfigurationModule(),
                 binder -> binder.bind(AuthenticationFilter.class).to(JwtFilter.class),
                 binder -> binder.bind(JwtConfiguration.class).toInstance(jwtConfiguration));

http://git-wip-us.apache.org/repos/asf/james-project/blob/a18a4488/server/protocols/webadmin-integration-test/src/test/java/org/apache/james/webadmin/integration/WebAdminServerIntegrationTest.java
----------------------------------------------------------------------
diff --git a/server/protocols/webadmin-integration-test/src/test/java/org/apache/james/webadmin/integration/WebAdminServerIntegrationTest.java b/server/protocols/webadmin-integration-test/src/test/java/org/apache/james/webadmin/integration/WebAdminServerIntegrationTest.java
index 03963eb..bb243cc 100644
--- a/server/protocols/webadmin-integration-test/src/test/java/org/apache/james/webadmin/integration/WebAdminServerIntegrationTest.java
+++ b/server/protocols/webadmin-integration-test/src/test/java/org/apache/james/webadmin/integration/WebAdminServerIntegrationTest.java
@@ -28,6 +28,7 @@ import static org.hamcrest.Matchers.containsString;
 import static org.hamcrest.Matchers.is;
 
 import org.apache.james.CassandraJmapTestRule;
+import org.apache.james.DockerCassandraRule;
 import org.apache.james.GuiceJamesServer;
 import org.apache.james.backends.cassandra.versions.CassandraSchemaVersionManager;
 import org.apache.james.modules.MailboxProbeImpl;
@@ -40,6 +41,7 @@ import org.apache.james.webadmin.routes.UserRoutes;
 import org.apache.james.webadmin.swagger.routes.SwaggerRoutes;
 import org.junit.After;
 import org.junit.Before;
+import org.junit.ClassRule;
 import org.junit.Rule;
 import org.junit.Test;
 
@@ -61,6 +63,9 @@ public class WebAdminServerIntegrationTest {
     public static final String UPGRADE_VERSION = VERSION + "/upgrade";
     public static final String UPGRADE_TO_LATEST_VERSION = UPGRADE_VERSION + "/latest";
 
+    @ClassRule
+    public static DockerCassandraRule cassandra = new DockerCassandraRule();
+    
     @Rule
     public CassandraJmapTestRule cassandraJmapTestRule = CassandraJmapTestRule.defaultTestRule();
 
@@ -70,7 +75,7 @@ public class WebAdminServerIntegrationTest {
 
     @Before
     public void setUp() throws Exception {
-        guiceJamesServer = cassandraJmapTestRule.jmapServer()
+        guiceJamesServer = cassandraJmapTestRule.jmapServer(cassandra.getModule())
                 .overrideWith(new WebAdminConfigurationModule());
         guiceJamesServer.start();
         dataProbe = guiceJamesServer.getProbe(DataProbeImpl.class);


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


[07/13] james-project git commit: JAMES-2133 Switch from cassandraunit to cassandra in docker

Posted by ma...@apache.org.
http://git-wip-us.apache.org/repos/asf/james-project/blob/a18a4488/mpt/impl/imap-mailbox/cassandra/src/test/java/org/apache/james/mpt/imapmailbox/cassandra/CassandraMailboxAnnotation.java
----------------------------------------------------------------------
diff --git a/mpt/impl/imap-mailbox/cassandra/src/test/java/org/apache/james/mpt/imapmailbox/cassandra/CassandraMailboxAnnotation.java b/mpt/impl/imap-mailbox/cassandra/src/test/java/org/apache/james/mpt/imapmailbox/cassandra/CassandraMailboxAnnotation.java
index 1072e24..0bec8c3 100644
--- a/mpt/impl/imap-mailbox/cassandra/src/test/java/org/apache/james/mpt/imapmailbox/cassandra/CassandraMailboxAnnotation.java
+++ b/mpt/impl/imap-mailbox/cassandra/src/test/java/org/apache/james/mpt/imapmailbox/cassandra/CassandraMailboxAnnotation.java
@@ -19,22 +19,27 @@
 
 package org.apache.james.mpt.imapmailbox.cassandra;
 
+import org.apache.james.backends.cassandra.DockerCassandraRule;
 import org.apache.james.mpt.api.ImapHostSystem;
 import org.apache.james.mpt.imapmailbox.suite.MailboxAnnotation;
 import org.junit.After;
 import org.junit.Before;
+import org.junit.ClassRule;
 
 import com.google.inject.Guice;
 import com.google.inject.Injector;
 
 public class CassandraMailboxAnnotation extends MailboxAnnotation {
 
-    private ImapHostSystem system;
+    @ClassRule public static DockerCassandraRule cassandraServer = new DockerCassandraRule();
 
+    private ImapHostSystem system;
+    
     @Before
     public void setUp() throws Exception {
-        Injector injector = Guice.createInjector(new CassandraMailboxTestModule());
+        Injector injector = Guice.createInjector(new CassandraMailboxTestModule(cassandraServer.getIp(), cassandraServer.getBindingPort()));
         system = injector.getInstance(ImapHostSystem.class);
+        system.beforeTest();
         super.setUp();
     }
     

http://git-wip-us.apache.org/repos/asf/james-project/blob/a18a4488/mpt/impl/imap-mailbox/cassandra/src/test/java/org/apache/james/mpt/imapmailbox/cassandra/CassandraMailboxTestModule.java
----------------------------------------------------------------------
diff --git a/mpt/impl/imap-mailbox/cassandra/src/test/java/org/apache/james/mpt/imapmailbox/cassandra/CassandraMailboxTestModule.java b/mpt/impl/imap-mailbox/cassandra/src/test/java/org/apache/james/mpt/imapmailbox/cassandra/CassandraMailboxTestModule.java
index 1133302..d22246b 100644
--- a/mpt/impl/imap-mailbox/cassandra/src/test/java/org/apache/james/mpt/imapmailbox/cassandra/CassandraMailboxTestModule.java
+++ b/mpt/impl/imap-mailbox/cassandra/src/test/java/org/apache/james/mpt/imapmailbox/cassandra/CassandraMailboxTestModule.java
@@ -30,6 +30,14 @@ import com.google.inject.Singleton;
 
 public class CassandraMailboxTestModule extends AbstractModule {
 
+    private final String cassandraHost;
+    private final int cassandraPort;
+
+    public CassandraMailboxTestModule(String cassandraHost, int cassandraPort) {
+        this.cassandraHost = cassandraHost;
+        this.cassandraPort = cassandraPort;
+    }
+    
     @Override
     protected void configure() {
         bind(HostSystem.class).to(JamesImapHostSystem.class);
@@ -39,6 +47,6 @@ public class CassandraMailboxTestModule extends AbstractModule {
     @Provides
     @Singleton
     public JamesImapHostSystem provideHostSystem() throws Exception {
-        return new CassandraHostSystem();
+        return new CassandraHostSystem(cassandraHost, cassandraPort);
     }
 }

http://git-wip-us.apache.org/repos/asf/james-project/blob/a18a4488/mpt/impl/imap-mailbox/cassandra/src/test/java/org/apache/james/mpt/imapmailbox/cassandra/CassandraMailboxWithLongNameError.java
----------------------------------------------------------------------
diff --git a/mpt/impl/imap-mailbox/cassandra/src/test/java/org/apache/james/mpt/imapmailbox/cassandra/CassandraMailboxWithLongNameError.java b/mpt/impl/imap-mailbox/cassandra/src/test/java/org/apache/james/mpt/imapmailbox/cassandra/CassandraMailboxWithLongNameError.java
index 920f422..189118b 100644
--- a/mpt/impl/imap-mailbox/cassandra/src/test/java/org/apache/james/mpt/imapmailbox/cassandra/CassandraMailboxWithLongNameError.java
+++ b/mpt/impl/imap-mailbox/cassandra/src/test/java/org/apache/james/mpt/imapmailbox/cassandra/CassandraMailboxWithLongNameError.java
@@ -19,22 +19,27 @@
 
 package org.apache.james.mpt.imapmailbox.cassandra;
 
+import org.apache.james.backends.cassandra.DockerCassandraRule;
 import org.apache.james.mpt.api.ImapHostSystem;
 import org.apache.james.mpt.imapmailbox.suite.MailboxWithLongNameError;
 import org.junit.After;
 import org.junit.Before;
+import org.junit.ClassRule;
 
 import com.google.inject.Guice;
 import com.google.inject.Injector;
 
 public class CassandraMailboxWithLongNameError extends MailboxWithLongNameError {
 
-    private ImapHostSystem system;
+    @ClassRule public static DockerCassandraRule cassandraServer = new DockerCassandraRule();
 
+    private ImapHostSystem system;
+    
     @Before
     public void setUp() throws Exception {
-        Injector injector = Guice.createInjector(new CassandraMailboxTestModule());
+        Injector injector = Guice.createInjector(new CassandraMailboxTestModule(cassandraServer.getIp(), cassandraServer.getBindingPort()));
         system = injector.getInstance(ImapHostSystem.class);
+        system.beforeTest();
         super.setUp();
     }
     

http://git-wip-us.apache.org/repos/asf/james-project/blob/a18a4488/mpt/impl/imap-mailbox/cassandra/src/test/java/org/apache/james/mpt/imapmailbox/cassandra/CassandraMove.java
----------------------------------------------------------------------
diff --git a/mpt/impl/imap-mailbox/cassandra/src/test/java/org/apache/james/mpt/imapmailbox/cassandra/CassandraMove.java b/mpt/impl/imap-mailbox/cassandra/src/test/java/org/apache/james/mpt/imapmailbox/cassandra/CassandraMove.java
index 178af1f..c2691f5 100644
--- a/mpt/impl/imap-mailbox/cassandra/src/test/java/org/apache/james/mpt/imapmailbox/cassandra/CassandraMove.java
+++ b/mpt/impl/imap-mailbox/cassandra/src/test/java/org/apache/james/mpt/imapmailbox/cassandra/CassandraMove.java
@@ -19,22 +19,27 @@
 
 package org.apache.james.mpt.imapmailbox.cassandra;
 
+import org.apache.james.backends.cassandra.DockerCassandraRule;
 import org.apache.james.mpt.api.ImapHostSystem;
 import org.apache.james.mpt.imapmailbox.suite.Move;
 import org.junit.After;
 import org.junit.Before;
+import org.junit.ClassRule;
 
 import com.google.inject.Guice;
 import com.google.inject.Injector;
 
 public class CassandraMove extends Move {
 
-    private ImapHostSystem system;
+    @ClassRule public static DockerCassandraRule cassandraServer = new DockerCassandraRule();
 
+    private ImapHostSystem system;
+    
     @Before
     public void setUp() throws Exception {
-        Injector injector = Guice.createInjector(new CassandraMailboxTestModule());
+        Injector injector = Guice.createInjector(new CassandraMailboxTestModule(cassandraServer.getIp(), cassandraServer.getBindingPort()));
         system = injector.getInstance(ImapHostSystem.class);
+        system.beforeTest();
         super.setUp();
     }
     

http://git-wip-us.apache.org/repos/asf/james-project/blob/a18a4488/mpt/impl/imap-mailbox/cassandra/src/test/java/org/apache/james/mpt/imapmailbox/cassandra/CassandraNonAuthenticatedState.java
----------------------------------------------------------------------
diff --git a/mpt/impl/imap-mailbox/cassandra/src/test/java/org/apache/james/mpt/imapmailbox/cassandra/CassandraNonAuthenticatedState.java b/mpt/impl/imap-mailbox/cassandra/src/test/java/org/apache/james/mpt/imapmailbox/cassandra/CassandraNonAuthenticatedState.java
index 24760b4..3338b00 100644
--- a/mpt/impl/imap-mailbox/cassandra/src/test/java/org/apache/james/mpt/imapmailbox/cassandra/CassandraNonAuthenticatedState.java
+++ b/mpt/impl/imap-mailbox/cassandra/src/test/java/org/apache/james/mpt/imapmailbox/cassandra/CassandraNonAuthenticatedState.java
@@ -19,22 +19,27 @@
 
 package org.apache.james.mpt.imapmailbox.cassandra;
 
+import org.apache.james.backends.cassandra.DockerCassandraRule;
 import org.apache.james.mpt.api.ImapHostSystem;
 import org.apache.james.mpt.imapmailbox.suite.NonAuthenticatedState;
 import org.junit.After;
 import org.junit.Before;
+import org.junit.ClassRule;
 
 import com.google.inject.Guice;
 import com.google.inject.Injector;
 
 public class CassandraNonAuthenticatedState extends NonAuthenticatedState {
 
-    private ImapHostSystem system;
+    @ClassRule public static DockerCassandraRule cassandraServer = new DockerCassandraRule();
 
+    private ImapHostSystem system;
+    
     @Before
     public void setUp() throws Exception {
-        Injector injector = Guice.createInjector(new CassandraMailboxTestModule());
+        Injector injector = Guice.createInjector(new CassandraMailboxTestModule(cassandraServer.getIp(), cassandraServer.getBindingPort()));
         system = injector.getInstance(ImapHostSystem.class);
+        system.beforeTest();
         super.setUp();
     }
     

http://git-wip-us.apache.org/repos/asf/james-project/blob/a18a4488/mpt/impl/imap-mailbox/cassandra/src/test/java/org/apache/james/mpt/imapmailbox/cassandra/CassandraPartialFetch.java
----------------------------------------------------------------------
diff --git a/mpt/impl/imap-mailbox/cassandra/src/test/java/org/apache/james/mpt/imapmailbox/cassandra/CassandraPartialFetch.java b/mpt/impl/imap-mailbox/cassandra/src/test/java/org/apache/james/mpt/imapmailbox/cassandra/CassandraPartialFetch.java
index 3f9d163..ef45eff 100644
--- a/mpt/impl/imap-mailbox/cassandra/src/test/java/org/apache/james/mpt/imapmailbox/cassandra/CassandraPartialFetch.java
+++ b/mpt/impl/imap-mailbox/cassandra/src/test/java/org/apache/james/mpt/imapmailbox/cassandra/CassandraPartialFetch.java
@@ -19,22 +19,27 @@
 
 package org.apache.james.mpt.imapmailbox.cassandra;
 
+import org.apache.james.backends.cassandra.DockerCassandraRule;
 import org.apache.james.mpt.api.ImapHostSystem;
 import org.apache.james.mpt.imapmailbox.suite.PartialFetch;
 import org.junit.After;
 import org.junit.Before;
+import org.junit.ClassRule;
 
 import com.google.inject.Guice;
 import com.google.inject.Injector;
 
 public class CassandraPartialFetch extends PartialFetch {
 
-    private ImapHostSystem system;
+    @ClassRule public static DockerCassandraRule cassandraServer = new DockerCassandraRule();
 
+    private ImapHostSystem system;
+    
     @Before
     public void setUp() throws Exception {
-        Injector injector = Guice.createInjector(new CassandraMailboxTestModule());
+        Injector injector = Guice.createInjector(new CassandraMailboxTestModule(cassandraServer.getIp(), cassandraServer.getBindingPort()));
         system = injector.getInstance(ImapHostSystem.class);
+        system.beforeTest();
         super.setUp();
     }
     

http://git-wip-us.apache.org/repos/asf/james-project/blob/a18a4488/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 8957a7b..759a484 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
@@ -19,22 +19,27 @@
 
 package org.apache.james.mpt.imapmailbox.cassandra;
 
+import org.apache.james.backends.cassandra.DockerCassandraRule;
 import org.apache.james.mpt.api.ImapHostSystem;
 import org.apache.james.mpt.imapmailbox.suite.QuotaTest;
 import org.junit.After;
 import org.junit.Before;
+import org.junit.ClassRule;
 
 import com.google.inject.Guice;
 import com.google.inject.Injector;
 
 public class CassandraQuotaTest extends QuotaTest {
 
-    private ImapHostSystem system;
+    @ClassRule public static DockerCassandraRule cassandraServer = new DockerCassandraRule();
 
+    private ImapHostSystem system;
+    
     @Before
     public void setUp() throws Exception {
-        Injector injector = Guice.createInjector(new CassandraMailboxTestModule());
+        Injector injector = Guice.createInjector(new CassandraMailboxTestModule(cassandraServer.getIp(), cassandraServer.getBindingPort()));
         system = injector.getInstance(ImapHostSystem.class);
+        system.beforeTest();
         super.setUp();
     }
     

http://git-wip-us.apache.org/repos/asf/james-project/blob/a18a4488/mpt/impl/imap-mailbox/cassandra/src/test/java/org/apache/james/mpt/imapmailbox/cassandra/CassandraRename.java
----------------------------------------------------------------------
diff --git a/mpt/impl/imap-mailbox/cassandra/src/test/java/org/apache/james/mpt/imapmailbox/cassandra/CassandraRename.java b/mpt/impl/imap-mailbox/cassandra/src/test/java/org/apache/james/mpt/imapmailbox/cassandra/CassandraRename.java
index 00459aa..b7b5746 100644
--- a/mpt/impl/imap-mailbox/cassandra/src/test/java/org/apache/james/mpt/imapmailbox/cassandra/CassandraRename.java
+++ b/mpt/impl/imap-mailbox/cassandra/src/test/java/org/apache/james/mpt/imapmailbox/cassandra/CassandraRename.java
@@ -19,22 +19,27 @@
 
 package org.apache.james.mpt.imapmailbox.cassandra;
 
+import org.apache.james.backends.cassandra.DockerCassandraRule;
 import org.apache.james.mpt.api.ImapHostSystem;
 import org.apache.james.mpt.imapmailbox.suite.Rename;
 import org.junit.After;
 import org.junit.Before;
+import org.junit.ClassRule;
 
 import com.google.inject.Guice;
 import com.google.inject.Injector;
 
 public class CassandraRename extends Rename {
 
-    private ImapHostSystem system;
+    @ClassRule public static DockerCassandraRule cassandraServer = new DockerCassandraRule();
 
+    private ImapHostSystem system;
+    
     @Before
     public void setUp() throws Exception {
-        Injector injector = Guice.createInjector(new CassandraMailboxTestModule());
+        Injector injector = Guice.createInjector(new CassandraMailboxTestModule(cassandraServer.getIp(), cassandraServer.getBindingPort()));
         system = injector.getInstance(ImapHostSystem.class);
+        system.beforeTest();
         super.setUp();
     }
     

http://git-wip-us.apache.org/repos/asf/james-project/blob/a18a4488/mpt/impl/imap-mailbox/cassandra/src/test/java/org/apache/james/mpt/imapmailbox/cassandra/CassandraSearch.java
----------------------------------------------------------------------
diff --git a/mpt/impl/imap-mailbox/cassandra/src/test/java/org/apache/james/mpt/imapmailbox/cassandra/CassandraSearch.java b/mpt/impl/imap-mailbox/cassandra/src/test/java/org/apache/james/mpt/imapmailbox/cassandra/CassandraSearch.java
index cbfa080..e40b985 100644
--- a/mpt/impl/imap-mailbox/cassandra/src/test/java/org/apache/james/mpt/imapmailbox/cassandra/CassandraSearch.java
+++ b/mpt/impl/imap-mailbox/cassandra/src/test/java/org/apache/james/mpt/imapmailbox/cassandra/CassandraSearch.java
@@ -19,22 +19,27 @@
 
 package org.apache.james.mpt.imapmailbox.cassandra;
 
+import org.apache.james.backends.cassandra.DockerCassandraRule;
 import org.apache.james.mpt.api.ImapHostSystem;
 import org.apache.james.mpt.imapmailbox.suite.Search;
 import org.junit.After;
 import org.junit.Before;
+import org.junit.ClassRule;
 
 import com.google.inject.Guice;
 import com.google.inject.Injector;
 
 public class CassandraSearch extends Search {
 
-    private ImapHostSystem system;
+    @ClassRule public static DockerCassandraRule cassandraServer = new DockerCassandraRule();
 
+    private ImapHostSystem system;
+    
     @Before
     public void setUp() throws Exception {
-        Injector injector = Guice.createInjector(new CassandraMailboxTestModule());
+        Injector injector = Guice.createInjector(new CassandraMailboxTestModule(cassandraServer.getIp(), cassandraServer.getBindingPort()));
         system = injector.getInstance(ImapHostSystem.class);
+        system.beforeTest();
         super.setUp();
     }
     

http://git-wip-us.apache.org/repos/asf/james-project/blob/a18a4488/mpt/impl/imap-mailbox/cassandra/src/test/java/org/apache/james/mpt/imapmailbox/cassandra/CassandraSecurity.java
----------------------------------------------------------------------
diff --git a/mpt/impl/imap-mailbox/cassandra/src/test/java/org/apache/james/mpt/imapmailbox/cassandra/CassandraSecurity.java b/mpt/impl/imap-mailbox/cassandra/src/test/java/org/apache/james/mpt/imapmailbox/cassandra/CassandraSecurity.java
index f647f36..ea10c9a 100644
--- a/mpt/impl/imap-mailbox/cassandra/src/test/java/org/apache/james/mpt/imapmailbox/cassandra/CassandraSecurity.java
+++ b/mpt/impl/imap-mailbox/cassandra/src/test/java/org/apache/james/mpt/imapmailbox/cassandra/CassandraSecurity.java
@@ -19,22 +19,27 @@
 
 package org.apache.james.mpt.imapmailbox.cassandra;
 
+import org.apache.james.backends.cassandra.DockerCassandraRule;
 import org.apache.james.mpt.api.ImapHostSystem;
 import org.apache.james.mpt.imapmailbox.suite.Security;
 import org.junit.After;
 import org.junit.Before;
+import org.junit.ClassRule;
 
 import com.google.inject.Guice;
 import com.google.inject.Injector;
 
 public class CassandraSecurity extends Security {
 
-    private ImapHostSystem system;
+    @ClassRule public static DockerCassandraRule cassandraServer = new DockerCassandraRule();
 
+    private ImapHostSystem system;
+    
     @Before
     public void setUp() throws Exception {
-        Injector injector = Guice.createInjector(new CassandraMailboxTestModule());
+        Injector injector = Guice.createInjector(new CassandraMailboxTestModule(cassandraServer.getIp(), cassandraServer.getBindingPort()));
         system = injector.getInstance(ImapHostSystem.class);
+        system.beforeTest();
         super.setUp();
     }
     

http://git-wip-us.apache.org/repos/asf/james-project/blob/a18a4488/mpt/impl/imap-mailbox/cassandra/src/test/java/org/apache/james/mpt/imapmailbox/cassandra/CassandraSelect.java
----------------------------------------------------------------------
diff --git a/mpt/impl/imap-mailbox/cassandra/src/test/java/org/apache/james/mpt/imapmailbox/cassandra/CassandraSelect.java b/mpt/impl/imap-mailbox/cassandra/src/test/java/org/apache/james/mpt/imapmailbox/cassandra/CassandraSelect.java
index 0563e8e..2e6e95e 100644
--- a/mpt/impl/imap-mailbox/cassandra/src/test/java/org/apache/james/mpt/imapmailbox/cassandra/CassandraSelect.java
+++ b/mpt/impl/imap-mailbox/cassandra/src/test/java/org/apache/james/mpt/imapmailbox/cassandra/CassandraSelect.java
@@ -19,22 +19,27 @@
 
 package org.apache.james.mpt.imapmailbox.cassandra;
 
+import org.apache.james.backends.cassandra.DockerCassandraRule;
 import org.apache.james.mpt.api.ImapHostSystem;
 import org.apache.james.mpt.imapmailbox.suite.Select;
 import org.junit.After;
 import org.junit.Before;
+import org.junit.ClassRule;
 
 import com.google.inject.Guice;
 import com.google.inject.Injector;
 
 public class CassandraSelect extends Select {
 
-    private ImapHostSystem system;
+    @ClassRule public static DockerCassandraRule cassandraServer = new DockerCassandraRule();
 
+    private ImapHostSystem system;
+    
     @Before
     public void setUp() throws Exception {
-        Injector injector = Guice.createInjector(new CassandraMailboxTestModule());
+        Injector injector = Guice.createInjector(new CassandraMailboxTestModule(cassandraServer.getIp(), cassandraServer.getBindingPort()));
         system = injector.getInstance(ImapHostSystem.class);
+        system.beforeTest();
         super.setUp();
     }
     

http://git-wip-us.apache.org/repos/asf/james-project/blob/a18a4488/mpt/impl/imap-mailbox/cassandra/src/test/java/org/apache/james/mpt/imapmailbox/cassandra/CassandraSelectedInbox.java
----------------------------------------------------------------------
diff --git a/mpt/impl/imap-mailbox/cassandra/src/test/java/org/apache/james/mpt/imapmailbox/cassandra/CassandraSelectedInbox.java b/mpt/impl/imap-mailbox/cassandra/src/test/java/org/apache/james/mpt/imapmailbox/cassandra/CassandraSelectedInbox.java
index ab53bbf..97b251b 100644
--- a/mpt/impl/imap-mailbox/cassandra/src/test/java/org/apache/james/mpt/imapmailbox/cassandra/CassandraSelectedInbox.java
+++ b/mpt/impl/imap-mailbox/cassandra/src/test/java/org/apache/james/mpt/imapmailbox/cassandra/CassandraSelectedInbox.java
@@ -19,22 +19,27 @@
 
 package org.apache.james.mpt.imapmailbox.cassandra;
 
+import org.apache.james.backends.cassandra.DockerCassandraRule;
 import org.apache.james.mpt.api.ImapHostSystem;
 import org.apache.james.mpt.imapmailbox.suite.SelectedInbox;
 import org.junit.After;
 import org.junit.Before;
+import org.junit.ClassRule;
 
 import com.google.inject.Guice;
 import com.google.inject.Injector;
 
 public class CassandraSelectedInbox extends SelectedInbox {
 
-    private ImapHostSystem system;
+    @ClassRule public static DockerCassandraRule cassandraServer = new DockerCassandraRule();
 
+    private ImapHostSystem system;
+    
     @Before
     public void setUp() throws Exception {
-        Injector injector = Guice.createInjector(new CassandraMailboxTestModule());
+        Injector injector = Guice.createInjector(new CassandraMailboxTestModule(cassandraServer.getIp(), cassandraServer.getBindingPort()));
         system = injector.getInstance(ImapHostSystem.class);
+        system.beforeTest();
         super.setUp();
     }
     

http://git-wip-us.apache.org/repos/asf/james-project/blob/a18a4488/mpt/impl/imap-mailbox/cassandra/src/test/java/org/apache/james/mpt/imapmailbox/cassandra/CassandraSelectedState.java
----------------------------------------------------------------------
diff --git a/mpt/impl/imap-mailbox/cassandra/src/test/java/org/apache/james/mpt/imapmailbox/cassandra/CassandraSelectedState.java b/mpt/impl/imap-mailbox/cassandra/src/test/java/org/apache/james/mpt/imapmailbox/cassandra/CassandraSelectedState.java
index 5d31780..7b30c55 100644
--- a/mpt/impl/imap-mailbox/cassandra/src/test/java/org/apache/james/mpt/imapmailbox/cassandra/CassandraSelectedState.java
+++ b/mpt/impl/imap-mailbox/cassandra/src/test/java/org/apache/james/mpt/imapmailbox/cassandra/CassandraSelectedState.java
@@ -19,22 +19,27 @@
 
 package org.apache.james.mpt.imapmailbox.cassandra;
 
+import org.apache.james.backends.cassandra.DockerCassandraRule;
 import org.apache.james.mpt.api.ImapHostSystem;
 import org.apache.james.mpt.imapmailbox.suite.SelectedState;
 import org.junit.After;
 import org.junit.Before;
+import org.junit.ClassRule;
 
 import com.google.inject.Guice;
 import com.google.inject.Injector;
 
 public class CassandraSelectedState extends SelectedState {
 
-    private ImapHostSystem system;
+    @ClassRule public static DockerCassandraRule cassandraServer = new DockerCassandraRule();
 
+    private ImapHostSystem system;
+    
     @Before
     public void setUp() throws Exception {
-        Injector injector = Guice.createInjector(new CassandraMailboxTestModule());
+        Injector injector = Guice.createInjector(new CassandraMailboxTestModule(cassandraServer.getIp(), cassandraServer.getBindingPort()));
         system = injector.getInstance(ImapHostSystem.class);
+        system.beforeTest();
         super.setUp();
     }
     

http://git-wip-us.apache.org/repos/asf/james-project/blob/a18a4488/mpt/impl/imap-mailbox/cassandra/src/test/java/org/apache/james/mpt/imapmailbox/cassandra/CassandraUidSearch.java
----------------------------------------------------------------------
diff --git a/mpt/impl/imap-mailbox/cassandra/src/test/java/org/apache/james/mpt/imapmailbox/cassandra/CassandraUidSearch.java b/mpt/impl/imap-mailbox/cassandra/src/test/java/org/apache/james/mpt/imapmailbox/cassandra/CassandraUidSearch.java
index a6a9887..f97610c 100644
--- a/mpt/impl/imap-mailbox/cassandra/src/test/java/org/apache/james/mpt/imapmailbox/cassandra/CassandraUidSearch.java
+++ b/mpt/impl/imap-mailbox/cassandra/src/test/java/org/apache/james/mpt/imapmailbox/cassandra/CassandraUidSearch.java
@@ -19,22 +19,27 @@
 
 package org.apache.james.mpt.imapmailbox.cassandra;
 
+import org.apache.james.backends.cassandra.DockerCassandraRule;
 import org.apache.james.mpt.api.ImapHostSystem;
 import org.apache.james.mpt.imapmailbox.suite.UidSearch;
 import org.junit.After;
 import org.junit.Before;
+import org.junit.ClassRule;
 
 import com.google.inject.Guice;
 import com.google.inject.Injector;
 
 public class CassandraUidSearch extends UidSearch {
 
-    private ImapHostSystem system;
+    @ClassRule public static DockerCassandraRule cassandraServer = new DockerCassandraRule();
 
+    private ImapHostSystem system;
+    
     @Before
     public void setUp() throws Exception {
-        Injector injector = Guice.createInjector(new CassandraMailboxTestModule());
+        Injector injector = Guice.createInjector(new CassandraMailboxTestModule(cassandraServer.getIp(), cassandraServer.getBindingPort()));
         system = injector.getInstance(ImapHostSystem.class);
+        system.beforeTest();
         super.setUp();
     }
     

http://git-wip-us.apache.org/repos/asf/james-project/blob/a18a4488/mpt/impl/imap-mailbox/cassandra/src/test/java/org/apache/james/mpt/imapmailbox/cassandra/CassandraUidSearchOnIndex.java
----------------------------------------------------------------------
diff --git a/mpt/impl/imap-mailbox/cassandra/src/test/java/org/apache/james/mpt/imapmailbox/cassandra/CassandraUidSearchOnIndex.java b/mpt/impl/imap-mailbox/cassandra/src/test/java/org/apache/james/mpt/imapmailbox/cassandra/CassandraUidSearchOnIndex.java
index e35abfe..92afdbe 100644
--- a/mpt/impl/imap-mailbox/cassandra/src/test/java/org/apache/james/mpt/imapmailbox/cassandra/CassandraUidSearchOnIndex.java
+++ b/mpt/impl/imap-mailbox/cassandra/src/test/java/org/apache/james/mpt/imapmailbox/cassandra/CassandraUidSearchOnIndex.java
@@ -19,22 +19,27 @@
 
 package org.apache.james.mpt.imapmailbox.cassandra;
 
+import org.apache.james.backends.cassandra.DockerCassandraRule;
 import org.apache.james.mpt.api.ImapHostSystem;
 import org.apache.james.mpt.imapmailbox.suite.UidSearchOnIndex;
 import org.junit.After;
 import org.junit.Before;
+import org.junit.ClassRule;
 
 import com.google.inject.Guice;
 import com.google.inject.Injector;
 
 public class CassandraUidSearchOnIndex extends UidSearchOnIndex {
 
-    private ImapHostSystem system;
+    @ClassRule public static DockerCassandraRule cassandraServer = new DockerCassandraRule();
 
+    private ImapHostSystem system;
+    
     @Before
     public void setUp() throws Exception {
-        Injector injector = Guice.createInjector(new CassandraMailboxTestModule());
+        Injector injector = Guice.createInjector(new CassandraMailboxTestModule(cassandraServer.getIp(), cassandraServer.getBindingPort()));
         system = injector.getInstance(ImapHostSystem.class);
+        system.beforeTest();
         super.setUp();
     }
     

http://git-wip-us.apache.org/repos/asf/james-project/blob/a18a4488/mpt/impl/imap-mailbox/cassandra/src/test/java/org/apache/james/mpt/imapmailbox/cassandra/CassandraUserFlagsSupport.java
----------------------------------------------------------------------
diff --git a/mpt/impl/imap-mailbox/cassandra/src/test/java/org/apache/james/mpt/imapmailbox/cassandra/CassandraUserFlagsSupport.java b/mpt/impl/imap-mailbox/cassandra/src/test/java/org/apache/james/mpt/imapmailbox/cassandra/CassandraUserFlagsSupport.java
index 2087953..c55ceb9 100644
--- a/mpt/impl/imap-mailbox/cassandra/src/test/java/org/apache/james/mpt/imapmailbox/cassandra/CassandraUserFlagsSupport.java
+++ b/mpt/impl/imap-mailbox/cassandra/src/test/java/org/apache/james/mpt/imapmailbox/cassandra/CassandraUserFlagsSupport.java
@@ -19,22 +19,27 @@
 
 package org.apache.james.mpt.imapmailbox.cassandra;
 
+import org.apache.james.backends.cassandra.DockerCassandraRule;
 import org.apache.james.mpt.api.ImapHostSystem;
 import org.apache.james.mpt.imapmailbox.suite.UserFlagsSupport;
 import org.junit.After;
 import org.junit.Before;
+import org.junit.ClassRule;
 
 import com.google.inject.Guice;
 import com.google.inject.Injector;
 
 public class CassandraUserFlagsSupport extends UserFlagsSupport {
 
-    private ImapHostSystem system;
+    @ClassRule public static DockerCassandraRule cassandraServer = new DockerCassandraRule();
 
+    private ImapHostSystem system;
+    
     @Before
     public void setUp() throws Exception {
-        Injector injector = Guice.createInjector(new CassandraMailboxTestModule());
+        Injector injector = Guice.createInjector(new CassandraMailboxTestModule(cassandraServer.getIp(), cassandraServer.getBindingPort()));
         system = injector.getInstance(ImapHostSystem.class);
+        system.beforeTest();
         super.setUp();
     }
     

http://git-wip-us.apache.org/repos/asf/james-project/blob/a18a4488/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 0ca4992..2f47b9c 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
@@ -82,12 +82,7 @@ public class CassandraHostSystem extends JamesImapHostSystem {
         Feature.QUOTA_SUPPORT,
         Feature.ANNOTATION_SUPPORT);
 
-    private final CassandraMailboxManager mailboxManager;
-    private final CassandraCluster cassandra;
-    private final CassandraPerUserMaxQuotaManager perUserMaxQuotaManager;
-
-    public CassandraHostSystem() throws Exception {
-        CassandraModule mailboxModule = new CassandraModuleComposite(
+    private final CassandraModule mailboxModule = new CassandraModuleComposite(
             new CassandraAclModule(),
             new CassandraMailboxModule(),
             new CassandraMessageModule(),
@@ -103,7 +98,22 @@ public class CassandraHostSystem extends JamesImapHostSystem {
             new CassandraAttachmentModule(),
             new CassandraAnnotationModule(),
             new CassandraApplicableFlagsModule());
-        cassandra = CassandraCluster.create(mailboxModule);
+
+    private final String cassandraHost;
+    private final int cassandraPort;
+    private CassandraMailboxManager mailboxManager;
+    private CassandraCluster cassandra;
+    private CassandraPerUserMaxQuotaManager perUserMaxQuotaManager;
+    
+    public CassandraHostSystem(String cassandraHost, int cassandraPort) {
+        this.cassandraHost = cassandraHost;
+        this.cassandraPort = cassandraPort;
+    }
+
+    @Override
+    public void beforeTest() throws Exception {
+        super.beforeTest();
+        cassandra = CassandraCluster.create(mailboxModule, cassandraHost, cassandraPort);
         com.datastax.driver.core.Session session = cassandra.getConf();
         CassandraModSeqProvider modSeqProvider = new CassandraModSeqProvider(session);
         CassandraUidProvider uidProvider = new CassandraUidProvider(session);
@@ -158,7 +168,6 @@ public class CassandraHostSystem extends JamesImapHostSystem {
         configure(new DefaultImapDecoderFactory().buildImapDecoder(),
                 new DefaultImapEncoderFactory().buildImapEncoder(),
                 DefaultImapProcessorFactory.createDefaultProcessor(mailboxManager, subscriptionManager, quotaManager, quotaRootResolver, new DefaultMetricFactory()));
-        cassandra.ensureAllTables();
     }
 
     @Override
@@ -168,11 +177,6 @@ public class CassandraHostSystem extends JamesImapHostSystem {
     }
     
     @Override
-    protected void resetData() throws Exception {
-        cassandra.clearAllTables();
-    }
-
-    @Override
     protected void finalize() throws Throwable {
         super.finalize();
     }

http://git-wip-us.apache.org/repos/asf/james-project/blob/a18a4488/mpt/impl/imap-mailbox/core/src/main/java/org/apache/james/mpt/host/JamesImapHostSystem.java
----------------------------------------------------------------------
diff --git a/mpt/impl/imap-mailbox/core/src/main/java/org/apache/james/mpt/host/JamesImapHostSystem.java b/mpt/impl/imap-mailbox/core/src/main/java/org/apache/james/mpt/host/JamesImapHostSystem.java
index bb1539f..d1bc8af 100644
--- a/mpt/impl/imap-mailbox/core/src/main/java/org/apache/james/mpt/host/JamesImapHostSystem.java
+++ b/mpt/impl/imap-mailbox/core/src/main/java/org/apache/james/mpt/host/JamesImapHostSystem.java
@@ -19,9 +19,6 @@
 
 package org.apache.james.mpt.host;
 
-import java.util.HashSet;
-import java.util.Set;
-
 import org.apache.commons.configuration.ConfigurationException;
 import org.apache.commons.configuration.HierarchicalConfiguration;
 import org.apache.commons.configuration.plist.PropertyListConfiguration;
@@ -32,7 +29,6 @@ import org.apache.james.imap.api.process.ImapProcessor;
 import org.apache.james.imap.decode.ImapDecoder;
 import org.apache.james.imap.decode.main.ImapRequestStreamHandler;
 import org.apache.james.imap.encode.ImapEncoder;
-import org.apache.james.mailbox.MailboxSession.User;
 import org.apache.james.mailbox.model.MailboxPath;
 import org.apache.james.mailbox.store.Authenticator;
 import org.apache.james.mailbox.store.Authorizator;
@@ -47,18 +43,17 @@ import com.google.common.base.Throwables;
 
 public abstract class JamesImapHostSystem implements ImapHostSystem {
 
-    private final MemoryUsersRepository memoryUsersRepository;
-    private final Set<User> users;
-    protected final Authorizator authorizator;
-    protected final Authenticator authenticator;
+    private MemoryUsersRepository memoryUsersRepository;
+    protected Authorizator authorizator;
+    protected Authenticator authenticator;
 
     private ImapDecoder decoder;
     private ImapEncoder encoder;
     private ImapProcessor processor;
 
-    public JamesImapHostSystem() {
-        super();
-        users = new HashSet<>();
+
+    @Override
+    public void beforeTest() throws Exception {
         memoryUsersRepository = MemoryUsersRepository.withoutVirtualHosting();
         try {
             memoryUsersRepository.configure(userRepositoryConfiguration());
@@ -68,6 +63,11 @@ public abstract class JamesImapHostSystem implements ImapHostSystem {
         authenticator = new UserRepositoryAuthenticator(memoryUsersRepository);
         authorizator = new UserRepositoryAuthorizator(memoryUsersRepository);
     }
+    
+    @Override
+    public void afterTest() throws Exception {
+    }
+    
 
     public void configure(ImapDecoder decoder, ImapEncoder encoder,
             final ImapProcessor processor) {
@@ -86,18 +86,7 @@ public abstract class JamesImapHostSystem implements ImapHostSystem {
             throws Exception {
         return new Session(continuation);
     }
-
-    public void beforeTest() throws Exception {
-    }
-    
-    public void afterTest() throws Exception {
-        users.clear();
-        memoryUsersRepository.clear();
-        resetData();
-    }
     
-    protected abstract void resetData() throws Exception;
-
     public abstract void createMailbox(MailboxPath mailboxPath) throws Exception;
 
     class Session implements org.apache.james.mpt.api.Session {
@@ -146,14 +135,6 @@ public abstract class JamesImapHostSystem implements ImapHostSystem {
 
     }
 
-    public void afterTests() throws Exception {
-        // default do nothing
-    }
-
-    public void beforeTests() throws Exception {
-        // default do nothing
-    }
-
     private HierarchicalConfiguration userRepositoryConfiguration() {
         PropertyListConfiguration configuration = new PropertyListConfiguration();
         configuration.addProperty("administratorId", "imapuser");

http://git-wip-us.apache.org/repos/asf/james-project/blob/a18a4488/mpt/impl/imap-mailbox/core/src/main/java/org/apache/james/mpt/imapmailbox/suite/UidSearchOnIndex.java
----------------------------------------------------------------------
diff --git a/mpt/impl/imap-mailbox/core/src/main/java/org/apache/james/mpt/imapmailbox/suite/UidSearchOnIndex.java b/mpt/impl/imap-mailbox/core/src/main/java/org/apache/james/mpt/imapmailbox/suite/UidSearchOnIndex.java
index 231768d..3f19ad0 100644
--- a/mpt/impl/imap-mailbox/core/src/main/java/org/apache/james/mpt/imapmailbox/suite/UidSearchOnIndex.java
+++ b/mpt/impl/imap-mailbox/core/src/main/java/org/apache/james/mpt/imapmailbox/suite/UidSearchOnIndex.java
@@ -25,7 +25,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.Before;
 import org.junit.Test;
 
 public abstract class UidSearchOnIndex implements ImapTestConstants {
@@ -35,7 +34,6 @@ public abstract class UidSearchOnIndex implements ImapTestConstants {
     private ImapHostSystem system;
     private SimpleScriptedTestProtocol simpleScriptedTestProtocol;
 
-    @Before
     public void setUp() throws Exception {
         system = createImapHostSystem();
         simpleScriptedTestProtocol = new SimpleScriptedTestProtocol("/org/apache/james/imap/scripts/", system)

http://git-wip-us.apache.org/repos/asf/james-project/blob/a18a4488/mpt/impl/imap-mailbox/core/src/main/resources/org/apache/james/imap/scripts/CreateErrorWithLongName.test
----------------------------------------------------------------------
diff --git a/mpt/impl/imap-mailbox/core/src/main/resources/org/apache/james/imap/scripts/CreateErrorWithLongName.test b/mpt/impl/imap-mailbox/core/src/main/resources/org/apache/james/imap/scripts/CreateErrorWithLongName.test
index 995fc8e..53b9af6 100644
--- a/mpt/impl/imap-mailbox/core/src/main/resources/org/apache/james/imap/scripts/CreateErrorWithLongName.test
+++ b/mpt/impl/imap-mailbox/core/src/main/resources/org/apache/james/imap/scripts/CreateErrorWithLongName.test
@@ -547,7 +547,7 @@ C: bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb
 C: bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb
 C: bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb
 C: bbbbbbbbbbbbbbbbbbbbbbbba
-S: A2 NO DELETE failed. No such mailbox.
+S: A2 BAD DELETE too long mailbox name. Illegal arguments.
 
 
 C: A3 CREATE newmailbox

http://git-wip-us.apache.org/repos/asf/james-project/blob/a18a4488/mpt/impl/imap-mailbox/elasticsearch/src/test/java/org/apache/james/mpt/imapmailbox/elasticsearch/host/ElasticSearchHostSystem.java
----------------------------------------------------------------------
diff --git a/mpt/impl/imap-mailbox/elasticsearch/src/test/java/org/apache/james/mpt/imapmailbox/elasticsearch/host/ElasticSearchHostSystem.java b/mpt/impl/imap-mailbox/elasticsearch/src/test/java/org/apache/james/mpt/imapmailbox/elasticsearch/host/ElasticSearchHostSystem.java
index c69c075..288ca22 100644
--- a/mpt/impl/imap-mailbox/elasticsearch/src/test/java/org/apache/james/mpt/imapmailbox/elasticsearch/host/ElasticSearchHostSystem.java
+++ b/mpt/impl/imap-mailbox/elasticsearch/src/test/java/org/apache/james/mpt/imapmailbox/elasticsearch/host/ElasticSearchHostSystem.java
@@ -80,6 +80,7 @@ public class ElasticSearchHostSystem extends JamesImapHostSystem {
 
     @Override
     public void beforeTest() throws Exception {
+        super.beforeTest();
         this.tempDirectory = Files.createTempDirectory("elasticsearch");
         this.embeddedElasticSearch = new EmbeddedElasticSearch(tempDirectory, MailboxElasticsearchConstants.MAILBOX_INDEX);
         embeddedElasticSearch.before();
@@ -92,11 +93,6 @@ public class ElasticSearchHostSystem extends JamesImapHostSystem {
         FileUtils.deleteDirectory(tempDirectory.toFile());
     }
 
-    @Override
-    protected void resetData() throws Exception {
-
-    }
-
     private void initFields() {
         Client client = NodeMappingFactory.applyMapping(
             IndexCreationFactory.createIndex(new TestingClientProvider(embeddedElasticSearch.getNode()).get(), MailboxElasticsearchConstants.MAILBOX_INDEX),

http://git-wip-us.apache.org/repos/asf/james-project/blob/a18a4488/mpt/impl/imap-mailbox/hbase/src/test/java/org/apache/james/mpt/imapmailbox/hbase/HBaseAuthenticatePlain.java
----------------------------------------------------------------------
diff --git a/mpt/impl/imap-mailbox/hbase/src/test/java/org/apache/james/mpt/imapmailbox/hbase/HBaseAuthenticatePlain.java b/mpt/impl/imap-mailbox/hbase/src/test/java/org/apache/james/mpt/imapmailbox/hbase/HBaseAuthenticatePlain.java
index 787b1ea..c83847d 100644
--- a/mpt/impl/imap-mailbox/hbase/src/test/java/org/apache/james/mpt/imapmailbox/hbase/HBaseAuthenticatePlain.java
+++ b/mpt/impl/imap-mailbox/hbase/src/test/java/org/apache/james/mpt/imapmailbox/hbase/HBaseAuthenticatePlain.java
@@ -35,6 +35,7 @@ public class HBaseAuthenticatePlain extends AuthenticatePlain {
     public void setUp() throws Exception {
         Injector injector = Guice.createInjector(new HBaseMailboxTestModule());
         system = injector.getInstance(ImapHostSystem.class);
+        system.beforeTest();
         super.setUp();
     }
     

http://git-wip-us.apache.org/repos/asf/james-project/blob/a18a4488/mpt/impl/imap-mailbox/hbase/src/test/java/org/apache/james/mpt/imapmailbox/hbase/HBaseAuthenticatedState.java
----------------------------------------------------------------------
diff --git a/mpt/impl/imap-mailbox/hbase/src/test/java/org/apache/james/mpt/imapmailbox/hbase/HBaseAuthenticatedState.java b/mpt/impl/imap-mailbox/hbase/src/test/java/org/apache/james/mpt/imapmailbox/hbase/HBaseAuthenticatedState.java
index fafa024..f110e2d 100644
--- a/mpt/impl/imap-mailbox/hbase/src/test/java/org/apache/james/mpt/imapmailbox/hbase/HBaseAuthenticatedState.java
+++ b/mpt/impl/imap-mailbox/hbase/src/test/java/org/apache/james/mpt/imapmailbox/hbase/HBaseAuthenticatedState.java
@@ -35,6 +35,7 @@ public class HBaseAuthenticatedState extends AuthenticatedState {
     public void setUp() throws Exception {
         Injector injector = Guice.createInjector(new HBaseMailboxTestModule());
         system = injector.getInstance(ImapHostSystem.class);
+        system.beforeTest();
         super.setUp();
     }
     

http://git-wip-us.apache.org/repos/asf/james-project/blob/a18a4488/mpt/impl/imap-mailbox/hbase/src/test/java/org/apache/james/mpt/imapmailbox/hbase/HBaseConcurrentSessions.java
----------------------------------------------------------------------
diff --git a/mpt/impl/imap-mailbox/hbase/src/test/java/org/apache/james/mpt/imapmailbox/hbase/HBaseConcurrentSessions.java b/mpt/impl/imap-mailbox/hbase/src/test/java/org/apache/james/mpt/imapmailbox/hbase/HBaseConcurrentSessions.java
index a2636fe..f518653 100644
--- a/mpt/impl/imap-mailbox/hbase/src/test/java/org/apache/james/mpt/imapmailbox/hbase/HBaseConcurrentSessions.java
+++ b/mpt/impl/imap-mailbox/hbase/src/test/java/org/apache/james/mpt/imapmailbox/hbase/HBaseConcurrentSessions.java
@@ -35,6 +35,7 @@ public class HBaseConcurrentSessions extends ConcurrentSessions {
     public void setUp() throws Exception {
         Injector injector = Guice.createInjector(new HBaseMailboxTestModule());
         system = injector.getInstance(ImapHostSystem.class);
+        system.beforeTest();
         super.setUp();
     }
     

http://git-wip-us.apache.org/repos/asf/james-project/blob/a18a4488/mpt/impl/imap-mailbox/hbase/src/test/java/org/apache/james/mpt/imapmailbox/hbase/HBaseCondstore.java
----------------------------------------------------------------------
diff --git a/mpt/impl/imap-mailbox/hbase/src/test/java/org/apache/james/mpt/imapmailbox/hbase/HBaseCondstore.java b/mpt/impl/imap-mailbox/hbase/src/test/java/org/apache/james/mpt/imapmailbox/hbase/HBaseCondstore.java
index ae11769..779b414 100644
--- a/mpt/impl/imap-mailbox/hbase/src/test/java/org/apache/james/mpt/imapmailbox/hbase/HBaseCondstore.java
+++ b/mpt/impl/imap-mailbox/hbase/src/test/java/org/apache/james/mpt/imapmailbox/hbase/HBaseCondstore.java
@@ -35,6 +35,7 @@ public class HBaseCondstore extends Condstore {
     public void setUp() throws Exception {
         Injector injector = Guice.createInjector(new HBaseMailboxTestModule());
         system = injector.getInstance(JamesImapHostSystem.class);
+        system.beforeTest();
         super.setUp();
     }
     

http://git-wip-us.apache.org/repos/asf/james-project/blob/a18a4488/mpt/impl/imap-mailbox/hbase/src/test/java/org/apache/james/mpt/imapmailbox/hbase/HBaseCopy.java
----------------------------------------------------------------------
diff --git a/mpt/impl/imap-mailbox/hbase/src/test/java/org/apache/james/mpt/imapmailbox/hbase/HBaseCopy.java b/mpt/impl/imap-mailbox/hbase/src/test/java/org/apache/james/mpt/imapmailbox/hbase/HBaseCopy.java
index 90bcf7b..44235e8 100644
--- a/mpt/impl/imap-mailbox/hbase/src/test/java/org/apache/james/mpt/imapmailbox/hbase/HBaseCopy.java
+++ b/mpt/impl/imap-mailbox/hbase/src/test/java/org/apache/james/mpt/imapmailbox/hbase/HBaseCopy.java
@@ -35,6 +35,7 @@ public class HBaseCopy extends Copy {
     public void setUp() throws Exception {
         Injector injector = Guice.createInjector(new HBaseMailboxTestModule());
         system = injector.getInstance(ImapHostSystem.class);
+        system.beforeTest();
         super.setUp();
     }
     

http://git-wip-us.apache.org/repos/asf/james-project/blob/a18a4488/mpt/impl/imap-mailbox/hbase/src/test/java/org/apache/james/mpt/imapmailbox/hbase/HBaseEvents.java
----------------------------------------------------------------------
diff --git a/mpt/impl/imap-mailbox/hbase/src/test/java/org/apache/james/mpt/imapmailbox/hbase/HBaseEvents.java b/mpt/impl/imap-mailbox/hbase/src/test/java/org/apache/james/mpt/imapmailbox/hbase/HBaseEvents.java
index 104b81a..2f86772 100644
--- a/mpt/impl/imap-mailbox/hbase/src/test/java/org/apache/james/mpt/imapmailbox/hbase/HBaseEvents.java
+++ b/mpt/impl/imap-mailbox/hbase/src/test/java/org/apache/james/mpt/imapmailbox/hbase/HBaseEvents.java
@@ -35,6 +35,7 @@ public class HBaseEvents extends Events {
     public void setUp() throws Exception {
         Injector injector = Guice.createInjector(new HBaseMailboxTestModule());
         system = injector.getInstance(ImapHostSystem.class);
+        system.beforeTest();
         super.setUp();
     }
     

http://git-wip-us.apache.org/repos/asf/james-project/blob/a18a4488/mpt/impl/imap-mailbox/hbase/src/test/java/org/apache/james/mpt/imapmailbox/hbase/HBaseExpunge.java
----------------------------------------------------------------------
diff --git a/mpt/impl/imap-mailbox/hbase/src/test/java/org/apache/james/mpt/imapmailbox/hbase/HBaseExpunge.java b/mpt/impl/imap-mailbox/hbase/src/test/java/org/apache/james/mpt/imapmailbox/hbase/HBaseExpunge.java
index 2c4cb4b..548aff5 100644
--- a/mpt/impl/imap-mailbox/hbase/src/test/java/org/apache/james/mpt/imapmailbox/hbase/HBaseExpunge.java
+++ b/mpt/impl/imap-mailbox/hbase/src/test/java/org/apache/james/mpt/imapmailbox/hbase/HBaseExpunge.java
@@ -35,6 +35,7 @@ public class HBaseExpunge extends Expunge {
     public void setUp() throws Exception {
         Injector injector = Guice.createInjector(new HBaseMailboxTestModule());
         system = injector.getInstance(ImapHostSystem.class);
+        system.beforeTest();
         super.setUp();
     }
     

http://git-wip-us.apache.org/repos/asf/james-project/blob/a18a4488/mpt/impl/imap-mailbox/hbase/src/test/java/org/apache/james/mpt/imapmailbox/hbase/HBaseFetch.java
----------------------------------------------------------------------
diff --git a/mpt/impl/imap-mailbox/hbase/src/test/java/org/apache/james/mpt/imapmailbox/hbase/HBaseFetch.java b/mpt/impl/imap-mailbox/hbase/src/test/java/org/apache/james/mpt/imapmailbox/hbase/HBaseFetch.java
index 7d6d099..8b37745 100644
--- a/mpt/impl/imap-mailbox/hbase/src/test/java/org/apache/james/mpt/imapmailbox/hbase/HBaseFetch.java
+++ b/mpt/impl/imap-mailbox/hbase/src/test/java/org/apache/james/mpt/imapmailbox/hbase/HBaseFetch.java
@@ -35,6 +35,7 @@ public class HBaseFetch extends Fetch {
     public void setUp() throws Exception {
         Injector injector = Guice.createInjector(new HBaseMailboxTestModule());
         system = injector.getInstance(ImapHostSystem.class);
+        system.beforeTest();
         super.setUp();
     }
     

http://git-wip-us.apache.org/repos/asf/james-project/blob/a18a4488/mpt/impl/imap-mailbox/hbase/src/test/java/org/apache/james/mpt/imapmailbox/hbase/HBaseFetchBodySection.java
----------------------------------------------------------------------
diff --git a/mpt/impl/imap-mailbox/hbase/src/test/java/org/apache/james/mpt/imapmailbox/hbase/HBaseFetchBodySection.java b/mpt/impl/imap-mailbox/hbase/src/test/java/org/apache/james/mpt/imapmailbox/hbase/HBaseFetchBodySection.java
index 566c69e..e36560c 100644
--- a/mpt/impl/imap-mailbox/hbase/src/test/java/org/apache/james/mpt/imapmailbox/hbase/HBaseFetchBodySection.java
+++ b/mpt/impl/imap-mailbox/hbase/src/test/java/org/apache/james/mpt/imapmailbox/hbase/HBaseFetchBodySection.java
@@ -35,6 +35,7 @@ public class HBaseFetchBodySection extends FetchBodySection {
     public void setUp() throws Exception {
         Injector injector = Guice.createInjector(new HBaseMailboxTestModule());
         system = injector.getInstance(ImapHostSystem.class);
+        system.beforeTest();
         super.setUp();
     }
     

http://git-wip-us.apache.org/repos/asf/james-project/blob/a18a4488/mpt/impl/imap-mailbox/hbase/src/test/java/org/apache/james/mpt/imapmailbox/hbase/HBaseFetchBodyStructure.java
----------------------------------------------------------------------
diff --git a/mpt/impl/imap-mailbox/hbase/src/test/java/org/apache/james/mpt/imapmailbox/hbase/HBaseFetchBodyStructure.java b/mpt/impl/imap-mailbox/hbase/src/test/java/org/apache/james/mpt/imapmailbox/hbase/HBaseFetchBodyStructure.java
index deb92ff..a8b7a8f 100644
--- a/mpt/impl/imap-mailbox/hbase/src/test/java/org/apache/james/mpt/imapmailbox/hbase/HBaseFetchBodyStructure.java
+++ b/mpt/impl/imap-mailbox/hbase/src/test/java/org/apache/james/mpt/imapmailbox/hbase/HBaseFetchBodyStructure.java
@@ -35,6 +35,7 @@ public class HBaseFetchBodyStructure extends FetchBodyStructure {
     public void setUp() throws Exception {
         Injector injector = Guice.createInjector(new HBaseMailboxTestModule());
         system = injector.getInstance(ImapHostSystem.class);
+        system.beforeTest();
         super.setUp();
     }
     

http://git-wip-us.apache.org/repos/asf/james-project/blob/a18a4488/mpt/impl/imap-mailbox/hbase/src/test/java/org/apache/james/mpt/imapmailbox/hbase/HBaseFetchHeaders.java
----------------------------------------------------------------------
diff --git a/mpt/impl/imap-mailbox/hbase/src/test/java/org/apache/james/mpt/imapmailbox/hbase/HBaseFetchHeaders.java b/mpt/impl/imap-mailbox/hbase/src/test/java/org/apache/james/mpt/imapmailbox/hbase/HBaseFetchHeaders.java
index 4977bf9..9887b71 100644
--- a/mpt/impl/imap-mailbox/hbase/src/test/java/org/apache/james/mpt/imapmailbox/hbase/HBaseFetchHeaders.java
+++ b/mpt/impl/imap-mailbox/hbase/src/test/java/org/apache/james/mpt/imapmailbox/hbase/HBaseFetchHeaders.java
@@ -35,6 +35,7 @@ public class HBaseFetchHeaders extends FetchHeaders {
     public void setUp() throws Exception {
         Injector injector = Guice.createInjector(new HBaseMailboxTestModule());
         system = injector.getInstance(ImapHostSystem.class);
+        system.beforeTest();
         super.setUp();
     }
     

http://git-wip-us.apache.org/repos/asf/james-project/blob/a18a4488/mpt/impl/imap-mailbox/hbase/src/test/java/org/apache/james/mpt/imapmailbox/hbase/HBaseListing.java
----------------------------------------------------------------------
diff --git a/mpt/impl/imap-mailbox/hbase/src/test/java/org/apache/james/mpt/imapmailbox/hbase/HBaseListing.java b/mpt/impl/imap-mailbox/hbase/src/test/java/org/apache/james/mpt/imapmailbox/hbase/HBaseListing.java
index 6cd7456..a736e70 100644
--- a/mpt/impl/imap-mailbox/hbase/src/test/java/org/apache/james/mpt/imapmailbox/hbase/HBaseListing.java
+++ b/mpt/impl/imap-mailbox/hbase/src/test/java/org/apache/james/mpt/imapmailbox/hbase/HBaseListing.java
@@ -35,6 +35,7 @@ public class HBaseListing extends Listing {
     public void setUp() throws Exception {
         Injector injector = Guice.createInjector(new HBaseMailboxTestModule());
         system = injector.getInstance(ImapHostSystem.class);
+        system.beforeTest();
         super.setUp();
     }
     

http://git-wip-us.apache.org/repos/asf/james-project/blob/a18a4488/mpt/impl/imap-mailbox/hbase/src/test/java/org/apache/james/mpt/imapmailbox/hbase/HBaseMailboxAnnotation.java
----------------------------------------------------------------------
diff --git a/mpt/impl/imap-mailbox/hbase/src/test/java/org/apache/james/mpt/imapmailbox/hbase/HBaseMailboxAnnotation.java b/mpt/impl/imap-mailbox/hbase/src/test/java/org/apache/james/mpt/imapmailbox/hbase/HBaseMailboxAnnotation.java
index 9114f55..3b4694b 100644
--- a/mpt/impl/imap-mailbox/hbase/src/test/java/org/apache/james/mpt/imapmailbox/hbase/HBaseMailboxAnnotation.java
+++ b/mpt/impl/imap-mailbox/hbase/src/test/java/org/apache/james/mpt/imapmailbox/hbase/HBaseMailboxAnnotation.java
@@ -35,6 +35,7 @@ public class HBaseMailboxAnnotation extends MailboxAnnotation {
     public void setUp() throws Exception {
         Injector injector = Guice.createInjector(new HBaseMailboxTestModule());
         system = injector.getInstance(ImapHostSystem.class);
+        system.beforeTest();
         super.setUp();
     }
     

http://git-wip-us.apache.org/repos/asf/james-project/blob/a18a4488/mpt/impl/imap-mailbox/hbase/src/test/java/org/apache/james/mpt/imapmailbox/hbase/HBaseMailboxWithLongNameError.java
----------------------------------------------------------------------
diff --git a/mpt/impl/imap-mailbox/hbase/src/test/java/org/apache/james/mpt/imapmailbox/hbase/HBaseMailboxWithLongNameError.java b/mpt/impl/imap-mailbox/hbase/src/test/java/org/apache/james/mpt/imapmailbox/hbase/HBaseMailboxWithLongNameError.java
index ce545e7..d933565 100644
--- a/mpt/impl/imap-mailbox/hbase/src/test/java/org/apache/james/mpt/imapmailbox/hbase/HBaseMailboxWithLongNameError.java
+++ b/mpt/impl/imap-mailbox/hbase/src/test/java/org/apache/james/mpt/imapmailbox/hbase/HBaseMailboxWithLongNameError.java
@@ -35,6 +35,7 @@ public class HBaseMailboxWithLongNameError extends MailboxWithLongNameError {
     public void setUp() throws Exception {
         Injector injector = Guice.createInjector(new HBaseMailboxTestModule());
         system = injector.getInstance(ImapHostSystem.class);
+        system.beforeTest();
         super.setUp();
     }
     

http://git-wip-us.apache.org/repos/asf/james-project/blob/a18a4488/mpt/impl/imap-mailbox/hbase/src/test/java/org/apache/james/mpt/imapmailbox/hbase/HBaseNonAuthenticatedState.java
----------------------------------------------------------------------
diff --git a/mpt/impl/imap-mailbox/hbase/src/test/java/org/apache/james/mpt/imapmailbox/hbase/HBaseNonAuthenticatedState.java b/mpt/impl/imap-mailbox/hbase/src/test/java/org/apache/james/mpt/imapmailbox/hbase/HBaseNonAuthenticatedState.java
index 6074a99..2e065b4 100644
--- a/mpt/impl/imap-mailbox/hbase/src/test/java/org/apache/james/mpt/imapmailbox/hbase/HBaseNonAuthenticatedState.java
+++ b/mpt/impl/imap-mailbox/hbase/src/test/java/org/apache/james/mpt/imapmailbox/hbase/HBaseNonAuthenticatedState.java
@@ -35,6 +35,7 @@ public class HBaseNonAuthenticatedState extends NonAuthenticatedState {
     public void setUp() throws Exception {
         Injector injector = Guice.createInjector(new HBaseMailboxTestModule());
         system = injector.getInstance(ImapHostSystem.class);
+        system.beforeTest();
         super.setUp();
     }
     

http://git-wip-us.apache.org/repos/asf/james-project/blob/a18a4488/mpt/impl/imap-mailbox/hbase/src/test/java/org/apache/james/mpt/imapmailbox/hbase/HBasePartialFetch.java
----------------------------------------------------------------------
diff --git a/mpt/impl/imap-mailbox/hbase/src/test/java/org/apache/james/mpt/imapmailbox/hbase/HBasePartialFetch.java b/mpt/impl/imap-mailbox/hbase/src/test/java/org/apache/james/mpt/imapmailbox/hbase/HBasePartialFetch.java
index bab9cfb..6221b57 100644
--- a/mpt/impl/imap-mailbox/hbase/src/test/java/org/apache/james/mpt/imapmailbox/hbase/HBasePartialFetch.java
+++ b/mpt/impl/imap-mailbox/hbase/src/test/java/org/apache/james/mpt/imapmailbox/hbase/HBasePartialFetch.java
@@ -35,6 +35,7 @@ public class HBasePartialFetch extends PartialFetch {
     public void setUp() throws Exception {
         Injector injector = Guice.createInjector(new HBaseMailboxTestModule());
         system = injector.getInstance(ImapHostSystem.class);
+        system.beforeTest();
         super.setUp();
     }
     

http://git-wip-us.apache.org/repos/asf/james-project/blob/a18a4488/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 776082d..a8a1b57 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
@@ -35,6 +35,7 @@ public class HBaseQuotaTest extends QuotaTest {
     public void setUp() throws Exception {
         Injector injector = Guice.createInjector(new HBaseMailboxTestModule());
         system = injector.getInstance(ImapHostSystem.class);
+        system.beforeTest();
         super.setUp();
     }
     

http://git-wip-us.apache.org/repos/asf/james-project/blob/a18a4488/mpt/impl/imap-mailbox/hbase/src/test/java/org/apache/james/mpt/imapmailbox/hbase/HBaseRename.java
----------------------------------------------------------------------
diff --git a/mpt/impl/imap-mailbox/hbase/src/test/java/org/apache/james/mpt/imapmailbox/hbase/HBaseRename.java b/mpt/impl/imap-mailbox/hbase/src/test/java/org/apache/james/mpt/imapmailbox/hbase/HBaseRename.java
index a8cb517..bf38dba 100644
--- a/mpt/impl/imap-mailbox/hbase/src/test/java/org/apache/james/mpt/imapmailbox/hbase/HBaseRename.java
+++ b/mpt/impl/imap-mailbox/hbase/src/test/java/org/apache/james/mpt/imapmailbox/hbase/HBaseRename.java
@@ -35,6 +35,7 @@ public class HBaseRename extends Rename {
     public void setUp() throws Exception {
         Injector injector = Guice.createInjector(new HBaseMailboxTestModule());
         system = injector.getInstance(ImapHostSystem.class);
+        system.beforeTest();
         super.setUp();
     }
     

http://git-wip-us.apache.org/repos/asf/james-project/blob/a18a4488/mpt/impl/imap-mailbox/hbase/src/test/java/org/apache/james/mpt/imapmailbox/hbase/HBaseSearch.java
----------------------------------------------------------------------
diff --git a/mpt/impl/imap-mailbox/hbase/src/test/java/org/apache/james/mpt/imapmailbox/hbase/HBaseSearch.java b/mpt/impl/imap-mailbox/hbase/src/test/java/org/apache/james/mpt/imapmailbox/hbase/HBaseSearch.java
index fc417f8..8ee268e 100644
--- a/mpt/impl/imap-mailbox/hbase/src/test/java/org/apache/james/mpt/imapmailbox/hbase/HBaseSearch.java
+++ b/mpt/impl/imap-mailbox/hbase/src/test/java/org/apache/james/mpt/imapmailbox/hbase/HBaseSearch.java
@@ -35,6 +35,7 @@ public class HBaseSearch extends Search {
     public void setUp() throws Exception {
         Injector injector = Guice.createInjector(new HBaseMailboxTestModule());
         system = injector.getInstance(ImapHostSystem.class);
+        system.beforeTest();
         super.setUp();
     }
     

http://git-wip-us.apache.org/repos/asf/james-project/blob/a18a4488/mpt/impl/imap-mailbox/hbase/src/test/java/org/apache/james/mpt/imapmailbox/hbase/HBaseSecurity.java
----------------------------------------------------------------------
diff --git a/mpt/impl/imap-mailbox/hbase/src/test/java/org/apache/james/mpt/imapmailbox/hbase/HBaseSecurity.java b/mpt/impl/imap-mailbox/hbase/src/test/java/org/apache/james/mpt/imapmailbox/hbase/HBaseSecurity.java
index ff2148a..ba629e9 100644
--- a/mpt/impl/imap-mailbox/hbase/src/test/java/org/apache/james/mpt/imapmailbox/hbase/HBaseSecurity.java
+++ b/mpt/impl/imap-mailbox/hbase/src/test/java/org/apache/james/mpt/imapmailbox/hbase/HBaseSecurity.java
@@ -35,6 +35,7 @@ public class HBaseSecurity extends Security {
     public void setUp() throws Exception {
         Injector injector = Guice.createInjector(new HBaseMailboxTestModule());
         system = injector.getInstance(ImapHostSystem.class);
+        system.beforeTest();
         super.setUp();
     }
     

http://git-wip-us.apache.org/repos/asf/james-project/blob/a18a4488/mpt/impl/imap-mailbox/hbase/src/test/java/org/apache/james/mpt/imapmailbox/hbase/HBaseSelect.java
----------------------------------------------------------------------
diff --git a/mpt/impl/imap-mailbox/hbase/src/test/java/org/apache/james/mpt/imapmailbox/hbase/HBaseSelect.java b/mpt/impl/imap-mailbox/hbase/src/test/java/org/apache/james/mpt/imapmailbox/hbase/HBaseSelect.java
index a4977da..e79181a 100644
--- a/mpt/impl/imap-mailbox/hbase/src/test/java/org/apache/james/mpt/imapmailbox/hbase/HBaseSelect.java
+++ b/mpt/impl/imap-mailbox/hbase/src/test/java/org/apache/james/mpt/imapmailbox/hbase/HBaseSelect.java
@@ -35,6 +35,7 @@ public class HBaseSelect extends Select {
     public void setUp() throws Exception {
         Injector injector = Guice.createInjector(new HBaseMailboxTestModule());
         system = injector.getInstance(ImapHostSystem.class);
+        system.beforeTest();
         super.setUp();
     }
     

http://git-wip-us.apache.org/repos/asf/james-project/blob/a18a4488/mpt/impl/imap-mailbox/hbase/src/test/java/org/apache/james/mpt/imapmailbox/hbase/HBaseSelectedInbox.java
----------------------------------------------------------------------
diff --git a/mpt/impl/imap-mailbox/hbase/src/test/java/org/apache/james/mpt/imapmailbox/hbase/HBaseSelectedInbox.java b/mpt/impl/imap-mailbox/hbase/src/test/java/org/apache/james/mpt/imapmailbox/hbase/HBaseSelectedInbox.java
index 56408d9..efbe37f 100644
--- a/mpt/impl/imap-mailbox/hbase/src/test/java/org/apache/james/mpt/imapmailbox/hbase/HBaseSelectedInbox.java
+++ b/mpt/impl/imap-mailbox/hbase/src/test/java/org/apache/james/mpt/imapmailbox/hbase/HBaseSelectedInbox.java
@@ -35,6 +35,7 @@ public class HBaseSelectedInbox extends SelectedInbox {
     public void setUp() throws Exception {
         Injector injector = Guice.createInjector(new HBaseMailboxTestModule());
         system = injector.getInstance(ImapHostSystem.class);
+        system.beforeTest();
         super.setUp();
     }
     

http://git-wip-us.apache.org/repos/asf/james-project/blob/a18a4488/mpt/impl/imap-mailbox/hbase/src/test/java/org/apache/james/mpt/imapmailbox/hbase/HBaseSelectedState.java
----------------------------------------------------------------------
diff --git a/mpt/impl/imap-mailbox/hbase/src/test/java/org/apache/james/mpt/imapmailbox/hbase/HBaseSelectedState.java b/mpt/impl/imap-mailbox/hbase/src/test/java/org/apache/james/mpt/imapmailbox/hbase/HBaseSelectedState.java
index 600e60e..760ce66 100644
--- a/mpt/impl/imap-mailbox/hbase/src/test/java/org/apache/james/mpt/imapmailbox/hbase/HBaseSelectedState.java
+++ b/mpt/impl/imap-mailbox/hbase/src/test/java/org/apache/james/mpt/imapmailbox/hbase/HBaseSelectedState.java
@@ -35,6 +35,7 @@ public class HBaseSelectedState extends SelectedState {
     public void setUp() throws Exception {
         Injector injector = Guice.createInjector(new HBaseMailboxTestModule());
         system = injector.getInstance(ImapHostSystem.class);
+        system.beforeTest();
         super.setUp();
     }
     

http://git-wip-us.apache.org/repos/asf/james-project/blob/a18a4488/mpt/impl/imap-mailbox/hbase/src/test/java/org/apache/james/mpt/imapmailbox/hbase/HBaseUidSearch.java
----------------------------------------------------------------------
diff --git a/mpt/impl/imap-mailbox/hbase/src/test/java/org/apache/james/mpt/imapmailbox/hbase/HBaseUidSearch.java b/mpt/impl/imap-mailbox/hbase/src/test/java/org/apache/james/mpt/imapmailbox/hbase/HBaseUidSearch.java
index ec4b4df..f04bdc3 100644
--- a/mpt/impl/imap-mailbox/hbase/src/test/java/org/apache/james/mpt/imapmailbox/hbase/HBaseUidSearch.java
+++ b/mpt/impl/imap-mailbox/hbase/src/test/java/org/apache/james/mpt/imapmailbox/hbase/HBaseUidSearch.java
@@ -35,6 +35,7 @@ public class HBaseUidSearch extends UidSearch {
     public void setUp() throws Exception {
         Injector injector = Guice.createInjector(new HBaseMailboxTestModule());
         system = injector.getInstance(ImapHostSystem.class);
+        system.beforeTest();
         super.setUp();
     }
     

http://git-wip-us.apache.org/repos/asf/james-project/blob/a18a4488/mpt/impl/imap-mailbox/hbase/src/test/java/org/apache/james/mpt/imapmailbox/hbase/HBaseUidSearchOnIndex.java
----------------------------------------------------------------------
diff --git a/mpt/impl/imap-mailbox/hbase/src/test/java/org/apache/james/mpt/imapmailbox/hbase/HBaseUidSearchOnIndex.java b/mpt/impl/imap-mailbox/hbase/src/test/java/org/apache/james/mpt/imapmailbox/hbase/HBaseUidSearchOnIndex.java
index 3211f4a..c51ded0 100644
--- a/mpt/impl/imap-mailbox/hbase/src/test/java/org/apache/james/mpt/imapmailbox/hbase/HBaseUidSearchOnIndex.java
+++ b/mpt/impl/imap-mailbox/hbase/src/test/java/org/apache/james/mpt/imapmailbox/hbase/HBaseUidSearchOnIndex.java
@@ -35,6 +35,7 @@ public class HBaseUidSearchOnIndex extends UidSearchOnIndex {
     public void setUp() throws Exception {
         Injector injector = Guice.createInjector(new HBaseMailboxTestModule());
         system = injector.getInstance(ImapHostSystem.class);
+        system.beforeTest();
         super.setUp();
     }
     

http://git-wip-us.apache.org/repos/asf/james-project/blob/a18a4488/mpt/impl/imap-mailbox/hbase/src/test/java/org/apache/james/mpt/imapmailbox/hbase/HBaseUserFlagsSupport.java
----------------------------------------------------------------------
diff --git a/mpt/impl/imap-mailbox/hbase/src/test/java/org/apache/james/mpt/imapmailbox/hbase/HBaseUserFlagsSupport.java b/mpt/impl/imap-mailbox/hbase/src/test/java/org/apache/james/mpt/imapmailbox/hbase/HBaseUserFlagsSupport.java
index 2082fca..0c7ef3e 100644
--- a/mpt/impl/imap-mailbox/hbase/src/test/java/org/apache/james/mpt/imapmailbox/hbase/HBaseUserFlagsSupport.java
+++ b/mpt/impl/imap-mailbox/hbase/src/test/java/org/apache/james/mpt/imapmailbox/hbase/HBaseUserFlagsSupport.java
@@ -35,6 +35,7 @@ public class HBaseUserFlagsSupport extends UserFlagsSupport {
     public void setUp() throws Exception {
         Injector injector = Guice.createInjector(new HBaseMailboxTestModule());
         system = injector.getInstance(ImapHostSystem.class);
+        system.beforeTest();
         super.setUp();
     }
     

http://git-wip-us.apache.org/repos/asf/james-project/blob/a18a4488/mpt/impl/imap-mailbox/hbase/src/test/java/org/apache/james/mpt/imapmailbox/hbase/host/HBaseHostSystem.java
----------------------------------------------------------------------
diff --git a/mpt/impl/imap-mailbox/hbase/src/test/java/org/apache/james/mpt/imapmailbox/hbase/host/HBaseHostSystem.java b/mpt/impl/imap-mailbox/hbase/src/test/java/org/apache/james/mpt/imapmailbox/hbase/host/HBaseHostSystem.java
index 67cf8fe..557d609 100644
--- a/mpt/impl/imap-mailbox/hbase/src/test/java/org/apache/james/mpt/imapmailbox/hbase/host/HBaseHostSystem.java
+++ b/mpt/impl/imap-mailbox/hbase/src/test/java/org/apache/james/mpt/imapmailbox/hbase/host/HBaseHostSystem.java
@@ -46,7 +46,7 @@ import org.apache.james.mailbox.store.mail.model.DefaultMessageId;
 import org.apache.james.mailbox.store.mail.model.impl.MessageParser;
 import org.apache.james.mailbox.store.quota.DefaultQuotaRootResolver;
 import org.apache.james.mailbox.store.quota.NoQuotaManager;
-import org.apache.james.metrics.logger.DefaultMetricFactory;
+import org.apache.james.metrics.api.NoopMetricFactory;
 import org.apache.james.mpt.api.ImapFeatures;
 import org.apache.james.mpt.api.ImapFeatures.Feature;
 import org.apache.james.mpt.host.JamesImapHostSystem;
@@ -63,10 +63,10 @@ public class HBaseHostSystem extends JamesImapHostSystem {
      * cluster on the classpath. 
      */
     public static Boolean useMiniCluster = true;
-    
-    private final HBaseMailboxManager mailboxManager;
+
     private MiniHBaseCluster hbaseCluster;
     private final Configuration conf;
+    private HBaseMailboxManager mailboxManager;
 
     public static synchronized JamesImapHostSystem build() throws Exception {
         if (host == null) {
@@ -88,7 +88,12 @@ public class HBaseHostSystem extends JamesImapHostSystem {
         } else {
             conf = HBaseConfiguration.create();
         }
+    }
+
 
+    @Override
+    public void beforeTest() throws Exception {
+        super.beforeTest();
         final HBaseModSeqProvider modSeqProvider = new HBaseModSeqProvider(conf);
         final HBaseUidProvider uidProvider = new HBaseUidProvider(conf);
         DefaultMessageId.Factory messageIdFactory = new DefaultMessageId.Factory();
@@ -110,7 +115,7 @@ public class HBaseHostSystem extends JamesImapHostSystem {
                         subscriptionManager, 
                         new NoQuotaManager(), 
                         new DefaultQuotaRootResolver(mapperFactory),
-                        new DefaultMetricFactory());
+                        new NoopMetricFactory());
 
         resetUserMetaData();
 
@@ -118,15 +123,17 @@ public class HBaseHostSystem extends JamesImapHostSystem {
                 new DefaultImapEncoderFactory().buildImapEncoder(),
                 defaultImapProcessorFactory);
     }
-
     @Override
-    protected void resetData() throws Exception {
+    public void afterTest() throws Exception {
+        super.afterTest();
         resetUserMetaData();
-        MailboxSession session = mailboxManager.createSystemSession("test");
-        mailboxManager.startProcessingRequest(session);
-        mailboxManager.deleteEverything(session);
-        mailboxManager.endProcessingRequest(session);
-        mailboxManager.logout(session, false);
+        if (mailboxManager != null) {
+            MailboxSession session = mailboxManager.createSystemSession("test");
+            mailboxManager.startProcessingRequest(session);
+            mailboxManager.deleteEverything(session);
+            mailboxManager.endProcessingRequest(session);
+            mailboxManager.logout(session, false);
+        }
     }
 
     public final void resetUserMetaData() throws Exception {

http://git-wip-us.apache.org/repos/asf/james-project/blob/a18a4488/mpt/impl/imap-mailbox/hbase/src/test/resources/logback-test.xml
----------------------------------------------------------------------
diff --git a/mpt/impl/imap-mailbox/hbase/src/test/resources/logback-test.xml b/mpt/impl/imap-mailbox/hbase/src/test/resources/logback-test.xml
new file mode 100644
index 0000000..bc84c7b
--- /dev/null
+++ b/mpt/impl/imap-mailbox/hbase/src/test/resources/logback-test.xml
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<configuration>
+
+        <contextListener class="ch.qos.logback.classic.jul.LevelChangePropagator">
+                <resetJUL>true</resetJUL>
+        </contextListener>
+
+        <appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
+                <encoder>
+                        <pattern>%d{HH:mm:ss.SSS} [%-5level] %logger{15} - %msg%n%rEx</pattern>
+                        <immediateFlush>false</immediateFlush>
+                </encoder>
+        </appender>
+
+        <root level="WARN">
+                <appender-ref ref="CONSOLE" />
+        </root>
+
+        <logger name="org.apache.james" level="DEBUG" />
+
+
+</configuration>

http://git-wip-us.apache.org/repos/asf/james-project/blob/a18a4488/mpt/impl/imap-mailbox/inmemory/src/test/java/org/apache/james/mpt/imapmailbox/inmemory/InMemoryAuthenticatePlain.java
----------------------------------------------------------------------
diff --git a/mpt/impl/imap-mailbox/inmemory/src/test/java/org/apache/james/mpt/imapmailbox/inmemory/InMemoryAuthenticatePlain.java b/mpt/impl/imap-mailbox/inmemory/src/test/java/org/apache/james/mpt/imapmailbox/inmemory/InMemoryAuthenticatePlain.java
index ad0ab04..03d2f72 100644
--- a/mpt/impl/imap-mailbox/inmemory/src/test/java/org/apache/james/mpt/imapmailbox/inmemory/InMemoryAuthenticatePlain.java
+++ b/mpt/impl/imap-mailbox/inmemory/src/test/java/org/apache/james/mpt/imapmailbox/inmemory/InMemoryAuthenticatePlain.java
@@ -35,6 +35,7 @@ public class InMemoryAuthenticatePlain extends AuthenticatePlain {
     public void setUp() throws Exception {
         Injector injector = Guice.createInjector(new InMemoryMailboxTestModule());
         system = injector.getInstance(ImapHostSystem.class);
+        system.beforeTest();
         super.setUp();
     }
     

http://git-wip-us.apache.org/repos/asf/james-project/blob/a18a4488/mpt/impl/imap-mailbox/inmemory/src/test/java/org/apache/james/mpt/imapmailbox/inmemory/InMemoryAuthenticatedState.java
----------------------------------------------------------------------
diff --git a/mpt/impl/imap-mailbox/inmemory/src/test/java/org/apache/james/mpt/imapmailbox/inmemory/InMemoryAuthenticatedState.java b/mpt/impl/imap-mailbox/inmemory/src/test/java/org/apache/james/mpt/imapmailbox/inmemory/InMemoryAuthenticatedState.java
index dd341ea..b21a04a 100644
--- a/mpt/impl/imap-mailbox/inmemory/src/test/java/org/apache/james/mpt/imapmailbox/inmemory/InMemoryAuthenticatedState.java
+++ b/mpt/impl/imap-mailbox/inmemory/src/test/java/org/apache/james/mpt/imapmailbox/inmemory/InMemoryAuthenticatedState.java
@@ -35,6 +35,7 @@ public class InMemoryAuthenticatedState extends AuthenticatedState {
     public void setUp() throws Exception {
         Injector injector = Guice.createInjector(new InMemoryMailboxTestModule());
         system = injector.getInstance(ImapHostSystem.class);
+        system.beforeTest();
         super.setUp();
     }
     

http://git-wip-us.apache.org/repos/asf/james-project/blob/a18a4488/mpt/impl/imap-mailbox/inmemory/src/test/java/org/apache/james/mpt/imapmailbox/inmemory/InMemoryConcurrentSessions.java
----------------------------------------------------------------------
diff --git a/mpt/impl/imap-mailbox/inmemory/src/test/java/org/apache/james/mpt/imapmailbox/inmemory/InMemoryConcurrentSessions.java b/mpt/impl/imap-mailbox/inmemory/src/test/java/org/apache/james/mpt/imapmailbox/inmemory/InMemoryConcurrentSessions.java
index be80e09..2185441 100644
--- a/mpt/impl/imap-mailbox/inmemory/src/test/java/org/apache/james/mpt/imapmailbox/inmemory/InMemoryConcurrentSessions.java
+++ b/mpt/impl/imap-mailbox/inmemory/src/test/java/org/apache/james/mpt/imapmailbox/inmemory/InMemoryConcurrentSessions.java
@@ -35,6 +35,7 @@ public class InMemoryConcurrentSessions extends ConcurrentSessions {
     public void setUp() throws Exception {
         Injector injector = Guice.createInjector(new InMemoryMailboxTestModule());
         system = injector.getInstance(ImapHostSystem.class);
+        system.beforeTest();
         super.setUp();
     }
     

http://git-wip-us.apache.org/repos/asf/james-project/blob/a18a4488/mpt/impl/imap-mailbox/inmemory/src/test/java/org/apache/james/mpt/imapmailbox/inmemory/InMemoryCondstore.java
----------------------------------------------------------------------
diff --git a/mpt/impl/imap-mailbox/inmemory/src/test/java/org/apache/james/mpt/imapmailbox/inmemory/InMemoryCondstore.java b/mpt/impl/imap-mailbox/inmemory/src/test/java/org/apache/james/mpt/imapmailbox/inmemory/InMemoryCondstore.java
index a293e10..3df824a 100644
--- a/mpt/impl/imap-mailbox/inmemory/src/test/java/org/apache/james/mpt/imapmailbox/inmemory/InMemoryCondstore.java
+++ b/mpt/impl/imap-mailbox/inmemory/src/test/java/org/apache/james/mpt/imapmailbox/inmemory/InMemoryCondstore.java
@@ -35,6 +35,7 @@ public class InMemoryCondstore extends Condstore {
     public void setUp() throws Exception {
         Injector injector = Guice.createInjector(new InMemoryMailboxTestModule());
         system = injector.getInstance(JamesImapHostSystem.class);
+        system.beforeTest();
         super.setUp();
     }
     

http://git-wip-us.apache.org/repos/asf/james-project/blob/a18a4488/mpt/impl/imap-mailbox/inmemory/src/test/java/org/apache/james/mpt/imapmailbox/inmemory/InMemoryCopy.java
----------------------------------------------------------------------
diff --git a/mpt/impl/imap-mailbox/inmemory/src/test/java/org/apache/james/mpt/imapmailbox/inmemory/InMemoryCopy.java b/mpt/impl/imap-mailbox/inmemory/src/test/java/org/apache/james/mpt/imapmailbox/inmemory/InMemoryCopy.java
index 218423b..8113480 100644
--- a/mpt/impl/imap-mailbox/inmemory/src/test/java/org/apache/james/mpt/imapmailbox/inmemory/InMemoryCopy.java
+++ b/mpt/impl/imap-mailbox/inmemory/src/test/java/org/apache/james/mpt/imapmailbox/inmemory/InMemoryCopy.java
@@ -35,6 +35,7 @@ public class InMemoryCopy extends Copy {
     public void setUp() throws Exception {
         Injector injector = Guice.createInjector(new InMemoryMailboxTestModule());
         system = injector.getInstance(ImapHostSystem.class);
+        system.beforeTest();
         super.setUp();
     }
     

http://git-wip-us.apache.org/repos/asf/james-project/blob/a18a4488/mpt/impl/imap-mailbox/inmemory/src/test/java/org/apache/james/mpt/imapmailbox/inmemory/InMemoryEvents.java
----------------------------------------------------------------------
diff --git a/mpt/impl/imap-mailbox/inmemory/src/test/java/org/apache/james/mpt/imapmailbox/inmemory/InMemoryEvents.java b/mpt/impl/imap-mailbox/inmemory/src/test/java/org/apache/james/mpt/imapmailbox/inmemory/InMemoryEvents.java
index 9f43f9c..f1ddc35 100644
--- a/mpt/impl/imap-mailbox/inmemory/src/test/java/org/apache/james/mpt/imapmailbox/inmemory/InMemoryEvents.java
+++ b/mpt/impl/imap-mailbox/inmemory/src/test/java/org/apache/james/mpt/imapmailbox/inmemory/InMemoryEvents.java
@@ -35,6 +35,7 @@ public class InMemoryEvents extends Events {
     public void setUp() throws Exception {
         Injector injector = Guice.createInjector(new InMemoryMailboxTestModule());
         system = injector.getInstance(ImapHostSystem.class);
+        system.beforeTest();
         super.setUp();
     }
     

http://git-wip-us.apache.org/repos/asf/james-project/blob/a18a4488/mpt/impl/imap-mailbox/inmemory/src/test/java/org/apache/james/mpt/imapmailbox/inmemory/InMemoryExpunge.java
----------------------------------------------------------------------
diff --git a/mpt/impl/imap-mailbox/inmemory/src/test/java/org/apache/james/mpt/imapmailbox/inmemory/InMemoryExpunge.java b/mpt/impl/imap-mailbox/inmemory/src/test/java/org/apache/james/mpt/imapmailbox/inmemory/InMemoryExpunge.java
index 2c11bad..5834830 100644
--- a/mpt/impl/imap-mailbox/inmemory/src/test/java/org/apache/james/mpt/imapmailbox/inmemory/InMemoryExpunge.java
+++ b/mpt/impl/imap-mailbox/inmemory/src/test/java/org/apache/james/mpt/imapmailbox/inmemory/InMemoryExpunge.java
@@ -35,6 +35,7 @@ public class InMemoryExpunge extends Expunge {
     public void setUp() throws Exception {
         Injector injector = Guice.createInjector(new InMemoryMailboxTestModule());
         system = injector.getInstance(ImapHostSystem.class);
+        system.beforeTest();
         super.setUp();
     }
     

http://git-wip-us.apache.org/repos/asf/james-project/blob/a18a4488/mpt/impl/imap-mailbox/inmemory/src/test/java/org/apache/james/mpt/imapmailbox/inmemory/InMemoryFetch.java
----------------------------------------------------------------------
diff --git a/mpt/impl/imap-mailbox/inmemory/src/test/java/org/apache/james/mpt/imapmailbox/inmemory/InMemoryFetch.java b/mpt/impl/imap-mailbox/inmemory/src/test/java/org/apache/james/mpt/imapmailbox/inmemory/InMemoryFetch.java
index b3c8c5a..a71c163 100644
--- a/mpt/impl/imap-mailbox/inmemory/src/test/java/org/apache/james/mpt/imapmailbox/inmemory/InMemoryFetch.java
+++ b/mpt/impl/imap-mailbox/inmemory/src/test/java/org/apache/james/mpt/imapmailbox/inmemory/InMemoryFetch.java
@@ -35,6 +35,7 @@ public class InMemoryFetch extends Fetch {
     public void setUp() throws Exception {
         Injector injector = Guice.createInjector(new InMemoryMailboxTestModule());
         system = injector.getInstance(ImapHostSystem.class);
+        system.beforeTest();
         super.setUp();
     }
     

http://git-wip-us.apache.org/repos/asf/james-project/blob/a18a4488/mpt/impl/imap-mailbox/inmemory/src/test/java/org/apache/james/mpt/imapmailbox/inmemory/InMemoryFetchBodySection.java
----------------------------------------------------------------------
diff --git a/mpt/impl/imap-mailbox/inmemory/src/test/java/org/apache/james/mpt/imapmailbox/inmemory/InMemoryFetchBodySection.java b/mpt/impl/imap-mailbox/inmemory/src/test/java/org/apache/james/mpt/imapmailbox/inmemory/InMemoryFetchBodySection.java
index c2e1b8d..0862752 100644
--- a/mpt/impl/imap-mailbox/inmemory/src/test/java/org/apache/james/mpt/imapmailbox/inmemory/InMemoryFetchBodySection.java
+++ b/mpt/impl/imap-mailbox/inmemory/src/test/java/org/apache/james/mpt/imapmailbox/inmemory/InMemoryFetchBodySection.java
@@ -35,6 +35,7 @@ public class InMemoryFetchBodySection extends FetchBodySection {
     public void setUp() throws Exception {
         Injector injector = Guice.createInjector(new InMemoryMailboxTestModule());
         system = injector.getInstance(ImapHostSystem.class);
+        system.beforeTest();
         super.setUp();
     }
     

http://git-wip-us.apache.org/repos/asf/james-project/blob/a18a4488/mpt/impl/imap-mailbox/inmemory/src/test/java/org/apache/james/mpt/imapmailbox/inmemory/InMemoryFetchBodyStructure.java
----------------------------------------------------------------------
diff --git a/mpt/impl/imap-mailbox/inmemory/src/test/java/org/apache/james/mpt/imapmailbox/inmemory/InMemoryFetchBodyStructure.java b/mpt/impl/imap-mailbox/inmemory/src/test/java/org/apache/james/mpt/imapmailbox/inmemory/InMemoryFetchBodyStructure.java
index 5a51101..61051cc 100644
--- a/mpt/impl/imap-mailbox/inmemory/src/test/java/org/apache/james/mpt/imapmailbox/inmemory/InMemoryFetchBodyStructure.java
+++ b/mpt/impl/imap-mailbox/inmemory/src/test/java/org/apache/james/mpt/imapmailbox/inmemory/InMemoryFetchBodyStructure.java
@@ -35,6 +35,7 @@ public class InMemoryFetchBodyStructure extends FetchBodyStructure {
     public void setUp() throws Exception {
         Injector injector = Guice.createInjector(new InMemoryMailboxTestModule());
         system = injector.getInstance(ImapHostSystem.class);
+        system.beforeTest();
         super.setUp();
     }
     

http://git-wip-us.apache.org/repos/asf/james-project/blob/a18a4488/mpt/impl/imap-mailbox/inmemory/src/test/java/org/apache/james/mpt/imapmailbox/inmemory/InMemoryFetchHeaders.java
----------------------------------------------------------------------
diff --git a/mpt/impl/imap-mailbox/inmemory/src/test/java/org/apache/james/mpt/imapmailbox/inmemory/InMemoryFetchHeaders.java b/mpt/impl/imap-mailbox/inmemory/src/test/java/org/apache/james/mpt/imapmailbox/inmemory/InMemoryFetchHeaders.java
index c66d684..c9209eb 100644
--- a/mpt/impl/imap-mailbox/inmemory/src/test/java/org/apache/james/mpt/imapmailbox/inmemory/InMemoryFetchHeaders.java
+++ b/mpt/impl/imap-mailbox/inmemory/src/test/java/org/apache/james/mpt/imapmailbox/inmemory/InMemoryFetchHeaders.java
@@ -35,6 +35,7 @@ public class InMemoryFetchHeaders extends FetchHeaders {
     public void setUp() throws Exception {
         Injector injector = Guice.createInjector(new InMemoryMailboxTestModule());
         system = injector.getInstance(ImapHostSystem.class);
+        system.beforeTest();
         super.setUp();
     }
     

http://git-wip-us.apache.org/repos/asf/james-project/blob/a18a4488/mpt/impl/imap-mailbox/inmemory/src/test/java/org/apache/james/mpt/imapmailbox/inmemory/InMemoryListing.java
----------------------------------------------------------------------
diff --git a/mpt/impl/imap-mailbox/inmemory/src/test/java/org/apache/james/mpt/imapmailbox/inmemory/InMemoryListing.java b/mpt/impl/imap-mailbox/inmemory/src/test/java/org/apache/james/mpt/imapmailbox/inmemory/InMemoryListing.java
index 18845ab..b77315d 100644
--- a/mpt/impl/imap-mailbox/inmemory/src/test/java/org/apache/james/mpt/imapmailbox/inmemory/InMemoryListing.java
+++ b/mpt/impl/imap-mailbox/inmemory/src/test/java/org/apache/james/mpt/imapmailbox/inmemory/InMemoryListing.java
@@ -35,6 +35,7 @@ public class InMemoryListing extends Listing {
     public void setUp() throws Exception {
         Injector injector = Guice.createInjector(new InMemoryMailboxTestModule());
         system = injector.getInstance(ImapHostSystem.class);
+        system.beforeTest();
         super.setUp();
     }
     

http://git-wip-us.apache.org/repos/asf/james-project/blob/a18a4488/mpt/impl/imap-mailbox/inmemory/src/test/java/org/apache/james/mpt/imapmailbox/inmemory/InMemoryMailboxAnnotation.java
----------------------------------------------------------------------
diff --git a/mpt/impl/imap-mailbox/inmemory/src/test/java/org/apache/james/mpt/imapmailbox/inmemory/InMemoryMailboxAnnotation.java b/mpt/impl/imap-mailbox/inmemory/src/test/java/org/apache/james/mpt/imapmailbox/inmemory/InMemoryMailboxAnnotation.java
index c6833ca..7235fb2 100644
--- a/mpt/impl/imap-mailbox/inmemory/src/test/java/org/apache/james/mpt/imapmailbox/inmemory/InMemoryMailboxAnnotation.java
+++ b/mpt/impl/imap-mailbox/inmemory/src/test/java/org/apache/james/mpt/imapmailbox/inmemory/InMemoryMailboxAnnotation.java
@@ -35,6 +35,7 @@ public class InMemoryMailboxAnnotation extends MailboxAnnotation {
     public void setUp() throws Exception {
         Injector injector = Guice.createInjector(new InMemoryMailboxTestModule());
         system = injector.getInstance(ImapHostSystem.class);
+        system.beforeTest();
         super.setUp();
     }
     

http://git-wip-us.apache.org/repos/asf/james-project/blob/a18a4488/mpt/impl/imap-mailbox/inmemory/src/test/java/org/apache/james/mpt/imapmailbox/inmemory/InMemoryMailboxWithLongNameSuccess.java
----------------------------------------------------------------------
diff --git a/mpt/impl/imap-mailbox/inmemory/src/test/java/org/apache/james/mpt/imapmailbox/inmemory/InMemoryMailboxWithLongNameSuccess.java b/mpt/impl/imap-mailbox/inmemory/src/test/java/org/apache/james/mpt/imapmailbox/inmemory/InMemoryMailboxWithLongNameSuccess.java
index cd56144..29dce81 100644
--- a/mpt/impl/imap-mailbox/inmemory/src/test/java/org/apache/james/mpt/imapmailbox/inmemory/InMemoryMailboxWithLongNameSuccess.java
+++ b/mpt/impl/imap-mailbox/inmemory/src/test/java/org/apache/james/mpt/imapmailbox/inmemory/InMemoryMailboxWithLongNameSuccess.java
@@ -35,6 +35,7 @@ public class InMemoryMailboxWithLongNameSuccess extends MailboxWithLongNameSucce
     public void setUp() throws Exception {
         Injector injector = Guice.createInjector(new InMemoryMailboxTestModule());
         system = injector.getInstance(ImapHostSystem.class);
+        system.beforeTest();
         super.setUp();
     }
     

http://git-wip-us.apache.org/repos/asf/james-project/blob/a18a4488/mpt/impl/imap-mailbox/inmemory/src/test/java/org/apache/james/mpt/imapmailbox/inmemory/InMemoryMove.java
----------------------------------------------------------------------
diff --git a/mpt/impl/imap-mailbox/inmemory/src/test/java/org/apache/james/mpt/imapmailbox/inmemory/InMemoryMove.java b/mpt/impl/imap-mailbox/inmemory/src/test/java/org/apache/james/mpt/imapmailbox/inmemory/InMemoryMove.java
index 56afcdd..aa834f4 100644
--- a/mpt/impl/imap-mailbox/inmemory/src/test/java/org/apache/james/mpt/imapmailbox/inmemory/InMemoryMove.java
+++ b/mpt/impl/imap-mailbox/inmemory/src/test/java/org/apache/james/mpt/imapmailbox/inmemory/InMemoryMove.java
@@ -35,6 +35,7 @@ public class InMemoryMove extends Move {
     public void setUp() throws Exception {
         Injector injector = Guice.createInjector(new InMemoryMailboxTestModule());
         system = injector.getInstance(ImapHostSystem.class);
+        system.beforeTest();
         super.setUp();
     }
     


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


[11/13] james-project git commit: JAMES-2133 Switch from cassandraunit to cassandra in docker

Posted by ma...@apache.org.
 JAMES-2133 Switch from cassandraunit to cassandra in docker

	It allows to switch between versions easily.
	Most of the commit is actually fixing James Resource lifecycle


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

Branch: refs/heads/master
Commit: a18a44882d0bbb5766556771710dfa1893b997a0
Parents: 0efe1e3
Author: Matthieu Baechler <ma...@apache.org>
Authored: Thu Jun 29 11:27:04 2017 +0200
Committer: Matthieu Baechler <ma...@apache.org>
Committed: Sat Sep 2 07:58:48 2017 +0200

----------------------------------------------------------------------
 backends-common/cassandra/pom.xml               |  23 +-
 .../cassandra/CassandraConfiguration.java       | 292 -------------------
 .../cassandra/init/CassandraConfiguration.java  | 292 +++++++++++++++++++
 .../init/CassandraSessionConfiguration.java     |  29 ++
 .../cassandra/init/CassandraTableManager.java   |   1 +
 .../cassandra/init/CassandraTypesCreator.java   |   2 +-
 .../SessionWithInitializedTablesFactory.java    |  43 ++-
 .../cassandra/utils/CassandraUtils.java         |   2 +-
 .../backends/cassandra/CassandraCluster.java    |  52 ++--
 .../cassandra/CassandraConfigurationTest.java   | 232 ---------------
 .../cassandra/CassandraWaitStrategy.java        |  64 ++++
 .../backends/cassandra/DockerCassandraRule.java | 147 ++++++++++
 .../backends/cassandra/EmbeddedCassandra.java   |  50 ----
 .../init/CassandraConfigurationTest.java        | 233 +++++++++++++++
 .../init/CassandraTypeProviderTest.java         |  19 +-
 .../backends/cassandra/utils/PaggingTest.java   |  13 +-
 .../versions/CassandraSchemaVersionDAOTest.java |   8 +-
 .../src/test/resources/logback-test.xml         |  24 ++
 .../es/ClientProviderImplConnectionTest.java    |  10 +-
 .../AbstractSubscriptionManagerTest.java        |   4 -
 .../james/mailbox/MailboxManagerStressTest.java |   5 +-
 .../james/mailbox/MailboxManagerTest.java       |   6 +-
 mailbox/cassandra/pom.xml                       |  10 +-
 .../CassandraMailboxSessionMapperFactory.java   |   2 +-
 .../cassandra/mail/CassandraACLMapper.java      |   2 +-
 .../cassandra/mail/CassandraBlobsDAO.java       |   4 +-
 .../cassandra/mail/CassandraMailboxDAO.java     |   2 +-
 .../cassandra/mail/CassandraMailboxMapper.java  |   8 +-
 .../cassandra/mail/CassandraMessageDAO.java     |   6 +-
 .../mail/CassandraMessageIdMapper.java          |   2 +-
 .../cassandra/mail/CassandraMessageMapper.java  |   2 +-
 .../cassandra/mail/CassandraModSeqProvider.java |   2 +-
 .../cassandra/mail/CassandraUidProvider.java    |   2 +-
 .../CassandraCombinationManagerTest.java        |  59 +++-
 .../CassandraCombinationManagerTestSystem.java  |  17 +-
 .../CassandraMailboxManagerStressTest.java      |  49 ++--
 .../cassandra/CassandraMailboxManagerTest.java  |  54 ++--
 .../CassandraMessageIdManagerQuotaTest.java     |  62 +++-
 ...CassandraMessageIdManagerSideEffectTest.java |  56 +++-
 .../CassandraMessageIdManagerStorageTest.java   |  58 +++-
 .../CassandraMessageIdManagerTestSystem.java    |  26 +-
 .../CassandraSubscriptionManagerTest.java       |  33 ++-
 .../cassandra/CassandraTestSystemFixture.java   |  60 +---
 ...istributedMailboxDelegatingListenerTest.java |   6 +-
 ...CassandraMailboxPathRegistrerMapperTest.java |  20 +-
 .../cassandra/mail/CassandraACLMapperTest.java  |  10 +-
 .../mail/CassandraAnnotationMapperTest.java     |  51 +++-
 .../mail/CassandraApplicableFlagDAOTest.java    |   9 +-
 .../mail/CassandraAttachmentMapperTest.java     |  52 +++-
 .../cassandra/mail/CassandraBlobsDAOTest.java   |  22 +-
 .../mail/CassandraDeletedMessageDAOTest.java    |  19 +-
 .../mail/CassandraFirstUnseenDAOTest.java       |   9 +-
 .../mail/CassandraGenericMailboxMapperTest.java |  51 +++-
 .../mail/CassandraIndexTableHandlerTest.java    |   9 +-
 .../mail/CassandraMailboxCounterDAOTest.java    |   8 +-
 .../cassandra/mail/CassandraMailboxDAOTest.java |  11 +-
 .../CassandraMailboxManagerAttachmentTest.java  |  41 +--
 .../CassandraMailboxMapperConcurrencyTest.java  |  21 +-
 .../mail/CassandraMailboxMapperTest.java        |  17 +-
 .../mail/CassandraMailboxPathDAOTest.java       |   9 +-
 .../mail/CassandraMailboxRecentDAOTest.java     |   9 +-
 .../cassandra/mail/CassandraMapperProvider.java |  41 +--
 .../cassandra/mail/CassandraMessageDAOTest.java |  10 +-
 .../mail/CassandraMessageIdDAOTest.java         |   9 +-
 .../mail/CassandraMessageIdMapperTest.java      |  52 +++-
 .../CassandraMessageIdToImapUidDAOTest.java     |   9 +-
 .../mail/CassandraMessageMapperTest.java        |  51 +++-
 .../mail/CassandraMessageMoveTest.java          |  51 +++-
 ...assandraMessageWithAttachmentMapperTest.java |  51 +++-
 .../mail/CassandraModSeqProviderTest.java       |  15 +-
 .../mail/CassandraUidProviderTest.java          |  19 +-
 .../quota/CassandraCurrentQuotaManagerTest.java |  13 +-
 .../CassandraPerUserMaxQuotaManagerTest.java    |   8 +-
 .../user/CassandraSubscriptionMapperTest.java   |  14 +-
 .../src/test/resources/logback-test.xml         |  19 ++
 .../jcr/JCRMailboxManagerStressTest.java        |   6 +
 .../mailbox/jcr/JCRMailboxManagerTest.java      |   6 +
 .../mailbox/jcr/JCRSubscriptionManagerTest.java |  13 +
 .../mailbox/jpa/JPAMailboxManagerTest.java      |   6 +
 .../mailbox/jpa/JPASubscriptionManagerTest.java |   6 +
 .../jpa/JpaMailboxManagerStressTest.java        |   6 +
 .../mailbox/jpa/mail/JPAMapperProvider.java     |  10 -
 .../jpa/mail/JpaAnnotationMapperTest.java       |   6 +
 .../mailbox/jpa/mail/JpaMailboxMapperTest.java  |  12 +
 .../mailbox/jpa/mail/JpaMessageMapperTest.java  |  12 +
 ...mainUserMaildirMailboxManagerStressTest.java |   6 +
 .../DomainUserMaildirMailboxManagerTest.java    |   6 +
 ...FullUserMaildirMailboxManagerStressTest.java |   6 +
 .../FullUserMaildirMailboxManagerTest.java      |   6 +
 .../maildir/MaildirSubscriptionManagerTest.java |  13 +-
 .../UserMaildirMailboxManagerStressTest.java    |   6 +
 .../InMemoryCombinationManagerTest.java         |   6 +
 .../InMemoryCombinationManagerTestSystem.java   |   6 -
 .../InMemoryMessageIdManagerStorageTest.java    |   6 +
 .../InMemoryMessageIdManagerTestSystem.java     |   5 -
 .../MemoryMailboxManagerStressTest.java         |   7 +
 .../inmemory/MemoryMailboxManagerTest.java      |   7 +
 .../InMemoryMailboxManagerAttachmentTest.java   |   6 +-
 .../inmemory/mail/InMemoryMapperProvider.java   |  10 -
 .../mail/MemoryAnnotationMapperTest.java        |   7 +
 .../mail/MemoryAttachmentMapperTest.java        |   8 +
 .../inmemory/mail/MemoryMailboxMapperTest.java  |   7 +
 .../inmemory/mail/MemoryMessageMapperTest.java  |   7 +
 .../inmemory/mail/MemoryMessageMoveTest.java    |   6 +
 .../MemoryMessageWithAttachmentMapperTest.java  |   7 +
 .../store/AbstractCombinationManagerTest.java   |   8 +-
 .../AbstractMailboxManagerAttachmentTest.java   |  11 -
 .../AbstractMessageIdManagerQuotaTest.java      |   6 -
 .../AbstractMessageIdManagerSideEffectTest.java |   7 -
 .../AbstractMessageIdManagerStorageTest.java    |   8 -
 .../store/CombinationManagerTestSystem.java     |   1 -
 .../store/MessageIdManagerTestSystem.java       |   2 -
 .../StoreMessageIdManagerSideEffectTest.java    |   5 +
 .../store/StoreMessageIdManagerTestSystem.java  |   5 -
 .../store/mail/model/AnnotationMapperTest.java  |  12 +-
 .../store/mail/model/AttachmentMapperTest.java  |  11 +-
 .../store/mail/model/MailboxMapperTest.java     |  11 +-
 .../store/mail/model/MapperProvider.java        |   5 +-
 .../store/mail/model/MessageIdMapperTest.java   |  12 +-
 .../store/mail/model/MessageMapperTest.java     |  12 +-
 .../store/mail/model/MessageMoveTest.java       |  12 +-
 .../model/MessageWithAttachmentMapperTest.java  |  12 +-
 .../james/mailbox/tika/TikaContainer.java       |   4 +-
 .../org/apache/james/mpt/api/HostSystem.java    |   4 -
 .../mpt/script/SimpleScriptedTestProtocol.java  |   2 +-
 mpt/impl/imap-mailbox/cassandra/pom.xml         |   5 -
 .../cassandra/CassandraAuthenticatePlain.java   |   9 +-
 .../cassandra/CassandraAuthenticatedState.java  |   9 +-
 .../cassandra/CassandraConcurrentSessions.java  |   9 +-
 .../cassandra/CassandraCondstore.java           |   9 +-
 .../imapmailbox/cassandra/CassandraCopy.java    |   9 +-
 .../imapmailbox/cassandra/CassandraEvents.java  |   9 +-
 .../imapmailbox/cassandra/CassandraExpunge.java |   9 +-
 .../imapmailbox/cassandra/CassandraFetch.java   |   9 +-
 .../cassandra/CassandraFetchBodySection.java    |   9 +-
 .../cassandra/CassandraFetchBodyStructure.java  |   9 +-
 .../cassandra/CassandraFetchHeaders.java        |   9 +-
 .../imapmailbox/cassandra/CassandraListing.java |   9 +-
 .../cassandra/CassandraMailboxAnnotation.java   |   9 +-
 .../cassandra/CassandraMailboxTestModule.java   |  10 +-
 .../CassandraMailboxWithLongNameError.java      |   9 +-
 .../imapmailbox/cassandra/CassandraMove.java    |   9 +-
 .../CassandraNonAuthenticatedState.java         |   9 +-
 .../cassandra/CassandraPartialFetch.java        |   9 +-
 .../cassandra/CassandraQuotaTest.java           |   9 +-
 .../imapmailbox/cassandra/CassandraRename.java  |   9 +-
 .../imapmailbox/cassandra/CassandraSearch.java  |   9 +-
 .../cassandra/CassandraSecurity.java            |   9 +-
 .../imapmailbox/cassandra/CassandraSelect.java  |   9 +-
 .../cassandra/CassandraSelectedInbox.java       |   9 +-
 .../cassandra/CassandraSelectedState.java       |   9 +-
 .../cassandra/CassandraUidSearch.java           |   9 +-
 .../cassandra/CassandraUidSearchOnIndex.java    |   9 +-
 .../cassandra/CassandraUserFlagsSupport.java    |   9 +-
 .../cassandra/host/CassandraHostSystem.java     |  30 +-
 .../james/mpt/host/JamesImapHostSystem.java     |  41 +--
 .../mpt/imapmailbox/suite/UidSearchOnIndex.java |   2 -
 .../imap/scripts/CreateErrorWithLongName.test   |   2 +-
 .../host/ElasticSearchHostSystem.java           |   6 +-
 .../hbase/HBaseAuthenticatePlain.java           |   1 +
 .../hbase/HBaseAuthenticatedState.java          |   1 +
 .../hbase/HBaseConcurrentSessions.java          |   1 +
 .../mpt/imapmailbox/hbase/HBaseCondstore.java   |   1 +
 .../james/mpt/imapmailbox/hbase/HBaseCopy.java  |   1 +
 .../mpt/imapmailbox/hbase/HBaseEvents.java      |   1 +
 .../mpt/imapmailbox/hbase/HBaseExpunge.java     |   1 +
 .../james/mpt/imapmailbox/hbase/HBaseFetch.java |   1 +
 .../hbase/HBaseFetchBodySection.java            |   1 +
 .../hbase/HBaseFetchBodyStructure.java          |   1 +
 .../imapmailbox/hbase/HBaseFetchHeaders.java    |   1 +
 .../mpt/imapmailbox/hbase/HBaseListing.java     |   1 +
 .../hbase/HBaseMailboxAnnotation.java           |   1 +
 .../hbase/HBaseMailboxWithLongNameError.java    |   1 +
 .../hbase/HBaseNonAuthenticatedState.java       |   1 +
 .../imapmailbox/hbase/HBasePartialFetch.java    |   1 +
 .../mpt/imapmailbox/hbase/HBaseQuotaTest.java   |   1 +
 .../mpt/imapmailbox/hbase/HBaseRename.java      |   1 +
 .../mpt/imapmailbox/hbase/HBaseSearch.java      |   1 +
 .../mpt/imapmailbox/hbase/HBaseSecurity.java    |   1 +
 .../mpt/imapmailbox/hbase/HBaseSelect.java      |   1 +
 .../imapmailbox/hbase/HBaseSelectedInbox.java   |   1 +
 .../imapmailbox/hbase/HBaseSelectedState.java   |   1 +
 .../mpt/imapmailbox/hbase/HBaseUidSearch.java   |   1 +
 .../hbase/HBaseUidSearchOnIndex.java            |   1 +
 .../hbase/HBaseUserFlagsSupport.java            |   1 +
 .../imapmailbox/hbase/host/HBaseHostSystem.java |  29 +-
 .../hbase/src/test/resources/logback-test.xml   |  22 ++
 .../inmemory/InMemoryAuthenticatePlain.java     |   1 +
 .../inmemory/InMemoryAuthenticatedState.java    |   1 +
 .../inmemory/InMemoryConcurrentSessions.java    |   1 +
 .../imapmailbox/inmemory/InMemoryCondstore.java |   1 +
 .../mpt/imapmailbox/inmemory/InMemoryCopy.java  |   1 +
 .../imapmailbox/inmemory/InMemoryEvents.java    |   1 +
 .../imapmailbox/inmemory/InMemoryExpunge.java   |   1 +
 .../mpt/imapmailbox/inmemory/InMemoryFetch.java |   1 +
 .../inmemory/InMemoryFetchBodySection.java      |   1 +
 .../inmemory/InMemoryFetchBodyStructure.java    |   1 +
 .../inmemory/InMemoryFetchHeaders.java          |   1 +
 .../imapmailbox/inmemory/InMemoryListing.java   |   1 +
 .../inmemory/InMemoryMailboxAnnotation.java     |   1 +
 .../InMemoryMailboxWithLongNameSuccess.java     |   1 +
 .../mpt/imapmailbox/inmemory/InMemoryMove.java  |   1 +
 .../inmemory/InMemoryNonAuthenticatedState.java |   1 +
 .../inmemory/InMemoryPartialFetch.java          |   1 +
 .../imapmailbox/inmemory/InMemoryQuotaTest.java |   1 +
 .../imapmailbox/inmemory/InMemoryRename.java    |   1 +
 .../imapmailbox/inmemory/InMemorySearch.java    |   1 +
 .../imapmailbox/inmemory/InMemorySecurity.java  |   1 +
 .../imapmailbox/inmemory/InMemorySelect.java    |   1 +
 .../inmemory/InMemorySelectedInbox.java         |   1 +
 .../inmemory/InMemorySelectedState.java         |   1 +
 .../imapmailbox/inmemory/InMemoryUidSearch.java |   1 +
 .../inmemory/InMemoryUidSearchOnIndex.java      |   1 +
 .../inmemory/InMemoryUserFlagsSupport.java      |   1 +
 .../inmemory/host/InMemoryHostSystem.java       |  11 +-
 .../mpt/imapmailbox/jcr/host/JCRHostSystem.java |   6 +-
 .../imapmailbox/jpa/JpaAuthenticatePlain.java   |   1 +
 .../imapmailbox/jpa/JpaAuthenticatedState.java  |   1 +
 .../imapmailbox/jpa/JpaConcurrentSessions.java  |   1 +
 .../james/mpt/imapmailbox/jpa/JpaCondstore.java |   1 +
 .../james/mpt/imapmailbox/jpa/JpaCopy.java      |   1 +
 .../james/mpt/imapmailbox/jpa/JpaEvents.java    |   1 +
 .../james/mpt/imapmailbox/jpa/JpaExpunge.java   |   1 +
 .../james/mpt/imapmailbox/jpa/JpaFetch.java     |   1 +
 .../imapmailbox/jpa/JpaFetchBodySection.java    |   1 +
 .../imapmailbox/jpa/JpaFetchBodyStructure.java  |   1 +
 .../mpt/imapmailbox/jpa/JpaFetchHeaders.java    |   1 +
 .../james/mpt/imapmailbox/jpa/JpaListing.java   |   1 +
 .../imapmailbox/jpa/JpaMailboxAnnotation.java   |   1 +
 .../jpa/JpaNonAuthenticatedState.java           |   1 +
 .../mpt/imapmailbox/jpa/JpaPartialFetch.java    |   1 +
 .../james/mpt/imapmailbox/jpa/JpaQuotaTest.java |   1 +
 .../james/mpt/imapmailbox/jpa/JpaRename.java    |   1 +
 .../james/mpt/imapmailbox/jpa/JpaSearch.java    |   1 +
 .../james/mpt/imapmailbox/jpa/JpaSecurity.java  |   1 +
 .../james/mpt/imapmailbox/jpa/JpaSelect.java    |   1 +
 .../mpt/imapmailbox/jpa/JpaSelectedInbox.java   |   1 +
 .../mpt/imapmailbox/jpa/JpaSelectedState.java   |   1 +
 .../james/mpt/imapmailbox/jpa/JpaUidSearch.java |   1 +
 .../imapmailbox/jpa/JpaUidSearchOnIndex.java    |   1 +
 .../imapmailbox/jpa/JpaUserFlagsSupport.java    |   1 +
 .../mpt/imapmailbox/jpa/host/JPAHostSystem.java |  25 +-
 .../host/LuceneSearchHostSystem.java            |   4 +-
 .../maildir/MaildirAuthenticatePlain.java       |   1 +
 .../maildir/MaildirAuthenticatedState.java      |   1 +
 .../maildir/MaildirConcurrentSessions.java      |   1 +
 .../imapmailbox/maildir/MaildirCondstore.java   |   1 +
 .../mpt/imapmailbox/maildir/MaildirCopy.java    |   1 +
 .../mpt/imapmailbox/maildir/MaildirEvents.java  |   1 +
 .../mpt/imapmailbox/maildir/MaildirExpunge.java |   1 +
 .../mpt/imapmailbox/maildir/MaildirFetch.java   |   1 +
 .../maildir/MaildirFetchBodySection.java        |   1 +
 .../maildir/MaildirFetchBodyStructure.java      |   1 +
 .../maildir/MaildirFetchHeaders.java            |   1 +
 .../mpt/imapmailbox/maildir/MaildirListing.java |   1 +
 .../maildir/MaildirNonAuthenticatedState.java   |   1 +
 .../maildir/MaildirPartialFetch.java            |   1 +
 .../mpt/imapmailbox/maildir/MaildirRename.java  |   1 +
 .../mpt/imapmailbox/maildir/MaildirSearch.java  |   1 +
 .../imapmailbox/maildir/MaildirSecurity.java    |   1 +
 .../mpt/imapmailbox/maildir/MaildirSelect.java  |   1 +
 .../maildir/MaildirSelectedInbox.java           |   1 +
 .../maildir/MaildirSelectedState.java           |   1 +
 .../imapmailbox/maildir/MaildirUidSearch.java   |   1 +
 .../maildir/MaildirUidSearchOnIndex.java        |   1 +
 .../maildir/host/MaildirHostSystem.java         |   9 +-
 mpt/impl/managesieve/cassandra/pom.xml          |   6 +-
 .../cassandra/CassandraAuthenticateTest.java    |   6 +-
 .../cassandra/CassandraCapabilityTest.java      |   6 +-
 .../cassandra/CassandraCheckScriptTest.java     |   6 +-
 .../cassandra/CassandraDeleteScriptTest.java    |   6 +-
 .../cassandra/CassandraGetScriptTest.java       |   6 +-
 .../cassandra/CassandraHaveSpaceTest.java       |   6 +-
 .../cassandra/CassandraListScriptsTest.java     |   6 +-
 .../cassandra/CassandraLogoutTest.java          |   7 +-
 .../managesieve/cassandra/CassandraModule.java  |  16 +-
 .../cassandra/CassandraNoopTest.java            |   6 +-
 .../cassandra/CassandraPutScriptTest.java       |   6 +-
 .../cassandra/CassandraRenameScriptTest.java    |   6 +-
 .../cassandra/CassandraSetActiveTest.java       |   6 +-
 .../cassandra/CassandraStartTlsTest.java        |   6 +-
 .../cassandra/CassandraUnauthenticatedTest.java |   6 +-
 .../cassandra/host/CassandraHostSystem.java     |  40 +--
 mpt/impl/managesieve/core/pom.xml               |   4 +
 .../mpt/host/JamesManageSieveHostSystem.java    |  36 +--
 .../managesieve/file/host/FileHostSystem.java   |  16 +-
 mpt/impl/smtp/cassandra/pom.xml                 |   5 -
 .../mpt/smtp/CassandraForwardSmtpTest.java      |   7 +-
 .../smtp/CassandraSmtpStarttlsCommandTest.java  |   7 +-
 .../apache/james/mpt/smtp/SmtpTestModule.java   |  10 +-
 .../smtp/host/CassandraJamesSmtpHostSystem.java |  21 +-
 .../apache/james/mpt/smtp/ForwardSmtpTest.java  |   4 +-
 server/container/guice/cassandra-guice/pom.xml  |   6 +-
 .../mailbox/CassandraSessionConfiguration.java  |  29 --
 .../modules/mailbox/CassandraSessionModule.java | 147 +---------
 .../mailbox/ResilientClusterProvider.java       | 178 +++++++++++
 .../apache/james/CassandraJamesServerTest.java  |   6 +-
 .../org/apache/james/CassandraJmapTestRule.java |   3 +-
 .../james/CassandraLogConfigurationTest.java    |   8 +-
 .../CassandraMessageIdManagerInjectionTest.java |   7 +-
 .../org/apache/james/CassandraNodeConfTest.java |  12 +-
 .../james/CassandraVersionCheckingTest.java     |  10 +
 .../org/apache/james/CassandraWithTikaTest.java |   2 +-
 .../james/DefaultCassandraJamesServerTest.java  |   6 +-
 .../org/apache/james/DockerCassandraRule.java   |  66 ++---
 .../apache/james/DockerElasticSearchRule.java   |  14 +-
 .../java/org/apache/james/ESReporterTest.java   |   2 +-
 .../org/apache/james/EmbeddedCassandraRule.java |  75 -----
 .../james/JamesCapabilitiesServerTest.java      |  29 +-
 .../JamesServerWithRetryConnectionTest.java     |  21 +-
 .../modules/CassandraJmapServerModule.java      |  17 +-
 .../mailbox/CassandraSessionModuleTest.java     |   2 +-
 .../guice/cassandra-ldap-guice/pom.xml          |  11 +-
 .../apache/james/CassandraLdapJmapTestRule.java |   2 +-
 .../apache/james/metric/es/ESReporterTest.java  |   4 +-
 .../util/streams/SwarmGenericContainer.java     |  21 +-
 server/data/data-cassandra/pom.xml              |   9 +-
 .../cassandra/CassandraDomainListTest.java      |  18 +-
 .../CassandraRecipientRewriteTableTest.java     |  16 +-
 .../james/rrt/cassandra/CassandraStepdefs.java  |   4 +-
 .../james/rrt/cassandra/RewriteTablesTest.java  |   4 +
 .../cassandra/CassandraActiveScriptDAOTest.java |  10 +-
 .../sieve/cassandra/CassandraSieveDAOTest.java  |  14 +-
 .../cassandra/CassandraSieveQuotaDAOTest.java   |  12 +-
 .../cassandra/CassandraSieveRepositoryTest.java |  27 +-
 .../cassandra/CassandraUsersRepositoryTest.java |  17 +-
 .../rrt/file/XMLRecipientRewriteTableTest.java  |  10 +-
 .../file/SieveFileRepositoryTest.java           |  12 +-
 .../domainlist/hbase/HBaseDomainListTest.java   |  15 +
 .../hbase/HBaseRecipientRewriteTableTest.java   |  11 +-
 .../jdbc/JDBCMailRepositoryTest.java            |   6 -
 .../rrt/jdbc/JDBCRecipientRewriteTableTest.java |  13 +
 .../jdbc/DefaultUsersJdbcRepositoryTest.java    |  12 +
 .../user/jdbc/JamesUsersJdbcRepositoryTest.java |  13 +
 server/data/data-jmap-cassandra/pom.xml         |  10 +-
 .../CassandraAccessTokenRepositoryTest.java     |  26 +-
 .../CassandraNotificationRegistryTest.java      |  21 +-
 .../CassandraVacationRepositoryTest.java        |  22 +-
 .../api/access/AccessTokenRepositoryTest.java   |   4 +-
 .../AbstractVacationRepositoryTest.java         |   2 +-
 .../access/MemoryAccessTokenRepositoryTest.java |   7 +
 .../james/domainlist/jpa/JPADomainListTest.java |  16 +
 .../rrt/jpa/JPARecipientRewriteTableTest.java   |  12 +
 .../james/user/jpa/JpaUsersRepositoryTest.java  |   9 +-
 .../james/user/ldap/LdapGenericContainer.java   |  10 +-
 .../ldap/ReadOnlyUsersLDAPRepositoryTest.java   |   4 +-
 .../domainlist/lib/AbstractDomainListTest.java  |  25 --
 .../lib/AbstractRecipientRewriteTableTest.java  |   6 +-
 .../lib/AbstractSieveRepositoryTest.java        |  10 -
 .../user/lib/AbstractUsersRepositoryTest.java   |   4 -
 .../domainlist/memory/MemoryDomainListTest.java |   6 +
 .../memory/MemoryRecipientRewriteTableTest.java |  12 +
 .../user/memory/MemoryUsersRepositoryTest.java  |   6 +
 .../james/transport/mailets/amqp/AmqpRule.java  |   2 +-
 .../cassandra-jmap-integration-testing/pom.xml  |  11 +-
 .../CassandraGetMailboxesMethodTest.java        |   7 +-
 .../CassandraGetMessageListMethodTest.java      |   7 +-
 .../CassandraGetVacationResponseTest.java       |   7 +-
 .../CassandraJmapAuthenticationTest.java        |   7 +-
 .../CassandraSetMailboxesMethodTest.java        |  12 +-
 .../CassandraSetMessagesMethodTest.java         |   7 +-
 .../CassandraSetVacationResponseTest.java       |   7 +-
 ...ssandraUserProvisionningConcurrencyTest.java |   8 +-
 .../CassandraVacationIntegrationTest.java       |   6 +-
 .../CassandraVacationRelayIntegrationTest.java  |   9 +-
 .../cassandra/cucumber/CassandraStepdefs.java   |  10 +-
 .../org/apache/james/jmap/ContainerTest.java    |   4 +-
 .../jmap/VacationRelayIntegrationTest.java      |   3 +-
 .../protocols/webadmin-integration-test/pom.xml |  11 +-
 .../integration/JwtFilterIntegrationTest.java   |   7 +-
 .../WebAdminServerIntegrationTest.java          |   7 +-
 371 files changed, 3265 insertions(+), 1956 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/james-project/blob/a18a4488/backends-common/cassandra/pom.xml
----------------------------------------------------------------------
diff --git a/backends-common/cassandra/pom.xml b/backends-common/cassandra/pom.xml
index 6b57226..8647f80 100644
--- a/backends-common/cassandra/pom.xml
+++ b/backends-common/cassandra/pom.xml
@@ -40,6 +40,16 @@
             <artifactId>james-server-util-java8</artifactId>
         </dependency>
         <dependency>
+            <groupId>${project.groupId}</groupId>
+            <artifactId>james-server-util-java8</artifactId>
+            <type>test-jar</type>
+        </dependency>
+        <dependency>
+            <groupId>ch.qos.logback</groupId>
+            <artifactId>logback-classic</artifactId>
+            <scope>test</scope>
+        </dependency>
+        <dependency>
             <groupId>com.datastax.cassandra</groupId>
             <artifactId>cassandra-driver-core</artifactId>
             <version>3.2.0</version>
@@ -66,6 +76,11 @@
             <artifactId>javax.inject</artifactId>
         </dependency>
         <dependency>
+            <groupId>junit</groupId>
+            <artifactId>junit</artifactId>
+            <scope>test</scope>
+        </dependency>
+        <dependency>
             <groupId>net.javacrumbs.future-converter</groupId>
             <artifactId>future-converter-java8-guava</artifactId>
             <version>0.3.0</version>
@@ -81,13 +96,13 @@
             <scope>test</scope>
         </dependency>
         <dependency>
-            <groupId>org.cassandraunit</groupId>
-            <artifactId>cassandra-unit</artifactId>
+            <groupId>org.mockito</groupId>
+            <artifactId>mockito-core</artifactId>
             <scope>test</scope>
         </dependency>
         <dependency>
-            <groupId>org.mockito</groupId>
-            <artifactId>mockito-core</artifactId>
+            <groupId>org.testcontainers</groupId>
+            <artifactId>testcontainers</artifactId>
             <scope>test</scope>
         </dependency>
     </dependencies>

http://git-wip-us.apache.org/repos/asf/james-project/blob/a18a4488/backends-common/cassandra/src/main/java/org/apache/james/backends/cassandra/CassandraConfiguration.java
----------------------------------------------------------------------
diff --git a/backends-common/cassandra/src/main/java/org/apache/james/backends/cassandra/CassandraConfiguration.java b/backends-common/cassandra/src/main/java/org/apache/james/backends/cassandra/CassandraConfiguration.java
deleted file mode 100644
index f976242..0000000
--- a/backends-common/cassandra/src/main/java/org/apache/james/backends/cassandra/CassandraConfiguration.java
+++ /dev/null
@@ -1,292 +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.backends.cassandra;
-
-import java.util.Objects;
-import java.util.Optional;
-
-import com.google.common.annotations.VisibleForTesting;
-import com.google.common.base.MoreObjects;
-import com.google.common.base.Preconditions;
-
-public class CassandraConfiguration {
-    public static final CassandraConfiguration DEFAULT_CONFIGURATION = builder().build();
-
-    public static final int DEFAULT_MESSAGE_CHUNK_SIZE_ON_READ = 100;
-    public static final int DEFAULT_EXPUNGE_BATCH_SIZE = 100;
-    public static final int DEFAULT_UPDATE_FLAGS_BATCH_SIZE = 20;
-    public static final int DEFAULT_FLAGS_UPDATE_MESSAGE_MAX_RETRY = 1000;
-    public static final int DEFAULT_FLAGS_UPDATE_MESSAGE_ID_MAX_RETRY = 1000;
-    public static final int DEFAULT_MODSEQ_MAX_RETRY = 100000;
-    public static final int DEFAULT_UID_MAX_RETRY = 100000;
-    public static final int DEFAULT_ACL_MAX_RETRY = 1000;
-    public static final int DEFAULT_FETCH_NEXT_PAGE_ADVANCE_IN_ROW = 100;
-    public static final int DEFAULT_BLOB_PART_SIZE = 100 * 1024;
-
-    public static class Builder {
-        private Optional<Integer> messageReadChunkSize = Optional.empty();
-        private Optional<Integer> expungeChunkSize = Optional.empty();
-        private Optional<Integer> flagsUpdateChunkSize = Optional.empty();
-        private Optional<Integer> flagsUpdateMessageIdMaxRetry = Optional.empty();
-        private Optional<Integer> flagsUpdateMessageMaxRetry = Optional.empty();
-        private Optional<Integer> modSeqMaxRetry = Optional.empty();
-        private Optional<Integer> uidMaxRetry = Optional.empty();
-        private Optional<Integer> aclMaxRetry = Optional.empty();
-        private Optional<Integer> fetchNextPageInAdvanceRow = Optional.empty();
-        private Optional<Integer> blobPartSize = Optional.empty();
-
-        public Builder messageReadChunkSize(int value) {
-            Preconditions.checkArgument(value > 0, "messageReadChunkSize needs to be strictly positive");
-            this.messageReadChunkSize = Optional.of(value);
-            return this;
-        }
-
-        public Builder expungeChunkSize(int value) {
-            Preconditions.checkArgument(value > 0, "expungeChunkSize needs to be strictly positive");
-            this.expungeChunkSize = Optional.of(value);
-            return this;
-        }
-
-        public Builder flagsUpdateChunkSize(int value) {
-            Preconditions.checkArgument(value > 0, "flagsUpdateChunkSize needs to be strictly positive");
-            this.flagsUpdateChunkSize = Optional.of(value);
-            return this;
-        }
-
-        public Builder flagsUpdateMessageIdMaxRetry(int value) {
-            Preconditions.checkArgument(value > 0, "flagsUpdateMessageIdMaxRetry needs to be strictly positive");
-            this.flagsUpdateMessageIdMaxRetry = Optional.of(value);
-            return this;
-        }
-
-        public Builder flagsUpdateMessageMaxRetry(int value) {
-            Preconditions.checkArgument(value > 0, "flagsUpdateMessageMaxRetry needs to be strictly positive");
-            this.flagsUpdateMessageMaxRetry = Optional.of(value);
-            return this;
-        }
-
-        public Builder modSeqMaxRetry(int value) {
-            Preconditions.checkArgument(value > 0, "modSeqMaxRetry needs to be strictly positive");
-            this.modSeqMaxRetry = Optional.of(value);
-            return this;
-        }
-
-        public Builder uidMaxRetry(int value) {
-            Preconditions.checkArgument(value > 0, "uidMaxRetry needs to be strictly positive");
-            this.uidMaxRetry = Optional.of(value);
-            return this;
-        }
-
-        public Builder aclMaxRetry(int value) {
-            Preconditions.checkArgument(value > 0, "aclMaxRetry needs to be strictly positive");
-            this.aclMaxRetry = Optional.of(value);
-            return this;
-        }
-
-        public Builder fetchNextPageInAdvanceRow(int value) {
-            Preconditions.checkArgument(value > 0, "fetchNextPageInAdvanceRow needs to be strictly positive");
-            this.fetchNextPageInAdvanceRow = Optional.of(value);
-            return this;
-        }
-
-        public Builder blobPartSize(int value) {
-            Preconditions.checkArgument(value > 0, "blobPartSize needs to be strictly positive");
-            this.blobPartSize = Optional.of(value);
-            return this;
-        }
-
-        public Builder messageReadChunkSize(Optional<Integer> value) {
-            value.ifPresent(this::messageReadChunkSize);
-            return this;
-        }
-
-        public Builder expungeChunkSize(Optional<Integer> value) {
-            value.ifPresent(this::expungeChunkSize);
-            return this;
-        }
-
-        public Builder flagsUpdateChunkSize(Optional<Integer> value) {
-            value.ifPresent(this::flagsUpdateChunkSize);
-            return this;
-        }
-
-        public Builder flagsUpdateMessageIdMaxRetry(Optional<Integer> value) {
-            value.ifPresent(this::flagsUpdateMessageIdMaxRetry);
-            return this;
-        }
-
-        public Builder flagsUpdateMessageMaxRetry(Optional<Integer> value) {
-            value.ifPresent(this::flagsUpdateMessageMaxRetry);
-            return this;
-        }
-
-        public Builder modSeqMaxRetry(Optional<Integer> value) {
-            value.ifPresent(this::modSeqMaxRetry);
-            return this;
-        }
-
-        public Builder uidMaxRetry(Optional<Integer> value) {
-            value.ifPresent(this::uidMaxRetry);
-            return this;
-        }
-
-        public Builder aclMaxRetry(Optional<Integer> value) {
-            value.ifPresent(this::aclMaxRetry);
-            return this;
-        }
-
-        public Builder fetchNextPageInAdvanceRow(Optional<Integer> value) {
-            value.ifPresent(this::fetchNextPageInAdvanceRow);
-            return this;
-        }
-
-        public Builder blobPartSize(Optional<Integer> value) {
-            value.ifPresent(this::blobPartSize);
-            return this;
-        }
-
-        public CassandraConfiguration build() {
-            return new CassandraConfiguration(aclMaxRetry.orElse(DEFAULT_ACL_MAX_RETRY),
-                messageReadChunkSize.orElse(DEFAULT_MESSAGE_CHUNK_SIZE_ON_READ),
-                expungeChunkSize.orElse(DEFAULT_EXPUNGE_BATCH_SIZE),
-                flagsUpdateChunkSize.orElse(DEFAULT_UPDATE_FLAGS_BATCH_SIZE),
-                flagsUpdateMessageIdMaxRetry.orElse(DEFAULT_FLAGS_UPDATE_MESSAGE_ID_MAX_RETRY),
-                flagsUpdateMessageMaxRetry.orElse(DEFAULT_FLAGS_UPDATE_MESSAGE_MAX_RETRY),
-                modSeqMaxRetry.orElse(DEFAULT_MODSEQ_MAX_RETRY),
-                uidMaxRetry.orElse(DEFAULT_UID_MAX_RETRY),
-                fetchNextPageInAdvanceRow.orElse(DEFAULT_FETCH_NEXT_PAGE_ADVANCE_IN_ROW),
-                blobPartSize.orElse(DEFAULT_BLOB_PART_SIZE));
-        }
-    }
-
-    public static Builder builder() {
-        return new Builder();
-    }
-
-    private final int messageReadChunkSize;
-    private final int expungeChunkSize;
-    private final int flagsUpdateChunkSize;
-    private final int flagsUpdateMessageIdMaxRetry;
-    private final int flagsUpdateMessageMaxRetry;
-    private final int modSeqMaxRetry;
-    private final int uidMaxRetry;
-    private final int aclMaxRetry;
-    private final int fetchNextPageInAdvanceRow;
-    private final int blobPartSize;
-
-    @VisibleForTesting
-    CassandraConfiguration(int aclMaxRetry, int messageReadChunkSize, int expungeChunkSize,
-                           int flagsUpdateChunkSize, int flagsUpdateMessageIdMaxRetry, int flagsUpdateMessageMaxRetry,
-                           int modSeqMaxRetry, int uidMaxRetry, int fetchNextPageInAdvanceRow,
-                           int blobPartSize) {
-        this.aclMaxRetry = aclMaxRetry;
-        this.messageReadChunkSize = messageReadChunkSize;
-        this.expungeChunkSize = expungeChunkSize;
-        this.flagsUpdateMessageIdMaxRetry = flagsUpdateMessageIdMaxRetry;
-        this.flagsUpdateMessageMaxRetry = flagsUpdateMessageMaxRetry;
-        this.modSeqMaxRetry = modSeqMaxRetry;
-        this.uidMaxRetry = uidMaxRetry;
-        this.fetchNextPageInAdvanceRow = fetchNextPageInAdvanceRow;
-        this.flagsUpdateChunkSize = flagsUpdateChunkSize;
-        this.blobPartSize = blobPartSize;
-    }
-
-    public int getBlobPartSize() {
-        return blobPartSize;
-    }
-
-    public int getFlagsUpdateChunkSize() {
-        return flagsUpdateChunkSize;
-    }
-
-    public int getAclMaxRetry() {
-        return aclMaxRetry;
-    }
-
-    public int getMessageReadChunkSize() {
-        return messageReadChunkSize;
-    }
-
-    public int getExpungeChunkSize() {
-        return expungeChunkSize;
-    }
-
-    public int getFlagsUpdateMessageIdMaxRetry() {
-        return flagsUpdateMessageIdMaxRetry;
-    }
-
-    public int getFlagsUpdateMessageMaxRetry() {
-        return flagsUpdateMessageMaxRetry;
-    }
-
-    public int getModSeqMaxRetry() {
-        return modSeqMaxRetry;
-    }
-
-    public int getUidMaxRetry() {
-        return uidMaxRetry;
-    }
-
-    public int getFetchNextPageInAdvanceRow() {
-        return fetchNextPageInAdvanceRow;
-    }
-
-    @Override
-    public final boolean equals(Object o) {
-        if (o instanceof CassandraConfiguration) {
-            CassandraConfiguration that = (CassandraConfiguration) o;
-
-            return Objects.equals(this.aclMaxRetry, that.aclMaxRetry)
-                && Objects.equals(this.messageReadChunkSize, that.messageReadChunkSize)
-                && Objects.equals(this.expungeChunkSize, that.expungeChunkSize)
-                && Objects.equals(this.flagsUpdateMessageIdMaxRetry, that.flagsUpdateMessageIdMaxRetry)
-                && Objects.equals(this.flagsUpdateMessageMaxRetry, that.flagsUpdateMessageMaxRetry)
-                && Objects.equals(this.modSeqMaxRetry, that.modSeqMaxRetry)
-                && Objects.equals(this.uidMaxRetry, that.uidMaxRetry)
-                && Objects.equals(this.flagsUpdateChunkSize, that.flagsUpdateChunkSize)
-                && Objects.equals(this.fetchNextPageInAdvanceRow, that.fetchNextPageInAdvanceRow)
-                && Objects.equals(this.blobPartSize, that.blobPartSize);
-        }
-        return false;
-    }
-
-    @Override
-    public final int hashCode() {
-        return Objects.hash(aclMaxRetry, messageReadChunkSize, expungeChunkSize, flagsUpdateMessageIdMaxRetry,
-            flagsUpdateMessageMaxRetry, modSeqMaxRetry, uidMaxRetry, fetchNextPageInAdvanceRow, flagsUpdateChunkSize,
-            blobPartSize);
-    }
-
-    @Override
-    public String toString() {
-        return MoreObjects.toStringHelper(this)
-            .add("aclMaxRetry", aclMaxRetry)
-            .add("messageReadChunkSize", messageReadChunkSize)
-            .add("expungeChunkSize", expungeChunkSize)
-            .add("flagsUpdateMessageIdMaxRetry", flagsUpdateMessageIdMaxRetry)
-            .add("flagsUpdateMessageMaxRetry", flagsUpdateMessageMaxRetry)
-            .add("modSeqMaxRetry", modSeqMaxRetry)
-            .add("fetchNextPageInAdvanceRow", fetchNextPageInAdvanceRow)
-            .add("flagsUpdateChunkSize", flagsUpdateChunkSize)
-            .add("uidMaxRetry", uidMaxRetry)
-            .add("blobPartSize", blobPartSize)
-            .toString();
-    }
-}

http://git-wip-us.apache.org/repos/asf/james-project/blob/a18a4488/backends-common/cassandra/src/main/java/org/apache/james/backends/cassandra/init/CassandraConfiguration.java
----------------------------------------------------------------------
diff --git a/backends-common/cassandra/src/main/java/org/apache/james/backends/cassandra/init/CassandraConfiguration.java b/backends-common/cassandra/src/main/java/org/apache/james/backends/cassandra/init/CassandraConfiguration.java
new file mode 100644
index 0000000..17945e8
--- /dev/null
+++ b/backends-common/cassandra/src/main/java/org/apache/james/backends/cassandra/init/CassandraConfiguration.java
@@ -0,0 +1,292 @@
+/****************************************************************
+ * 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.backends.cassandra.init;
+
+import java.util.Objects;
+import java.util.Optional;
+
+import com.google.common.annotations.VisibleForTesting;
+import com.google.common.base.MoreObjects;
+import com.google.common.base.Preconditions;
+
+public class CassandraConfiguration {
+    public static final CassandraConfiguration DEFAULT_CONFIGURATION = builder().build();
+
+    public static final int DEFAULT_MESSAGE_CHUNK_SIZE_ON_READ = 100;
+    public static final int DEFAULT_EXPUNGE_BATCH_SIZE = 100;
+    public static final int DEFAULT_UPDATE_FLAGS_BATCH_SIZE = 20;
+    public static final int DEFAULT_FLAGS_UPDATE_MESSAGE_MAX_RETRY = 1000;
+    public static final int DEFAULT_FLAGS_UPDATE_MESSAGE_ID_MAX_RETRY = 1000;
+    public static final int DEFAULT_MODSEQ_MAX_RETRY = 100000;
+    public static final int DEFAULT_UID_MAX_RETRY = 100000;
+    public static final int DEFAULT_ACL_MAX_RETRY = 1000;
+    public static final int DEFAULT_FETCH_NEXT_PAGE_ADVANCE_IN_ROW = 100;
+    public static final int DEFAULT_BLOB_PART_SIZE = 100 * 1024;
+
+    public static class Builder {
+        private Optional<Integer> messageReadChunkSize = Optional.empty();
+        private Optional<Integer> expungeChunkSize = Optional.empty();
+        private Optional<Integer> flagsUpdateChunkSize = Optional.empty();
+        private Optional<Integer> flagsUpdateMessageIdMaxRetry = Optional.empty();
+        private Optional<Integer> flagsUpdateMessageMaxRetry = Optional.empty();
+        private Optional<Integer> modSeqMaxRetry = Optional.empty();
+        private Optional<Integer> uidMaxRetry = Optional.empty();
+        private Optional<Integer> aclMaxRetry = Optional.empty();
+        private Optional<Integer> fetchNextPageInAdvanceRow = Optional.empty();
+        private Optional<Integer> blobPartSize = Optional.empty();
+
+        public Builder messageReadChunkSize(int value) {
+            Preconditions.checkArgument(value > 0, "messageReadChunkSize needs to be strictly positive");
+            this.messageReadChunkSize = Optional.of(value);
+            return this;
+        }
+
+        public Builder expungeChunkSize(int value) {
+            Preconditions.checkArgument(value > 0, "expungeChunkSize needs to be strictly positive");
+            this.expungeChunkSize = Optional.of(value);
+            return this;
+        }
+
+        public Builder flagsUpdateChunkSize(int value) {
+            Preconditions.checkArgument(value > 0, "flagsUpdateChunkSize needs to be strictly positive");
+            this.flagsUpdateChunkSize = Optional.of(value);
+            return this;
+        }
+
+        public Builder flagsUpdateMessageIdMaxRetry(int value) {
+            Preconditions.checkArgument(value > 0, "flagsUpdateMessageIdMaxRetry needs to be strictly positive");
+            this.flagsUpdateMessageIdMaxRetry = Optional.of(value);
+            return this;
+        }
+
+        public Builder flagsUpdateMessageMaxRetry(int value) {
+            Preconditions.checkArgument(value > 0, "flagsUpdateMessageMaxRetry needs to be strictly positive");
+            this.flagsUpdateMessageMaxRetry = Optional.of(value);
+            return this;
+        }
+
+        public Builder modSeqMaxRetry(int value) {
+            Preconditions.checkArgument(value > 0, "modSeqMaxRetry needs to be strictly positive");
+            this.modSeqMaxRetry = Optional.of(value);
+            return this;
+        }
+
+        public Builder uidMaxRetry(int value) {
+            Preconditions.checkArgument(value > 0, "uidMaxRetry needs to be strictly positive");
+            this.uidMaxRetry = Optional.of(value);
+            return this;
+        }
+
+        public Builder aclMaxRetry(int value) {
+            Preconditions.checkArgument(value > 0, "aclMaxRetry needs to be strictly positive");
+            this.aclMaxRetry = Optional.of(value);
+            return this;
+        }
+
+        public Builder fetchNextPageInAdvanceRow(int value) {
+            Preconditions.checkArgument(value > 0, "fetchNextPageInAdvanceRow needs to be strictly positive");
+            this.fetchNextPageInAdvanceRow = Optional.of(value);
+            return this;
+        }
+
+        public Builder blobPartSize(int value) {
+            Preconditions.checkArgument(value > 0, "blobPartSize needs to be strictly positive");
+            this.blobPartSize = Optional.of(value);
+            return this;
+        }
+
+        public Builder messageReadChunkSize(Optional<Integer> value) {
+            value.ifPresent(this::messageReadChunkSize);
+            return this;
+        }
+
+        public Builder expungeChunkSize(Optional<Integer> value) {
+            value.ifPresent(this::expungeChunkSize);
+            return this;
+        }
+
+        public Builder flagsUpdateChunkSize(Optional<Integer> value) {
+            value.ifPresent(this::flagsUpdateChunkSize);
+            return this;
+        }
+
+        public Builder flagsUpdateMessageIdMaxRetry(Optional<Integer> value) {
+            value.ifPresent(this::flagsUpdateMessageIdMaxRetry);
+            return this;
+        }
+
+        public Builder flagsUpdateMessageMaxRetry(Optional<Integer> value) {
+            value.ifPresent(this::flagsUpdateMessageMaxRetry);
+            return this;
+        }
+
+        public Builder modSeqMaxRetry(Optional<Integer> value) {
+            value.ifPresent(this::modSeqMaxRetry);
+            return this;
+        }
+
+        public Builder uidMaxRetry(Optional<Integer> value) {
+            value.ifPresent(this::uidMaxRetry);
+            return this;
+        }
+
+        public Builder aclMaxRetry(Optional<Integer> value) {
+            value.ifPresent(this::aclMaxRetry);
+            return this;
+        }
+
+        public Builder fetchNextPageInAdvanceRow(Optional<Integer> value) {
+            value.ifPresent(this::fetchNextPageInAdvanceRow);
+            return this;
+        }
+
+        public Builder blobPartSize(Optional<Integer> value) {
+            value.ifPresent(this::blobPartSize);
+            return this;
+        }
+
+        public CassandraConfiguration build() {
+            return new CassandraConfiguration(aclMaxRetry.orElse(DEFAULT_ACL_MAX_RETRY),
+                messageReadChunkSize.orElse(DEFAULT_MESSAGE_CHUNK_SIZE_ON_READ),
+                expungeChunkSize.orElse(DEFAULT_EXPUNGE_BATCH_SIZE),
+                flagsUpdateChunkSize.orElse(DEFAULT_UPDATE_FLAGS_BATCH_SIZE),
+                flagsUpdateMessageIdMaxRetry.orElse(DEFAULT_FLAGS_UPDATE_MESSAGE_ID_MAX_RETRY),
+                flagsUpdateMessageMaxRetry.orElse(DEFAULT_FLAGS_UPDATE_MESSAGE_MAX_RETRY),
+                modSeqMaxRetry.orElse(DEFAULT_MODSEQ_MAX_RETRY),
+                uidMaxRetry.orElse(DEFAULT_UID_MAX_RETRY),
+                fetchNextPageInAdvanceRow.orElse(DEFAULT_FETCH_NEXT_PAGE_ADVANCE_IN_ROW),
+                blobPartSize.orElse(DEFAULT_BLOB_PART_SIZE));
+        }
+    }
+
+    public static Builder builder() {
+        return new Builder();
+    }
+
+    private final int messageReadChunkSize;
+    private final int expungeChunkSize;
+    private final int flagsUpdateChunkSize;
+    private final int flagsUpdateMessageIdMaxRetry;
+    private final int flagsUpdateMessageMaxRetry;
+    private final int modSeqMaxRetry;
+    private final int uidMaxRetry;
+    private final int aclMaxRetry;
+    private final int fetchNextPageInAdvanceRow;
+    private final int blobPartSize;
+
+    @VisibleForTesting
+    CassandraConfiguration(int aclMaxRetry, int messageReadChunkSize, int expungeChunkSize,
+                           int flagsUpdateChunkSize, int flagsUpdateMessageIdMaxRetry, int flagsUpdateMessageMaxRetry,
+                           int modSeqMaxRetry, int uidMaxRetry, int fetchNextPageInAdvanceRow,
+                           int blobPartSize) {
+        this.aclMaxRetry = aclMaxRetry;
+        this.messageReadChunkSize = messageReadChunkSize;
+        this.expungeChunkSize = expungeChunkSize;
+        this.flagsUpdateMessageIdMaxRetry = flagsUpdateMessageIdMaxRetry;
+        this.flagsUpdateMessageMaxRetry = flagsUpdateMessageMaxRetry;
+        this.modSeqMaxRetry = modSeqMaxRetry;
+        this.uidMaxRetry = uidMaxRetry;
+        this.fetchNextPageInAdvanceRow = fetchNextPageInAdvanceRow;
+        this.flagsUpdateChunkSize = flagsUpdateChunkSize;
+        this.blobPartSize = blobPartSize;
+    }
+
+    public int getBlobPartSize() {
+        return blobPartSize;
+    }
+
+    public int getFlagsUpdateChunkSize() {
+        return flagsUpdateChunkSize;
+    }
+
+    public int getAclMaxRetry() {
+        return aclMaxRetry;
+    }
+
+    public int getMessageReadChunkSize() {
+        return messageReadChunkSize;
+    }
+
+    public int getExpungeChunkSize() {
+        return expungeChunkSize;
+    }
+
+    public int getFlagsUpdateMessageIdMaxRetry() {
+        return flagsUpdateMessageIdMaxRetry;
+    }
+
+    public int getFlagsUpdateMessageMaxRetry() {
+        return flagsUpdateMessageMaxRetry;
+    }
+
+    public int getModSeqMaxRetry() {
+        return modSeqMaxRetry;
+    }
+
+    public int getUidMaxRetry() {
+        return uidMaxRetry;
+    }
+
+    public int getFetchNextPageInAdvanceRow() {
+        return fetchNextPageInAdvanceRow;
+    }
+
+    @Override
+    public final boolean equals(Object o) {
+        if (o instanceof CassandraConfiguration) {
+            CassandraConfiguration that = (CassandraConfiguration) o;
+
+            return Objects.equals(this.aclMaxRetry, that.aclMaxRetry)
+                && Objects.equals(this.messageReadChunkSize, that.messageReadChunkSize)
+                && Objects.equals(this.expungeChunkSize, that.expungeChunkSize)
+                && Objects.equals(this.flagsUpdateMessageIdMaxRetry, that.flagsUpdateMessageIdMaxRetry)
+                && Objects.equals(this.flagsUpdateMessageMaxRetry, that.flagsUpdateMessageMaxRetry)
+                && Objects.equals(this.modSeqMaxRetry, that.modSeqMaxRetry)
+                && Objects.equals(this.uidMaxRetry, that.uidMaxRetry)
+                && Objects.equals(this.flagsUpdateChunkSize, that.flagsUpdateChunkSize)
+                && Objects.equals(this.fetchNextPageInAdvanceRow, that.fetchNextPageInAdvanceRow)
+                && Objects.equals(this.blobPartSize, that.blobPartSize);
+        }
+        return false;
+    }
+
+    @Override
+    public final int hashCode() {
+        return Objects.hash(aclMaxRetry, messageReadChunkSize, expungeChunkSize, flagsUpdateMessageIdMaxRetry,
+            flagsUpdateMessageMaxRetry, modSeqMaxRetry, uidMaxRetry, fetchNextPageInAdvanceRow, flagsUpdateChunkSize,
+            blobPartSize);
+    }
+
+    @Override
+    public String toString() {
+        return MoreObjects.toStringHelper(this)
+            .add("aclMaxRetry", aclMaxRetry)
+            .add("messageReadChunkSize", messageReadChunkSize)
+            .add("expungeChunkSize", expungeChunkSize)
+            .add("flagsUpdateMessageIdMaxRetry", flagsUpdateMessageIdMaxRetry)
+            .add("flagsUpdateMessageMaxRetry", flagsUpdateMessageMaxRetry)
+            .add("modSeqMaxRetry", modSeqMaxRetry)
+            .add("fetchNextPageInAdvanceRow", fetchNextPageInAdvanceRow)
+            .add("flagsUpdateChunkSize", flagsUpdateChunkSize)
+            .add("uidMaxRetry", uidMaxRetry)
+            .add("blobPartSize", blobPartSize)
+            .toString();
+    }
+}

http://git-wip-us.apache.org/repos/asf/james-project/blob/a18a4488/backends-common/cassandra/src/main/java/org/apache/james/backends/cassandra/init/CassandraSessionConfiguration.java
----------------------------------------------------------------------
diff --git a/backends-common/cassandra/src/main/java/org/apache/james/backends/cassandra/init/CassandraSessionConfiguration.java b/backends-common/cassandra/src/main/java/org/apache/james/backends/cassandra/init/CassandraSessionConfiguration.java
new file mode 100644
index 0000000..0e0047d
--- /dev/null
+++ b/backends-common/cassandra/src/main/java/org/apache/james/backends/cassandra/init/CassandraSessionConfiguration.java
@@ -0,0 +1,29 @@
+/****************************************************************
+ * 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.backends.cassandra.init;
+
+import org.apache.commons.configuration.ConfigurationException;
+import org.apache.commons.configuration.PropertiesConfiguration;
+
+public interface CassandraSessionConfiguration {
+
+    PropertiesConfiguration getConfiguration() throws ConfigurationException;
+
+}

http://git-wip-us.apache.org/repos/asf/james-project/blob/a18a4488/backends-common/cassandra/src/main/java/org/apache/james/backends/cassandra/init/CassandraTableManager.java
----------------------------------------------------------------------
diff --git a/backends-common/cassandra/src/main/java/org/apache/james/backends/cassandra/init/CassandraTableManager.java b/backends-common/cassandra/src/main/java/org/apache/james/backends/cassandra/init/CassandraTableManager.java
index 95db5d9..2897035 100644
--- a/backends-common/cassandra/src/main/java/org/apache/james/backends/cassandra/init/CassandraTableManager.java
+++ b/backends-common/cassandra/src/main/java/org/apache/james/backends/cassandra/init/CassandraTableManager.java
@@ -35,6 +35,7 @@ public class CassandraTableManager {
 
     public CassandraTableManager ensureAllTables() {
         module.moduleTables()
+            .parallelStream()
             .forEach(table -> session.execute(table.getCreateStatement()));
         return this;
     }

http://git-wip-us.apache.org/repos/asf/james-project/blob/a18a4488/backends-common/cassandra/src/main/java/org/apache/james/backends/cassandra/init/CassandraTypesCreator.java
----------------------------------------------------------------------
diff --git a/backends-common/cassandra/src/main/java/org/apache/james/backends/cassandra/init/CassandraTypesCreator.java b/backends-common/cassandra/src/main/java/org/apache/james/backends/cassandra/init/CassandraTypesCreator.java
index db85376..8154c71 100644
--- a/backends-common/cassandra/src/main/java/org/apache/james/backends/cassandra/init/CassandraTypesCreator.java
+++ b/backends-common/cassandra/src/main/java/org/apache/james/backends/cassandra/init/CassandraTypesCreator.java
@@ -34,7 +34,7 @@ public class CassandraTypesCreator {
     }
 
     public void initializeTypes() {
-        types.forEach((type) -> session.execute(type.getCreateStatement()));
+        types.parallelStream().forEach((type) -> session.execute(type.getCreateStatement()));
     }
 
 }

http://git-wip-us.apache.org/repos/asf/james-project/blob/a18a4488/backends-common/cassandra/src/main/java/org/apache/james/backends/cassandra/init/SessionWithInitializedTablesFactory.java
----------------------------------------------------------------------
diff --git a/backends-common/cassandra/src/main/java/org/apache/james/backends/cassandra/init/SessionWithInitializedTablesFactory.java b/backends-common/cassandra/src/main/java/org/apache/james/backends/cassandra/init/SessionWithInitializedTablesFactory.java
index 12ae2b2..5fa74f5 100644
--- a/backends-common/cassandra/src/main/java/org/apache/james/backends/cassandra/init/SessionWithInitializedTablesFactory.java
+++ b/backends-common/cassandra/src/main/java/org/apache/james/backends/cassandra/init/SessionWithInitializedTablesFactory.java
@@ -19,30 +19,55 @@
 
 package org.apache.james.backends.cassandra.init;
 
+import javax.annotation.PreDestroy;
+import javax.inject.Inject;
+import javax.inject.Provider;
+import javax.inject.Singleton;
+
+import org.apache.commons.configuration.ConfigurationException;
+import org.apache.james.backends.cassandra.components.CassandraModule;
+
 import com.datastax.driver.core.Cluster;
 import com.datastax.driver.core.Session;
-import org.apache.james.backends.cassandra.components.CassandraModule;
 
-public class SessionWithInitializedTablesFactory {
+@Singleton
+public class SessionWithInitializedTablesFactory implements Provider<Session> {
+    
     private final static String DEFAULT_KEYSPACE_NAME = "apache_james";
 
     private final CassandraModule module;
+    private final Session session;
 
-    public SessionWithInitializedTablesFactory(CassandraModule module) {
+    @Inject
+    public SessionWithInitializedTablesFactory(CassandraSessionConfiguration configuration, Cluster cluster, CassandraModule module) throws ConfigurationException {
+        String keyspace = configuration.getConfiguration().getString("cassandra.keyspace", DEFAULT_KEYSPACE_NAME);
         this.module = module;
+        this.session = createSession(cluster, keyspace);
     }
 
     public Session createSession(Cluster cluster, String keyspace) {
         Session session = cluster.connect(keyspace);
-        new CassandraTypesCreator(module, session)
-            .initializeTypes();
-        new CassandraTableManager(module, session)
-            .ensureAllTables();
+        try {
+            new CassandraTypesCreator(module, session)
+                .initializeTypes();
+            new CassandraTableManager(module, session)
+                .ensureAllTables();
+            return session;
+        } catch (Exception e) {
+            session.close();
+            throw e;
+        }
+    }
+
+    @Override
+    public Session get() {
         return session;
     }
 
-    public Session createSession(Cluster cluster) {
-        return createSession(cluster, DEFAULT_KEYSPACE_NAME);
+    @PreDestroy
+    public synchronized void destroy() {
+        session.close();
     }
 
+
 }

http://git-wip-us.apache.org/repos/asf/james-project/blob/a18a4488/backends-common/cassandra/src/main/java/org/apache/james/backends/cassandra/utils/CassandraUtils.java
----------------------------------------------------------------------
diff --git a/backends-common/cassandra/src/main/java/org/apache/james/backends/cassandra/utils/CassandraUtils.java b/backends-common/cassandra/src/main/java/org/apache/james/backends/cassandra/utils/CassandraUtils.java
index 568b2bf..5d6dc33 100644
--- a/backends-common/cassandra/src/main/java/org/apache/james/backends/cassandra/utils/CassandraUtils.java
+++ b/backends-common/cassandra/src/main/java/org/apache/james/backends/cassandra/utils/CassandraUtils.java
@@ -24,7 +24,7 @@ import java.util.stream.StreamSupport;
 
 import javax.inject.Inject;
 
-import org.apache.james.backends.cassandra.CassandraConfiguration;
+import org.apache.james.backends.cassandra.init.CassandraConfiguration;
 
 import com.datastax.driver.core.ResultSet;
 import com.datastax.driver.core.Row;

http://git-wip-us.apache.org/repos/asf/james-project/blob/a18a4488/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 40f6fbe..d649c31 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
@@ -22,9 +22,13 @@ import java.util.Optional;
 
 import javax.annotation.PreDestroy;
 import javax.inject.Inject;
+import javax.inject.Named;
 
+import org.apache.commons.configuration.ConfigurationException;
+import org.apache.commons.configuration.PropertiesConfiguration;
+import org.apache.commons.lang.RandomStringUtils;
 import org.apache.james.backends.cassandra.components.CassandraModule;
-import org.apache.james.backends.cassandra.init.CassandraTableManager;
+import org.apache.james.backends.cassandra.init.CassandraSessionConfiguration;
 import org.apache.james.backends.cassandra.init.CassandraTypesProvider;
 import org.apache.james.backends.cassandra.init.ClusterBuilder;
 import org.apache.james.backends.cassandra.init.ClusterWithKeyspaceCreatedFactory;
@@ -37,8 +41,7 @@ import com.datastax.driver.core.exceptions.NoHostAvailableException;
 import com.google.common.base.Throwables;
 
 public final class CassandraCluster implements AutoCloseable {
-    private static final String CLUSTER_IP = "localhost";
-    private static final String KEYSPACE_NAME = "apache_james";
+
     private static final int REPLICATION_FACTOR = 1;
 
     private static final long SLEEP_BEFORE_RETRY = 200;
@@ -48,19 +51,31 @@ public final class CassandraCluster implements AutoCloseable {
     private Session session;
     private CassandraTypesProvider typesProvider;
     private Cluster cluster;
+    private String keyspace;
+    private CassandraSessionConfiguration cassandraSessionConfiguration;
 
-    public static CassandraCluster create(CassandraModule module) throws RuntimeException {
-        return new CassandraCluster(module, EmbeddedCassandra.createStartServer());
+    public static CassandraCluster create(CassandraModule module, String host, int port) {
+        return new CassandraCluster(module, host, port);
     }
-
+    
     @Inject
-    private CassandraCluster(CassandraModule module, EmbeddedCassandra embeddedCassandra) throws RuntimeException {
+    private CassandraCluster(CassandraModule module, @Named("cassandraHost") String host, @Named("cassandraPort") int port) throws RuntimeException {
         this.module = module;
         try {
             cluster = ClusterBuilder.builder()
-                .host(CLUSTER_IP)
-                .port(embeddedCassandra.getPort())
+                .host(host)
+                .port(port)
                 .build();
+            keyspace = RandomStringUtils.randomAlphabetic(10);
+            cassandraSessionConfiguration = () -> {
+                PropertiesConfiguration conf = new PropertiesConfiguration();
+                conf.addProperty("cassandra.nodes", host + ":" + port);
+                conf.addProperty("cassandra.keyspace", keyspace);
+                conf.addProperty("cassandra.replication.factor", 1);
+                conf.addProperty("cassandra.retryConnection.maxRetries", 10);
+                conf.addProperty("cassandra.retryConnection", 5000);
+                return conf;
+            };
             session = new FunctionRunnerWithRetry(MAX_RETRY).executeAndRetrieveObject(CassandraCluster.this::tryInitializeSession);
             typesProvider = new CassandraTypesProvider(module, session);
         } catch (Exception exception) {
@@ -68,30 +83,31 @@ public final class CassandraCluster implements AutoCloseable {
         }
     }
 
+
+
     public Session getConf() {
         return session;
     }
 
-    public void ensureAllTables() {
-        new CassandraTableManager(module, session).ensureAllTables();
-    }
-
     @PreDestroy
     public void clearAllTables() {
-        new CassandraTableManager(module, session).clearAllTables();
+        session.close();
+        cluster.close();
     }
-
+    
     private Optional<Session> tryInitializeSession() {
         try {
             Cluster clusterWithInitializedKeyspace = ClusterWithKeyspaceCreatedFactory
-                .config(getCluster(), KEYSPACE_NAME)
+                .config(getCluster(), keyspace)
                 .replicationFactor(REPLICATION_FACTOR)
                 .disableDurableWrites()
                 .clusterWithInitializedKeyspace();
-            return Optional.of(new SessionWithInitializedTablesFactory(module).createSession(clusterWithInitializedKeyspace, KEYSPACE_NAME));
+            return Optional.of(new SessionWithInitializedTablesFactory(cassandraSessionConfiguration, clusterWithInitializedKeyspace, module).createSession(clusterWithInitializedKeyspace, keyspace));
         } catch (NoHostAvailableException exception) {
             sleep(SLEEP_BEFORE_RETRY);
             return Optional.empty();
+        } catch (ConfigurationException e) {
+            throw new RuntimeException(e);
         }
     }
 
@@ -113,6 +129,6 @@ public final class CassandraCluster implements AutoCloseable {
 
     @Override
     public void close() {
-        cluster.close();
+        cluster.closeAsync();
     }
 }

http://git-wip-us.apache.org/repos/asf/james-project/blob/a18a4488/backends-common/cassandra/src/test/java/org/apache/james/backends/cassandra/CassandraConfigurationTest.java
----------------------------------------------------------------------
diff --git a/backends-common/cassandra/src/test/java/org/apache/james/backends/cassandra/CassandraConfigurationTest.java b/backends-common/cassandra/src/test/java/org/apache/james/backends/cassandra/CassandraConfigurationTest.java
deleted file mode 100644
index 9366b13..0000000
--- a/backends-common/cassandra/src/test/java/org/apache/james/backends/cassandra/CassandraConfigurationTest.java
+++ /dev/null
@@ -1,232 +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.backends.cassandra;
-
-import static org.assertj.core.api.Assertions.assertThat;
-
-import org.assertj.core.api.JUnitSoftAssertions;
-import org.junit.Rule;
-import org.junit.Test;
-import org.junit.rules.ExpectedException;
-
-import nl.jqno.equalsverifier.EqualsVerifier;
-
-public class CassandraConfigurationTest {
-
-    @Rule
-    public ExpectedException expectedException = ExpectedException.none();
-
-    @Rule
-    public final JUnitSoftAssertions softly = new JUnitSoftAssertions();
-
-    @Test
-    public void cassandraConfigurationShouldRespectBeanContract() {
-        EqualsVerifier.forClass(CassandraConfiguration.class).verify();
-    }
-
-    @Test
-    public void defaultBuilderShouldConstructDefaultConfiguration() {
-        assertThat(CassandraConfiguration.builder().build())
-            .isEqualTo(CassandraConfiguration.DEFAULT_CONFIGURATION);
-    }
-
-    @Test
-    public void aclMaxRetryShouldThrowOnNegativeValue() {
-        expectedException.expect(IllegalArgumentException.class);
-
-        CassandraConfiguration.builder()
-            .aclMaxRetry(-1);
-    }
-
-    @Test
-    public void aclMaxRetryShouldThrowOnZero() {
-        expectedException.expect(IllegalArgumentException.class);
-
-        CassandraConfiguration.builder()
-            .aclMaxRetry(0);
-    }
-
-    @Test
-    public void expungeChunkSizeShouldThrowOnNegativeValue() {
-        expectedException.expect(IllegalArgumentException.class);
-
-        CassandraConfiguration.builder()
-            .expungeChunkSize(-1);
-    }
-
-    @Test
-    public void expungeChunkSizeShouldThrowOnZero() {
-        expectedException.expect(IllegalArgumentException.class);
-
-        CassandraConfiguration.builder()
-            .expungeChunkSize(0);
-    }
-
-    @Test
-    public void messageReadChunkSizeShouldThrowOnNegativeValue() {
-        expectedException.expect(IllegalArgumentException.class);
-
-        CassandraConfiguration.builder()
-            .messageReadChunkSize(-1);
-    }
-
-    @Test
-    public void messageReadChunkSizeShouldThrowOnZero() {
-        expectedException.expect(IllegalArgumentException.class);
-
-        CassandraConfiguration.builder()
-            .messageReadChunkSize(0);
-    }
-
-    @Test
-    public void flagsUpdateChunkSizeShouldThrowOnNegativeValue() {
-        expectedException.expect(IllegalArgumentException.class);
-
-        CassandraConfiguration.builder()
-            .flagsUpdateChunkSize(-1);
-    }
-
-    @Test
-    public void flagsUpdateChunkSizeShouldThrowOnZero() {
-        expectedException.expect(IllegalArgumentException.class);
-
-        CassandraConfiguration.builder()
-            .flagsUpdateChunkSize(0);
-    }
-
-    @Test
-    public void flagsUpdateMessageIdMaxRetryShouldThrowOnNegativeValue() {
-        expectedException.expect(IllegalArgumentException.class);
-
-        CassandraConfiguration.builder()
-            .flagsUpdateMessageIdMaxRetry(-1);
-    }
-
-    @Test
-    public void flagsUpdateMessageIdMaxRetryShouldThrowOnZero() {
-        expectedException.expect(IllegalArgumentException.class);
-
-        CassandraConfiguration.builder()
-            .flagsUpdateMessageIdMaxRetry(0);
-    }
-
-    @Test
-    public void flagsUpdateMessageMaxRetryShouldThrowOnNegativeValue() {
-        expectedException.expect(IllegalArgumentException.class);
-
-        CassandraConfiguration.builder()
-            .flagsUpdateMessageMaxRetry(-1);
-    }
-
-    @Test
-    public void flagsUpdateMessageMaxRetryShouldThrowOnZero() {
-        expectedException.expect(IllegalArgumentException.class);
-
-        CassandraConfiguration.builder()
-            .flagsUpdateMessageMaxRetry(0);
-    }
-
-    @Test
-    public void fetchNextPageInAdvanceRowShouldThrowOnNegativeValue() {
-        expectedException.expect(IllegalArgumentException.class);
-
-        CassandraConfiguration.builder()
-            .fetchNextPageInAdvanceRow(-1);
-    }
-
-    @Test
-    public void fetchNextPageInAdvanceRowShouldThrowOnZero() {
-        expectedException.expect(IllegalArgumentException.class);
-
-        CassandraConfiguration.builder()
-            .fetchNextPageInAdvanceRow(0);
-    }
-
-    @Test
-    public void modSeqMaxRetryShouldThrowOnNegativeValue() {
-        expectedException.expect(IllegalArgumentException.class);
-
-        CassandraConfiguration.builder()
-            .modSeqMaxRetry(-1);
-    }
-
-    @Test
-    public void modSeqMaxRetryShouldThrowOnZero() {
-        expectedException.expect(IllegalArgumentException.class);
-
-        CassandraConfiguration.builder()
-            .modSeqMaxRetry(0);
-    }
-
-    @Test
-    public void uidMaxRetryShouldThrowOnNegativeValue() {
-        expectedException.expect(IllegalArgumentException.class);
-
-        CassandraConfiguration.builder()
-            .uidMaxRetry(-1);
-    }
-
-    @Test
-    public void uidMaxRetryShouldThrowOnZero() {
-        expectedException.expect(IllegalArgumentException.class);
-
-        CassandraConfiguration.builder()
-            .uidMaxRetry(0);
-    }
-
-    @Test
-    public void builderShouldCreateTheRightObject() {
-        int aclMaxRetry = 1;
-        int modSeqMaxRetry = 2;
-        int uidMaxRetry = 3;
-        int fetchNextPageInAdvanceRow = 4;
-        int flagsUpdateMessageMaxRetry = 5;
-        int flagsUpdateMessageIdMaxRetry = 6;
-        int flagsUpdateChunkSize = 7;
-        int messageReadChunkSize = 8;
-        int expungeChunkSize = 9;
-        int blobPartSize = 10;
-
-        CassandraConfiguration configuration = CassandraConfiguration.builder()
-            .aclMaxRetry(aclMaxRetry)
-            .modSeqMaxRetry(modSeqMaxRetry)
-            .uidMaxRetry(uidMaxRetry)
-            .fetchNextPageInAdvanceRow(fetchNextPageInAdvanceRow)
-            .flagsUpdateMessageMaxRetry(flagsUpdateMessageMaxRetry)
-            .flagsUpdateMessageIdMaxRetry(flagsUpdateMessageIdMaxRetry)
-            .flagsUpdateChunkSize(flagsUpdateChunkSize)
-            .messageReadChunkSize(messageReadChunkSize)
-            .expungeChunkSize(expungeChunkSize)
-            .blobPartSize(blobPartSize)
-            .build();
-
-        softly.assertThat(configuration.getAclMaxRetry()).isEqualTo(aclMaxRetry);
-        softly.assertThat(configuration.getModSeqMaxRetry()).isEqualTo(modSeqMaxRetry);
-        softly.assertThat(configuration.getUidMaxRetry()).isEqualTo(uidMaxRetry);
-        softly.assertThat(configuration.getFetchNextPageInAdvanceRow()).isEqualTo(fetchNextPageInAdvanceRow);
-        softly.assertThat(configuration.getFlagsUpdateMessageMaxRetry()).isEqualTo(flagsUpdateMessageMaxRetry);
-        softly.assertThat(configuration.getFlagsUpdateMessageIdMaxRetry()).isEqualTo(flagsUpdateMessageIdMaxRetry);
-        softly.assertThat(configuration.getFlagsUpdateChunkSize()).isEqualTo(flagsUpdateChunkSize);
-        softly.assertThat(configuration.getMessageReadChunkSize()).isEqualTo(messageReadChunkSize);
-        softly.assertThat(configuration.getExpungeChunkSize()).isEqualTo(expungeChunkSize);
-        softly.assertThat(configuration.getBlobPartSize()).isEqualTo(blobPartSize);
-    }
-
-}

http://git-wip-us.apache.org/repos/asf/james-project/blob/a18a4488/backends-common/cassandra/src/test/java/org/apache/james/backends/cassandra/CassandraWaitStrategy.java
----------------------------------------------------------------------
diff --git a/backends-common/cassandra/src/test/java/org/apache/james/backends/cassandra/CassandraWaitStrategy.java b/backends-common/cassandra/src/test/java/org/apache/james/backends/cassandra/CassandraWaitStrategy.java
new file mode 100644
index 0000000..6695a07
--- /dev/null
+++ b/backends-common/cassandra/src/test/java/org/apache/james/backends/cassandra/CassandraWaitStrategy.java
@@ -0,0 +1,64 @@
+/****************************************************************
+ * 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.backends.cassandra;
+
+import java.io.IOException;
+import java.time.Duration;
+import java.util.concurrent.TimeUnit;
+
+import org.rnorth.ducttape.unreliables.Unreliables;
+import org.testcontainers.containers.GenericContainer;
+import org.testcontainers.containers.wait.WaitStrategy;
+
+import com.google.common.primitives.Ints;
+
+public class CassandraWaitStrategy implements WaitStrategy {
+
+    private static final Duration DEFAULT_TIMEOUT = Duration.ofMinutes(1);
+    private Duration timeout = DEFAULT_TIMEOUT;
+
+    public CassandraWaitStrategy() {
+        this(DEFAULT_TIMEOUT);
+    }
+
+    public CassandraWaitStrategy(Duration timeout) {
+        this.timeout = timeout;
+    }
+
+    @Override
+    public void waitUntilReady(@SuppressWarnings("rawtypes") GenericContainer container) {
+        Unreliables.retryUntilTrue(Ints.checkedCast(timeout.getSeconds()), TimeUnit.SECONDS, () -> {
+                try {
+                    return container
+                        .execInContainer("cqlsh", "-e", "show host")
+                        .getStdout()
+                        .contains("Connected to Test Cluster");
+                } catch (IOException|InterruptedException e) {
+                    return false;
+                }
+            }
+        );
+    }
+
+    @Override
+    public WaitStrategy withStartupTimeout(Duration startupTimeout) {
+        return new CassandraWaitStrategy(startupTimeout);
+    }
+}

http://git-wip-us.apache.org/repos/asf/james-project/blob/a18a4488/backends-common/cassandra/src/test/java/org/apache/james/backends/cassandra/DockerCassandraRule.java
----------------------------------------------------------------------
diff --git a/backends-common/cassandra/src/test/java/org/apache/james/backends/cassandra/DockerCassandraRule.java b/backends-common/cassandra/src/test/java/org/apache/james/backends/cassandra/DockerCassandraRule.java
new file mode 100644
index 0000000..2579a14
--- /dev/null
+++ b/backends-common/cassandra/src/test/java/org/apache/james/backends/cassandra/DockerCassandraRule.java
@@ -0,0 +1,147 @@
+/****************************************************************
+ * 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.backends.cassandra;
+
+import org.apache.commons.lang3.RandomStringUtils;
+import org.junit.rules.TestRule;
+import org.junit.runner.Description;
+import org.junit.runners.model.Statement;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.testcontainers.DockerClientFactory;
+import org.testcontainers.containers.GenericContainer;
+import org.testcontainers.containers.output.OutputFrame;
+import org.testcontainers.images.builder.ImageFromDockerfile;
+import org.testcontainers.shaded.com.google.common.collect.ImmutableMap;
+
+import com.github.dockerjava.api.DockerClient;
+import com.github.dockerjava.api.command.CreateVolumeCmd;
+import com.github.dockerjava.api.command.RemoveVolumeCmd;
+import com.github.dockerjava.api.model.Bind;
+import com.github.dockerjava.api.model.Binds;
+import com.github.dockerjava.api.model.Volume;
+
+
+public class DockerCassandraRule implements TestRule {
+
+    private static final Logger logger = LoggerFactory.getLogger(DockerCassandraRule.class);
+
+    private static final int CASSANDRA_PORT = 9042;
+    private static final String CASSANDRA_CONFIG_DIR = "$CASSANDRA_CONFIG";
+    private static final String CASSANDRA_YAML = CASSANDRA_CONFIG_DIR + "/cassandra.yaml";
+    private static final String CASSANDRA_ENV = CASSANDRA_CONFIG_DIR + "/cassandra-env.sh";
+    private static final String JVM_OPTIONS = CASSANDRA_CONFIG_DIR + "/jvm.options";
+
+    private final GenericContainer<?> cassandraContainer;
+    private final DockerClient client;
+    private final CreateVolumeCmd createTmpsFsCmd;
+    private final RemoveVolumeCmd deleteTmpsFsCmd;
+
+    public DockerCassandraRule() {
+        String tmpFsName = "cassandraData" + RandomStringUtils.randomAlphabetic(10);
+        client = DockerClientFactory.instance().client();
+        createTmpsFsCmd = client.createVolumeCmd()
+            .withName(tmpFsName)
+            .withDriver("local")
+            .withDriverOpts(
+                ImmutableMap.of(
+                    "type", "tmpfs",
+                    "device", "tmpfs",
+                    "o", "size=100m"));
+        deleteTmpsFsCmd = client.removeVolumeCmd(tmpFsName);
+        boolean deleteOnExit = false;
+        cassandraContainer = new GenericContainer<>(
+            new ImageFromDockerfile("cassandra_2_2_10", deleteOnExit)
+                .withDockerfileFromBuilder(builder ->
+                    builder
+                        .from("cassandra:2.2.10")
+                        .env("ENV CASSANDRA_CONFIG", "/etc/cassandra")
+                        //avoiding token range computation helps starting faster
+                        .run("echo \"JVM_OPTS=\\\"\\$JVM_OPTS -Dcassandra.initial_token=0\\\"\" >> " + CASSANDRA_ENV)
+                        .run("sed -i -e \"s/num_tokens/\\#num_tokens/\" " + CASSANDRA_YAML)
+                        //don't wait for other nodes communication to happen
+                        .run("echo \"JVM_OPTS=\\\"\\$JVM_OPTS -Dcassandra.skip_wait_for_gossip_to_settle=0\\\"\" >> " + CASSANDRA_ENV)
+                        //make sure commit log disk flush won't happen
+                        .run("sed -i -e \"s/commitlog_sync_period_in_ms: 10000/commitlog_sync_period_in_ms: 9999999/\" " + CASSANDRA_YAML)
+                        //auto_bootstrap should be useless when no existing data
+                        .run("echo auto_bootstrap: false >> " + CASSANDRA_YAML)
+                        .run("echo \"-Xms1500M\" >> " + JVM_OPTIONS)
+                        .run("echo \"-Xmx1500M\" >> " + JVM_OPTIONS)
+                        .build()))
+            .withCreateContainerCmdModifier(cmd -> cmd.getHostConfig().withBinds(new Binds(new Bind(tmpFsName, new Volume("/var/lib/cassandra")))))
+            .withCreateContainerCmdModifier(cmd -> cmd.withMemory(2000*1024*1024L))
+            .withExposedPorts(CASSANDRA_PORT)
+            .withLogConsumer(this::displayDockerLog)
+            .waitingFor(new CassandraWaitStrategy());
+    }
+
+    private void displayDockerLog(OutputFrame outputFrame) {
+        logger.info(outputFrame.getUtf8String());
+    }
+
+    @Override
+    public Statement apply(Statement base, Description description) {
+        return new Statement() {
+            @Override
+            public void evaluate() throws Throwable {
+                try {
+                    createTmpsFsCmd.exec();
+                    cassandraContainer.apply(base, description).evaluate();
+                } finally {
+                    deleteTmpsFsCmd.exec();
+                }
+            }
+        };
+    }
+
+    public void start() {
+        createTmpsFsCmd.exec();
+        cassandraContainer.start();
+    }
+
+    public void stop() {
+        try {
+            cassandraContainer.stop();
+        } finally {
+            deleteTmpsFsCmd.exec();
+        }
+    }
+    
+    public String getIp() {
+        return cassandraContainer.getContainerIpAddress();
+    }
+
+    public int getBindingPort() {
+        return cassandraContainer.getMappedPort(CASSANDRA_PORT);
+    }
+
+    public GenericContainer<?> getRawContainer() {
+        return cassandraContainer;
+    }
+
+    public void pause() {
+        client.pauseContainerCmd(cassandraContainer.getContainerId());
+    }
+
+    public void unpause() {
+        client.unpauseContainerCmd(cassandraContainer.getContainerId());
+    }
+
+}

http://git-wip-us.apache.org/repos/asf/james-project/blob/a18a4488/backends-common/cassandra/src/test/java/org/apache/james/backends/cassandra/EmbeddedCassandra.java
----------------------------------------------------------------------
diff --git a/backends-common/cassandra/src/test/java/org/apache/james/backends/cassandra/EmbeddedCassandra.java b/backends-common/cassandra/src/test/java/org/apache/james/backends/cassandra/EmbeddedCassandra.java
deleted file mode 100644
index ab0a331..0000000
--- a/backends-common/cassandra/src/test/java/org/apache/james/backends/cassandra/EmbeddedCassandra.java
+++ /dev/null
@@ -1,50 +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.backends.cassandra;
-
-import java.io.IOException;
-import java.util.concurrent.TimeUnit;
-
-import org.apache.cassandra.exceptions.ConfigurationException;
-import org.apache.thrift.transport.TTransportException;
-import org.cassandraunit.utils.EmbeddedCassandraServerHelper;
-
-import com.google.common.base.Throwables;
-
-public class EmbeddedCassandra {
-
-    private int port;
-
-    public static EmbeddedCassandra createStartServer() {
-        return new EmbeddedCassandra();
-    }
-
-    private EmbeddedCassandra() {
-        try {
-            EmbeddedCassandraServerHelper.startEmbeddedCassandra(EmbeddedCassandraServerHelper.CASSANDRA_RNDPORT_YML_FILE, TimeUnit.SECONDS.toMillis(20));
-            port = EmbeddedCassandraServerHelper.getNativeTransportPort();
-        } catch (ConfigurationException | TTransportException | IOException e) {
-            Throwables.propagate(e);
-        }
-    }
-
-    public int getPort() {
-        return port;
-    }
-}


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


[12/13] james-project git commit: JAMES-2133 make cucumber faster by reusing cassandra container for several tests

Posted by ma...@apache.org.
JAMES-2133 make cucumber faster by reusing cassandra container for several 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/833443ca
Tree: http://git-wip-us.apache.org/repos/asf/james-project/tree/833443ca
Diff: http://git-wip-us.apache.org/repos/asf/james-project/diff/833443ca

Branch: refs/heads/master
Commit: 833443caf8c674d71034fc74d14335076e0b5a97
Parents: 6c6cb53
Author: Matthieu Baechler <ma...@apache.org>
Authored: Tue Aug 29 17:08:33 2017 +0200
Committer: Matthieu Baechler <ma...@apache.org>
Committed: Sat Sep 2 07:58:48 2017 +0200

----------------------------------------------------------------------
 .../cucumber/CassandraDownloadCucumberTest.java | 12 +++++++++
 .../CassandraGetMessagesMethodTest.java         | 13 ++++++++++
 ...ssandraIMAPSetMessagesCompatibilityTest.java | 13 ++++++++++
 ...CassandraSetMailboxesMethodCucumberTest.java | 13 ++++++++++
 .../cassandra/cucumber/CassandraStepdefs.java   |  6 ++---
 .../cucumber/CassandraUploadCucumberTest.java   | 13 ++++++++++
 .../cucumber/CucumberCassandraSingleton.java    | 27 ++++++++++++++++++++
 7 files changed, 93 insertions(+), 4 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/james-project/blob/833443ca/server/protocols/jmap-integration-testing/cassandra-jmap-integration-testing/src/test/java/org/apache/james/jmap/cassandra/cucumber/CassandraDownloadCucumberTest.java
----------------------------------------------------------------------
diff --git a/server/protocols/jmap-integration-testing/cassandra-jmap-integration-testing/src/test/java/org/apache/james/jmap/cassandra/cucumber/CassandraDownloadCucumberTest.java b/server/protocols/jmap-integration-testing/cassandra-jmap-integration-testing/src/test/java/org/apache/james/jmap/cassandra/cucumber/CassandraDownloadCucumberTest.java
index e8c62e6..ee3c375 100644
--- a/server/protocols/jmap-integration-testing/cassandra-jmap-integration-testing/src/test/java/org/apache/james/jmap/cassandra/cucumber/CassandraDownloadCucumberTest.java
+++ b/server/protocols/jmap-integration-testing/cassandra-jmap-integration-testing/src/test/java/org/apache/james/jmap/cassandra/cucumber/CassandraDownloadCucumberTest.java
@@ -19,6 +19,8 @@
 
 package org.apache.james.jmap.cassandra.cucumber;
 
+import org.junit.AfterClass;
+import org.junit.BeforeClass;
 import org.junit.runner.RunWith;
 
 import cucumber.api.CucumberOptions;
@@ -30,4 +32,14 @@ import cucumber.api.junit.Cucumber;
                 tags = {"~@Ignore"},
                 strict = true)
 public class CassandraDownloadCucumberTest {
+
+    @BeforeClass
+    public static void init() {
+        CucumberCassandraSingleton.cassandraServer.start();
+    }
+
+    @AfterClass
+    public static void after() {
+        CucumberCassandraSingleton.cassandraServer.stop();
+    }
 }

http://git-wip-us.apache.org/repos/asf/james-project/blob/833443ca/server/protocols/jmap-integration-testing/cassandra-jmap-integration-testing/src/test/java/org/apache/james/jmap/cassandra/cucumber/CassandraGetMessagesMethodTest.java
----------------------------------------------------------------------
diff --git a/server/protocols/jmap-integration-testing/cassandra-jmap-integration-testing/src/test/java/org/apache/james/jmap/cassandra/cucumber/CassandraGetMessagesMethodTest.java b/server/protocols/jmap-integration-testing/cassandra-jmap-integration-testing/src/test/java/org/apache/james/jmap/cassandra/cucumber/CassandraGetMessagesMethodTest.java
index f43d624..5e7fbbc 100644
--- a/server/protocols/jmap-integration-testing/cassandra-jmap-integration-testing/src/test/java/org/apache/james/jmap/cassandra/cucumber/CassandraGetMessagesMethodTest.java
+++ b/server/protocols/jmap-integration-testing/cassandra-jmap-integration-testing/src/test/java/org/apache/james/jmap/cassandra/cucumber/CassandraGetMessagesMethodTest.java
@@ -19,6 +19,8 @@
 
 package org.apache.james.jmap.cassandra.cucumber;
 
+import org.junit.AfterClass;
+import org.junit.BeforeClass;
 import org.junit.runner.RunWith;
 
 import cucumber.api.CucumberOptions;
@@ -29,4 +31,15 @@ import cucumber.api.junit.Cucumber;
                 glue={"org.apache.james.jmap.methods.integration", "org.apache.james.jmap.cassandra.cucumber"},
                 strict = true)
 public class CassandraGetMessagesMethodTest {
+
+    @BeforeClass
+    public static void init() {
+        CucumberCassandraSingleton.cassandraServer.start();
+    }
+
+    @AfterClass
+    public static void after() {
+        CucumberCassandraSingleton.cassandraServer.stop();
+    }
+
 }

http://git-wip-us.apache.org/repos/asf/james-project/blob/833443ca/server/protocols/jmap-integration-testing/cassandra-jmap-integration-testing/src/test/java/org/apache/james/jmap/cassandra/cucumber/CassandraIMAPSetMessagesCompatibilityTest.java
----------------------------------------------------------------------
diff --git a/server/protocols/jmap-integration-testing/cassandra-jmap-integration-testing/src/test/java/org/apache/james/jmap/cassandra/cucumber/CassandraIMAPSetMessagesCompatibilityTest.java b/server/protocols/jmap-integration-testing/cassandra-jmap-integration-testing/src/test/java/org/apache/james/jmap/cassandra/cucumber/CassandraIMAPSetMessagesCompatibilityTest.java
index 14dfa73..c0c4d17 100644
--- a/server/protocols/jmap-integration-testing/cassandra-jmap-integration-testing/src/test/java/org/apache/james/jmap/cassandra/cucumber/CassandraIMAPSetMessagesCompatibilityTest.java
+++ b/server/protocols/jmap-integration-testing/cassandra-jmap-integration-testing/src/test/java/org/apache/james/jmap/cassandra/cucumber/CassandraIMAPSetMessagesCompatibilityTest.java
@@ -19,6 +19,8 @@
 
 package org.apache.james.jmap.cassandra.cucumber;
 
+import org.junit.AfterClass;
+import org.junit.BeforeClass;
 import org.junit.runner.RunWith;
 
 import cucumber.api.CucumberOptions;
@@ -29,4 +31,15 @@ import cucumber.api.junit.Cucumber;
     glue={"org.apache.james.jmap.methods.integration", "org.apache.james.jmap.cassandra.cucumber"},
     strict = true)
 public class CassandraIMAPSetMessagesCompatibilityTest {
+
+    @BeforeClass
+    public static void init() {
+        CucumberCassandraSingleton.cassandraServer.start();
+    }
+
+    @AfterClass
+    public static void after() {
+        CucumberCassandraSingleton.cassandraServer.stop();
+    }
+
 }

http://git-wip-us.apache.org/repos/asf/james-project/blob/833443ca/server/protocols/jmap-integration-testing/cassandra-jmap-integration-testing/src/test/java/org/apache/james/jmap/cassandra/cucumber/CassandraSetMailboxesMethodCucumberTest.java
----------------------------------------------------------------------
diff --git a/server/protocols/jmap-integration-testing/cassandra-jmap-integration-testing/src/test/java/org/apache/james/jmap/cassandra/cucumber/CassandraSetMailboxesMethodCucumberTest.java b/server/protocols/jmap-integration-testing/cassandra-jmap-integration-testing/src/test/java/org/apache/james/jmap/cassandra/cucumber/CassandraSetMailboxesMethodCucumberTest.java
index 3d0af24..c7ed001 100644
--- a/server/protocols/jmap-integration-testing/cassandra-jmap-integration-testing/src/test/java/org/apache/james/jmap/cassandra/cucumber/CassandraSetMailboxesMethodCucumberTest.java
+++ b/server/protocols/jmap-integration-testing/cassandra-jmap-integration-testing/src/test/java/org/apache/james/jmap/cassandra/cucumber/CassandraSetMailboxesMethodCucumberTest.java
@@ -19,6 +19,8 @@
 
 package org.apache.james.jmap.cassandra.cucumber;
 
+import org.junit.AfterClass;
+import org.junit.BeforeClass;
 import org.junit.runner.RunWith;
 
 import cucumber.api.CucumberOptions;
@@ -29,4 +31,15 @@ import cucumber.api.junit.Cucumber;
                 glue={"org.apache.james.jmap.methods.integration", "org.apache.james.jmap.cassandra.cucumber"},
                 strict = true)
 public class CassandraSetMailboxesMethodCucumberTest {
+
+    @BeforeClass
+    public static void init() {
+        CucumberCassandraSingleton.cassandraServer.start();
+    }
+
+    @AfterClass
+    public static void after() {
+        CucumberCassandraSingleton.cassandraServer.stop();
+    }
+
 }

http://git-wip-us.apache.org/repos/asf/james-project/blob/833443ca/server/protocols/jmap-integration-testing/cassandra-jmap-integration-testing/src/test/java/org/apache/james/jmap/cassandra/cucumber/CassandraStepdefs.java
----------------------------------------------------------------------
diff --git a/server/protocols/jmap-integration-testing/cassandra-jmap-integration-testing/src/test/java/org/apache/james/jmap/cassandra/cucumber/CassandraStepdefs.java b/server/protocols/jmap-integration-testing/cassandra-jmap-integration-testing/src/test/java/org/apache/james/jmap/cassandra/cucumber/CassandraStepdefs.java
index 34aef64..066dc75 100644
--- a/server/protocols/jmap-integration-testing/cassandra-jmap-integration-testing/src/test/java/org/apache/james/jmap/cassandra/cucumber/CassandraStepdefs.java
+++ b/server/protocols/jmap-integration-testing/cassandra-jmap-integration-testing/src/test/java/org/apache/james/jmap/cassandra/cucumber/CassandraStepdefs.java
@@ -47,7 +47,7 @@ public class CassandraStepdefs {
     private final MainStepdefs mainStepdefs;
     private TemporaryFolder temporaryFolder = new TemporaryFolder();
     private EmbeddedElasticSearch embeddedElasticSearch = new EmbeddedElasticSearch(temporaryFolder, MailboxElasticsearchConstants.MAILBOX_INDEX);
-    private DockerCassandraRule cassandraServer = new DockerCassandraRule();
+    private DockerCassandraRule cassandraServer = CucumberCassandraSingleton.cassandraServer;
 
     @Inject
     private CassandraStepdefs(MainStepdefs mainStepdefs) {
@@ -58,7 +58,6 @@ public class CassandraStepdefs {
     public void init() throws Exception {
         temporaryFolder.create();
         embeddedElasticSearch.before();
-        cassandraServer.start();
         mainStepdefs.messageIdFactory = new CassandraMessageId.Factory();
         mainStepdefs.jmapServer = new GuiceJamesServer()
                 .combineWith(CassandraJamesServerMain.cassandraServerModule, CassandraJamesServerMain.protocols)
@@ -72,8 +71,7 @@ public class CassandraStepdefs {
     public void tearDown() {
         ignoreFailures(mainStepdefs::tearDown,
                 () -> embeddedElasticSearch.after(),
-                () -> temporaryFolder.delete(),
-                () -> cassandraServer.stop());
+                () -> temporaryFolder.delete());
     }
 
     private void ignoreFailures(ThrowingRunnable... cleaners) {

http://git-wip-us.apache.org/repos/asf/james-project/blob/833443ca/server/protocols/jmap-integration-testing/cassandra-jmap-integration-testing/src/test/java/org/apache/james/jmap/cassandra/cucumber/CassandraUploadCucumberTest.java
----------------------------------------------------------------------
diff --git a/server/protocols/jmap-integration-testing/cassandra-jmap-integration-testing/src/test/java/org/apache/james/jmap/cassandra/cucumber/CassandraUploadCucumberTest.java b/server/protocols/jmap-integration-testing/cassandra-jmap-integration-testing/src/test/java/org/apache/james/jmap/cassandra/cucumber/CassandraUploadCucumberTest.java
index 10e5d6c..8c9ef53 100644
--- a/server/protocols/jmap-integration-testing/cassandra-jmap-integration-testing/src/test/java/org/apache/james/jmap/cassandra/cucumber/CassandraUploadCucumberTest.java
+++ b/server/protocols/jmap-integration-testing/cassandra-jmap-integration-testing/src/test/java/org/apache/james/jmap/cassandra/cucumber/CassandraUploadCucumberTest.java
@@ -19,6 +19,8 @@
 
 package org.apache.james.jmap.cassandra.cucumber;
 
+import org.junit.AfterClass;
+import org.junit.BeforeClass;
 import org.junit.runner.RunWith;
 
 import cucumber.api.CucumberOptions;
@@ -30,4 +32,15 @@ import cucumber.api.junit.Cucumber;
                 tags = {"~@Ignore"},
                 strict = true)
 public class CassandraUploadCucumberTest {
+
+    @BeforeClass
+    public static void init() {
+        CucumberCassandraSingleton.cassandraServer.start();
+    }
+
+    @AfterClass
+    public static void after() {
+        CucumberCassandraSingleton.cassandraServer.stop();
+    }
+    
 }

http://git-wip-us.apache.org/repos/asf/james-project/blob/833443ca/server/protocols/jmap-integration-testing/cassandra-jmap-integration-testing/src/test/java/org/apache/james/jmap/cassandra/cucumber/CucumberCassandraSingleton.java
----------------------------------------------------------------------
diff --git a/server/protocols/jmap-integration-testing/cassandra-jmap-integration-testing/src/test/java/org/apache/james/jmap/cassandra/cucumber/CucumberCassandraSingleton.java b/server/protocols/jmap-integration-testing/cassandra-jmap-integration-testing/src/test/java/org/apache/james/jmap/cassandra/cucumber/CucumberCassandraSingleton.java
new file mode 100644
index 0000000..2d963e5
--- /dev/null
+++ b/server/protocols/jmap-integration-testing/cassandra-jmap-integration-testing/src/test/java/org/apache/james/jmap/cassandra/cucumber/CucumberCassandraSingleton.java
@@ -0,0 +1,27 @@
+/****************************************************************
+ * 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.jmap.cassandra.cucumber;
+
+import org.apache.james.backends.cassandra.DockerCassandraRule;
+
+public class CucumberCassandraSingleton {
+
+    public static DockerCassandraRule cassandraServer = new DockerCassandraRule();
+
+}


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


[13/13] james-project git commit: Merge branch 'JAMES-2133'

Posted by ma...@apache.org.
Merge branch 'JAMES-2133'


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

Branch: refs/heads/master
Commit: fd1c775e74815cab1f1aa6f71968c90a185a8ec9
Parents: e9c1a72 833443c
Author: Matthieu Baechler <ma...@apache.org>
Authored: Sat Sep 2 07:59:20 2017 +0200
Committer: Matthieu Baechler <ma...@apache.org>
Committed: Sat Sep 2 07:59:20 2017 +0200

----------------------------------------------------------------------
 backends-common/cassandra/pom.xml               |  23 +-
 .../cassandra/CassandraConfiguration.java       | 292 -------------------
 .../cassandra/init/CassandraConfiguration.java  | 292 +++++++++++++++++++
 .../init/CassandraSessionConfiguration.java     |  29 ++
 .../cassandra/init/CassandraTableManager.java   |   1 +
 .../cassandra/init/CassandraTypesCreator.java   |   2 +-
 .../SessionWithInitializedTablesFactory.java    |  43 ++-
 .../cassandra/utils/CassandraUtils.java         |   2 +-
 .../backends/cassandra/CassandraCluster.java    |  52 ++--
 .../cassandra/CassandraConfigurationTest.java   | 232 ---------------
 .../cassandra/CassandraWaitStrategy.java        |  64 ++++
 .../ContainerLifecycleConfiguration.java        |  95 ++++++
 .../backends/cassandra/DockerCassandraRule.java | 147 ++++++++++
 .../backends/cassandra/EmbeddedCassandra.java   |  50 ----
 .../init/CassandraConfigurationTest.java        | 233 +++++++++++++++
 .../init/CassandraTypeProviderTest.java         |  19 +-
 .../backends/cassandra/utils/PaggingTest.java   |  13 +-
 .../versions/CassandraSchemaVersionDAOTest.java |   8 +-
 .../src/test/resources/logback-test.xml         |  24 ++
 .../es/ClientProviderImplConnectionTest.java    |  10 +-
 .../AbstractSubscriptionManagerTest.java        |   4 -
 .../james/mailbox/MailboxManagerStressTest.java |   5 +-
 .../james/mailbox/MailboxManagerTest.java       |   6 +-
 mailbox/cassandra/pom.xml                       |  10 +-
 .../CassandraMailboxSessionMapperFactory.java   |   2 +-
 .../cassandra/mail/CassandraACLMapper.java      |   2 +-
 .../cassandra/mail/CassandraBlobsDAO.java       |   4 +-
 .../cassandra/mail/CassandraMailboxDAO.java     |   2 +-
 .../cassandra/mail/CassandraMailboxMapper.java  |   8 +-
 .../cassandra/mail/CassandraMessageDAO.java     |   6 +-
 .../mail/CassandraMessageIdMapper.java          |   2 +-
 .../cassandra/mail/CassandraMessageMapper.java  |   2 +-
 .../cassandra/mail/CassandraModSeqProvider.java |   2 +-
 .../cassandra/mail/CassandraUidProvider.java    |   2 +-
 .../CassandraCombinationManagerTest.java        |  59 +++-
 .../CassandraCombinationManagerTestSystem.java  |  17 +-
 .../CassandraMailboxManagerStressTest.java      |  49 ++--
 .../cassandra/CassandraMailboxManagerTest.java  |  54 ++--
 .../CassandraMessageIdManagerQuotaTest.java     |  62 +++-
 ...CassandraMessageIdManagerSideEffectTest.java |  56 +++-
 .../CassandraMessageIdManagerStorageTest.java   |  58 +++-
 .../CassandraMessageIdManagerTestSystem.java    |  26 +-
 .../CassandraSubscriptionManagerTest.java       |  33 ++-
 .../cassandra/CassandraTestSystemFixture.java   |  60 +---
 ...istributedMailboxDelegatingListenerTest.java |   6 +-
 ...CassandraMailboxPathRegistrerMapperTest.java |  20 +-
 .../cassandra/mail/CassandraACLMapperTest.java  |  10 +-
 .../mail/CassandraAnnotationMapperTest.java     |  51 +++-
 .../mail/CassandraApplicableFlagDAOTest.java    |   9 +-
 .../mail/CassandraAttachmentMapperTest.java     |  52 +++-
 .../cassandra/mail/CassandraBlobsDAOTest.java   |  22 +-
 .../mail/CassandraDeletedMessageDAOTest.java    |  19 +-
 .../mail/CassandraFirstUnseenDAOTest.java       |   9 +-
 .../mail/CassandraGenericMailboxMapperTest.java |  51 +++-
 .../mail/CassandraIndexTableHandlerTest.java    |   9 +-
 .../mail/CassandraMailboxCounterDAOTest.java    |   8 +-
 .../cassandra/mail/CassandraMailboxDAOTest.java |  11 +-
 .../CassandraMailboxManagerAttachmentTest.java  |  41 +--
 .../CassandraMailboxMapperConcurrencyTest.java  |  21 +-
 .../mail/CassandraMailboxMapperTest.java        |  17 +-
 .../mail/CassandraMailboxPathDAOTest.java       |   9 +-
 .../mail/CassandraMailboxRecentDAOTest.java     |   9 +-
 .../cassandra/mail/CassandraMapperProvider.java |  41 +--
 .../cassandra/mail/CassandraMessageDAOTest.java |  10 +-
 .../mail/CassandraMessageIdDAOTest.java         |   9 +-
 .../mail/CassandraMessageIdMapperTest.java      |  52 +++-
 .../CassandraMessageIdToImapUidDAOTest.java     |   9 +-
 .../mail/CassandraMessageMapperTest.java        |  51 +++-
 .../mail/CassandraMessageMoveTest.java          |  51 +++-
 ...assandraMessageWithAttachmentMapperTest.java |  51 +++-
 .../mail/CassandraModSeqProviderTest.java       |  15 +-
 .../mail/CassandraUidProviderTest.java          |  19 +-
 .../quota/CassandraCurrentQuotaManagerTest.java |  13 +-
 .../CassandraPerUserMaxQuotaManagerTest.java    |   8 +-
 .../user/CassandraSubscriptionMapperTest.java   |  14 +-
 .../src/test/resources/logback-test.xml         |  19 ++
 .../jcr/JCRMailboxManagerStressTest.java        |   6 +
 .../mailbox/jcr/JCRMailboxManagerTest.java      |   6 +
 .../mailbox/jcr/JCRSubscriptionManagerTest.java |  13 +
 .../mailbox/jpa/JPAMailboxManagerTest.java      |   6 +
 .../mailbox/jpa/JPASubscriptionManagerTest.java |   6 +
 .../jpa/JpaMailboxManagerStressTest.java        |   6 +
 .../mailbox/jpa/mail/JPAMapperProvider.java     |  10 -
 .../jpa/mail/JpaAnnotationMapperTest.java       |   6 +
 .../mailbox/jpa/mail/JpaMailboxMapperTest.java  |  12 +
 .../mailbox/jpa/mail/JpaMessageMapperTest.java  |  12 +
 ...mainUserMaildirMailboxManagerStressTest.java |   6 +
 .../DomainUserMaildirMailboxManagerTest.java    |   6 +
 ...FullUserMaildirMailboxManagerStressTest.java |   6 +
 .../FullUserMaildirMailboxManagerTest.java      |   6 +
 .../maildir/MaildirSubscriptionManagerTest.java |  13 +-
 .../UserMaildirMailboxManagerStressTest.java    |   6 +
 .../InMemoryCombinationManagerTest.java         |   6 +
 .../InMemoryCombinationManagerTestSystem.java   |   6 -
 .../InMemoryMessageIdManagerStorageTest.java    |   6 +
 .../InMemoryMessageIdManagerTestSystem.java     |   5 -
 .../MemoryMailboxManagerStressTest.java         |   7 +
 .../inmemory/MemoryMailboxManagerTest.java      |   7 +
 .../InMemoryMailboxManagerAttachmentTest.java   |   6 +-
 .../inmemory/mail/InMemoryMapperProvider.java   |  10 -
 .../mail/MemoryAnnotationMapperTest.java        |   7 +
 .../mail/MemoryAttachmentMapperTest.java        |   8 +
 .../inmemory/mail/MemoryMailboxMapperTest.java  |   7 +
 .../inmemory/mail/MemoryMessageMapperTest.java  |   7 +
 .../inmemory/mail/MemoryMessageMoveTest.java    |   6 +
 .../MemoryMessageWithAttachmentMapperTest.java  |   7 +
 .../store/AbstractCombinationManagerTest.java   |   8 +-
 .../AbstractMailboxManagerAttachmentTest.java   |  11 -
 .../AbstractMessageIdManagerQuotaTest.java      |   6 -
 .../AbstractMessageIdManagerSideEffectTest.java |   7 -
 .../AbstractMessageIdManagerStorageTest.java    |   8 -
 .../store/CombinationManagerTestSystem.java     |   1 -
 .../store/MessageIdManagerTestSystem.java       |   2 -
 .../StoreMessageIdManagerSideEffectTest.java    |   5 +
 .../store/StoreMessageIdManagerTestSystem.java  |   5 -
 .../store/mail/model/AnnotationMapperTest.java  |  12 +-
 .../store/mail/model/AttachmentMapperTest.java  |  11 +-
 .../store/mail/model/MailboxMapperTest.java     |  11 +-
 .../store/mail/model/MapperProvider.java        |   5 +-
 .../store/mail/model/MessageIdMapperTest.java   |  12 +-
 .../store/mail/model/MessageMapperTest.java     |  12 +-
 .../store/mail/model/MessageMoveTest.java       |  12 +-
 .../model/MessageWithAttachmentMapperTest.java  |  12 +-
 .../james/mailbox/tika/TikaContainer.java       |   4 +-
 .../MailAttributesListToMimeHeaders.java        |   5 +-
 .../MailAttributesToMimeHeadersTest.java        |   1 -
 .../org/apache/james/mpt/api/HostSystem.java    |   4 -
 .../mpt/script/SimpleScriptedTestProtocol.java  |   2 +-
 mpt/impl/imap-mailbox/cassandra/pom.xml         |   5 -
 .../cassandra/CassandraAuthenticatePlain.java   |   9 +-
 .../cassandra/CassandraAuthenticatedState.java  |   9 +-
 .../cassandra/CassandraConcurrentSessions.java  |   9 +-
 .../cassandra/CassandraCondstore.java           |   9 +-
 .../imapmailbox/cassandra/CassandraCopy.java    |   9 +-
 .../imapmailbox/cassandra/CassandraEvents.java  |   9 +-
 .../imapmailbox/cassandra/CassandraExpunge.java |   9 +-
 .../imapmailbox/cassandra/CassandraFetch.java   |   9 +-
 .../cassandra/CassandraFetchBodySection.java    |   9 +-
 .../cassandra/CassandraFetchBodyStructure.java  |   9 +-
 .../cassandra/CassandraFetchHeaders.java        |   9 +-
 .../imapmailbox/cassandra/CassandraListing.java |   9 +-
 .../cassandra/CassandraMailboxAnnotation.java   |   9 +-
 .../cassandra/CassandraMailboxTestModule.java   |  10 +-
 .../CassandraMailboxWithLongNameError.java      |   9 +-
 .../imapmailbox/cassandra/CassandraMove.java    |   9 +-
 .../CassandraNonAuthenticatedState.java         |   9 +-
 .../cassandra/CassandraPartialFetch.java        |   9 +-
 .../cassandra/CassandraQuotaTest.java           |   9 +-
 .../imapmailbox/cassandra/CassandraRename.java  |   9 +-
 .../imapmailbox/cassandra/CassandraSearch.java  |   9 +-
 .../cassandra/CassandraSecurity.java            |   9 +-
 .../imapmailbox/cassandra/CassandraSelect.java  |   9 +-
 .../cassandra/CassandraSelectedInbox.java       |   9 +-
 .../cassandra/CassandraSelectedState.java       |   9 +-
 .../cassandra/CassandraUidSearch.java           |   9 +-
 .../cassandra/CassandraUidSearchOnIndex.java    |   9 +-
 .../cassandra/CassandraUserFlagsSupport.java    |   9 +-
 .../cassandra/host/CassandraHostSystem.java     |  30 +-
 .../james/mpt/host/JamesImapHostSystem.java     |  41 +--
 .../mpt/imapmailbox/suite/UidSearchOnIndex.java |   2 -
 .../imap/scripts/CreateErrorWithLongName.test   |   2 +-
 .../host/ElasticSearchHostSystem.java           |   6 +-
 .../hbase/HBaseAuthenticatePlain.java           |   1 +
 .../hbase/HBaseAuthenticatedState.java          |   1 +
 .../hbase/HBaseConcurrentSessions.java          |   1 +
 .../mpt/imapmailbox/hbase/HBaseCondstore.java   |   1 +
 .../james/mpt/imapmailbox/hbase/HBaseCopy.java  |   1 +
 .../mpt/imapmailbox/hbase/HBaseEvents.java      |   1 +
 .../mpt/imapmailbox/hbase/HBaseExpunge.java     |   1 +
 .../james/mpt/imapmailbox/hbase/HBaseFetch.java |   1 +
 .../hbase/HBaseFetchBodySection.java            |   1 +
 .../hbase/HBaseFetchBodyStructure.java          |   1 +
 .../imapmailbox/hbase/HBaseFetchHeaders.java    |   1 +
 .../mpt/imapmailbox/hbase/HBaseListing.java     |   1 +
 .../hbase/HBaseMailboxAnnotation.java           |   1 +
 .../hbase/HBaseMailboxWithLongNameError.java    |   1 +
 .../hbase/HBaseNonAuthenticatedState.java       |   1 +
 .../imapmailbox/hbase/HBasePartialFetch.java    |   1 +
 .../mpt/imapmailbox/hbase/HBaseQuotaTest.java   |   1 +
 .../mpt/imapmailbox/hbase/HBaseRename.java      |   1 +
 .../mpt/imapmailbox/hbase/HBaseSearch.java      |   1 +
 .../mpt/imapmailbox/hbase/HBaseSecurity.java    |   1 +
 .../mpt/imapmailbox/hbase/HBaseSelect.java      |   1 +
 .../imapmailbox/hbase/HBaseSelectedInbox.java   |   1 +
 .../imapmailbox/hbase/HBaseSelectedState.java   |   1 +
 .../mpt/imapmailbox/hbase/HBaseUidSearch.java   |   1 +
 .../hbase/HBaseUidSearchOnIndex.java            |   1 +
 .../hbase/HBaseUserFlagsSupport.java            |   1 +
 .../imapmailbox/hbase/host/HBaseHostSystem.java |  29 +-
 .../hbase/src/test/resources/logback-test.xml   |  22 ++
 .../inmemory/InMemoryAuthenticatePlain.java     |   1 +
 .../inmemory/InMemoryAuthenticatedState.java    |   1 +
 .../inmemory/InMemoryConcurrentSessions.java    |   1 +
 .../imapmailbox/inmemory/InMemoryCondstore.java |   1 +
 .../mpt/imapmailbox/inmemory/InMemoryCopy.java  |   1 +
 .../imapmailbox/inmemory/InMemoryEvents.java    |   1 +
 .../imapmailbox/inmemory/InMemoryExpunge.java   |   1 +
 .../mpt/imapmailbox/inmemory/InMemoryFetch.java |   1 +
 .../inmemory/InMemoryFetchBodySection.java      |   1 +
 .../inmemory/InMemoryFetchBodyStructure.java    |   1 +
 .../inmemory/InMemoryFetchHeaders.java          |   1 +
 .../imapmailbox/inmemory/InMemoryListing.java   |   1 +
 .../inmemory/InMemoryMailboxAnnotation.java     |   1 +
 .../InMemoryMailboxWithLongNameSuccess.java     |   1 +
 .../mpt/imapmailbox/inmemory/InMemoryMove.java  |   1 +
 .../inmemory/InMemoryNonAuthenticatedState.java |   1 +
 .../inmemory/InMemoryPartialFetch.java          |   1 +
 .../imapmailbox/inmemory/InMemoryQuotaTest.java |   1 +
 .../imapmailbox/inmemory/InMemoryRename.java    |   1 +
 .../imapmailbox/inmemory/InMemorySearch.java    |   1 +
 .../imapmailbox/inmemory/InMemorySecurity.java  |   1 +
 .../imapmailbox/inmemory/InMemorySelect.java    |   1 +
 .../inmemory/InMemorySelectedInbox.java         |   1 +
 .../inmemory/InMemorySelectedState.java         |   1 +
 .../imapmailbox/inmemory/InMemoryUidSearch.java |   1 +
 .../inmemory/InMemoryUidSearchOnIndex.java      |   1 +
 .../inmemory/InMemoryUserFlagsSupport.java      |   1 +
 .../inmemory/host/InMemoryHostSystem.java       |  11 +-
 .../mpt/imapmailbox/jcr/host/JCRHostSystem.java |   6 +-
 .../imapmailbox/jpa/JpaAuthenticatePlain.java   |   1 +
 .../imapmailbox/jpa/JpaAuthenticatedState.java  |   1 +
 .../imapmailbox/jpa/JpaConcurrentSessions.java  |   1 +
 .../james/mpt/imapmailbox/jpa/JpaCondstore.java |   1 +
 .../james/mpt/imapmailbox/jpa/JpaCopy.java      |   1 +
 .../james/mpt/imapmailbox/jpa/JpaEvents.java    |   1 +
 .../james/mpt/imapmailbox/jpa/JpaExpunge.java   |   1 +
 .../james/mpt/imapmailbox/jpa/JpaFetch.java     |   1 +
 .../imapmailbox/jpa/JpaFetchBodySection.java    |   1 +
 .../imapmailbox/jpa/JpaFetchBodyStructure.java  |   1 +
 .../mpt/imapmailbox/jpa/JpaFetchHeaders.java    |   1 +
 .../james/mpt/imapmailbox/jpa/JpaListing.java   |   1 +
 .../imapmailbox/jpa/JpaMailboxAnnotation.java   |   1 +
 .../jpa/JpaNonAuthenticatedState.java           |   1 +
 .../mpt/imapmailbox/jpa/JpaPartialFetch.java    |   1 +
 .../james/mpt/imapmailbox/jpa/JpaQuotaTest.java |   1 +
 .../james/mpt/imapmailbox/jpa/JpaRename.java    |   1 +
 .../james/mpt/imapmailbox/jpa/JpaSearch.java    |   1 +
 .../james/mpt/imapmailbox/jpa/JpaSecurity.java  |   1 +
 .../james/mpt/imapmailbox/jpa/JpaSelect.java    |   1 +
 .../mpt/imapmailbox/jpa/JpaSelectedInbox.java   |   1 +
 .../mpt/imapmailbox/jpa/JpaSelectedState.java   |   1 +
 .../james/mpt/imapmailbox/jpa/JpaUidSearch.java |   1 +
 .../imapmailbox/jpa/JpaUidSearchOnIndex.java    |   1 +
 .../imapmailbox/jpa/JpaUserFlagsSupport.java    |   1 +
 .../mpt/imapmailbox/jpa/host/JPAHostSystem.java |  25 +-
 .../host/LuceneSearchHostSystem.java            |   4 +-
 .../maildir/MaildirAuthenticatePlain.java       |   1 +
 .../maildir/MaildirAuthenticatedState.java      |   1 +
 .../maildir/MaildirConcurrentSessions.java      |   1 +
 .../imapmailbox/maildir/MaildirCondstore.java   |   1 +
 .../mpt/imapmailbox/maildir/MaildirCopy.java    |   1 +
 .../mpt/imapmailbox/maildir/MaildirEvents.java  |   1 +
 .../mpt/imapmailbox/maildir/MaildirExpunge.java |   1 +
 .../mpt/imapmailbox/maildir/MaildirFetch.java   |   1 +
 .../maildir/MaildirFetchBodySection.java        |   1 +
 .../maildir/MaildirFetchBodyStructure.java      |   1 +
 .../maildir/MaildirFetchHeaders.java            |   1 +
 .../mpt/imapmailbox/maildir/MaildirListing.java |   1 +
 .../maildir/MaildirNonAuthenticatedState.java   |   1 +
 .../maildir/MaildirPartialFetch.java            |   1 +
 .../mpt/imapmailbox/maildir/MaildirRename.java  |   1 +
 .../mpt/imapmailbox/maildir/MaildirSearch.java  |   1 +
 .../imapmailbox/maildir/MaildirSecurity.java    |   1 +
 .../mpt/imapmailbox/maildir/MaildirSelect.java  |   1 +
 .../maildir/MaildirSelectedInbox.java           |   1 +
 .../maildir/MaildirSelectedState.java           |   1 +
 .../imapmailbox/maildir/MaildirUidSearch.java   |   1 +
 .../maildir/MaildirUidSearchOnIndex.java        |   1 +
 .../maildir/host/MaildirHostSystem.java         |   9 +-
 mpt/impl/managesieve/cassandra/pom.xml          |   6 +-
 .../cassandra/CassandraAuthenticateTest.java    |   6 +-
 .../cassandra/CassandraCapabilityTest.java      |   6 +-
 .../cassandra/CassandraCheckScriptTest.java     |   6 +-
 .../cassandra/CassandraDeleteScriptTest.java    |   6 +-
 .../cassandra/CassandraGetScriptTest.java       |   6 +-
 .../cassandra/CassandraHaveSpaceTest.java       |   6 +-
 .../cassandra/CassandraListScriptsTest.java     |   6 +-
 .../cassandra/CassandraLogoutTest.java          |   7 +-
 .../managesieve/cassandra/CassandraModule.java  |  16 +-
 .../cassandra/CassandraNoopTest.java            |   6 +-
 .../cassandra/CassandraPutScriptTest.java       |   6 +-
 .../cassandra/CassandraRenameScriptTest.java    |   6 +-
 .../cassandra/CassandraSetActiveTest.java       |   6 +-
 .../cassandra/CassandraStartTlsTest.java        |   6 +-
 .../cassandra/CassandraUnauthenticatedTest.java |   6 +-
 .../cassandra/host/CassandraHostSystem.java     |  40 +--
 mpt/impl/managesieve/core/pom.xml               |   4 +
 .../mpt/host/JamesManageSieveHostSystem.java    |  36 +--
 .../managesieve/file/host/FileHostSystem.java   |  16 +-
 mpt/impl/smtp/cassandra/pom.xml                 |   5 -
 .../mpt/smtp/CassandraForwardSmtpTest.java      |   7 +-
 .../smtp/CassandraSmtpStarttlsCommandTest.java  |   7 +-
 .../apache/james/mpt/smtp/SmtpTestModule.java   |  10 +-
 .../smtp/host/CassandraJamesSmtpHostSystem.java |  21 +-
 .../apache/james/mpt/smtp/ForwardSmtpTest.java  |   4 +-
 server/container/guice/cassandra-guice/pom.xml  |   6 +-
 .../mailbox/CassandraSessionConfiguration.java  |  29 --
 .../modules/mailbox/CassandraSessionModule.java | 147 +---------
 .../mailbox/ResilientClusterProvider.java       | 178 +++++++++++
 .../apache/james/CassandraJamesServerTest.java  |   6 +-
 .../org/apache/james/CassandraJmapTestRule.java |   3 +-
 .../james/CassandraLogConfigurationTest.java    |   8 +-
 .../CassandraMessageIdManagerInjectionTest.java |   7 +-
 .../org/apache/james/CassandraNodeConfTest.java |  12 +-
 .../james/CassandraVersionCheckingTest.java     |  10 +
 .../org/apache/james/CassandraWithTikaTest.java |   2 +-
 .../james/DefaultCassandraJamesServerTest.java  |   6 +-
 .../org/apache/james/DockerCassandraRule.java   |  66 ++---
 .../apache/james/DockerElasticSearchRule.java   |  14 +-
 .../java/org/apache/james/ESReporterTest.java   |   2 +-
 .../org/apache/james/EmbeddedCassandraRule.java |  75 -----
 .../james/JamesCapabilitiesServerTest.java      |  29 +-
 .../JamesServerWithRetryConnectionTest.java     |  21 +-
 .../modules/CassandraJmapServerModule.java      |  17 +-
 .../mailbox/CassandraSessionModuleTest.java     |   2 +-
 .../guice/cassandra-ldap-guice/pom.xml          |  11 +-
 .../apache/james/CassandraLdapJmapTestRule.java |   2 +-
 .../apache/james/metric/es/ESReporterTest.java  |   4 +-
 .../util/streams/SwarmGenericContainer.java     |  21 +-
 server/data/data-cassandra/pom.xml              |   9 +-
 .../cassandra/CassandraDomainListTest.java      |  18 +-
 .../CassandraRecipientRewriteTableTest.java     |  16 +-
 .../james/rrt/cassandra/CassandraStepdefs.java  |   4 +-
 .../james/rrt/cassandra/RewriteTablesTest.java  |   4 +
 .../cassandra/CassandraActiveScriptDAOTest.java |  10 +-
 .../sieve/cassandra/CassandraSieveDAOTest.java  |  14 +-
 .../cassandra/CassandraSieveQuotaDAOTest.java   |  12 +-
 .../cassandra/CassandraSieveRepositoryTest.java |  27 +-
 .../cassandra/CassandraUsersRepositoryTest.java |  17 +-
 .../rrt/file/XMLRecipientRewriteTableTest.java  |  10 +-
 .../file/SieveFileRepositoryTest.java           |  12 +-
 .../domainlist/hbase/HBaseDomainListTest.java   |  15 +
 .../hbase/HBaseRecipientRewriteTableTest.java   |  11 +-
 .../jdbc/JDBCMailRepositoryTest.java            |   6 -
 .../rrt/jdbc/JDBCRecipientRewriteTableTest.java |  13 +
 .../jdbc/DefaultUsersJdbcRepositoryTest.java    |  12 +
 .../user/jdbc/JamesUsersJdbcRepositoryTest.java |  13 +
 server/data/data-jmap-cassandra/pom.xml         |  10 +-
 .../CassandraAccessTokenRepositoryTest.java     |  26 +-
 .../CassandraNotificationRegistryTest.java      |  21 +-
 .../CassandraVacationRepositoryTest.java        |  22 +-
 .../api/access/AccessTokenRepositoryTest.java   |   4 +-
 .../AbstractVacationRepositoryTest.java         |   2 +-
 .../access/MemoryAccessTokenRepositoryTest.java |   7 +
 .../james/domainlist/jpa/JPADomainListTest.java |  16 +
 .../rrt/jpa/JPARecipientRewriteTableTest.java   |  12 +
 .../james/user/jpa/JpaUsersRepositoryTest.java  |   9 +-
 .../james/user/ldap/LdapGenericContainer.java   |  10 +-
 .../ldap/ReadOnlyUsersLDAPRepositoryTest.java   |   4 +-
 .../domainlist/lib/AbstractDomainListTest.java  |  25 --
 .../lib/AbstractRecipientRewriteTableTest.java  |   6 +-
 .../lib/AbstractSieveRepositoryTest.java        |  10 -
 .../user/lib/AbstractUsersRepositoryTest.java   |   4 -
 .../domainlist/memory/MemoryDomainListTest.java |   6 +
 .../memory/MemoryRecipientRewriteTableTest.java |  12 +
 .../user/memory/MemoryUsersRepositoryTest.java  |   6 +
 .../james/transport/mailets/amqp/AmqpRule.java  |   2 +-
 .../cassandra-jmap-integration-testing/pom.xml  |  11 +-
 .../CassandraGetMailboxesMethodTest.java        |   7 +-
 .../CassandraGetMessageListMethodTest.java      |  16 +-
 .../CassandraGetVacationResponseTest.java       |   7 +-
 .../CassandraJmapAuthenticationTest.java        |   7 +-
 .../CassandraSetMailboxesMethodTest.java        |  12 +-
 .../CassandraSetMessagesMethodTest.java         |  16 +-
 .../CassandraSetVacationResponseTest.java       |   7 +-
 ...ssandraUserProvisionningConcurrencyTest.java |   8 +-
 .../CassandraVacationIntegrationTest.java       |   6 +-
 .../CassandraVacationRelayIntegrationTest.java  |   9 +-
 .../cucumber/CassandraDownloadCucumberTest.java |  12 +
 .../CassandraGetMessagesMethodTest.java         |  13 +
 ...ssandraIMAPSetMessagesCompatibilityTest.java |  13 +
 ...CassandraSetMailboxesMethodCucumberTest.java |  13 +
 .../cassandra/cucumber/CassandraStepdefs.java   |   6 +-
 .../cucumber/CassandraUploadCucumberTest.java   |  13 +
 .../cucumber/CucumberCassandraSingleton.java    |  27 ++
 .../org/apache/james/jmap/ContainerTest.java    |   4 +-
 .../jmap/VacationRelayIntegrationTest.java      |   3 +-
 .../integration/SetMessagesMethodTest.java      |   1 -
 .../jmap/json/ParsingWritingObjectsTest.java    |   1 -
 .../jmap/methods/GetMessagesMethodTest.java     |  51 ++--
 .../james/jmap/model/FilterConditionTest.java   |   4 +-
 .../apache/james/jmap/model/KeywordTest.java    |   1 -
 .../jmap/model/UpdateMessagePatchTest.java      |  10 +-
 .../jmap/utils/FilterToSearchQueryTest.java     |   2 -
 .../protocols/webadmin-integration-test/pom.xml |  11 +-
 .../integration/JwtFilterIntegrationTest.java   |   7 +-
 .../WebAdminServerIntegrationTest.java          |   7 +-
 387 files changed, 3500 insertions(+), 1997 deletions(-)
----------------------------------------------------------------------



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