You are viewing a plain text version of this content. The canonical link for it is here.
Posted to server-dev@james.apache.org by bt...@apache.org on 2019/06/07 02:40:14 UTC

[james-project] branch master updated (d4ed70a -> 26131bc)

This is an automated email from the ASF dual-hosted git repository.

btellier pushed a change to branch master
in repository https://gitbox.apache.org/repos/asf/james-project.git.


    from d4ed70a  Merge remote-tracking branch 'mine/random'
     new 56ca7c3  JAMES-2291 Decrease concurrency in storingAndRemovingMessagesConcurrentlyShouldLeadToConsistentResult
     new 0fbe20b  JAMES-2291 Restarting Cassandra periodically in MailRepositories tests
     new 9fc36db  JAMES-2717 Fasten ElasticSearch backend tests by reusing forks
     new 389d23d  JAMES-2783 Container should not be restarted before each test
     new 26131bc  JAMES-2783 use the updated ES extension for ES reporter tests

The 5 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails.  The revisions
listed as "add" were already present in the repository and have only
been added to this reference.


Summary of changes:
 backends-common/elasticsearch/pom.xml              | 12 +++++
 .../container/metrics/metrics-es-reporter/pom.xml  |  7 +++
 .../metric/es/DockerElasticSearch6Extension.java   | 62 ----------------------
 ...sion.java => DockerElasticSearchExtension.java} | 45 +++++++++-------
 .../apache/james/metric/es/ES2ReporterTest.java    |  9 +++-
 .../apache/james/metric/es/ES6ReporterTest.java    |  7 ++-
 .../apache/james/metric/es/ESReporterContract.java | 16 +++---
 .../mailrepository/MailRepositoryContract.java     |  4 +-
 .../CassandraMailRepositoryCountDAOTest.java       |  3 ++
 .../CassandraMailRepositoryKeysDAOTest.java        |  3 ++
 .../CassandraMailRepositoryMailDAOTest.java        |  3 ++
 .../cassandra/CassandraMailRepositoryTest.java     |  4 ++
 12 files changed, 81 insertions(+), 94 deletions(-)
 delete mode 100644 server/container/metrics/metrics-es-reporter/src/test/java/org/apache/james/metric/es/DockerElasticSearch6Extension.java
 rename server/container/metrics/metrics-es-reporter/src/test/java/org/apache/james/metric/es/{DockerElasticSearch2Extension.java => DockerElasticSearchExtension.java} (66%)


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


[james-project] 01/05: JAMES-2291 Decrease concurrency in storingAndRemovingMessagesConcurrentlyShouldLeadToConsistentResult

Posted by bt...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

btellier pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/james-project.git

commit 56ca7c3bdd1258a11c5f3ac7942e634c2ceee991
Author: Benoit Tellier <bt...@linagora.com>
AuthorDate: Thu Jun 6 13:39:56 2019 +0700

    JAMES-2291 Decrease concurrency in storingAndRemovingMessagesConcurrentlyShouldLeadToConsistentResult
    
    This test overloads some resources limited environments and leads to failure. (Write Timeouts)
    
    Concurrency is counter balanced by an increased operation count.
    
    Note that this test is played 100 times.
---
 .../java/org/apache/james/mailrepository/MailRepositoryContract.java  | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/server/mailrepository/mailrepository-api/src/test/java/org/apache/james/mailrepository/MailRepositoryContract.java b/server/mailrepository/mailrepository-api/src/test/java/org/apache/james/mailrepository/MailRepositoryContract.java
index c445f49..b24dad6 100644
--- a/server/mailrepository/mailrepository-api/src/test/java/org/apache/james/mailrepository/MailRepositoryContract.java
+++ b/server/mailrepository/mailrepository-api/src/test/java/org/apache/james/mailrepository/MailRepositoryContract.java
@@ -469,8 +469,8 @@ public interface MailRepositoryContract {
 
         ConcurrentTestRunner.builder()
             .operation((a, b) -> distribution.sample().run())
-            .threadCount(10)
-            .operationCount(10)
+            .threadCount(5)
+            .operationCount(20)
             .runSuccessfullyWithin(Duration.ofMinutes(1));
 
         assertThat(testee.list()).containsOnlyElementsOf(expectedResult);


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


[james-project] 03/05: JAMES-2717 Fasten ElasticSearch backend tests by reusing forks

Posted by bt...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

btellier pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/james-project.git

commit 9fc36dbbf3ba7be37d01eddfeb8baaa4e699aff0
Author: Benoit Tellier <bt...@linagora.com>
AuthorDate: Thu Jun 6 15:20:49 2019 +0700

    JAMES-2717 Fasten ElasticSearch backend tests by reusing forks
    
    Init of the docker engine is done 5 times, as well as starting the
    ElasticSearch singleton. Re-using forks allows doing this only once using
    mvn to run tests.
---
 backends-common/elasticsearch/pom.xml | 12 ++++++++++++
 1 file changed, 12 insertions(+)

diff --git a/backends-common/elasticsearch/pom.xml b/backends-common/elasticsearch/pom.xml
index 34c99af..7f92990 100644
--- a/backends-common/elasticsearch/pom.xml
+++ b/backends-common/elasticsearch/pom.xml
@@ -99,4 +99,16 @@
             <scope>test</scope>
         </dependency>
     </dependencies>
+
+    <build>
+        <plugins>
+            <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-surefire-plugin</artifactId>
+                <configuration>
+                    <reuseForks>true</reuseForks>
+                </configuration>
+            </plugin>
+        </plugins>
+    </build>
 </project>
\ No newline at end of file


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


[james-project] 04/05: JAMES-2783 Container should not be restarted before each test

Posted by bt...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

btellier pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/james-project.git

commit 389d23d1f8b444e15885dc9c9805c5addedefb5d
Author: Tran Tien Duc <dt...@linagora.com>
AuthorDate: Tue Jun 4 14:15:02 2019 +0700

    JAMES-2783 Container should not be restarted before each test
    
    Cleanup all data in ES container after each test is enough
---
 .../container/metrics/metrics-es-reporter/pom.xml  |  7 ++++
 ...sion.java => DockerElasticSearchExtension.java} | 45 +++++++++++++---------
 2 files changed, 34 insertions(+), 18 deletions(-)

diff --git a/server/container/metrics/metrics-es-reporter/pom.xml b/server/container/metrics/metrics-es-reporter/pom.xml
index 8190fb5..f1ccd20 100644
--- a/server/container/metrics/metrics-es-reporter/pom.xml
+++ b/server/container/metrics/metrics-es-reporter/pom.xml
@@ -27,6 +27,7 @@
     </parent>
 
     <artifactId>metrics-es-reporter</artifactId>
+    <name>Apache James :: Server :: Metrics ElasticSearch Reporter</name>
 
     <dependencies>
         <dependency>
@@ -36,6 +37,12 @@
         </dependency>
         <dependency>
             <groupId>${james.groupId}</groupId>
+            <artifactId>apache-james-backends-es</artifactId>
+            <scope>test</scope>
+            <type>test-jar</type>
+        </dependency>
+        <dependency>
+            <groupId>${james.groupId}</groupId>
             <artifactId>james-server-lifecycle-api</artifactId>
         </dependency>
         <dependency>
diff --git a/server/container/metrics/metrics-es-reporter/src/test/java/org/apache/james/metric/es/DockerElasticSearch2Extension.java b/server/container/metrics/metrics-es-reporter/src/test/java/org/apache/james/metric/es/DockerElasticSearchExtension.java
similarity index 66%
rename from server/container/metrics/metrics-es-reporter/src/test/java/org/apache/james/metric/es/DockerElasticSearch2Extension.java
rename to server/container/metrics/metrics-es-reporter/src/test/java/org/apache/james/metric/es/DockerElasticSearchExtension.java
index 691db66..1a8698b 100644
--- a/server/container/metrics/metrics-es-reporter/src/test/java/org/apache/james/metric/es/DockerElasticSearch2Extension.java
+++ b/server/container/metrics/metrics-es-reporter/src/test/java/org/apache/james/metric/es/DockerElasticSearchExtension.java
@@ -16,46 +16,55 @@
  * specific language governing permissions and limitations      *
  * under the License.                                           *
  ****************************************************************/
+
 package org.apache.james.metric.es;
 
-import org.apache.james.util.docker.DockerGenericContainer;
-import org.apache.james.util.docker.Images;
-import org.apache.james.util.docker.RateLimiters;
+import org.apache.james.backends.es.DockerElasticSearch;
+import org.junit.jupiter.api.extension.AfterAllCallback;
 import org.junit.jupiter.api.extension.AfterEachCallback;
+import org.junit.jupiter.api.extension.BeforeAllCallback;
 import org.junit.jupiter.api.extension.BeforeEachCallback;
 import org.junit.jupiter.api.extension.ExtensionContext;
 import org.junit.jupiter.api.extension.ParameterContext;
 import org.junit.jupiter.api.extension.ParameterResolutionException;
 import org.junit.jupiter.api.extension.ParameterResolver;
-import org.testcontainers.containers.wait.strategy.HostPortWaitStrategy;
 
-public class DockerElasticSearch2Extension implements ParameterResolver, BeforeEachCallback, AfterEachCallback {
-    private final DockerGenericContainer elasticSearchContainer;
+public class DockerElasticSearchExtension implements AfterAllCallback, BeforeAllCallback, BeforeEachCallback, AfterEachCallback,
+    ParameterResolver {
+
+    private final DockerElasticSearch elasticSearch;
+
+    DockerElasticSearchExtension(DockerElasticSearch elasticSearch) {
+        this.elasticSearch = elasticSearch;
+    }
+
+    @Override
+    public void beforeAll(ExtensionContext context) throws Exception {
+        elasticSearch.start();
+    }
 
-    private DockerElasticSearch2Extension() {
-        this.elasticSearchContainer = new DockerGenericContainer(Images.ELASTICSEARCH_2)
-            .withAffinityToContainer()
-            .withExposedPorts(ESReporterContract.ES_HTTP_PORT)
-            .waitingFor(new HostPortWaitStrategy().withRateLimiter(RateLimiters.TWENTIES_PER_SECOND));
+    @Override
+    public void beforeEach(ExtensionContext context) throws Exception {
+        elasticSearch.awaitForElasticSearch();
     }
 
     @Override
-    public void beforeEach(ExtensionContext extensionContext) {
-        elasticSearchContainer.start();
+    public void afterEach(ExtensionContext context) throws Exception {
+        elasticSearch.cleanUpData();
     }
 
     @Override
-    public void afterEach(ExtensionContext extensionContext) {
-        elasticSearchContainer.stop();
+    public void afterAll(ExtensionContext context) throws Exception {
+        elasticSearch.stop();
     }
 
     @Override
     public boolean supportsParameter(ParameterContext parameterContext, ExtensionContext extensionContext) throws ParameterResolutionException {
-        return (parameterContext.getParameter().getType() == DockerGenericContainer.class);
+        return (parameterContext.getParameter().getType() == DockerElasticSearch.class);
     }
 
     @Override
     public Object resolveParameter(ParameterContext parameterContext, ExtensionContext extensionContext) throws ParameterResolutionException {
-        return elasticSearchContainer;
+        return elasticSearch;
     }
-}
\ No newline at end of file
+}


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


[james-project] 05/05: JAMES-2783 use the updated ES extension for ES reporter tests

Posted by bt...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

btellier pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/james-project.git

commit 26131bc8edd550b975976857d5b999b1c6a3d908
Author: Tran Tien Duc <dt...@linagora.com>
AuthorDate: Tue Jun 4 14:16:00 2019 +0700

    JAMES-2783 use the updated ES extension for ES reporter tests
---
 .../metric/es/DockerElasticSearch6Extension.java   | 62 ----------------------
 .../apache/james/metric/es/ES2ReporterTest.java    |  9 +++-
 .../apache/james/metric/es/ES6ReporterTest.java    |  7 ++-
 .../apache/james/metric/es/ESReporterContract.java | 16 +++---
 4 files changed, 20 insertions(+), 74 deletions(-)

diff --git a/server/container/metrics/metrics-es-reporter/src/test/java/org/apache/james/metric/es/DockerElasticSearch6Extension.java b/server/container/metrics/metrics-es-reporter/src/test/java/org/apache/james/metric/es/DockerElasticSearch6Extension.java
deleted file mode 100644
index fb58eaf..0000000
--- a/server/container/metrics/metrics-es-reporter/src/test/java/org/apache/james/metric/es/DockerElasticSearch6Extension.java
+++ /dev/null
@@ -1,62 +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.metric.es;
-
-import org.apache.james.util.docker.DockerGenericContainer;
-import org.apache.james.util.docker.Images;
-import org.apache.james.util.docker.RateLimiters;
-import org.junit.jupiter.api.extension.AfterEachCallback;
-import org.junit.jupiter.api.extension.BeforeEachCallback;
-import org.junit.jupiter.api.extension.ExtensionContext;
-import org.junit.jupiter.api.extension.ParameterContext;
-import org.junit.jupiter.api.extension.ParameterResolutionException;
-import org.junit.jupiter.api.extension.ParameterResolver;
-import org.testcontainers.containers.wait.strategy.HostPortWaitStrategy;
-
-public class DockerElasticSearch6Extension implements ParameterResolver, BeforeEachCallback, AfterEachCallback {
-    private final DockerGenericContainer elasticSearchContainer;
-
-    private DockerElasticSearch6Extension() {
-        this.elasticSearchContainer = new DockerGenericContainer(Images.ELASTICSEARCH_6)
-            .withEnv("discovery.type", "single-node")
-            .withAffinityToContainer()
-            .withExposedPorts(ESReporterContract.ES_HTTP_PORT)
-            .waitingFor(new HostPortWaitStrategy().withRateLimiter(RateLimiters.TWENTIES_PER_SECOND));
-    }
-
-    @Override
-    public void beforeEach(ExtensionContext extensionContext) {
-        elasticSearchContainer.start();
-    }
-
-    @Override
-    public void afterEach(ExtensionContext extensionContext) {
-        elasticSearchContainer.stop();
-    }
-
-    @Override
-    public boolean supportsParameter(ParameterContext parameterContext, ExtensionContext extensionContext) throws ParameterResolutionException {
-        return (parameterContext.getParameter().getType() == DockerGenericContainer.class);
-    }
-
-    @Override
-    public Object resolveParameter(ParameterContext parameterContext, ExtensionContext extensionContext) throws ParameterResolutionException {
-        return elasticSearchContainer;
-    }
-}
\ No newline at end of file
diff --git a/server/container/metrics/metrics-es-reporter/src/test/java/org/apache/james/metric/es/ES2ReporterTest.java b/server/container/metrics/metrics-es-reporter/src/test/java/org/apache/james/metric/es/ES2ReporterTest.java
index 891ca45..eb23804 100644
--- a/server/container/metrics/metrics-es-reporter/src/test/java/org/apache/james/metric/es/ES2ReporterTest.java
+++ b/server/container/metrics/metrics-es-reporter/src/test/java/org/apache/james/metric/es/ES2ReporterTest.java
@@ -19,8 +19,13 @@
 
 package org.apache.james.metric.es;
 
-import org.junit.jupiter.api.extension.ExtendWith;
+import org.apache.james.backends.es.DockerElasticSearch;
+import org.apache.james.util.docker.Images;
+import org.junit.jupiter.api.extension.RegisterExtension;
 
-@ExtendWith(DockerElasticSearch2Extension.class)
 class ES2ReporterTest extends ESReporterContract {
+
+    @RegisterExtension
+    static DockerElasticSearchExtension testExtension = new DockerElasticSearchExtension(
+        new DockerElasticSearch(Images.ELASTICSEARCH_2));
 }
diff --git a/server/container/metrics/metrics-es-reporter/src/test/java/org/apache/james/metric/es/ES6ReporterTest.java b/server/container/metrics/metrics-es-reporter/src/test/java/org/apache/james/metric/es/ES6ReporterTest.java
index 482c92c..0c201a4 100644
--- a/server/container/metrics/metrics-es-reporter/src/test/java/org/apache/james/metric/es/ES6ReporterTest.java
+++ b/server/container/metrics/metrics-es-reporter/src/test/java/org/apache/james/metric/es/ES6ReporterTest.java
@@ -19,8 +19,11 @@
 
 package org.apache.james.metric.es;
 
-import org.junit.jupiter.api.extension.ExtendWith;
+import org.apache.james.backends.es.DockerElasticSearch;
+import org.junit.jupiter.api.extension.RegisterExtension;
 
-@ExtendWith(DockerElasticSearch6Extension.class)
 class ES6ReporterTest extends ESReporterContract {
+
+    @RegisterExtension
+    static DockerElasticSearchExtension testExtension = new DockerElasticSearchExtension(new DockerElasticSearch());
 }
diff --git a/server/container/metrics/metrics-es-reporter/src/test/java/org/apache/james/metric/es/ESReporterContract.java b/server/container/metrics/metrics-es-reporter/src/test/java/org/apache/james/metric/es/ESReporterContract.java
index 3b0335f..d8ef7d0 100644
--- a/server/container/metrics/metrics-es-reporter/src/test/java/org/apache/james/metric/es/ESReporterContract.java
+++ b/server/container/metrics/metrics-es-reporter/src/test/java/org/apache/james/metric/es/ESReporterContract.java
@@ -27,12 +27,12 @@ import java.util.Timer;
 import java.util.TimerTask;
 
 import org.apache.http.HttpStatus;
+import org.apache.james.backends.es.DockerElasticSearch;
 import org.apache.james.metrics.api.Metric;
 import org.apache.james.metrics.api.TimeMetric;
 import org.apache.james.metrics.dropwizard.DropWizardMetricFactory;
 import org.apache.james.metrics.es.ESMetricReporter;
 import org.apache.james.metrics.es.ESReporterConfiguration;
-import org.apache.james.util.docker.DockerGenericContainer;
 import org.awaitility.Duration;
 import org.junit.jupiter.api.AfterEach;
 import org.junit.jupiter.api.BeforeEach;
@@ -47,24 +47,24 @@ abstract class ESReporterContract {
     public static final long PERIOD_IN_SECOND = 1L;
     public static final int DELAY_IN_MS = 100;
     public static final int PERIOD_IN_MS = 100;
-    public static final int ES_HTTP_PORT = 9200;
 
     private ESMetricReporter esMetricReporter;
     private MetricRegistry registry;
     private Timer timer;
 
     @BeforeEach
-    void setUp(DockerGenericContainer esContainer) {
-        RestAssured.baseURI = String.format("http://%s:%d", esContainer.getHostIp(), esContainer.getMappedPort(ES_HTTP_PORT));
+    void setUp(DockerElasticSearch elasticSearch) {
+        RestAssured.baseURI = String.format("http://%s:%d",
+            elasticSearch.getHttpHost().getHostName(), elasticSearch.getHttpHost().getPort());
         await().atMost(Duration.ONE_MINUTE)
-            .untilAsserted(() -> elasticSearchStarted());
+            .untilAsserted(this::elasticSearchStarted);
 
         registry = new MetricRegistry();
         timer = new Timer();
         esMetricReporter = new ESMetricReporter(
             ESReporterConfiguration.builder()
                 .enabled()
-                .onHost(esContainer.getHostIp(), esContainer.getMappedPort(ES_HTTP_PORT))
+                .onHost(elasticSearch.getHttpHost().getHostName(), elasticSearch.getHttpHost().getPort())
                 .onIndex(INDEX)
                 .periodInSecond(PERIOD_IN_SECOND)
                 .build(),
@@ -80,7 +80,7 @@ abstract class ESReporterContract {
     }
 
     @Test
-    void esMetricReporterShouldProduceDocumentsOnAnElasticsearchContainer(DockerGenericContainer esContainer) {
+    void esMetricReporterShouldProduceDocumentsOnAnElasticsearchContainer() {
         Metric metric = new DropWizardMetricFactory(registry).generate("probe");
         TimerTask timerTask = new TimerTask() {
             @Override
@@ -95,7 +95,7 @@ abstract class ESReporterContract {
     }
 
     @Test
-    void esMetricReporterShouldProduceDocumentsOnAnElasticsearchContainerWhenRecordingTimeMetric(DockerGenericContainer esContainer) {
+    void esMetricReporterShouldProduceDocumentsOnAnElasticsearchContainerWhenRecordingTimeMetric() {
         TimeMetric metric = new DropWizardMetricFactory(registry).timer("itstime");
         TimerTask timerTask = new TimerTask() {
             @Override


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


[james-project] 02/05: JAMES-2291 Restarting Cassandra periodically in MailRepositories tests

Posted by bt...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

btellier pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/james-project.git

commit 0fbe20b6f9691397a99c2d924772c1a2185e2bd4
Author: Benoit Tellier <bt...@linagora.com>
AuthorDate: Thu Jun 6 13:48:52 2019 +0700

    JAMES-2291 Restarting Cassandra periodically in MailRepositories tests
---
 .../mailrepository/cassandra/CassandraMailRepositoryCountDAOTest.java | 3 +++
 .../mailrepository/cassandra/CassandraMailRepositoryKeysDAOTest.java  | 3 +++
 .../mailrepository/cassandra/CassandraMailRepositoryMailDAOTest.java  | 3 +++
 .../james/mailrepository/cassandra/CassandraMailRepositoryTest.java   | 4 ++++
 4 files changed, 13 insertions(+)

diff --git a/server/mailrepository/mailrepository-cassandra/src/test/java/org/apache/james/mailrepository/cassandra/CassandraMailRepositoryCountDAOTest.java b/server/mailrepository/mailrepository-cassandra/src/test/java/org/apache/james/mailrepository/cassandra/CassandraMailRepositoryCountDAOTest.java
index 6e651f3..471efd4 100644
--- a/server/mailrepository/mailrepository-cassandra/src/test/java/org/apache/james/mailrepository/cassandra/CassandraMailRepositoryCountDAOTest.java
+++ b/server/mailrepository/mailrepository-cassandra/src/test/java/org/apache/james/mailrepository/cassandra/CassandraMailRepositoryCountDAOTest.java
@@ -23,11 +23,14 @@ import static org.assertj.core.api.Assertions.assertThat;
 
 import org.apache.james.backends.cassandra.CassandraCluster;
 import org.apache.james.backends.cassandra.CassandraClusterExtension;
+import org.apache.james.backends.cassandra.CassandraRestartExtension;
 import org.apache.james.mailrepository.api.MailRepositoryUrl;
 import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.Test;
+import org.junit.jupiter.api.extension.ExtendWith;
 import org.junit.jupiter.api.extension.RegisterExtension;
 
+@ExtendWith(CassandraRestartExtension.class)
 class CassandraMailRepositoryCountDAOTest {
     static final MailRepositoryUrl URL = MailRepositoryUrl.from("proto://url");
     static final MailRepositoryUrl URL2 = MailRepositoryUrl.from("proto://url2");
diff --git a/server/mailrepository/mailrepository-cassandra/src/test/java/org/apache/james/mailrepository/cassandra/CassandraMailRepositoryKeysDAOTest.java b/server/mailrepository/mailrepository-cassandra/src/test/java/org/apache/james/mailrepository/cassandra/CassandraMailRepositoryKeysDAOTest.java
index db7f98a..b63acd0 100644
--- a/server/mailrepository/mailrepository-cassandra/src/test/java/org/apache/james/mailrepository/cassandra/CassandraMailRepositoryKeysDAOTest.java
+++ b/server/mailrepository/mailrepository-cassandra/src/test/java/org/apache/james/mailrepository/cassandra/CassandraMailRepositoryKeysDAOTest.java
@@ -23,6 +23,7 @@ import static org.assertj.core.api.Assertions.assertThat;
 
 import org.apache.james.backends.cassandra.CassandraCluster;
 import org.apache.james.backends.cassandra.CassandraClusterExtension;
+import org.apache.james.backends.cassandra.CassandraRestartExtension;
 import org.apache.james.backends.cassandra.components.CassandraModule;
 import org.apache.james.backends.cassandra.utils.CassandraUtils;
 import org.apache.james.backends.cassandra.versions.CassandraSchemaVersionModule;
@@ -30,8 +31,10 @@ import org.apache.james.mailrepository.api.MailKey;
 import org.apache.james.mailrepository.api.MailRepositoryUrl;
 import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.Test;
+import org.junit.jupiter.api.extension.ExtendWith;
 import org.junit.jupiter.api.extension.RegisterExtension;
 
+@ExtendWith(CassandraRestartExtension.class)
 class CassandraMailRepositoryKeysDAOTest {
     static final MailRepositoryUrl URL = MailRepositoryUrl.from("proto://url");
     static final MailRepositoryUrl URL2 = MailRepositoryUrl.from("proto://url2");
diff --git a/server/mailrepository/mailrepository-cassandra/src/test/java/org/apache/james/mailrepository/cassandra/CassandraMailRepositoryMailDAOTest.java b/server/mailrepository/mailrepository-cassandra/src/test/java/org/apache/james/mailrepository/cassandra/CassandraMailRepositoryMailDAOTest.java
index eebf29a..aab0005 100644
--- a/server/mailrepository/mailrepository-cassandra/src/test/java/org/apache/james/mailrepository/cassandra/CassandraMailRepositoryMailDAOTest.java
+++ b/server/mailrepository/mailrepository-cassandra/src/test/java/org/apache/james/mailrepository/cassandra/CassandraMailRepositoryMailDAOTest.java
@@ -29,6 +29,7 @@ import javax.mail.MessagingException;
 
 import org.apache.james.backends.cassandra.CassandraCluster;
 import org.apache.james.backends.cassandra.CassandraClusterExtension;
+import org.apache.james.backends.cassandra.CassandraRestartExtension;
 import org.apache.james.backends.cassandra.components.CassandraModule;
 import org.apache.james.backends.cassandra.versions.CassandraSchemaVersionModule;
 import org.apache.james.blob.api.BlobId;
@@ -45,10 +46,12 @@ import org.apache.mailet.base.test.FakeMail;
 import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.Nested;
 import org.junit.jupiter.api.Test;
+import org.junit.jupiter.api.extension.ExtendWith;
 import org.junit.jupiter.api.extension.RegisterExtension;
 
 import com.google.common.collect.ImmutableList;
 
+@ExtendWith(CassandraRestartExtension.class)
 class CassandraMailRepositoryMailDAOTest {
     static final MailRepositoryUrl URL = MailRepositoryUrl.from("proto://url");
     static final MailKey KEY_1 = new MailKey("key1");
diff --git a/server/mailrepository/mailrepository-cassandra/src/test/java/org/apache/james/mailrepository/cassandra/CassandraMailRepositoryTest.java b/server/mailrepository/mailrepository-cassandra/src/test/java/org/apache/james/mailrepository/cassandra/CassandraMailRepositoryTest.java
index dbd39a3..a7fbfc2 100644
--- a/server/mailrepository/mailrepository-cassandra/src/test/java/org/apache/james/mailrepository/cassandra/CassandraMailRepositoryTest.java
+++ b/server/mailrepository/mailrepository-cassandra/src/test/java/org/apache/james/mailrepository/cassandra/CassandraMailRepositoryTest.java
@@ -21,6 +21,7 @@ package org.apache.james.mailrepository.cassandra;
 
 import org.apache.james.backends.cassandra.CassandraCluster;
 import org.apache.james.backends.cassandra.CassandraClusterExtension;
+import org.apache.james.backends.cassandra.CassandraRestartExtension;
 import org.apache.james.backends.cassandra.components.CassandraModule;
 import org.apache.james.backends.cassandra.utils.CassandraUtils;
 import org.apache.james.backends.cassandra.versions.CassandraSchemaVersionModule;
@@ -34,8 +35,11 @@ import org.apache.james.mailrepository.api.MailRepositoryUrl;
 import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.Disabled;
 import org.junit.jupiter.api.Test;
+import org.junit.jupiter.api.extension.ExtendWith;
 import org.junit.jupiter.api.extension.RegisterExtension;
 
+
+@ExtendWith(CassandraRestartExtension.class)
 class CassandraMailRepositoryTest implements MailRepositoryContract {
     static final MailRepositoryUrl URL = MailRepositoryUrl.from("proto://url");
     static final HashBlobId.Factory BLOB_ID_FACTORY = new HashBlobId.Factory();


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