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