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 ad...@apache.org on 2017/04/26 11:51:15 UTC
[06/12] james-project git commit: JAMES-2008 Remove all JUNIT
contracts usages for Mailbox manager tests
JAMES-2008 Remove all JUNIT contracts usages for Mailbox manager tests
Project: http://git-wip-us.apache.org/repos/asf/james-project/repo
Commit: http://git-wip-us.apache.org/repos/asf/james-project/commit/a9fdb1c4
Tree: http://git-wip-us.apache.org/repos/asf/james-project/tree/a9fdb1c4
Diff: http://git-wip-us.apache.org/repos/asf/james-project/diff/a9fdb1c4
Branch: refs/heads/master
Commit: a9fdb1c481a1e22b9389ee7b26043624817c5ef2
Parents: e9a73fd
Author: benwa <bt...@linagora.com>
Authored: Wed Apr 19 15:39:59 2017 +0700
Committer: Antoine Duprat <ad...@linagora.com>
Committed: Wed Apr 26 13:50:10 2017 +0200
----------------------------------------------------------------------
mailbox/api/pom.xml | 14 +-
.../james/mailbox/MailboxManagerStressTest.java | 26 +--
.../james/mailbox/MailboxManagerTest.java | 80 +++++----
mailbox/cassandra/pom.xml | 5 -
.../CassandraMailboxManagerProvider.java | 99 +++++++++++
.../CassandraMailboxManagerStressTest.java | 68 ++++++++
.../cassandra/CassandraMailboxManagerTest.java | 108 ++----------
mailbox/hbase/pom.xml | 5 -
.../hbase/HBaseMailboxManagerStressTest.java | 102 ++++++++++++
.../mailbox/hbase/HBaseMailboxManagerTest.java | 80 ++++-----
mailbox/jcr/pom.xml | 5 -
.../mailbox/jcr/JCRMailboxManagerProvider.java | 79 +++++++++
.../jcr/JCRMailboxManagerStressTest.java | 64 ++++++++
.../mailbox/jcr/JCRMailboxManagerTest.java | 101 +++---------
mailbox/jpa/pom.xml | 5 -
.../mailbox/jpa/JPAMailboxManagerTest.java | 87 ++--------
.../mailbox/jpa/JpaMailboxManagerProvider.java | 63 +++++++
.../jpa/JpaMailboxManagerStressTest.java | 52 ++++++
mailbox/maildir/pom.xml | 5 -
...mainUserMaildirMailboxManagerStressTest.java | 43 +++++
.../DomainUserMaildirMailboxManagerTest.java | 51 ++++++
...FullUserMaildirMailboxManagerStressTest.java | 43 +++++
.../FullUserMaildirMailboxManagerTest.java | 51 ++++++
.../maildir/MaildirMailboxManagerProvider.java | 54 ++++++
.../maildir/MaildirMailboxManagerTests.java | 163 -------------------
.../UserMaildirMailboxManagerStressTest.java | 43 +++++
mailbox/memory/pom.xml | 5 -
.../inmemory/InMemoryMailboxManagerTest.java | 77 ---------
.../inmemory/MemoryMailboxManagerProvider.java | 58 +++++++
.../MemoryMailboxManagerStressTest.java | 30 ++++
.../inmemory/MemoryMailboxManagerTest.java | 30 ++++
31 files changed, 1073 insertions(+), 623 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/james-project/blob/a9fdb1c4/mailbox/api/pom.xml
----------------------------------------------------------------------
diff --git a/mailbox/api/pom.xml b/mailbox/api/pom.xml
index 6917440..35471bf 100644
--- a/mailbox/api/pom.xml
+++ b/mailbox/api/pom.xml
@@ -41,12 +41,17 @@
<artifactId>javax.mail</artifactId>
</dependency>
<dependency>
+ <groupId>commons-codec</groupId>
+ <artifactId>commons-codec</artifactId>
+ </dependency>
+ <dependency>
<groupId>commons-lang</groupId>
<artifactId>commons-lang</artifactId>
</dependency>
<dependency>
- <groupId>commons-codec</groupId>
- <artifactId>commons-codec</artifactId>
+ <groupId>commons-io</groupId>
+ <artifactId>commons-io</artifactId>
+ <scope>test</scope>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
@@ -83,11 +88,6 @@
<artifactId>mockito-core</artifactId>
<scope>test</scope>
</dependency>
- <dependency>
- <groupId>org.xenei</groupId>
- <artifactId>junit-contracts</artifactId>
- <scope>test</scope>
- </dependency>
</dependencies>
<build>
http://git-wip-us.apache.org/repos/asf/james-project/blob/a9fdb1c4/mailbox/api/src/test/java/org/apache/james/mailbox/MailboxManagerStressTest.java
----------------------------------------------------------------------
diff --git a/mailbox/api/src/test/java/org/apache/james/mailbox/MailboxManagerStressTest.java b/mailbox/api/src/test/java/org/apache/james/mailbox/MailboxManagerStressTest.java
index 9221557..f92cb11 100644
--- a/mailbox/api/src/test/java/org/apache/james/mailbox/MailboxManagerStressTest.java
+++ b/mailbox/api/src/test/java/org/apache/james/mailbox/MailboxManagerStressTest.java
@@ -37,34 +37,26 @@ import org.apache.james.mailbox.exception.MailboxException;
import org.apache.james.mailbox.model.ComposedMessageId;
import org.apache.james.mailbox.model.MailboxConstants;
import org.apache.james.mailbox.model.MailboxPath;
-import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
import org.slf4j.LoggerFactory;
-import org.xenei.junit.contract.Contract;
-import org.xenei.junit.contract.ContractTest;
-import org.xenei.junit.contract.IProducer;
import com.google.common.collect.ImmutableSet;
-@Contract(MailboxManager.class)
-public class MailboxManagerStressTest<T extends MailboxManager> {
+public abstract class MailboxManagerStressTest {
private final static int APPEND_OPERATIONS = 200;
- private IProducer<T> producer;
private MailboxManager mailboxManager;
- @Contract.Inject
- public final void setProducer(IProducer<T> producer) throws MailboxException {
- this.producer = producer;
- this.mailboxManager = producer.newInstance();
- }
+ protected abstract MailboxManager provideManager();
- @After
- public void tearDown() {
- producer.cleanUp();
+ @Before
+ public final void setUp() throws MailboxException {
+ this.mailboxManager = provideManager();
}
- @ContractTest
+ @Test
public void testStressTest() throws InterruptedException, MailboxException {
final CountDownLatch latch = new CountDownLatch(APPEND_OPERATIONS);
@@ -123,7 +115,7 @@ public class MailboxManagerStressTest<T extends MailboxManager> {
}
mailboxManager.endProcessingRequest(session);
mailboxManager.logout(session, false);
- } catch (MailboxException e) {
+ } catch (Exception e) {
e.printStackTrace();
fail.set(true);
} finally {
http://git-wip-us.apache.org/repos/asf/james-project/blob/a9fdb1c4/mailbox/api/src/test/java/org/apache/james/mailbox/MailboxManagerTest.java
----------------------------------------------------------------------
diff --git a/mailbox/api/src/test/java/org/apache/james/mailbox/MailboxManagerTest.java b/mailbox/api/src/test/java/org/apache/james/mailbox/MailboxManagerTest.java
index 8024f26..2f4e808 100644
--- a/mailbox/api/src/test/java/org/apache/james/mailbox/MailboxManagerTest.java
+++ b/mailbox/api/src/test/java/org/apache/james/mailbox/MailboxManagerTest.java
@@ -41,19 +41,18 @@ import org.apache.james.mailbox.model.MailboxPath;
import org.apache.james.mailbox.model.MailboxQuery;
import org.junit.After;
import org.junit.Assume;
+import org.junit.Before;
import org.junit.Rule;
+import org.junit.Test;
import org.junit.rules.ExpectedException;
import org.slf4j.LoggerFactory;
-import org.xenei.junit.contract.Contract;
-import org.xenei.junit.contract.ContractTest;
-import org.xenei.junit.contract.IProducer;
import com.google.common.base.Optional;
import com.google.common.collect.ImmutableList;
import com.google.common.collect.ImmutableSet;
/**
- * Test the {@link StoreMailboxManager} methods that
+ * Test the {@link MailboxManager} methods that
* are not covered by the protocol-tester suite.
*
* This class needs to be extended by the different mailbox
@@ -61,8 +60,7 @@ import com.google.common.collect.ImmutableSet;
* implement the test methods.
*
*/
-@Contract(MailboxManager.class)
-public class MailboxManagerTest<T extends MailboxManager> {
+public abstract class MailboxManagerTest {
public final static String USER_1 = "USER_1";
public final static String USER_2 = "USER_2";
@@ -83,32 +81,30 @@ public class MailboxManagerTest<T extends MailboxManager> {
@Rule
public ExpectedException expected = ExpectedException.none();
- private IProducer<T> producer;
private MailboxManager mailboxManager;
private MailboxSession session;
- @Contract.Inject
- public final void setProducer(IProducer<T> producer) throws Exception {
- this.producer = producer;
- this.mailboxManager = new MockMailboxManager(producer.newInstance()).getMockMailboxManager();
+ protected abstract MailboxManager provideMailboxManager();
+
+ @Before
+ public final void setUp() throws Exception {
+ this.mailboxManager = new MockMailboxManager(provideMailboxManager()).getMockMailboxManager();
}
@After
public void tearDown() throws Exception {
mailboxManager.logout(session, false);
mailboxManager.endProcessingRequest(session);
-
- producer.cleanUp();
}
- @ContractTest
+ @Test
public void createUser1SystemSessionShouldReturnValidSession() throws UnsupportedEncodingException, MailboxException {
session = mailboxManager.createSystemSession(USER_1, LoggerFactory.getLogger("Mock"));
assertThat(session.getUser().getUserName()).isEqualTo(USER_1);
}
- @ContractTest
+ @Test
public void user1ShouldNotHaveAnInbox() throws UnsupportedEncodingException, MailboxException {
session = mailboxManager.createSystemSession(USER_1, LoggerFactory.getLogger("Mock"));
mailboxManager.startProcessingRequest(session);
@@ -117,7 +113,7 @@ public class MailboxManagerTest<T extends MailboxManager> {
assertThat(mailboxManager.mailboxExists(inbox, session)).isFalse();
}
- @ContractTest
+ @Test
public void createMailboxShouldReturnRightId() throws MailboxException, UnsupportedEncodingException {
session = mailboxManager.createSystemSession(USER_1, LoggerFactory.getLogger("Mock"));
mailboxManager.startProcessingRequest(session);
@@ -130,7 +126,7 @@ public class MailboxManagerTest<T extends MailboxManager> {
assertThat(mailboxId.get()).isEqualTo(retrievedMailbox.getId());
}
- @ContractTest
+ @Test
public void user1ShouldBeAbleToCreateInbox() throws MailboxException, UnsupportedEncodingException {
session = mailboxManager.createSystemSession(USER_1, LoggerFactory.getLogger("Mock"));
mailboxManager.startProcessingRequest(session);
@@ -141,7 +137,7 @@ public class MailboxManagerTest<T extends MailboxManager> {
assertThat(mailboxManager.mailboxExists(inbox, session)).isTrue();
}
- @ContractTest
+ @Test
public void user1ShouldNotBeAbleToCreateInboxTwice() throws MailboxException, UnsupportedEncodingException {
expected.expect(MailboxException.class);
session = mailboxManager.createSystemSession(USER_1, LoggerFactory.getLogger("Mock"));
@@ -151,7 +147,7 @@ public class MailboxManagerTest<T extends MailboxManager> {
mailboxManager.createMailbox(inbox, session);
}
- @ContractTest
+ @Test
public void user1ShouldNotHaveTestSubmailbox() throws MailboxException, UnsupportedEncodingException {
session = mailboxManager.createSystemSession(USER_1, LoggerFactory.getLogger("Mock"));
mailboxManager.startProcessingRequest(session);
@@ -162,7 +158,7 @@ public class MailboxManagerTest<T extends MailboxManager> {
assertThat(mailboxManager.mailboxExists(new MailboxPath(inbox, "INBOX.Test"), session)).isFalse();
}
- @ContractTest
+ @Test
public void user1ShouldBeAbleToCreateTestSubmailbox() throws MailboxException, UnsupportedEncodingException {
session = mailboxManager.createSystemSession(USER_1, LoggerFactory.getLogger("Mock"));
mailboxManager.startProcessingRequest(session);
@@ -175,7 +171,7 @@ public class MailboxManagerTest<T extends MailboxManager> {
assertThat(mailboxManager.mailboxExists(inboxSubMailbox, session)).isTrue();
}
- @ContractTest
+ @Test
public void user1ShouldBeAbleToDeleteInbox() throws MailboxException, UnsupportedEncodingException {
session = mailboxManager.createSystemSession(USER_1, LoggerFactory.getLogger("Mock"));
mailboxManager.startProcessingRequest(session);
@@ -191,7 +187,7 @@ public class MailboxManagerTest<T extends MailboxManager> {
assertThat(mailboxManager.mailboxExists(inboxSubMailbox, session)).isTrue();
}
- @ContractTest
+ @Test
public void user1ShouldBeAbleToDeleteSubmailbox() throws MailboxException, UnsupportedEncodingException {
session = mailboxManager.createSystemSession(USER_1, LoggerFactory.getLogger("Mock"));
mailboxManager.startProcessingRequest(session);
@@ -207,7 +203,7 @@ public class MailboxManagerTest<T extends MailboxManager> {
assertThat(mailboxManager.mailboxExists(inboxSubMailbox, session)).isFalse();
}
- @ContractTest
+ @Test
public void closingSessionShouldWork() throws BadCredentialsException, MailboxException, UnsupportedEncodingException {
session = mailboxManager.createSystemSession(USER_1, LoggerFactory.getLogger("Mock"));
mailboxManager.startProcessingRequest(session);
@@ -218,7 +214,7 @@ public class MailboxManagerTest<T extends MailboxManager> {
assertThat(session.isOpen()).isFalse();
}
- @ContractTest
+ @Test
public void listShouldReturnMailboxes() throws MailboxException, UnsupportedEncodingException {
session = mailboxManager.createSystemSession("manager", LoggerFactory.getLogger("testList"));
mailboxManager.startProcessingRequest(session);
@@ -226,7 +222,7 @@ public class MailboxManagerTest<T extends MailboxManager> {
assertThat(mailboxManager.list(session)).hasSize(MockMailboxManager.EXPECTED_MAILBOXES_COUNT);
}
- @ContractTest
+ @Test
public void user2ShouldBeAbleToCreateRootlessFolder() throws BadCredentialsException, MailboxException {
session = mailboxManager.createSystemSession(USER_2, LoggerFactory.getLogger("Test"));
MailboxPath trash = new MailboxPath(MailboxConstants.USER_NAMESPACE, USER_2, "Trash");
@@ -235,7 +231,7 @@ public class MailboxManagerTest<T extends MailboxManager> {
assertThat(mailboxManager.mailboxExists(trash, session)).isTrue();
}
- @ContractTest
+ @Test
public void user2ShouldBeAbleToCreateNestedFoldersWithoutTheirParents() throws BadCredentialsException, MailboxException {
session = mailboxManager.createSystemSession(USER_2, LoggerFactory.getLogger("Test"));
MailboxPath nestedFolder = new MailboxPath(MailboxConstants.USER_NAMESPACE, USER_2, "INBOX.testfolder");
@@ -245,7 +241,7 @@ public class MailboxManagerTest<T extends MailboxManager> {
mailboxManager.getMailbox(MailboxPath.inbox(session), session).appendMessage(new ByteArrayInputStream("Subject: test\r\n\r\ntestmail".getBytes()), new Date(), session, false, new Flags());
}
- @ContractTest
+ @Test
public void searchShouldNotReturnResultsFromOtherNamespaces() throws Exception {
Assume.assumeTrue(mailboxManager.hasCapability(MailboxCapabilities.Namespace));
session = mailboxManager.createSystemSession(USER_1, LoggerFactory.getLogger("Mock"));
@@ -256,7 +252,7 @@ public class MailboxManagerTest<T extends MailboxManager> {
assertThat(metaDatas.get(0).getPath()).isEqualTo(MailboxPath.inbox(session));
}
- @ContractTest
+ @Test
public void searchShouldNotReturnResultsFromOtherUsers() throws Exception {
session = mailboxManager.createSystemSession(USER_1, LoggerFactory.getLogger("Mock"));
mailboxManager.createMailbox(new MailboxPath("#namespace", USER_2, "Other"), session);
@@ -266,7 +262,7 @@ public class MailboxManagerTest<T extends MailboxManager> {
assertThat(metaDatas.get(0).getPath()).isEqualTo(MailboxPath.inbox(session));
}
- @ContractTest
+ @Test
public void updateAnnotationsShouldUpdateStoredAnnotation() throws MailboxException {
Assume.assumeTrue(mailboxManager.hasCapability(MailboxCapabilities.Annotation));
session = mailboxManager.createSystemSession(USER_2, LoggerFactory.getLogger("Test"));
@@ -279,7 +275,7 @@ public class MailboxManagerTest<T extends MailboxManager> {
assertThat(mailboxManager.getAllAnnotations(inbox, session)).containsOnly(PRIVATE_ANNOTATION_UPDATE);
}
- @ContractTest
+ @Test
public void updateAnnotationsShouldDeleteAnnotationWithNilValue() throws BadCredentialsException, MailboxException {
Assume.assumeTrue(mailboxManager.hasCapability(MailboxCapabilities.Annotation));
session = mailboxManager.createSystemSession(USER_2, LoggerFactory.getLogger("Test"));
@@ -292,7 +288,7 @@ public class MailboxManagerTest<T extends MailboxManager> {
assertThat(mailboxManager.getAllAnnotations(inbox, session)).isEmpty();
}
- @ContractTest
+ @Test
public void updateAnnotationsShouldThrowExceptionIfMailboxDoesNotExist() throws MailboxException {
Assume.assumeTrue(mailboxManager.hasCapability(MailboxCapabilities.Annotation));
expected.expect(MailboxException.class);
@@ -302,7 +298,7 @@ public class MailboxManagerTest<T extends MailboxManager> {
mailboxManager.updateAnnotations(inbox, session, ImmutableList.of(PRIVATE_ANNOTATION));
}
- @ContractTest
+ @Test
public void getAnnotationsShouldReturnEmptyForNonStoredAnnotation() throws BadCredentialsException, MailboxException {
Assume.assumeTrue(mailboxManager.hasCapability(MailboxCapabilities.Annotation));
session = mailboxManager.createSystemSession(USER_2, LoggerFactory.getLogger("Test"));
@@ -312,7 +308,7 @@ public class MailboxManagerTest<T extends MailboxManager> {
assertThat(mailboxManager.getAllAnnotations(inbox, session)).isEmpty();
}
- @ContractTest
+ @Test
public void getAllAnnotationsShouldRetrieveStoredAnnotations() throws BadCredentialsException, MailboxException {
Assume.assumeTrue(mailboxManager.hasCapability(MailboxCapabilities.Annotation));
session = mailboxManager.createSystemSession(USER_2, LoggerFactory.getLogger("Test"));
@@ -324,7 +320,7 @@ public class MailboxManagerTest<T extends MailboxManager> {
assertThat(mailboxManager.getAllAnnotations(inbox, session)).isEqualTo(ANNOTATIONS);
}
- @ContractTest
+ @Test
public void getAllAnnotationsShouldThrowExceptionIfMailboxDoesNotExist() throws MailboxException {
Assume.assumeTrue(mailboxManager.hasCapability(MailboxCapabilities.Annotation));
expected.expect(MailboxException.class);
@@ -334,7 +330,7 @@ public class MailboxManagerTest<T extends MailboxManager> {
mailboxManager.getAllAnnotations(inbox, session);
}
- @ContractTest
+ @Test
public void getAnnotationsByKeysShouldRetrieveStoresAnnotationsByKeys() throws BadCredentialsException, MailboxException {
Assume.assumeTrue(mailboxManager.hasCapability(MailboxCapabilities.Annotation));
session = mailboxManager.createSystemSession(USER_2, LoggerFactory.getLogger("Test"));
@@ -347,7 +343,7 @@ public class MailboxManagerTest<T extends MailboxManager> {
.containsOnly(PRIVATE_ANNOTATION);
}
- @ContractTest
+ @Test
public void getAnnotationsByKeysShouldThrowExceptionIfMailboxDoesNotExist() throws MailboxException {
Assume.assumeTrue(mailboxManager.hasCapability(MailboxCapabilities.Annotation));
expected.expect(MailboxException.class);
@@ -357,7 +353,7 @@ public class MailboxManagerTest<T extends MailboxManager> {
mailboxManager.getAnnotationsByKeys(inbox, session, ImmutableSet.of(PRIVATE_KEY));
}
- @ContractTest
+ @Test
public void getAnnotationsByKeysWithOneDepthShouldRetriveAnnotationsWithOneDepth() throws BadCredentialsException, MailboxException {
Assume.assumeTrue(mailboxManager.hasCapability(MailboxCapabilities.Annotation));
session = mailboxManager.createSystemSession(USER_2, LoggerFactory.getLogger("Test"));
@@ -370,7 +366,7 @@ public class MailboxManagerTest<T extends MailboxManager> {
.contains(PRIVATE_ANNOTATION, PRIVATE_CHILD_ANNOTATION);
}
- @ContractTest
+ @Test
public void getAnnotationsByKeysWithAllDepthShouldThrowExceptionWhenMailboxDoesNotExist() throws BadCredentialsException, MailboxException {
Assume.assumeTrue(mailboxManager.hasCapability(MailboxCapabilities.Annotation));
expected.expect(MailboxException.class);
@@ -380,7 +376,7 @@ public class MailboxManagerTest<T extends MailboxManager> {
mailboxManager.getAnnotationsByKeysWithAllDepth(inbox, session, ImmutableSet.of(PRIVATE_KEY));
}
- @ContractTest
+ @Test
public void getAnnotationsByKeysWithAllDepthShouldRetriveAnnotationsWithAllDepth() throws BadCredentialsException, MailboxException {
Assume.assumeTrue(mailboxManager.hasCapability(MailboxCapabilities.Annotation));
session = mailboxManager.createSystemSession(USER_2, LoggerFactory.getLogger("Test"));
@@ -393,7 +389,7 @@ public class MailboxManagerTest<T extends MailboxManager> {
.contains(PRIVATE_ANNOTATION, PRIVATE_CHILD_ANNOTATION, PRIVATE_GRANDCHILD_ANNOTATION);
}
- @ContractTest
+ @Test
public void updateAnnotationsShouldThrowExceptionIfAnnotationDataIsOverLimitation() throws MailboxException {
Assume.assumeTrue(mailboxManager.hasCapability(MailboxCapabilities.Annotation));
expected.expect(AnnotationException.class);
@@ -404,7 +400,7 @@ public class MailboxManagerTest<T extends MailboxManager> {
mailboxManager.updateAnnotations(inbox, session, ImmutableList.of(MailboxAnnotation.newInstance(PRIVATE_KEY, "The limitation of data is less than 30")));
}
- @ContractTest
+ @Test
public void shouldUpdateAnnotationWhenRequestCreatesNewAndMailboxIsNotOverLimit() throws MailboxException {
Assume.assumeTrue(mailboxManager.hasCapability(MailboxCapabilities.Annotation));
session = mailboxManager.createSystemSession(USER_2, LoggerFactory.getLogger("Test"));
@@ -419,7 +415,7 @@ public class MailboxManagerTest<T extends MailboxManager> {
mailboxManager.updateAnnotations(inbox, session, builder.build());
}
- @ContractTest
+ @Test
public void updateAnnotationsShouldThrowExceptionIfRequestCreateNewButMailboxIsOverLimit() throws MailboxException {
Assume.assumeTrue(mailboxManager.hasCapability(MailboxCapabilities.Annotation));
expected.expect(MailboxException.class);
http://git-wip-us.apache.org/repos/asf/james-project/blob/a9fdb1c4/mailbox/cassandra/pom.xml
----------------------------------------------------------------------
diff --git a/mailbox/cassandra/pom.xml b/mailbox/cassandra/pom.xml
index 5f3599c..ac44bb6 100644
--- a/mailbox/cassandra/pom.xml
+++ b/mailbox/cassandra/pom.xml
@@ -147,11 +147,6 @@
</activation>
<dependencies>
<dependency>
- <groupId>org.xenei</groupId>
- <artifactId>junit-contracts</artifactId>
- <scope>test</scope>
- </dependency>
- <dependency>
<groupId>com.google.guava</groupId>
<artifactId>guava</artifactId>
</dependency>
http://git-wip-us.apache.org/repos/asf/james-project/blob/a9fdb1c4/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/CassandraMailboxManagerProvider.java
----------------------------------------------------------------------
diff --git a/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/CassandraMailboxManagerProvider.java b/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/CassandraMailboxManagerProvider.java
new file mode 100644
index 0000000..41bcd4b
--- /dev/null
+++ b/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/CassandraMailboxManagerProvider.java
@@ -0,0 +1,99 @@
+/****************************************************************
+ * Licensed to the Apache Software Foundation (ASF) under one *
+ * or more contributor license agreements. See the NOTICE file *
+ * distributed with this work for additional information *
+ * regarding copyright ownership. The ASF licenses this file *
+ * to you under the Apache License, Version 2.0 (the *
+ * "License"); you may not use this file except in compliance *
+ * with the License. You may obtain a copy of the License at *
+ * *
+ * http://www.apache.org/licenses/LICENSE-2.0 *
+ * *
+ * Unless required by applicable law or agreed to in writing, *
+ * software distributed under the License is distributed on an *
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY *
+ * KIND, either express or implied. See the License for the *
+ * specific language governing permissions and limitations *
+ * under the License. *
+ ****************************************************************/
+
+package org.apache.james.mailbox.cassandra;
+
+import org.apache.james.backends.cassandra.init.CassandraTypesProvider;
+import org.apache.james.mailbox.acl.GroupMembershipResolver;
+import org.apache.james.mailbox.acl.MailboxACLResolver;
+import org.apache.james.mailbox.acl.SimpleGroupMembershipResolver;
+import org.apache.james.mailbox.acl.UnionMailboxACLResolver;
+import org.apache.james.mailbox.cassandra.mail.CassandraApplicableFlagDAO;
+import org.apache.james.mailbox.cassandra.mail.CassandraDeletedMessageDAO;
+import org.apache.james.mailbox.cassandra.mail.CassandraFirstUnseenDAO;
+import org.apache.james.mailbox.cassandra.mail.CassandraMailboxCounterDAO;
+import org.apache.james.mailbox.cassandra.mail.CassandraMailboxDAO;
+import org.apache.james.mailbox.cassandra.mail.CassandraMailboxPathDAO;
+import org.apache.james.mailbox.cassandra.mail.CassandraMailboxRecentsDAO;
+import org.apache.james.mailbox.cassandra.mail.CassandraMessageDAO;
+import org.apache.james.mailbox.cassandra.mail.CassandraMessageIdDAO;
+import org.apache.james.mailbox.cassandra.mail.CassandraMessageIdToImapUidDAO;
+import org.apache.james.mailbox.cassandra.mail.CassandraModSeqProvider;
+import org.apache.james.mailbox.cassandra.mail.CassandraUidProvider;
+import org.apache.james.mailbox.exception.MailboxException;
+import org.apache.james.mailbox.store.Authenticator;
+import org.apache.james.mailbox.store.Authorizator;
+import org.apache.james.mailbox.store.NoMailboxPathLocker;
+import org.apache.james.mailbox.store.mail.model.impl.MessageParser;
+
+import com.datastax.driver.core.Session;
+import com.google.common.base.Throwables;
+
+public class CassandraMailboxManagerProvider {
+ private static final int LIMIT_ANNOTATIONS = 3;
+ private static final int LIMIT_ANNOTATION_SIZE = 30;
+ public static final int MAX_ACL_RETRY = 10;
+
+ public static CassandraMailboxManager provideMailboxManager(Session session, CassandraTypesProvider cassandraTypesProvider) {
+ CassandraUidProvider uidProvider = new CassandraUidProvider(session);
+ CassandraModSeqProvider modSeqProvider = new CassandraModSeqProvider(session);
+ CassandraMessageId.Factory messageIdFactory = new CassandraMessageId.Factory();
+ CassandraMessageIdDAO messageIdDAO = new CassandraMessageIdDAO(session, messageIdFactory);
+ CassandraMessageIdToImapUidDAO imapUidDAO = new CassandraMessageIdToImapUidDAO(session, messageIdFactory);
+ CassandraMessageDAO messageDAO = new CassandraMessageDAO(session, cassandraTypesProvider, messageIdFactory);
+ CassandraMailboxCounterDAO mailboxCounterDAO = new CassandraMailboxCounterDAO(session);
+ CassandraMailboxRecentsDAO mailboxRecentsDAO = new CassandraMailboxRecentsDAO(session);
+ CassandraMailboxDAO mailboxDAO = new CassandraMailboxDAO(session, cassandraTypesProvider, MAX_ACL_RETRY);
+ CassandraMailboxPathDAO mailboxPathDAO = new CassandraMailboxPathDAO(session, cassandraTypesProvider);
+ CassandraFirstUnseenDAO firstUnseenDAO = new CassandraFirstUnseenDAO(session);
+ CassandraApplicableFlagDAO applicableFlagDAO = new CassandraApplicableFlagDAO(session);
+ CassandraDeletedMessageDAO deletedMessageDAO = new CassandraDeletedMessageDAO(session);
+
+ CassandraMailboxSessionMapperFactory mapperFactory = new CassandraMailboxSessionMapperFactory(uidProvider,
+ modSeqProvider,
+ session,
+ messageDAO,
+ messageIdDAO,
+ imapUidDAO,
+ mailboxCounterDAO,
+ mailboxRecentsDAO,
+ mailboxDAO,
+ mailboxPathDAO,
+ firstUnseenDAO,
+ applicableFlagDAO,
+ deletedMessageDAO);
+
+ MailboxACLResolver aclResolver = new UnionMailboxACLResolver();
+ GroupMembershipResolver groupMembershipResolver = new SimpleGroupMembershipResolver();
+ MessageParser messageParser = new MessageParser();
+
+ Authenticator noAuthenticator = null;
+ Authorizator noAuthorizator = null;
+ CassandraMailboxManager manager = new CassandraMailboxManager(mapperFactory, noAuthenticator, noAuthorizator, new NoMailboxPathLocker(), aclResolver, groupMembershipResolver,
+ messageParser, messageIdFactory, LIMIT_ANNOTATIONS, LIMIT_ANNOTATION_SIZE);
+ try {
+ manager.init();
+ } catch (MailboxException e) {
+ throw Throwables.propagate(e);
+ }
+
+ return manager;
+ }
+
+}
http://git-wip-us.apache.org/repos/asf/james-project/blob/a9fdb1c4/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/CassandraMailboxManagerStressTest.java
----------------------------------------------------------------------
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
new file mode 100644
index 0000000..5ba536a
--- /dev/null
+++ b/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/CassandraMailboxManagerStressTest.java
@@ -0,0 +1,68 @@
+/****************************************************************
+ * Licensed to the Apache Software Foundation (ASF) under one *
+ * or more contributor license agreements. See the NOTICE file *
+ * distributed with this work for additional information *
+ * regarding copyright ownership. The ASF licenses this file *
+ * to you under the Apache License, Version 2.0 (the *
+ * "License"); you may not use this file except in compliance *
+ * with the License. You may obtain a copy of the License at *
+ * *
+ * http://www.apache.org/licenses/LICENSE-2.0 *
+ * *
+ * Unless required by applicable law or agreed to in writing, *
+ * software distributed under the License is distributed on an *
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY *
+ * KIND, either express or implied. See the License for the *
+ * specific language governing permissions and limitations *
+ * under the License. *
+ ****************************************************************/
+
+package org.apache.james.mailbox.cassandra;
+
+import org.apache.james.backends.cassandra.CassandraCluster;
+import org.apache.james.backends.cassandra.init.CassandraModuleComposite;
+import org.apache.james.mailbox.MailboxManager;
+import org.apache.james.mailbox.MailboxManagerStressTest;
+import org.apache.james.mailbox.cassandra.modules.CassandraAclModule;
+import org.apache.james.mailbox.cassandra.modules.CassandraAnnotationModule;
+import org.apache.james.mailbox.cassandra.modules.CassandraApplicableFlagsModule;
+import org.apache.james.mailbox.cassandra.modules.CassandraAttachmentModule;
+import org.apache.james.mailbox.cassandra.modules.CassandraDeletedMessageModule;
+import org.apache.james.mailbox.cassandra.modules.CassandraFirstUnseenModule;
+import org.apache.james.mailbox.cassandra.modules.CassandraMailboxCounterModule;
+import org.apache.james.mailbox.cassandra.modules.CassandraMailboxModule;
+import org.apache.james.mailbox.cassandra.modules.CassandraMailboxRecentsModule;
+import org.apache.james.mailbox.cassandra.modules.CassandraMessageModule;
+import org.apache.james.mailbox.cassandra.modules.CassandraModSeqModule;
+import org.apache.james.mailbox.cassandra.modules.CassandraSubscriptionModule;
+import org.apache.james.mailbox.cassandra.modules.CassandraUidModule;
+import org.junit.After;
+import org.junit.Ignore;
+
+@Ignore("https://issues.apache.org/jira/browse/JAMES-2009")
+public class CassandraMailboxManagerStressTest extends MailboxManagerStressTest {
+ private static final CassandraCluster CASSANDRA = CassandraCluster.create(new CassandraModuleComposite(
+ new CassandraAclModule(),
+ new CassandraMailboxModule(),
+ new CassandraMessageModule(),
+ new CassandraMailboxCounterModule(),
+ new CassandraMailboxRecentsModule(),
+ new CassandraFirstUnseenModule(),
+ new CassandraUidModule(),
+ new CassandraModSeqModule(),
+ new CassandraSubscriptionModule(),
+ new CassandraAttachmentModule(),
+ new CassandraDeletedMessageModule(),
+ new CassandraAnnotationModule(),
+ new CassandraApplicableFlagsModule()));
+
+ @Override
+ protected MailboxManager provideManager() {
+ return CassandraMailboxManagerProvider.provideMailboxManager(CASSANDRA.getConf(), CASSANDRA.getTypesProvider());
+ }
+
+ @After
+ public void tearDown() {
+ CASSANDRA.clearAllTables();
+ }
+}
http://git-wip-us.apache.org/repos/asf/james-project/blob/a9fdb1c4/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/CassandraMailboxManagerTest.java
----------------------------------------------------------------------
diff --git a/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/CassandraMailboxManagerTest.java b/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/CassandraMailboxManagerTest.java
index 2c5b99b..63333e4 100644
--- a/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/CassandraMailboxManagerTest.java
+++ b/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/CassandraMailboxManagerTest.java
@@ -20,24 +20,11 @@ package org.apache.james.mailbox.cassandra;
import org.apache.james.backends.cassandra.CassandraCluster;
import org.apache.james.backends.cassandra.init.CassandraModuleComposite;
-import org.apache.james.mailbox.acl.GroupMembershipResolver;
-import org.apache.james.mailbox.acl.MailboxACLResolver;
-import org.apache.james.mailbox.acl.SimpleGroupMembershipResolver;
-import org.apache.james.mailbox.acl.UnionMailboxACLResolver;
-import org.apache.james.mailbox.cassandra.mail.CassandraDeletedMessageDAO;
-import org.apache.james.mailbox.cassandra.mail.CassandraFirstUnseenDAO;
-import org.apache.james.mailbox.cassandra.mail.CassandraApplicableFlagDAO;
-import org.apache.james.mailbox.cassandra.mail.CassandraMailboxCounterDAO;
-import org.apache.james.mailbox.cassandra.mail.CassandraMailboxDAO;
-import org.apache.james.mailbox.cassandra.mail.CassandraMailboxPathDAO;
-import org.apache.james.mailbox.cassandra.mail.CassandraMailboxRecentsDAO;
-import org.apache.james.mailbox.cassandra.mail.CassandraMessageDAO;
-import org.apache.james.mailbox.cassandra.mail.CassandraMessageIdDAO;
-import org.apache.james.mailbox.cassandra.mail.CassandraMessageIdToImapUidDAO;
-import org.apache.james.mailbox.cassandra.mail.CassandraModSeqProvider;
-import org.apache.james.mailbox.cassandra.mail.CassandraUidProvider;
+import org.apache.james.mailbox.MailboxManager;
+import org.apache.james.mailbox.MailboxManagerTest;
import org.apache.james.mailbox.cassandra.modules.CassandraAclModule;
import org.apache.james.mailbox.cassandra.modules.CassandraAnnotationModule;
+import org.apache.james.mailbox.cassandra.modules.CassandraApplicableFlagsModule;
import org.apache.james.mailbox.cassandra.modules.CassandraAttachmentModule;
import org.apache.james.mailbox.cassandra.modules.CassandraDeletedMessageModule;
import org.apache.james.mailbox.cassandra.modules.CassandraFirstUnseenModule;
@@ -48,25 +35,9 @@ import org.apache.james.mailbox.cassandra.modules.CassandraMessageModule;
import org.apache.james.mailbox.cassandra.modules.CassandraModSeqModule;
import org.apache.james.mailbox.cassandra.modules.CassandraSubscriptionModule;
import org.apache.james.mailbox.cassandra.modules.CassandraUidModule;
-import org.apache.james.mailbox.exception.MailboxException;
-import org.apache.james.mailbox.store.Authenticator;
-import org.apache.james.mailbox.store.Authorizator;
-import org.apache.james.mailbox.store.NoMailboxPathLocker;
-import org.apache.james.mailbox.store.mail.model.impl.MessageParser;
-import org.junit.runner.RunWith;
-import org.xenei.junit.contract.Contract;
-import org.xenei.junit.contract.ContractImpl;
-import org.xenei.junit.contract.ContractSuite;
-import org.xenei.junit.contract.IProducer;
+import org.junit.After;
-import com.google.common.base.Throwables;
-
-@RunWith(ContractSuite.class)
-@ContractImpl(CassandraMailboxManager.class)
-public class CassandraMailboxManagerTest {
- private static final int LIMIT_ANNOTATIONS = 3;
- private static final int LIMIT_ANNOTATION_SIZE = 30;
- public static final int MAX_ACL_RETRY = 10;
+public class CassandraMailboxManagerTest extends MailboxManagerTest {
private static final CassandraCluster CASSANDRA = CassandraCluster.create(new CassandraModuleComposite(
new CassandraAclModule(),
@@ -80,67 +51,18 @@ public class CassandraMailboxManagerTest {
new CassandraSubscriptionModule(),
new CassandraAttachmentModule(),
new CassandraDeletedMessageModule(),
- new CassandraAnnotationModule()));
-
- private IProducer<CassandraMailboxManager> producer = new IProducer<CassandraMailboxManager>() {
-
- @Override
- public CassandraMailboxManager newInstance() {
- CASSANDRA.ensureAllTables();
- CassandraUidProvider uidProvider = new CassandraUidProvider(CASSANDRA.getConf());
- CassandraModSeqProvider modSeqProvider = new CassandraModSeqProvider(CASSANDRA.getConf());
- CassandraMessageId.Factory messageIdFactory = new CassandraMessageId.Factory();
- CassandraMessageIdDAO messageIdDAO = new CassandraMessageIdDAO(CASSANDRA.getConf(), messageIdFactory);
- CassandraMessageIdToImapUidDAO imapUidDAO = new CassandraMessageIdToImapUidDAO(CASSANDRA.getConf(), messageIdFactory);
- CassandraMessageDAO messageDAO = new CassandraMessageDAO(CASSANDRA.getConf(), CASSANDRA.getTypesProvider(), messageIdFactory);
- CassandraMailboxCounterDAO mailboxCounterDAO = new CassandraMailboxCounterDAO(CASSANDRA.getConf());
- CassandraMailboxRecentsDAO mailboxRecentsDAO = new CassandraMailboxRecentsDAO(CASSANDRA.getConf());
- CassandraMailboxDAO mailboxDAO = new CassandraMailboxDAO(CASSANDRA.getConf(), CASSANDRA.getTypesProvider(), MAX_ACL_RETRY);
- CassandraMailboxPathDAO mailboxPathDAO = new CassandraMailboxPathDAO(CASSANDRA.getConf(), CASSANDRA.getTypesProvider());
- CassandraFirstUnseenDAO firstUnseenDAO = new CassandraFirstUnseenDAO(CASSANDRA.getConf());
- CassandraApplicableFlagDAO applicableFlagDAO = new CassandraApplicableFlagDAO(CASSANDRA.getConf());
- CassandraDeletedMessageDAO deletedMessageDAO = new CassandraDeletedMessageDAO(CASSANDRA.getConf());
-
- CassandraMailboxSessionMapperFactory mapperFactory = new CassandraMailboxSessionMapperFactory(uidProvider,
- modSeqProvider,
- CASSANDRA.getConf(),
- messageDAO,
- messageIdDAO,
- imapUidDAO,
- mailboxCounterDAO,
- mailboxRecentsDAO,
- mailboxDAO,
- mailboxPathDAO,
- firstUnseenDAO,
- applicableFlagDAO,
- deletedMessageDAO);
+ new CassandraAnnotationModule(),
+ new CassandraApplicableFlagsModule()));
- MailboxACLResolver aclResolver = new UnionMailboxACLResolver();
- GroupMembershipResolver groupMembershipResolver = new SimpleGroupMembershipResolver();
- MessageParser messageParser = new MessageParser();
-
- Authenticator noAuthenticator = null;
- Authorizator noAuthorizator = null;
- CassandraMailboxManager manager = new CassandraMailboxManager(mapperFactory, noAuthenticator, noAuthorizator, new NoMailboxPathLocker(), aclResolver, groupMembershipResolver,
- messageParser, messageIdFactory, LIMIT_ANNOTATIONS, LIMIT_ANNOTATION_SIZE);
- try {
- manager.init();
- } catch (MailboxException e) {
- throw Throwables.propagate(e);
- }
-
- return manager;
- }
-
- @Override
- public void cleanUp() {
- CASSANDRA.clearAllTables();
- }
- };
+ @Override
+ protected MailboxManager provideMailboxManager() {
+ return CassandraMailboxManagerProvider.provideMailboxManager(CASSANDRA.getConf(), CASSANDRA.getTypesProvider());
+ }
- @Contract.Inject
- public IProducer<CassandraMailboxManager> getProducer() {
- return producer;
+ @After
+ public void tearDown() throws Exception {
+ super.tearDown();
+ CASSANDRA.clearAllTables();
}
}
http://git-wip-us.apache.org/repos/asf/james-project/blob/a9fdb1c4/mailbox/hbase/pom.xml
----------------------------------------------------------------------
diff --git a/mailbox/hbase/pom.xml b/mailbox/hbase/pom.xml
index b37d25d..81dff98 100644
--- a/mailbox/hbase/pom.xml
+++ b/mailbox/hbase/pom.xml
@@ -133,11 +133,6 @@
</exclusion>
</exclusions>
</dependency>
- <dependency>
- <groupId>org.xenei</groupId>
- <artifactId>junit-contracts</artifactId>
- <scope>test</scope>
- </dependency>
</dependencies>
<profiles>
http://git-wip-us.apache.org/repos/asf/james-project/blob/a9fdb1c4/mailbox/hbase/src/test/java/org/apache/james/mailbox/hbase/HBaseMailboxManagerStressTest.java
----------------------------------------------------------------------
diff --git a/mailbox/hbase/src/test/java/org/apache/james/mailbox/hbase/HBaseMailboxManagerStressTest.java b/mailbox/hbase/src/test/java/org/apache/james/mailbox/hbase/HBaseMailboxManagerStressTest.java
new file mode 100644
index 0000000..b90ab27
--- /dev/null
+++ b/mailbox/hbase/src/test/java/org/apache/james/mailbox/hbase/HBaseMailboxManagerStressTest.java
@@ -0,0 +1,102 @@
+/****************************************************************
+ * Licensed to the Apache Software Foundation (ASF) under one *
+ * or more contributor license agreements. See the NOTICE file *
+ * distributed with this work for additional information *
+ * regarding copyright ownership. The ASF licenses this file *
+ * to you under the Apache License, Version 2.0 (the *
+ * "License"); you may not use this file except in compliance *
+ * with the License. You may obtain a copy of the License at *
+ * *
+ * http://www.apache.org/licenses/LICENSE-2.0 *
+ * *
+ * Unless required by applicable law or agreed to in writing, *
+ * software distributed under the License is distributed on an *
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY *
+ * KIND, either express or implied. See the License for the *
+ * specific language governing permissions and limitations *
+ * under the License. *
+ ****************************************************************/
+package org.apache.james.mailbox.hbase;
+
+import static org.apache.james.mailbox.hbase.HBaseNames.MAILBOXES;
+import static org.apache.james.mailbox.hbase.HBaseNames.MAILBOXES_TABLE;
+import static org.apache.james.mailbox.hbase.HBaseNames.MAILBOX_CF;
+import static org.apache.james.mailbox.hbase.HBaseNames.MESSAGES;
+import static org.apache.james.mailbox.hbase.HBaseNames.MESSAGES_META_CF;
+import static org.apache.james.mailbox.hbase.HBaseNames.MESSAGES_TABLE;
+import static org.apache.james.mailbox.hbase.HBaseNames.MESSAGE_DATA_BODY_CF;
+import static org.apache.james.mailbox.hbase.HBaseNames.MESSAGE_DATA_HEADERS_CF;
+import static org.apache.james.mailbox.hbase.HBaseNames.SUBSCRIPTIONS;
+import static org.apache.james.mailbox.hbase.HBaseNames.SUBSCRIPTIONS_TABLE;
+import static org.apache.james.mailbox.hbase.HBaseNames.SUBSCRIPTION_CF;
+
+import org.apache.james.mailbox.MailboxManager;
+import org.apache.james.mailbox.MailboxManagerStressTest;
+import org.apache.james.mailbox.acl.SimpleGroupMembershipResolver;
+import org.apache.james.mailbox.acl.UnionMailboxACLResolver;
+import org.apache.james.mailbox.exception.MailboxException;
+import org.apache.james.mailbox.hbase.mail.HBaseModSeqProvider;
+import org.apache.james.mailbox.hbase.mail.HBaseUidProvider;
+import org.apache.james.mailbox.model.MessageId;
+import org.apache.james.mailbox.store.Authenticator;
+import org.apache.james.mailbox.store.Authorizator;
+import org.apache.james.mailbox.store.mail.model.DefaultMessageId;
+import org.apache.james.mailbox.store.mail.model.impl.MessageParser;
+import org.junit.After;
+import org.junit.Ignore;
+
+import com.google.common.base.Throwables;
+
+@Ignore("https://issues.apache.org/jira/browse/MAILBOX-293")
+public class HBaseMailboxManagerStressTest extends MailboxManagerStressTest {
+
+ private static final HBaseClusterSingleton CLUSTER = HBaseClusterSingleton.build();
+
+ @Override
+ protected MailboxManager provideManager() {
+ ensureTables();
+
+ HBaseUidProvider uidProvider = new HBaseUidProvider(CLUSTER.getConf());
+ HBaseModSeqProvider modSeqProvider = new HBaseModSeqProvider(CLUSTER.getConf());
+ MessageId.Factory messageIdFactory = new DefaultMessageId.Factory();
+ HBaseMailboxSessionMapperFactory mapperFactory = new HBaseMailboxSessionMapperFactory(CLUSTER.getConf(),
+ uidProvider, modSeqProvider, messageIdFactory);
+
+ Authenticator noAuthenticator = null;
+ Authorizator noAuthorizator = null;
+ HBaseMailboxManager manager = new HBaseMailboxManager(mapperFactory,
+ noAuthenticator,
+ noAuthorizator,
+ new UnionMailboxACLResolver(),
+ new SimpleGroupMembershipResolver(),
+ new MessageParser(),
+ messageIdFactory
+ );
+
+ try {
+ manager.init();
+ } catch (MailboxException e) {
+ throw Throwables.propagate(e);
+ }
+
+ return manager;
+ }
+
+ @After
+ public void tearDown() {
+ CLUSTER.clearTable(MAILBOXES);
+ CLUSTER.clearTable(MESSAGES);
+ CLUSTER.clearTable(SUBSCRIPTIONS);
+ }
+
+ private void ensureTables() {
+ try {
+ CLUSTER.ensureTable(MAILBOXES_TABLE, new byte[][]{MAILBOX_CF});
+ CLUSTER.ensureTable(MESSAGES_TABLE,
+ new byte[][]{MESSAGES_META_CF, MESSAGE_DATA_HEADERS_CF, MESSAGE_DATA_BODY_CF});
+ CLUSTER.ensureTable(SUBSCRIPTIONS_TABLE, new byte[][]{SUBSCRIPTION_CF});
+ } catch (Exception e) {
+ throw Throwables.propagate(e);
+ }
+ }
+}
http://git-wip-us.apache.org/repos/asf/james-project/blob/a9fdb1c4/mailbox/hbase/src/test/java/org/apache/james/mailbox/hbase/HBaseMailboxManagerTest.java
----------------------------------------------------------------------
diff --git a/mailbox/hbase/src/test/java/org/apache/james/mailbox/hbase/HBaseMailboxManagerTest.java b/mailbox/hbase/src/test/java/org/apache/james/mailbox/hbase/HBaseMailboxManagerTest.java
index f0d76ce..2bbaac5 100644
--- a/mailbox/hbase/src/test/java/org/apache/james/mailbox/hbase/HBaseMailboxManagerTest.java
+++ b/mailbox/hbase/src/test/java/org/apache/james/mailbox/hbase/HBaseMailboxManagerTest.java
@@ -30,6 +30,8 @@ import static org.apache.james.mailbox.hbase.HBaseNames.SUBSCRIPTIONS;
import static org.apache.james.mailbox.hbase.HBaseNames.SUBSCRIPTIONS_TABLE;
import static org.apache.james.mailbox.hbase.HBaseNames.SUBSCRIPTION_CF;
+import org.apache.james.mailbox.MailboxManager;
+import org.apache.james.mailbox.MailboxManagerTest;
import org.apache.james.mailbox.acl.SimpleGroupMembershipResolver;
import org.apache.james.mailbox.acl.UnionMailboxACLResolver;
import org.apache.james.mailbox.exception.MailboxException;
@@ -40,63 +42,51 @@ import org.apache.james.mailbox.store.Authenticator;
import org.apache.james.mailbox.store.Authorizator;
import org.apache.james.mailbox.store.mail.model.DefaultMessageId;
import org.apache.james.mailbox.store.mail.model.impl.MessageParser;
-import org.junit.runner.RunWith;
-import org.xenei.junit.contract.Contract;
-import org.xenei.junit.contract.ContractImpl;
-import org.xenei.junit.contract.ContractSuite;
-import org.xenei.junit.contract.IProducer;
+import org.junit.After;
+import org.junit.Ignore;
import com.google.common.base.Throwables;
-@RunWith(ContractSuite.class)
-@ContractImpl(HBaseMailboxManager.class)
-public class HBaseMailboxManagerTest {
+@Ignore("https://issues.apache.org/jira/browse/MAILBOX-293")
+public class HBaseMailboxManagerTest extends MailboxManagerTest {
private static final HBaseClusterSingleton CLUSTER = HBaseClusterSingleton.build();
- private IProducer<HBaseMailboxManager> producer = new IProducer<HBaseMailboxManager>() {
+ @Override
+ protected MailboxManager provideMailboxManager() {
+ ensureTables();
- @Override
- public HBaseMailboxManager newInstance() {
- ensureTables();
+ HBaseUidProvider uidProvider = new HBaseUidProvider(CLUSTER.getConf());
+ HBaseModSeqProvider modSeqProvider = new HBaseModSeqProvider(CLUSTER.getConf());
+ MessageId.Factory messageIdFactory = new DefaultMessageId.Factory();
+ HBaseMailboxSessionMapperFactory mapperFactory = new HBaseMailboxSessionMapperFactory(CLUSTER.getConf(),
+ uidProvider, modSeqProvider, messageIdFactory);
- HBaseUidProvider uidProvider = new HBaseUidProvider(CLUSTER.getConf());
- HBaseModSeqProvider modSeqProvider = new HBaseModSeqProvider(CLUSTER.getConf());
- MessageId.Factory messageIdFactory = new DefaultMessageId.Factory();
- HBaseMailboxSessionMapperFactory mapperFactory = new HBaseMailboxSessionMapperFactory(CLUSTER.getConf(),
- uidProvider, modSeqProvider, messageIdFactory);
+ Authenticator noAuthenticator = null;
+ Authorizator noAuthorizator = null;
+ HBaseMailboxManager manager = new HBaseMailboxManager(mapperFactory,
+ noAuthenticator,
+ noAuthorizator,
+ new UnionMailboxACLResolver(),
+ new SimpleGroupMembershipResolver(),
+ new MessageParser(),
+ messageIdFactory
+ );
- Authenticator noAuthenticator = null;
- Authorizator noAuthorizator = null;
- HBaseMailboxManager manager = new HBaseMailboxManager(mapperFactory,
- noAuthenticator,
- noAuthorizator,
- new UnionMailboxACLResolver(),
- new SimpleGroupMembershipResolver(),
- new MessageParser(),
- messageIdFactory
- );
-
- try {
- manager.init();
- } catch (MailboxException e) {
- throw Throwables.propagate(e);
- }
-
- return manager;
+ try {
+ manager.init();
+ } catch (MailboxException e) {
+ throw Throwables.propagate(e);
}
- @Override
- public void cleanUp() {
- CLUSTER.clearTable(MAILBOXES);
- CLUSTER.clearTable(MESSAGES);
- CLUSTER.clearTable(SUBSCRIPTIONS);
- }
- };
+ return manager;
+ }
- @Contract.Inject
- public IProducer<HBaseMailboxManager> getProducer() {
- return producer;
+ @After
+ public void tearDown() {
+ CLUSTER.clearTable(MAILBOXES);
+ CLUSTER.clearTable(MESSAGES);
+ CLUSTER.clearTable(SUBSCRIPTIONS);
}
private void ensureTables() {
http://git-wip-us.apache.org/repos/asf/james-project/blob/a9fdb1c4/mailbox/jcr/pom.xml
----------------------------------------------------------------------
diff --git a/mailbox/jcr/pom.xml b/mailbox/jcr/pom.xml
index 80b14ad..003ff8c 100644
--- a/mailbox/jcr/pom.xml
+++ b/mailbox/jcr/pom.xml
@@ -109,10 +109,5 @@
<artifactId>mockito-core</artifactId>
<scope>test</scope>
</dependency>
- <dependency>
- <groupId>org.xenei</groupId>
- <artifactId>junit-contracts</artifactId>
- <scope>test</scope>
- </dependency>
</dependencies>
</project>
http://git-wip-us.apache.org/repos/asf/james-project/blob/a9fdb1c4/mailbox/jcr/src/test/java/org/apache/james/mailbox/jcr/JCRMailboxManagerProvider.java
----------------------------------------------------------------------
diff --git a/mailbox/jcr/src/test/java/org/apache/james/mailbox/jcr/JCRMailboxManagerProvider.java b/mailbox/jcr/src/test/java/org/apache/james/mailbox/jcr/JCRMailboxManagerProvider.java
new file mode 100644
index 0000000..e043676
--- /dev/null
+++ b/mailbox/jcr/src/test/java/org/apache/james/mailbox/jcr/JCRMailboxManagerProvider.java
@@ -0,0 +1,79 @@
+/****************************************************************
+ * Licensed to the Apache Software Foundation (ASF) under one *
+ * or more contributor license agreements. See the NOTICE file *
+ * distributed with this work for additional information *
+ * regarding copyright ownership. The ASF licenses this file *
+ * to you under the Apache License, Version 2.0 (the *
+ * "License"); you may not use this file except in compliance *
+ * with the License. You may obtain a copy of the License at *
+ * *
+ * http://www.apache.org/licenses/LICENSE-2.0 *
+ * *
+ * Unless required by applicable law or agreed to in writing, *
+ * software distributed under the License is distributed on an *
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY *
+ * KIND, either express or implied. See the License for the *
+ * specific language governing permissions and limitations *
+ * under the License. *
+ ****************************************************************/
+
+package org.apache.james.mailbox.jcr;
+
+import org.apache.jackrabbit.core.RepositoryImpl;
+import org.apache.jackrabbit.core.config.RepositoryConfig;
+import org.apache.james.mailbox.acl.GroupMembershipResolver;
+import org.apache.james.mailbox.acl.MailboxACLResolver;
+import org.apache.james.mailbox.acl.SimpleGroupMembershipResolver;
+import org.apache.james.mailbox.acl.UnionMailboxACLResolver;
+import org.apache.james.mailbox.exception.MailboxException;
+import org.apache.james.mailbox.jcr.mail.JCRModSeqProvider;
+import org.apache.james.mailbox.jcr.mail.JCRUidProvider;
+import org.apache.james.mailbox.store.Authenticator;
+import org.apache.james.mailbox.store.Authorizator;
+import org.apache.james.mailbox.store.JVMMailboxPathLocker;
+import org.apache.james.mailbox.store.mail.model.DefaultMessageId;
+import org.apache.james.mailbox.store.mail.model.impl.MessageParser;
+import org.xml.sax.InputSource;
+
+import com.google.common.base.Throwables;
+
+public class JCRMailboxManagerProvider {
+ public static final String JACKRABBIT_HOME = "target/jackrabbit";
+
+ public static RepositoryImpl createRepository() {
+ RepositoryConfig config;
+ try {
+ config = RepositoryConfig.create(new InputSource(JCRMailboxManagerTest.class.getClassLoader().getResourceAsStream("test-repository.xml")), JACKRABBIT_HOME);
+ return RepositoryImpl.create(config);
+ } catch (Exception e) {
+ throw Throwables.propagate(e);
+ }
+ }
+
+ public static JCRMailboxManager provideMailboxManager(String user, String pass, String workspace, RepositoryImpl repository) {
+ JCRUtils.registerCnd(repository, workspace, user, pass);
+ MailboxSessionJCRRepository sessionRepos = new GlobalMailboxSessionJCRRepository(repository, workspace, user, pass);
+ JVMMailboxPathLocker locker = new JVMMailboxPathLocker();
+ JCRUidProvider uidProvider = new JCRUidProvider(locker, sessionRepos);
+ JCRModSeqProvider modSeqProvider = new JCRModSeqProvider(locker, sessionRepos);
+ JCRMailboxSessionMapperFactory mf = new JCRMailboxSessionMapperFactory(sessionRepos, uidProvider, modSeqProvider);
+
+ MailboxACLResolver aclResolver = new UnionMailboxACLResolver();
+ GroupMembershipResolver groupMembershipResolver = new SimpleGroupMembershipResolver();
+ MessageParser messageParser = new MessageParser();
+
+ Authenticator noAuthenticator = null;
+ Authorizator noAuthorizator = null;
+ JCRMailboxManager manager = new JCRMailboxManager(mf, noAuthenticator, noAuthorizator, locker, aclResolver, groupMembershipResolver,
+ messageParser, new DefaultMessageId.Factory());
+
+ try {
+ manager.init();
+ } catch (MailboxException e) {
+ throw Throwables.propagate(e);
+ }
+
+ return manager;
+ }
+
+}
http://git-wip-us.apache.org/repos/asf/james-project/blob/a9fdb1c4/mailbox/jcr/src/test/java/org/apache/james/mailbox/jcr/JCRMailboxManagerStressTest.java
----------------------------------------------------------------------
diff --git a/mailbox/jcr/src/test/java/org/apache/james/mailbox/jcr/JCRMailboxManagerStressTest.java b/mailbox/jcr/src/test/java/org/apache/james/mailbox/jcr/JCRMailboxManagerStressTest.java
new file mode 100644
index 0000000..cf7ade7
--- /dev/null
+++ b/mailbox/jcr/src/test/java/org/apache/james/mailbox/jcr/JCRMailboxManagerStressTest.java
@@ -0,0 +1,64 @@
+/****************************************************************
+ * Licensed to the Apache Software Foundation (ASF) under one *
+ * or more contributor license agreements. See the NOTICE file *
+ * distributed with this work for additional information *
+ * regarding copyright ownership. The ASF licenses this file *
+ * to you under the Apache License, Version 2.0 (the *
+ * "License"); you may not use this file except in compliance *
+ * with the License. You may obtain a copy of the License at *
+ * *
+ * http://www.apache.org/licenses/LICENSE-2.0 *
+ * *
+ * Unless required by applicable law or agreed to in writing, *
+ * software distributed under the License is distributed on an *
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY *
+ * KIND, either express or implied. See the License for the *
+ * specific language governing permissions and limitations *
+ * under the License. *
+ ****************************************************************/
+
+package org.apache.james.mailbox.jcr;
+
+import static org.apache.james.mailbox.jcr.JCRMailboxManagerProvider.JACKRABBIT_HOME;
+
+import java.io.File;
+import java.io.IOException;
+
+import org.apache.commons.io.FileUtils;
+import org.apache.jackrabbit.core.RepositoryImpl;
+import org.apache.james.mailbox.MailboxManager;
+import org.apache.james.mailbox.MailboxManagerStressTest;
+import org.junit.After;
+
+import com.google.common.base.Optional;
+import com.google.common.base.Throwables;
+
+public class JCRMailboxManagerStressTest extends MailboxManagerStressTest {
+
+ private Optional<RepositoryImpl> repository = Optional.absent();
+
+ @Override
+ protected MailboxManager provideManager() {
+ String user = "user";
+ String pass = "pass";
+ String workspace = null;
+
+ if (!repository.isPresent()) {
+ repository = Optional.of(JCRMailboxManagerProvider.createRepository());
+ }
+
+ return JCRMailboxManagerProvider.provideMailboxManager(user, pass, workspace, repository.get());
+ }
+
+ @After
+ public void tearDown() {
+ if (repository.isPresent()) {
+ repository.get().shutdown();
+ try {
+ FileUtils.forceDelete(new File(JACKRABBIT_HOME));
+ } catch (IOException e) {
+ throw Throwables.propagate(e);
+ }
+ }
+ }
+}
http://git-wip-us.apache.org/repos/asf/james-project/blob/a9fdb1c4/mailbox/jcr/src/test/java/org/apache/james/mailbox/jcr/JCRMailboxManagerTest.java
----------------------------------------------------------------------
diff --git a/mailbox/jcr/src/test/java/org/apache/james/mailbox/jcr/JCRMailboxManagerTest.java b/mailbox/jcr/src/test/java/org/apache/james/mailbox/jcr/JCRMailboxManagerTest.java
index 7fda2a6..64852a7 100644
--- a/mailbox/jcr/src/test/java/org/apache/james/mailbox/jcr/JCRMailboxManagerTest.java
+++ b/mailbox/jcr/src/test/java/org/apache/james/mailbox/jcr/JCRMailboxManagerTest.java
@@ -18,106 +18,47 @@
****************************************************************/
package org.apache.james.mailbox.jcr;
-import static org.junit.Assert.fail;
+import static org.apache.james.mailbox.jcr.JCRMailboxManagerProvider.JACKRABBIT_HOME;
import java.io.File;
import java.io.IOException;
-import javax.jcr.RepositoryException;
-
import org.apache.commons.io.FileUtils;
import org.apache.jackrabbit.core.RepositoryImpl;
-import org.apache.jackrabbit.core.config.ConfigurationException;
-import org.apache.jackrabbit.core.config.RepositoryConfig;
+import org.apache.james.mailbox.MailboxManager;
import org.apache.james.mailbox.MailboxManagerTest;
-import org.apache.james.mailbox.acl.GroupMembershipResolver;
-import org.apache.james.mailbox.acl.MailboxACLResolver;
-import org.apache.james.mailbox.acl.SimpleGroupMembershipResolver;
-import org.apache.james.mailbox.acl.UnionMailboxACLResolver;
-import org.apache.james.mailbox.exception.MailboxException;
-import org.apache.james.mailbox.jcr.mail.JCRModSeqProvider;
-import org.apache.james.mailbox.jcr.mail.JCRUidProvider;
-import org.apache.james.mailbox.store.Authenticator;
-import org.apache.james.mailbox.store.Authorizator;
-import org.apache.james.mailbox.store.JVMMailboxPathLocker;
-import org.apache.james.mailbox.store.mail.model.DefaultMessageId;
-import org.apache.james.mailbox.store.mail.model.impl.MessageParser;
-import org.junit.runner.RunWith;
-import org.xenei.junit.contract.Contract;
-import org.xenei.junit.contract.ContractImpl;
-import org.xenei.junit.contract.ContractSuite;
-import org.xenei.junit.contract.IProducer;
-import org.xml.sax.InputSource;
+import org.junit.After;
+import com.google.common.base.Optional;
import com.google.common.base.Throwables;
-@RunWith(ContractSuite.class)
-@ContractImpl(JCRMailboxManager.class)
-public class JCRMailboxManagerTest extends MailboxManagerTest<JCRMailboxManager> {
-
- private static final String JACKRABBIT_HOME = "target/jackrabbit";
-
- private static RepositoryImpl repository;
-
- private IProducer<JCRMailboxManager> producer = new IProducer<JCRMailboxManager>() {
-
- @Override
- public JCRMailboxManager newInstance() {
- String user = "user";
- String pass = "pass";
- String workspace = null;
- RepositoryConfig config;
- try {
- config = RepositoryConfig.create(new InputSource(JCRMailboxManagerTest.class.getClassLoader().getResourceAsStream("test-repository.xml")), JACKRABBIT_HOME);
- repository = RepositoryImpl.create(config);
- } catch (ConfigurationException e) {
- e.printStackTrace();
- fail();
- } catch (RepositoryException e) {
- e.printStackTrace();
- fail();
- }
-
- // Register imap cnd file
- JCRUtils.registerCnd(repository, workspace, user, pass);
- MailboxSessionJCRRepository sessionRepos = new GlobalMailboxSessionJCRRepository(repository, workspace, user, pass);
- JVMMailboxPathLocker locker = new JVMMailboxPathLocker();
- JCRUidProvider uidProvider = new JCRUidProvider(locker, sessionRepos);
- JCRModSeqProvider modSeqProvider = new JCRModSeqProvider(locker, sessionRepos);
- JCRMailboxSessionMapperFactory mf = new JCRMailboxSessionMapperFactory(sessionRepos, uidProvider, modSeqProvider);
+public class JCRMailboxManagerTest extends MailboxManagerTest {
- MailboxACLResolver aclResolver = new UnionMailboxACLResolver();
- GroupMembershipResolver groupMembershipResolver = new SimpleGroupMembershipResolver();
- MessageParser messageParser = new MessageParser();
+ private Optional<RepositoryImpl> repository = Optional.absent();
- Authenticator noAuthenticator = null;
- Authorizator noAuthorizator = null;
- JCRMailboxManager manager = new JCRMailboxManager(mf, noAuthenticator, noAuthorizator, locker, aclResolver, groupMembershipResolver,
- messageParser, new DefaultMessageId.Factory());
+ @Override
+ protected MailboxManager provideMailboxManager() {
+ String user = "user";
+ String pass = "pass";
+ String workspace = null;
- try {
- manager.init();
- } catch (MailboxException e) {
- throw Throwables.propagate(e);
- }
-
- return manager;
+ if (!repository.isPresent()) {
+ repository = Optional.of(JCRMailboxManagerProvider.createRepository());
}
- @Override
- public void cleanUp() {
- repository.shutdown();
+ return JCRMailboxManagerProvider.provideMailboxManager(user, pass, workspace, repository.get());
+ }
+
+ @After
+ public void tearDown() throws Exception {
+ super.tearDown();
+ if (repository.isPresent()) {
+ repository.get().shutdown();
try {
FileUtils.forceDelete(new File(JACKRABBIT_HOME));
} catch (IOException e) {
throw Throwables.propagate(e);
}
}
- };
-
- @Contract.Inject
- public IProducer<JCRMailboxManager> getProducer() {
- return producer;
}
-
}
http://git-wip-us.apache.org/repos/asf/james-project/blob/a9fdb1c4/mailbox/jpa/pom.xml
----------------------------------------------------------------------
diff --git a/mailbox/jpa/pom.xml b/mailbox/jpa/pom.xml
index 790b5a1..f5b7111 100644
--- a/mailbox/jpa/pom.xml
+++ b/mailbox/jpa/pom.xml
@@ -106,11 +106,6 @@
<artifactId>slf4j-simple</artifactId>
<scope>test</scope>
</dependency>
- <dependency>
- <groupId>org.xenei</groupId>
- <artifactId>junit-contracts</artifactId>
- <scope>test</scope>
- </dependency>
</dependencies>
<build>
<plugins>
http://git-wip-us.apache.org/repos/asf/james-project/blob/a9fdb1c4/mailbox/jpa/src/test/java/org/apache/james/mailbox/jpa/JPAMailboxManagerTest.java
----------------------------------------------------------------------
diff --git a/mailbox/jpa/src/test/java/org/apache/james/mailbox/jpa/JPAMailboxManagerTest.java b/mailbox/jpa/src/test/java/org/apache/james/mailbox/jpa/JPAMailboxManagerTest.java
index 64e7ecb..037dd86 100644
--- a/mailbox/jpa/src/test/java/org/apache/james/mailbox/jpa/JPAMailboxManagerTest.java
+++ b/mailbox/jpa/src/test/java/org/apache/james/mailbox/jpa/JPAMailboxManagerTest.java
@@ -18,86 +18,35 @@
****************************************************************/
package org.apache.james.mailbox.jpa;
-import javax.persistence.EntityManagerFactory;
-
import org.apache.james.backends.jpa.JpaTestCluster;
-import org.apache.james.mailbox.MailboxSession;
-import org.apache.james.mailbox.acl.GroupMembershipResolver;
-import org.apache.james.mailbox.acl.MailboxACLResolver;
-import org.apache.james.mailbox.acl.SimpleGroupMembershipResolver;
-import org.apache.james.mailbox.acl.UnionMailboxACLResolver;
+import org.apache.james.mailbox.MailboxManager;
+import org.apache.james.mailbox.MailboxManagerTest;
import org.apache.james.mailbox.exception.MailboxException;
-import org.apache.james.mailbox.jpa.mail.JPAModSeqProvider;
-import org.apache.james.mailbox.jpa.mail.JPAUidProvider;
import org.apache.james.mailbox.jpa.openjpa.OpenJPAMailboxManager;
-import org.apache.james.mailbox.store.Authenticator;
-import org.apache.james.mailbox.store.Authorizator;
-import org.apache.james.mailbox.store.JVMMailboxPathLocker;
-import org.apache.james.mailbox.store.mail.model.DefaultMessageId;
-import org.apache.james.mailbox.store.mail.model.impl.MessageParser;
-import org.junit.runner.RunWith;
-import org.slf4j.LoggerFactory;
-import org.xenei.junit.contract.Contract;
-import org.xenei.junit.contract.ContractImpl;
-import org.xenei.junit.contract.ContractSuite;
-import org.xenei.junit.contract.IProducer;
+import org.apache.james.mailbox.mock.MockMailboxSession;
+import org.junit.After;
-import com.google.common.base.Throwables;
+import com.google.common.base.Optional;
-@RunWith(ContractSuite.class)
-@ContractImpl(OpenJPAMailboxManager.class)
-public class JPAMailboxManagerTest {
+public class JPAMailboxManagerTest extends MailboxManagerTest {
private static final JpaTestCluster JPA_TEST_CLUSTER = JpaTestCluster.create(JPAMailboxFixture.MAILBOX_PERSISTANCE_CLASSES);
+ private Optional<OpenJPAMailboxManager> openJPAMailboxManager = Optional.absent();
- /**
- * The entity manager factory.
- */
- private static EntityManagerFactory entityManagerFactory;
-
- private IProducer<OpenJPAMailboxManager> producer = new IProducer<OpenJPAMailboxManager>() {
-
- private OpenJPAMailboxManager openJPAMailboxManager;
-
- @Override
- public OpenJPAMailboxManager newInstance() {
- entityManagerFactory = JPA_TEST_CLUSTER.getEntityManagerFactory();
- JVMMailboxPathLocker locker = new JVMMailboxPathLocker();
- JPAMailboxSessionMapperFactory mf = new JPAMailboxSessionMapperFactory(entityManagerFactory, new JPAUidProvider(locker, entityManagerFactory), new JPAModSeqProvider(locker, entityManagerFactory));
-
- MailboxACLResolver aclResolver = new UnionMailboxACLResolver();
- GroupMembershipResolver groupMembershipResolver = new SimpleGroupMembershipResolver();
- MessageParser messageParser = new MessageParser();
-
- Authenticator noAuthenticator = null;
- Authorizator noAuthorizator = null;
- openJPAMailboxManager = new OpenJPAMailboxManager(mf, noAuthenticator, noAuthorizator, aclResolver, groupMembershipResolver, messageParser, new DefaultMessageId.Factory());
-
- try {
- openJPAMailboxManager.init();
- } catch (MailboxException e) {
- throw Throwables.propagate(e);
- }
-
- return openJPAMailboxManager;
+ @Override
+ protected MailboxManager provideMailboxManager() {
+ if (!openJPAMailboxManager.isPresent()) {
+ openJPAMailboxManager = Optional.of(JpaMailboxManagerProvider.provideMailboxManager(JPA_TEST_CLUSTER));
}
+ return openJPAMailboxManager.get();
+ }
- @Override
- public void cleanUp() {
- MailboxSession session = openJPAMailboxManager.createSystemSession("test", LoggerFactory.getLogger("Test"));
- try {
- openJPAMailboxManager.deleteEverything(session);
- } catch (MailboxException e) {
- e.printStackTrace();
- }
- session.close();
- entityManagerFactory.close();
+ @After
+ public void tearDown() throws MailboxException {
+ if (openJPAMailboxManager.isPresent()) {
+ openJPAMailboxManager.get()
+ .deleteEverything(new MockMailboxSession("Any name"));
}
- };
-
- @Contract.Inject
- public IProducer<OpenJPAMailboxManager> getProducer() {
- return producer;
}
}
http://git-wip-us.apache.org/repos/asf/james-project/blob/a9fdb1c4/mailbox/jpa/src/test/java/org/apache/james/mailbox/jpa/JpaMailboxManagerProvider.java
----------------------------------------------------------------------
diff --git a/mailbox/jpa/src/test/java/org/apache/james/mailbox/jpa/JpaMailboxManagerProvider.java b/mailbox/jpa/src/test/java/org/apache/james/mailbox/jpa/JpaMailboxManagerProvider.java
new file mode 100644
index 0000000..1f3c605
--- /dev/null
+++ b/mailbox/jpa/src/test/java/org/apache/james/mailbox/jpa/JpaMailboxManagerProvider.java
@@ -0,0 +1,63 @@
+/****************************************************************
+ * Licensed to the Apache Software Foundation (ASF) under one *
+ * or more contributor license agreements. See the NOTICE file *
+ * distributed with this work for additional information *
+ * regarding copyright ownership. The ASF licenses this file *
+ * to you under the Apache License, Version 2.0 (the *
+ * "License"); you may not use this file except in compliance *
+ * with the License. You may obtain a copy of the License at *
+ * *
+ * http://www.apache.org/licenses/LICENSE-2.0 *
+ * *
+ * Unless required by applicable law or agreed to in writing, *
+ * software distributed under the License is distributed on an *
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY *
+ * KIND, either express or implied. See the License for the *
+ * specific language governing permissions and limitations *
+ * under the License. *
+ ****************************************************************/
+
+package org.apache.james.mailbox.jpa;
+
+import javax.persistence.EntityManagerFactory;
+
+import org.apache.james.backends.jpa.JpaTestCluster;
+import org.apache.james.mailbox.acl.GroupMembershipResolver;
+import org.apache.james.mailbox.acl.MailboxACLResolver;
+import org.apache.james.mailbox.acl.SimpleGroupMembershipResolver;
+import org.apache.james.mailbox.acl.UnionMailboxACLResolver;
+import org.apache.james.mailbox.exception.MailboxException;
+import org.apache.james.mailbox.jpa.mail.JPAModSeqProvider;
+import org.apache.james.mailbox.jpa.mail.JPAUidProvider;
+import org.apache.james.mailbox.jpa.openjpa.OpenJPAMailboxManager;
+import org.apache.james.mailbox.store.Authenticator;
+import org.apache.james.mailbox.store.Authorizator;
+import org.apache.james.mailbox.store.JVMMailboxPathLocker;
+import org.apache.james.mailbox.store.mail.model.DefaultMessageId;
+import org.apache.james.mailbox.store.mail.model.impl.MessageParser;
+
+import com.google.common.base.Throwables;
+
+public class JpaMailboxManagerProvider {
+ public static OpenJPAMailboxManager provideMailboxManager(JpaTestCluster jpaTestCluster) {
+ EntityManagerFactory entityManagerFactory = jpaTestCluster.getEntityManagerFactory();
+ JVMMailboxPathLocker locker = new JVMMailboxPathLocker();
+ JPAMailboxSessionMapperFactory mf = new JPAMailboxSessionMapperFactory(entityManagerFactory, new JPAUidProvider(locker, entityManagerFactory), new JPAModSeqProvider(locker, entityManagerFactory));
+
+ MailboxACLResolver aclResolver = new UnionMailboxACLResolver();
+ GroupMembershipResolver groupMembershipResolver = new SimpleGroupMembershipResolver();
+ MessageParser messageParser = new MessageParser();
+
+ Authenticator noAuthenticator = null;
+ Authorizator noAuthorizator = null;
+ OpenJPAMailboxManager openJPAMailboxManager = new OpenJPAMailboxManager(mf, noAuthenticator, noAuthorizator, aclResolver, groupMembershipResolver, messageParser, new DefaultMessageId.Factory());
+
+ try {
+ openJPAMailboxManager.init();
+ } catch (MailboxException e) {
+ throw Throwables.propagate(e);
+ }
+
+ return openJPAMailboxManager;
+ }
+}
http://git-wip-us.apache.org/repos/asf/james-project/blob/a9fdb1c4/mailbox/jpa/src/test/java/org/apache/james/mailbox/jpa/JpaMailboxManagerStressTest.java
----------------------------------------------------------------------
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
new file mode 100644
index 0000000..8bd3475
--- /dev/null
+++ b/mailbox/jpa/src/test/java/org/apache/james/mailbox/jpa/JpaMailboxManagerStressTest.java
@@ -0,0 +1,52 @@
+/****************************************************************
+ * Licensed to the Apache Software Foundation (ASF) under one *
+ * or more contributor license agreements. See the NOTICE file *
+ * distributed with this work for additional information *
+ * regarding copyright ownership. The ASF licenses this file *
+ * to you under the Apache License, Version 2.0 (the *
+ * "License"); you may not use this file except in compliance *
+ * with the License. You may obtain a copy of the License at *
+ * *
+ * http://www.apache.org/licenses/LICENSE-2.0 *
+ * *
+ * Unless required by applicable law or agreed to in writing, *
+ * software distributed under the License is distributed on an *
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY *
+ * KIND, either express or implied. See the License for the *
+ * specific language governing permissions and limitations *
+ * under the License. *
+ ****************************************************************/
+
+package org.apache.james.mailbox.jpa;
+
+import org.apache.james.backends.jpa.JpaTestCluster;
+import org.apache.james.mailbox.MailboxManager;
+import org.apache.james.mailbox.MailboxManagerStressTest;
+import org.apache.james.mailbox.exception.MailboxException;
+import org.apache.james.mailbox.jpa.openjpa.OpenJPAMailboxManager;
+import org.apache.james.mailbox.mock.MockMailboxSession;
+import org.junit.After;
+
+import com.google.common.base.Optional;
+
+public class JpaMailboxManagerStressTest extends MailboxManagerStressTest {
+
+ private static final JpaTestCluster JPA_TEST_CLUSTER = JpaTestCluster.create(JPAMailboxFixture.MAILBOX_PERSISTANCE_CLASSES);
+ private Optional<OpenJPAMailboxManager> openJPAMailboxManager = Optional.absent();
+
+ @Override
+ protected MailboxManager provideManager() {
+ if (!openJPAMailboxManager.isPresent()) {
+ openJPAMailboxManager = Optional.of(JpaMailboxManagerProvider.provideMailboxManager(JPA_TEST_CLUSTER));
+ }
+ return openJPAMailboxManager.get();
+ }
+
+ @After
+ public void tearDown() throws MailboxException {
+ if (openJPAMailboxManager.isPresent()) {
+ openJPAMailboxManager.get()
+ .deleteEverything(new MockMailboxSession("Any name"));
+ }
+ }
+}
http://git-wip-us.apache.org/repos/asf/james-project/blob/a9fdb1c4/mailbox/maildir/pom.xml
----------------------------------------------------------------------
diff --git a/mailbox/maildir/pom.xml b/mailbox/maildir/pom.xml
index 396bee3..18ff696 100644
--- a/mailbox/maildir/pom.xml
+++ b/mailbox/maildir/pom.xml
@@ -97,10 +97,5 @@
<artifactId>mockito-core</artifactId>
<scope>test</scope>
</dependency>
- <dependency>
- <groupId>org.xenei</groupId>
- <artifactId>junit-contracts</artifactId>
- <scope>test</scope>
- </dependency>
</dependencies>
</project>
http://git-wip-us.apache.org/repos/asf/james-project/blob/a9fdb1c4/mailbox/maildir/src/test/java/org/apache/james/mailbox/maildir/DomainUserMaildirMailboxManagerStressTest.java
----------------------------------------------------------------------
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
new file mode 100644
index 0000000..58d8fe9
--- /dev/null
+++ b/mailbox/maildir/src/test/java/org/apache/james/mailbox/maildir/DomainUserMaildirMailboxManagerStressTest.java
@@ -0,0 +1,43 @@
+/****************************************************************
+ * Licensed to the Apache Software Foundation (ASF) under one *
+ * or more contributor license agreements. See the NOTICE file *
+ * distributed with this work for additional information *
+ * regarding copyright ownership. The ASF licenses this file *
+ * to you under the Apache License, Version 2.0 (the *
+ * "License"); you may not use this file except in compliance *
+ * with the License. You may obtain a copy of the License at *
+ * *
+ * http://www.apache.org/licenses/LICENSE-2.0 *
+ * *
+ * Unless required by applicable law or agreed to in writing, *
+ * software distributed under the License is distributed on an *
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY *
+ * KIND, either express or implied. See the License for the *
+ * specific language governing permissions and limitations *
+ * under the License. *
+ ****************************************************************/
+
+package org.apache.james.mailbox.maildir;
+
+import org.apache.james.mailbox.MailboxManager;
+import org.apache.james.mailbox.MailboxManagerStressTest;
+import org.junit.Rule;
+import org.junit.rules.TemporaryFolder;
+
+import com.google.common.base.Throwables;
+
+public class DomainUserMaildirMailboxManagerStressTest extends MailboxManagerStressTest {
+ @Rule
+ public TemporaryFolder tmpFolder = new TemporaryFolder();
+
+ @Override
+ protected MailboxManager provideManager() {
+ try {
+ return MaildirMailboxManagerProvider.createMailboxManager("/%domain/%user", tmpFolder);
+ } catch (Exception e) {
+ throw Throwables.propagate(e);
+ }
+ }
+
+
+}
http://git-wip-us.apache.org/repos/asf/james-project/blob/a9fdb1c4/mailbox/maildir/src/test/java/org/apache/james/mailbox/maildir/DomainUserMaildirMailboxManagerTest.java
----------------------------------------------------------------------
diff --git a/mailbox/maildir/src/test/java/org/apache/james/mailbox/maildir/DomainUserMaildirMailboxManagerTest.java b/mailbox/maildir/src/test/java/org/apache/james/mailbox/maildir/DomainUserMaildirMailboxManagerTest.java
new file mode 100644
index 0000000..ab27808
--- /dev/null
+++ b/mailbox/maildir/src/test/java/org/apache/james/mailbox/maildir/DomainUserMaildirMailboxManagerTest.java
@@ -0,0 +1,51 @@
+/****************************************************************
+ * Licensed to the Apache Software Foundation (ASF) under one *
+ * or more contributor license agreements. See the NOTICE file *
+ * distributed with this work for additional information *
+ * regarding copyright ownership. The ASF licenses this file *
+ * to you under the Apache License, Version 2.0 (the *
+ * "License"); you may not use this file except in compliance *
+ * with the License. You may obtain a copy of the License at *
+ * *
+ * http://www.apache.org/licenses/LICENSE-2.0 *
+ * *
+ * Unless required by applicable law or agreed to in writing, *
+ * software distributed under the License is distributed on an *
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY *
+ * KIND, either express or implied. See the License for the *
+ * specific language governing permissions and limitations *
+ * under the License. *
+ ****************************************************************/
+package org.apache.james.mailbox.maildir;
+
+import java.io.UnsupportedEncodingException;
+
+import org.apache.james.mailbox.MailboxManager;
+import org.apache.james.mailbox.MailboxManagerTest;
+import org.apache.james.mailbox.exception.MailboxException;
+import org.junit.Ignore;
+import org.junit.Rule;
+import org.junit.rules.TemporaryFolder;
+
+import com.google.common.base.Throwables;
+
+public class DomainUserMaildirMailboxManagerTest extends MailboxManagerTest {
+
+ @Rule
+ public TemporaryFolder tmpFolder = new TemporaryFolder();
+
+ @Override
+ protected MailboxManager provideMailboxManager() {
+ try {
+ return MaildirMailboxManagerProvider.createMailboxManager("/%domain/%user", tmpFolder);
+ } catch (Exception e) {
+ throw Throwables.propagate(e);
+ }
+ }
+
+ @Ignore("https://issues.apache.org/jira/browse/MAILBOX-292")
+ @Override
+ public void createMailboxShouldReturnRightId() throws MailboxException, UnsupportedEncodingException {
+
+ }
+}
---------------------------------------------------------------------
To unsubscribe, e-mail: server-dev-unsubscribe@james.apache.org
For additional commands, e-mail: server-dev-help@james.apache.org