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 <btell...@linagora.com> Authored: Wed Apr 19 15:39:59 2017 +0700 Committer: Antoine Duprat <adup...@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-unsubscr...@james.apache.org For additional commands, e-mail: server-dev-h...@james.apache.org