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]
