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/11/21 02:00:46 UTC

[james-project] 11/13: [Refactoring] Refactor abstract test class MailboxManagerStressTest to interface MailboxManagerStressContract

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

View the commit online:
https://github.com/apache/james-project/commit/bd701ad784ffcd9c40c0feaf0c837a01dbc65050

commit bd701ad784ffcd9c40c0feaf0c837a01dbc65050
Author: Rene Cordier <rc...@linagora.com>
AuthorDate: Mon Nov 18 16:31:59 2019 +0700

    [Refactoring] Refactor abstract test class MailboxManagerStressTest to interface MailboxManagerStressContract
---
 ...Test.java => MailboxManagerStressContract.java} | 40 +++++++++-------------
 .../CassandraMailboxManagerStressTest.java         | 25 +++++++++-----
 .../mailbox/jpa/JpaMailboxManagerStressTest.java   | 23 ++++++++-----
 .../DomainUserMaildirMailboxManagerStressTest.java | 25 ++++++++------
 .../FullUserMaildirMailboxManagerStressTest.java   | 25 ++++++++------
 .../UserMaildirMailboxManagerStressTest.java       | 25 ++++++++------
 .../inmemory/MemoryMailboxManagerStressTest.java   | 20 +++++++----
 7 files changed, 106 insertions(+), 77 deletions(-)

diff --git a/mailbox/api/src/test/java/org/apache/james/mailbox/MailboxManagerStressTest.java b/mailbox/api/src/test/java/org/apache/james/mailbox/MailboxManagerStressContract.java
similarity index 78%
rename from mailbox/api/src/test/java/org/apache/james/mailbox/MailboxManagerStressTest.java
rename to mailbox/api/src/test/java/org/apache/james/mailbox/MailboxManagerStressContract.java
index 09e4dc8..0112994 100644
--- a/mailbox/api/src/test/java/org/apache/james/mailbox/MailboxManagerStressTest.java
+++ b/mailbox/api/src/test/java/org/apache/james/mailbox/MailboxManagerStressContract.java
@@ -41,45 +41,37 @@ import org.apache.james.mailbox.model.MailboxId;
 import org.apache.james.mailbox.model.MailboxPath;
 import org.apache.james.mime4j.dom.Message;
 import org.apache.james.util.concurrent.NamedThreadFactory;
-import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.Test;
 
 import com.google.common.collect.ImmutableSet;
 
-public abstract class MailboxManagerStressTest<T extends MailboxManager> {
+public interface MailboxManagerStressContract<T extends MailboxManager> {
 
-    private static final int APPEND_OPERATIONS = 200;
+    int APPEND_OPERATIONS = 200;
 
-    private T mailboxManager;
+    T getManager();
 
-    protected abstract T provideManager() throws MailboxException;
-
-    protected abstract EventBus retrieveEventBus(T mailboxManager);
-
-    @BeforeEach
-    void setUp() throws Exception {
-        this.mailboxManager = provideManager();
-    }
+    EventBus retrieveEventBus();
 
     @Test
-    void testStressTest() throws InterruptedException, MailboxException {
+    default void testStressTest() throws InterruptedException, MailboxException {
         ThreadFactory threadFactory = NamedThreadFactory.withClassName(getClass());
 
         CountDownLatch latch = new CountDownLatch(APPEND_OPERATIONS);
         ExecutorService pool = Executors.newFixedThreadPool(APPEND_OPERATIONS / 20, threadFactory);
         Collection<MessageUid> uList = new ConcurrentLinkedDeque<>();
         Username username = Username.of("username");
-        MailboxSession session = mailboxManager.createSystemSession(username);
-        mailboxManager.startProcessingRequest(session);
+        MailboxSession session = getManager().createSystemSession(username);
+        getManager().startProcessingRequest(session);
         MailboxPath path = MailboxPath.forUser(username, "INBOX");
-        MailboxId mailboxId = mailboxManager.createMailbox(path, session).get();
-        retrieveEventBus(mailboxManager).register(
+        MailboxId mailboxId = getManager().createMailbox(path, session).get();
+        retrieveEventBus().register(
             event -> {
                 MessageUid u = ((MailboxListener.Added) event).getUids().iterator().next();
                 uList.add(u);
             }, new MailboxIdRegistrationKey(mailboxId));
-        mailboxManager.endProcessingRequest(session);
-        mailboxManager.logout(session, false);
+        getManager().endProcessingRequest(session);
+        getManager().logout(session, false);
 
         final AtomicBoolean fail = new AtomicBoolean(false);
         final ConcurrentHashMap<MessageUid, Object> uids = new ConcurrentHashMap<>();
@@ -93,10 +85,10 @@ public abstract class MailboxManagerStressTest<T extends MailboxManager> {
                 }
 
                 try {
-                    MailboxSession mailboxSession = mailboxManager.createSystemSession(username);
+                    MailboxSession mailboxSession = getManager().createSystemSession(username);
 
-                    mailboxManager.startProcessingRequest(mailboxSession);
-                    MessageManager m = mailboxManager.getMailbox(path, mailboxSession);
+                    getManager().startProcessingRequest(mailboxSession);
+                    MessageManager m = getManager().getMailbox(path, mailboxSession);
                     ComposedMessageId messageId = m.appendMessage(
                         MessageManager.AppendCommand
                             .from(Message.Builder.of()
@@ -107,8 +99,8 @@ public abstract class MailboxManagerStressTest<T extends MailboxManager> {
                     if (uids.put(messageId.getUid(), new Object()) != null) {
                         fail.set(true);
                     }
-                    mailboxManager.endProcessingRequest(mailboxSession);
-                    mailboxManager.logout(mailboxSession, false);
+                    getManager().endProcessingRequest(mailboxSession);
+                    getManager().logout(mailboxSession, false);
                 } catch (Exception e) {
                     e.printStackTrace();
                     fail.set(true);
diff --git a/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/CassandraMailboxManagerStressTest.java b/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/CassandraMailboxManagerStressTest.java
index e53dc07..9d9c9c5 100644
--- a/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/CassandraMailboxManagerStressTest.java
+++ b/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/CassandraMailboxManagerStressTest.java
@@ -21,28 +21,37 @@ package org.apache.james.mailbox.cassandra;
 
 import org.apache.james.backends.cassandra.CassandraClusterExtension;
 import org.apache.james.backends.cassandra.CassandraRestartExtension;
-import org.apache.james.mailbox.MailboxManagerStressTest;
+import org.apache.james.mailbox.MailboxManagerStressContract;
 import org.apache.james.mailbox.cassandra.mail.MailboxAggregateModule;
 import org.apache.james.mailbox.events.EventBus;
 import org.apache.james.mailbox.store.PreDeletionHooks;
+import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.extension.ExtendWith;
 import org.junit.jupiter.api.extension.RegisterExtension;
 
 @ExtendWith(CassandraRestartExtension.class)
-class CassandraMailboxManagerStressTest extends MailboxManagerStressTest<CassandraMailboxManager> {
+class CassandraMailboxManagerStressTest implements MailboxManagerStressContract<CassandraMailboxManager> {
 
     @RegisterExtension
     static CassandraClusterExtension cassandra = new CassandraClusterExtension(MailboxAggregateModule.MODULE_WITH_QUOTA);
-    
+
+    private CassandraMailboxManager mailboxManager;
+
     @Override
-    protected CassandraMailboxManager provideManager() {
-        return CassandraMailboxManagerProvider.provideMailboxManager(cassandra.getCassandraCluster().getConf(),
-            cassandra.getCassandraCluster().getTypesProvider(),
-            PreDeletionHooks.NO_PRE_DELETION_HOOK);
+    public CassandraMailboxManager getManager() {
+        return mailboxManager;
     }
 
     @Override
-    protected EventBus retrieveEventBus(CassandraMailboxManager mailboxManager) {
+    public EventBus retrieveEventBus() {
         return mailboxManager.getEventBus();
     }
+
+    @BeforeEach
+    void setUp() {
+        this.mailboxManager = CassandraMailboxManagerProvider.provideMailboxManager(
+            cassandra.getCassandraCluster().getConf(),
+            cassandra.getCassandraCluster().getTypesProvider(),
+            PreDeletionHooks.NO_PRE_DELETION_HOOK);
+    }
 }
diff --git a/mailbox/jpa/src/test/java/org/apache/james/mailbox/jpa/JpaMailboxManagerStressTest.java b/mailbox/jpa/src/test/java/org/apache/james/mailbox/jpa/JpaMailboxManagerStressTest.java
index a55b0b4..da90cfb 100644
--- a/mailbox/jpa/src/test/java/org/apache/james/mailbox/jpa/JpaMailboxManagerStressTest.java
+++ b/mailbox/jpa/src/test/java/org/apache/james/mailbox/jpa/JpaMailboxManagerStressTest.java
@@ -22,27 +22,32 @@ package org.apache.james.mailbox.jpa;
 import java.util.Optional;
 
 import org.apache.james.backends.jpa.JpaTestCluster;
-import org.apache.james.mailbox.MailboxManagerStressTest;
+import org.apache.james.mailbox.MailboxManagerStressContract;
 import org.apache.james.mailbox.events.EventBus;
 import org.apache.james.mailbox.jpa.openjpa.OpenJPAMailboxManager;
 import org.junit.jupiter.api.AfterEach;
+import org.junit.jupiter.api.BeforeEach;
 
-class JpaMailboxManagerStressTest extends MailboxManagerStressTest<OpenJPAMailboxManager> {
+class JpaMailboxManagerStressTest implements MailboxManagerStressContract<OpenJPAMailboxManager> {
 
     private static final JpaTestCluster JPA_TEST_CLUSTER = JpaTestCluster.create(JPAMailboxFixture.MAILBOX_PERSISTANCE_CLASSES);
     private Optional<OpenJPAMailboxManager> openJPAMailboxManager = Optional.empty();
-    
+
     @Override
-    protected OpenJPAMailboxManager provideManager() {
-        if (!openJPAMailboxManager.isPresent()) {
-            openJPAMailboxManager = Optional.of(JpaMailboxManagerProvider.provideMailboxManager(JPA_TEST_CLUSTER));
-        }
+    public OpenJPAMailboxManager getManager() {
         return openJPAMailboxManager.get();
     }
 
     @Override
-    protected EventBus retrieveEventBus(OpenJPAMailboxManager mailboxManager) {
-        return mailboxManager.getEventBus();
+    public EventBus retrieveEventBus() {
+        return getManager().getEventBus();
+    }
+
+    @BeforeEach
+    void setUp() {
+        if (!openJPAMailboxManager.isPresent()) {
+            openJPAMailboxManager = Optional.of(JpaMailboxManagerProvider.provideMailboxManager(JPA_TEST_CLUSTER));
+        }
     }
 
     @AfterEach
diff --git a/mailbox/maildir/src/test/java/org/apache/james/mailbox/maildir/DomainUserMaildirMailboxManagerStressTest.java b/mailbox/maildir/src/test/java/org/apache/james/mailbox/maildir/DomainUserMaildirMailboxManagerStressTest.java
index c9090b1..3e898ec 100644
--- a/mailbox/maildir/src/test/java/org/apache/james/mailbox/maildir/DomainUserMaildirMailboxManagerStressTest.java
+++ b/mailbox/maildir/src/test/java/org/apache/james/mailbox/maildir/DomainUserMaildirMailboxManagerStressTest.java
@@ -21,26 +21,31 @@ package org.apache.james.mailbox.maildir;
 
 import java.io.File;
 
-import org.apache.james.mailbox.MailboxManagerStressTest;
+import org.apache.james.mailbox.MailboxManagerStressContract;
 import org.apache.james.mailbox.events.EventBus;
+import org.apache.james.mailbox.exception.MailboxException;
 import org.apache.james.mailbox.store.StoreMailboxManager;
+import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.io.TempDir;
 
-class DomainUserMaildirMailboxManagerStressTest extends MailboxManagerStressTest<StoreMailboxManager> {
+class DomainUserMaildirMailboxManagerStressTest implements MailboxManagerStressContract<StoreMailboxManager> {
     @TempDir
     File tmpFolder;
-    
+
+    private StoreMailboxManager mailboxManager;
+
     @Override
-    protected StoreMailboxManager provideManager() {
-        try {
-            return MaildirMailboxManagerProvider.createMailboxManager("/%domain/%user", tmpFolder);
-        } catch (Exception e) {
-            throw new RuntimeException(e);
-        }
+    public StoreMailboxManager getManager() {
+        return mailboxManager;
     }
 
     @Override
-    protected EventBus retrieveEventBus(StoreMailboxManager mailboxManager) {
+    public EventBus retrieveEventBus() {
         return mailboxManager.getEventBus();
     }
+
+    @BeforeEach
+    void setUp() throws MailboxException {
+        this.mailboxManager = MaildirMailboxManagerProvider.createMailboxManager("/%domain/%user", tmpFolder);
+    }
 }
diff --git a/mailbox/maildir/src/test/java/org/apache/james/mailbox/maildir/FullUserMaildirMailboxManagerStressTest.java b/mailbox/maildir/src/test/java/org/apache/james/mailbox/maildir/FullUserMaildirMailboxManagerStressTest.java
index fd9f284..093546f 100644
--- a/mailbox/maildir/src/test/java/org/apache/james/mailbox/maildir/FullUserMaildirMailboxManagerStressTest.java
+++ b/mailbox/maildir/src/test/java/org/apache/james/mailbox/maildir/FullUserMaildirMailboxManagerStressTest.java
@@ -21,26 +21,31 @@ package org.apache.james.mailbox.maildir;
 
 import java.io.File;
 
-import org.apache.james.mailbox.MailboxManagerStressTest;
+import org.apache.james.mailbox.MailboxManagerStressContract;
 import org.apache.james.mailbox.events.EventBus;
+import org.apache.james.mailbox.exception.MailboxException;
 import org.apache.james.mailbox.store.StoreMailboxManager;
+import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.io.TempDir;
 
-class FullUserMaildirMailboxManagerStressTest extends MailboxManagerStressTest<StoreMailboxManager> {
+class FullUserMaildirMailboxManagerStressTest implements MailboxManagerStressContract<StoreMailboxManager> {
     @TempDir
     File tmpFolder;
-    
+
+    private StoreMailboxManager mailboxManager;
+
     @Override
-    protected StoreMailboxManager provideManager() {
-        try {
-            return MaildirMailboxManagerProvider.createMailboxManager("/%fulluser", tmpFolder);
-        } catch (Exception e) {
-            throw new RuntimeException(e);
-        }
+    public StoreMailboxManager getManager() {
+        return mailboxManager;
     }
 
     @Override
-    protected EventBus retrieveEventBus(StoreMailboxManager mailboxManager) {
+    public EventBus retrieveEventBus() {
         return mailboxManager.getEventBus();
     }
+
+    @BeforeEach
+    void setUp() throws MailboxException {
+        this.mailboxManager = MaildirMailboxManagerProvider.createMailboxManager("/%fulluser", tmpFolder);
+    }
 }
diff --git a/mailbox/maildir/src/test/java/org/apache/james/mailbox/maildir/UserMaildirMailboxManagerStressTest.java b/mailbox/maildir/src/test/java/org/apache/james/mailbox/maildir/UserMaildirMailboxManagerStressTest.java
index d1f518e..083d22d 100644
--- a/mailbox/maildir/src/test/java/org/apache/james/mailbox/maildir/UserMaildirMailboxManagerStressTest.java
+++ b/mailbox/maildir/src/test/java/org/apache/james/mailbox/maildir/UserMaildirMailboxManagerStressTest.java
@@ -21,26 +21,31 @@ package org.apache.james.mailbox.maildir;
 
 import java.io.File;
 
-import org.apache.james.mailbox.MailboxManagerStressTest;
+import org.apache.james.mailbox.MailboxManagerStressContract;
 import org.apache.james.mailbox.events.EventBus;
+import org.apache.james.mailbox.exception.MailboxException;
 import org.apache.james.mailbox.store.StoreMailboxManager;
+import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.io.TempDir;
 
-class UserMaildirMailboxManagerStressTest extends MailboxManagerStressTest<StoreMailboxManager> {
+class UserMaildirMailboxManagerStressTest implements MailboxManagerStressContract<StoreMailboxManager> {
     @TempDir
     File tmpFolder;
-    
+
+    private StoreMailboxManager mailboxManager;
+
     @Override
-    protected StoreMailboxManager provideManager() {
-        try {
-            return MaildirMailboxManagerProvider.createMailboxManager("/%user", tmpFolder);
-        } catch (Exception e) {
-            throw new RuntimeException(e);
-        }
+    public StoreMailboxManager getManager() {
+        return mailboxManager;
     }
 
     @Override
-    protected EventBus retrieveEventBus(StoreMailboxManager mailboxManager) {
+    public EventBus retrieveEventBus() {
         return mailboxManager.getEventBus();
     }
+
+    @BeforeEach
+    void setUp() throws MailboxException {
+        this.mailboxManager = MaildirMailboxManagerProvider.createMailboxManager("/%user", tmpFolder);
+    }
 }
diff --git a/mailbox/memory/src/test/java/org/apache/james/mailbox/inmemory/MemoryMailboxManagerStressTest.java b/mailbox/memory/src/test/java/org/apache/james/mailbox/inmemory/MemoryMailboxManagerStressTest.java
index 5416c41..4f7484b 100644
--- a/mailbox/memory/src/test/java/org/apache/james/mailbox/inmemory/MemoryMailboxManagerStressTest.java
+++ b/mailbox/memory/src/test/java/org/apache/james/mailbox/inmemory/MemoryMailboxManagerStressTest.java
@@ -19,19 +19,27 @@
 
 package org.apache.james.mailbox.inmemory;
 
-import org.apache.james.mailbox.MailboxManagerStressTest;
+import org.apache.james.mailbox.MailboxManagerStressContract;
 import org.apache.james.mailbox.events.EventBus;
 import org.apache.james.mailbox.extension.PreDeletionHook;
+import org.junit.jupiter.api.BeforeEach;
+
+class MemoryMailboxManagerStressTest implements MailboxManagerStressContract<InMemoryMailboxManager> {
+
+    private InMemoryMailboxManager mailboxManager;
 
-class MemoryMailboxManagerStressTest extends MailboxManagerStressTest<InMemoryMailboxManager> {
-    
     @Override
-    protected InMemoryMailboxManager provideManager() {
-        return MemoryMailboxManagerProvider.provideMailboxManager(PreDeletionHook.NO_PRE_DELETION_HOOK);
+    public InMemoryMailboxManager getManager() {
+        return mailboxManager;
     }
 
     @Override
-    protected EventBus retrieveEventBus(InMemoryMailboxManager mailboxManager) {
+    public EventBus retrieveEventBus() {
         return mailboxManager.getEventBus();
     }
+
+    @BeforeEach
+    void setUp() {
+        this.mailboxManager = MemoryMailboxManagerProvider.provideMailboxManager(PreDeletionHook.NO_PRE_DELETION_HOOK);
+    }
 }


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