JAMES-2342 Solve isolation issue with SpamAssassin

The Bayes DB of SPamAssassin is stateful, thus container can not be recycled as 
such


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

Branch: refs/heads/master
Commit: 5283aace0dad67e79b3309f01fea166abfc9def8
Parents: d504c0e
Author: benwa <[email protected]>
Authored: Wed Mar 7 14:43:59 2018 +0700
Committer: Antoine Duprat <[email protected]>
Committed: Thu Mar 8 11:01:21 2018 +0100

----------------------------------------------------------------------
 .../util/scanner/SpamAssassinExtension.java      | 10 +++++-----
 .../jmap/cassandra/CassandraJmapExtension.java   | 19 +++++++++++++++----
 .../james/jmap/memory/MemoryJmapExtension.java   | 18 ++++--------------
 3 files changed, 24 insertions(+), 23 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/james-project/blob/5283aace/server/container/util/src/test/java/org/apache/james/util/scanner/SpamAssassinExtension.java
----------------------------------------------------------------------
diff --git 
a/server/container/util/src/test/java/org/apache/james/util/scanner/SpamAssassinExtension.java
 
b/server/container/util/src/test/java/org/apache/james/util/scanner/SpamAssassinExtension.java
index 754c83f..1564b72 100644
--- 
a/server/container/util/src/test/java/org/apache/james/util/scanner/SpamAssassinExtension.java
+++ 
b/server/container/util/src/test/java/org/apache/james/util/scanner/SpamAssassinExtension.java
@@ -27,8 +27,8 @@ import java.nio.file.Paths;
 import java.util.Locale;
 import java.util.stream.Stream;
 
-import org.junit.jupiter.api.extension.AfterAllCallback;
-import org.junit.jupiter.api.extension.BeforeAllCallback;
+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;
@@ -38,7 +38,7 @@ import org.testcontainers.images.builder.ImageFromDockerfile;
 
 import com.github.fge.lambdas.Throwing;
 
-public class SpamAssassinExtension implements BeforeAllCallback, 
AfterAllCallback, ParameterResolver {
+public class SpamAssassinExtension implements BeforeEachCallback, 
AfterEachCallback, ParameterResolver {
 
     private final GenericContainer<?> spamAssassinContainer;
     private SpamAssassin spamAssassin;
@@ -55,13 +55,13 @@ public class SpamAssassinExtension implements 
BeforeAllCallback, AfterAllCallbac
     }
 
     @Override
-    public void beforeAll(ExtensionContext context) {
+    public void beforeEach(ExtensionContext context) {
         spamAssassinContainer.start();
         spamAssassin = new SpamAssassin(spamAssassinContainer);
     }
 
     @Override
-    public void afterAll(ExtensionContext context) {
+    public void afterEach(ExtensionContext context) {
         spamAssassinContainer.close();
     }
 

http://git-wip-us.apache.org/repos/asf/james-project/blob/5283aace/server/protocols/jmap-integration-testing/cassandra-jmap-integration-testing/src/test/java/org/apache/james/jmap/cassandra/CassandraJmapExtension.java
----------------------------------------------------------------------
diff --git 
a/server/protocols/jmap-integration-testing/cassandra-jmap-integration-testing/src/test/java/org/apache/james/jmap/cassandra/CassandraJmapExtension.java
 
b/server/protocols/jmap-integration-testing/cassandra-jmap-integration-testing/src/test/java/org/apache/james/jmap/cassandra/CassandraJmapExtension.java
index ee9e88d..60fb85c 100644
--- 
a/server/protocols/jmap-integration-testing/cassandra-jmap-integration-testing/src/test/java/org/apache/james/jmap/cassandra/CassandraJmapExtension.java
+++ 
b/server/protocols/jmap-integration-testing/cassandra-jmap-integration-testing/src/test/java/org/apache/james/jmap/cassandra/CassandraJmapExtension.java
@@ -33,14 +33,17 @@ import org.apache.james.modules.TestFilesystemModule;
 import org.apache.james.modules.TestJMAPServerModule;
 import org.apache.james.util.scanner.SpamAssassinExtension;
 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.junit.rules.TemporaryFolder;
 
-public class CassandraJmapExtension implements BeforeAllCallback, 
AfterAllCallback, ParameterResolver {
+public class CassandraJmapExtension implements BeforeAllCallback, 
AfterAllCallback,
+    BeforeEachCallback, AfterEachCallback, ParameterResolver {
 
     private static final int LIMIT_TO_20_MESSAGES = 20;
 
@@ -75,20 +78,28 @@ public class CassandraJmapExtension implements 
BeforeAllCallback, AfterAllCallba
     @Override
     public void beforeAll(ExtensionContext context) throws Exception {
         temporaryFolder.create();
-        spamAssassinExtension.beforeAll(context);
         cassandra.start();
         elasticSearch.before();
     }
 
     @Override
-    public void afterAll(ExtensionContext context) throws Exception {
+    public void afterAll(ExtensionContext context) {
         elasticSearch.after();
         cassandra.stop();
-        spamAssassinExtension.afterAll(context);
         temporaryFolder.delete();
     }
 
     @Override
+    public void beforeEach(ExtensionContext context) {
+        spamAssassinExtension.beforeEach(context);
+    }
+
+    @Override
+    public void afterEach(ExtensionContext context) {
+        spamAssassinExtension.afterEach(context);
+    }
+
+    @Override
     public boolean supportsParameter(ParameterContext parameterContext, 
ExtensionContext extensionContext) throws ParameterResolutionException {
         return parameterContext.getParameter().getType() == 
JamesWithSpamAssassin.class;
     }

http://git-wip-us.apache.org/repos/asf/james-project/blob/5283aace/server/protocols/jmap-integration-testing/memory-jmap-integration-testing/src/test/java/org/apache/james/jmap/memory/MemoryJmapExtension.java
----------------------------------------------------------------------
diff --git 
a/server/protocols/jmap-integration-testing/memory-jmap-integration-testing/src/test/java/org/apache/james/jmap/memory/MemoryJmapExtension.java
 
b/server/protocols/jmap-integration-testing/memory-jmap-integration-testing/src/test/java/org/apache/james/jmap/memory/MemoryJmapExtension.java
index 4c0bb01..900ff71 100644
--- 
a/server/protocols/jmap-integration-testing/memory-jmap-integration-testing/src/test/java/org/apache/james/jmap/memory/MemoryJmapExtension.java
+++ 
b/server/protocols/jmap-integration-testing/memory-jmap-integration-testing/src/test/java/org/apache/james/jmap/memory/MemoryJmapExtension.java
@@ -31,9 +31,7 @@ import 
org.apache.james.mailbox.store.search.SimpleMessageSearchIndex;
 import org.apache.james.modules.TestFilesystemModule;
 import org.apache.james.modules.TestJMAPServerModule;
 import org.apache.james.util.scanner.SpamAssassinExtension;
-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;
@@ -41,7 +39,7 @@ import 
org.junit.jupiter.api.extension.ParameterResolutionException;
 import org.junit.jupiter.api.extension.ParameterResolver;
 import org.junit.rules.TemporaryFolder;
 
-public class MemoryJmapExtension implements BeforeAllCallback, 
AfterAllCallback, BeforeEachCallback, AfterEachCallback, ParameterResolver {
+public class MemoryJmapExtension implements BeforeEachCallback, 
AfterEachCallback, ParameterResolver {
 
     private static final int LIMIT_TO_20_MESSAGES = 20;
 
@@ -69,22 +67,14 @@ public class MemoryJmapExtension implements 
BeforeAllCallback, AfterAllCallback,
     }
 
     @Override
-    public void beforeAll(ExtensionContext context) throws Exception {
-        spamAssassinExtension.beforeAll(context);
-    }
-
-    @Override
-    public void afterAll(ExtensionContext context) throws Exception {
-        spamAssassinExtension.afterAll(context);
-    }
-
-    @Override
     public void beforeEach(ExtensionContext context) throws Exception {
+        spamAssassinExtension.beforeEach(context);
         temporaryFolder.create();
     }
 
     @Override
-    public void afterEach(ExtensionContext context) throws Exception {
+    public void afterEach(ExtensionContext context) {
+        spamAssassinExtension.afterEach(context);
         temporaryFolder.delete();
     }
 


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to