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 b93d959f497a2bac9520de6900268e1becf5d80a
Author: Rene Cordier <rcord...@linagora.com>
AuthorDate: Wed Apr 3 10:33:09 2019 +0700

    JAMES-2721 Implement new Rules and Extension for docker cassandra restart 
strategy
---
 ...aSingleton.java => CassandraRestartExtension.java} | 19 ++++++++++---------
 ...a => DockerCassandraIncrementTestsPlayedRule.java} | 17 +++++------------
 ...Singleton.java => DockerCassandraRestartRule.java} | 17 +++++------------
 .../backends/cassandra/DockerCassandraSingleton.java  | 17 ++++++++++++++++-
 4 files changed, 36 insertions(+), 34 deletions(-)

diff --git 
a/backends-common/cassandra/src/test/java/org/apache/james/backends/cassandra/DockerCassandraSingleton.java
 
b/backends-common/cassandra/src/test/java/org/apache/james/backends/cassandra/CassandraRestartExtension.java
similarity index 69%
copy from 
backends-common/cassandra/src/test/java/org/apache/james/backends/cassandra/DockerCassandraSingleton.java
copy to 
backends-common/cassandra/src/test/java/org/apache/james/backends/cassandra/CassandraRestartExtension.java
index 98fc5fc..0d68c68 100644
--- 
a/backends-common/cassandra/src/test/java/org/apache/james/backends/cassandra/DockerCassandraSingleton.java
+++ 
b/backends-common/cassandra/src/test/java/org/apache/james/backends/cassandra/CassandraRestartExtension.java
@@ -19,18 +19,19 @@
 
 package org.apache.james.backends.cassandra;
 
-public class DockerCassandraSingleton {
+import org.junit.jupiter.api.extension.BeforeAllCallback;
+import org.junit.jupiter.api.extension.BeforeEachCallback;
+import org.junit.jupiter.api.extension.ExtensionContext;
 
-    public static final DockerCassandra singleton = new DockerCassandra();
+public class CassandraRestartExtension implements BeforeAllCallback, 
BeforeEachCallback {
 
-    static {
-        singleton.start();
+    @Override
+    public void beforeAll(ExtensionContext extensionContext) {
+        DockerCassandraSingleton.restartAfterMaxTestsPlayed();
     }
 
-    public static void restart() {
-        singleton.stop();
-        singleton.start();
+    @Override
+    public void beforeEach(ExtensionContext extensionContext) {
+        DockerCassandraSingleton.incrementTestsPlayed();
     }
-
-    // Cleanup will be performed by test container resource reaper
 }
diff --git 
a/backends-common/cassandra/src/test/java/org/apache/james/backends/cassandra/DockerCassandraSingleton.java
 
b/backends-common/cassandra/src/test/java/org/apache/james/backends/cassandra/DockerCassandraIncrementTestsPlayedRule.java
similarity index 79%
copy from 
backends-common/cassandra/src/test/java/org/apache/james/backends/cassandra/DockerCassandraSingleton.java
copy to 
backends-common/cassandra/src/test/java/org/apache/james/backends/cassandra/DockerCassandraIncrementTestsPlayedRule.java
index 98fc5fc..e8289dd 100644
--- 
a/backends-common/cassandra/src/test/java/org/apache/james/backends/cassandra/DockerCassandraSingleton.java
+++ 
b/backends-common/cassandra/src/test/java/org/apache/james/backends/cassandra/DockerCassandraIncrementTestsPlayedRule.java
@@ -19,18 +19,11 @@
 
 package org.apache.james.backends.cassandra;
 
-public class DockerCassandraSingleton {
+import org.junit.rules.ExternalResource;
 
-    public static final DockerCassandra singleton = new DockerCassandra();
-
-    static {
-        singleton.start();
-    }
-
-    public static void restart() {
-        singleton.stop();
-        singleton.start();
+public class DockerCassandraIncrementTestsPlayedRule extends ExternalResource {
+    @Override
+    protected void before() {
+        DockerCassandraSingleton.incrementTestsPlayed();
     }
-
-    // Cleanup will be performed by test container resource reaper
 }
diff --git 
a/backends-common/cassandra/src/test/java/org/apache/james/backends/cassandra/DockerCassandraSingleton.java
 
b/backends-common/cassandra/src/test/java/org/apache/james/backends/cassandra/DockerCassandraRestartRule.java
similarity index 79%
copy from 
backends-common/cassandra/src/test/java/org/apache/james/backends/cassandra/DockerCassandraSingleton.java
copy to 
backends-common/cassandra/src/test/java/org/apache/james/backends/cassandra/DockerCassandraRestartRule.java
index 98fc5fc..622f09c 100644
--- 
a/backends-common/cassandra/src/test/java/org/apache/james/backends/cassandra/DockerCassandraSingleton.java
+++ 
b/backends-common/cassandra/src/test/java/org/apache/james/backends/cassandra/DockerCassandraRestartRule.java
@@ -19,18 +19,11 @@
 
 package org.apache.james.backends.cassandra;
 
-public class DockerCassandraSingleton {
+import org.junit.rules.ExternalResource;
 
-    public static final DockerCassandra singleton = new DockerCassandra();
-
-    static {
-        singleton.start();
-    }
-
-    public static void restart() {
-        singleton.stop();
-        singleton.start();
+public class DockerCassandraRestartRule extends ExternalResource {
+    @Override
+    protected void before() {
+        DockerCassandraSingleton.restartAfterMaxTestsPlayed();
     }
-
-    // Cleanup will be performed by test container resource reaper
 }
diff --git 
a/backends-common/cassandra/src/test/java/org/apache/james/backends/cassandra/DockerCassandraSingleton.java
 
b/backends-common/cassandra/src/test/java/org/apache/james/backends/cassandra/DockerCassandraSingleton.java
index 98fc5fc..2374b10 100644
--- 
a/backends-common/cassandra/src/test/java/org/apache/james/backends/cassandra/DockerCassandraSingleton.java
+++ 
b/backends-common/cassandra/src/test/java/org/apache/james/backends/cassandra/DockerCassandraSingleton.java
@@ -20,6 +20,9 @@
 package org.apache.james.backends.cassandra;
 
 public class DockerCassandraSingleton {
+    private static final int MAX_TEST_PLAYED = 200;
+
+    private static int testsPlayedCount = 0;
 
     public static final DockerCassandra singleton = new DockerCassandra();
 
@@ -27,7 +30,19 @@ public class DockerCassandraSingleton {
         singleton.start();
     }
 
-    public static void restart() {
+    public static void incrementTestsPlayed() {
+        testsPlayedCount += 1;
+    }
+
+    // Call this method to ensure that cassandra is restarted every 
MAX_TEST_PLAYED tests
+    public static void restartAfterMaxTestsPlayed() {
+        if (testsPlayedCount > MAX_TEST_PLAYED) {
+            testsPlayedCount = 0;
+            restart();
+        }
+    }
+
+    private static void restart() {
         singleton.stop();
         singleton.start();
     }


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

Reply via email to