Repository: james-project Updated Branches: refs/heads/3.2.x 55ab00eea -> 063685071
JAMES-2558 Make SpamAssassin tests faster SpamAssassinInvoker tests took 3 min to run and now takes 1 min 30 s Project: http://git-wip-us.apache.org/repos/asf/james-project/repo Commit: http://git-wip-us.apache.org/repos/asf/james-project/commit/7fff79fe Tree: http://git-wip-us.apache.org/repos/asf/james-project/tree/7fff79fe Diff: http://git-wip-us.apache.org/repos/asf/james-project/diff/7fff79fe Branch: refs/heads/3.2.x Commit: 7fff79fe444235cea25407e9e89c3f4cfcd75068 Parents: f5c091e Author: Benoit Tellier <btell...@linagora.com> Authored: Wed Nov 14 14:24:32 2018 +0700 Committer: Antoine Duprat <adup...@linagora.com> Committed: Tue Dec 11 15:36:05 2018 +0100 ---------------------------------------------------------------------- .../jmap/cassandra/CassandraJmapExtension.java | 5 +-- .../james/jmap/memory/MemoryJmapExtension.java | 4 +-- .../spamassassin/SpamAssassinExtension.java | 36 +++++++++++++++++--- 3 files changed, 36 insertions(+), 9 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/james-project/blob/7fff79fe/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 e6095b2..4cf4286 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 @@ -94,6 +94,7 @@ public class CassandraJmapExtension implements BeforeAllCallback, AfterAllCallba elasticSearch.after(); Runnables.runParallel( + () -> spamAssassinExtension.afterAll(context), cassandra::stop, elasticSearch::after); } @@ -101,14 +102,14 @@ public class CassandraJmapExtension implements BeforeAllCallback, AfterAllCallba @Override public void beforeEach(ExtensionContext context) throws Exception { james = james(); - spamAssassinExtension.beforeEach(context); + spamAssassinExtension.start(); james.getJmapServer().start(); } @Override public void afterEach(ExtensionContext context) { james.getJmapServer().stop(); - spamAssassinExtension.afterEach(context); + spamAssassinExtension.stop(); } @Override http://git-wip-us.apache.org/repos/asf/james-project/blob/7fff79fe/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 907c0bc..f2f8462 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 @@ -75,7 +75,7 @@ public class MemoryJmapExtension implements BeforeEachCallback, AfterEachCallbac @Override public void beforeEach(ExtensionContext context) throws Exception { - spamAssassinExtension.beforeEach(context); + spamAssassinExtension.start(); temporaryFolder.create(); james.getJmapServer().start(); } @@ -83,8 +83,8 @@ public class MemoryJmapExtension implements BeforeEachCallback, AfterEachCallbac @Override public void afterEach(ExtensionContext context) { james.getJmapServer().stop(); - spamAssassinExtension.afterEach(context); temporaryFolder.delete(); + spamAssassinExtension.stop(); } @Override http://git-wip-us.apache.org/repos/asf/james-project/blob/7fff79fe/third-party/spamassassin/src/test/java/org/apache/james/spamassassin/SpamAssassinExtension.java ---------------------------------------------------------------------- diff --git a/third-party/spamassassin/src/test/java/org/apache/james/spamassassin/SpamAssassinExtension.java b/third-party/spamassassin/src/test/java/org/apache/james/spamassassin/SpamAssassinExtension.java index 5018bd6..ac65df7 100644 --- a/third-party/spamassassin/src/test/java/org/apache/james/spamassassin/SpamAssassinExtension.java +++ b/third-party/spamassassin/src/test/java/org/apache/james/spamassassin/SpamAssassinExtension.java @@ -28,8 +28,9 @@ import java.time.Duration; import java.util.Locale; import java.util.stream.Stream; +import org.junit.jupiter.api.extension.AfterAllCallback; import org.junit.jupiter.api.extension.AfterEachCallback; -import org.junit.jupiter.api.extension.BeforeEachCallback; +import org.junit.jupiter.api.extension.BeforeAllCallback; import org.junit.jupiter.api.extension.ExtensionContext; import org.junit.jupiter.api.extension.ParameterContext; import org.junit.jupiter.api.extension.ParameterResolutionException; @@ -39,7 +40,7 @@ import org.testcontainers.images.builder.ImageFromDockerfile; import com.github.fge.lambdas.Throwing; -public class SpamAssassinExtension implements BeforeEachCallback, AfterEachCallback, ParameterResolver { +public class SpamAssassinExtension implements BeforeAllCallback, AfterEachCallback, AfterAllCallback, ParameterResolver { private static final Duration STARTUP_TIMEOUT = Duration.ofMinutes(30); private final GenericContainer<?> spamAssassinContainer; @@ -59,13 +60,34 @@ public class SpamAssassinExtension implements BeforeEachCallback, AfterEachCallb } @Override - public void beforeEach(ExtensionContext context) { - spamAssassinContainer.start(); - spamAssassin = new SpamAssassin(spamAssassinContainer); + public void beforeAll(ExtensionContext context) { + start(); } @Override public void afterEach(ExtensionContext context) { + clearSpamAssassinDatabase(); + } + + @Override + public void afterAll(ExtensionContext context) { + stop(); + } + + public void start() { + spamAssassinContainer.start(); + spamAssassin = new SpamAssassin(spamAssassinContainer); + } + + public void clearSpamAssassinDatabase() { + try { + spamAssassin.clearSpamAssassinDatabase(); + } catch (IOException | InterruptedException e) { + throw new RuntimeException(e); + } + } + + public void stop() { spamAssassinContainer.close(); } @@ -146,6 +168,10 @@ public class SpamAssassinExtension implements BeforeEachCallback, AfterEachCallb public void dump(String user) throws UnsupportedOperationException, IOException, InterruptedException { spamAssassinContainer.execInContainer("sa-learn", "--dump", "magic", "-u", user); } + + public void clearSpamAssassinDatabase() throws UnsupportedOperationException, IOException, InterruptedException { + spamAssassinContainer.execInContainer("sa-learn", "--dump", "magic"); + } } } --------------------------------------------------------------------- To unsubscribe, e-mail: server-dev-unsubscr...@james.apache.org For additional commands, e-mail: server-dev-h...@james.apache.org