MAILBOX-335 Cassandra specific test for chunking
Project: http://git-wip-us.apache.org/repos/asf/james-project/repo Commit: http://git-wip-us.apache.org/repos/asf/james-project/commit/e9cc5022 Tree: http://git-wip-us.apache.org/repos/asf/james-project/tree/e9cc5022 Diff: http://git-wip-us.apache.org/repos/asf/james-project/diff/e9cc5022 Branch: refs/heads/master Commit: e9cc5022ba233aca9b1255e160160cbeca050a40 Parents: 6052de6 Author: benwa <[email protected]> Authored: Tue May 22 09:45:51 2018 +0700 Committer: Matthieu Baechler <[email protected]> Committed: Tue May 22 10:04:13 2018 +0200 ---------------------------------------------------------------------- ...estCassandraMailboxSessionMapperFactory.java | 27 ++++++++----- .../mail/CassandraMessageIdMapperTest.java | 40 +++++++++++++++++++- .../store/mail/model/MessageIdMapperTest.java | 16 ++++---- 3 files changed, 65 insertions(+), 18 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/james-project/blob/e9cc5022/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/TestCassandraMailboxSessionMapperFactory.java ---------------------------------------------------------------------- diff --git a/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/TestCassandraMailboxSessionMapperFactory.java b/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/TestCassandraMailboxSessionMapperFactory.java index 3afdf36..ec7ac05 100644 --- a/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/TestCassandraMailboxSessionMapperFactory.java +++ b/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/TestCassandraMailboxSessionMapperFactory.java @@ -47,15 +47,24 @@ import org.apache.james.mailbox.cassandra.mail.CassandraUserMailboxRightsDAO; import com.datastax.driver.core.Session; public class TestCassandraMailboxSessionMapperFactory { + public static CassandraMailboxSessionMapperFactory forTests(Session session, CassandraTypesProvider typesProvider, CassandraMessageId.Factory factory) { + return forTests(session, typesProvider, factory, CassandraConfiguration.DEFAULT_CONFIGURATION); + } + + public static CassandraMailboxSessionMapperFactory forTests(Session session, CassandraTypesProvider typesProvider, + CassandraMessageId.Factory factory, CassandraConfiguration cassandraConfiguration) { + + CassandraUtils utils = new CassandraUtils(cassandraConfiguration); CassandraBlobsDAO cassandraBlobsDAO = new CassandraBlobsDAO(session); CassandraBlobId.Factory blobIdFactory = new CassandraBlobId.Factory(); + return new CassandraMailboxSessionMapperFactory( new CassandraUidProvider(session), new CassandraModSeqProvider(session), session, - new CassandraMessageDAO(session, typesProvider, cassandraBlobsDAO, blobIdFactory, CassandraUtils.WITH_DEFAULT_CONFIGURATION, factory), + new CassandraMessageDAO(session, typesProvider, cassandraBlobsDAO, blobIdFactory, utils, factory), new CassandraMessageIdDAO(session, factory), new CassandraMessageIdToImapUidDAO(session, factory), new CassandraMailboxCounterDAO(session), @@ -64,17 +73,17 @@ public class TestCassandraMailboxSessionMapperFactory { new CassandraMailboxPathDAO(session, typesProvider), new CassandraFirstUnseenDAO(session), new CassandraApplicableFlagDAO(session), - new CassandraAttachmentDAO(session, CassandraUtils.WITH_DEFAULT_CONFIGURATION, CassandraConfiguration.DEFAULT_CONFIGURATION), + new CassandraAttachmentDAO(session, utils, cassandraConfiguration), new CassandraAttachmentDAOV2(blobIdFactory, session), new CassandraDeletedMessageDAO(session), - cassandraBlobsDAO, new CassandraAttachmentMessageIdDAO(session, factory, CassandraUtils.WITH_DEFAULT_CONFIGURATION), - new CassandraAttachmentOwnerDAO(session, CassandraUtils.WITH_DEFAULT_CONFIGURATION), + cassandraBlobsDAO, new CassandraAttachmentMessageIdDAO(session, factory, utils), + new CassandraAttachmentOwnerDAO(session, utils), new CassandraACLMapper(session, - new CassandraUserMailboxRightsDAO(session, CassandraUtils.WITH_DEFAULT_CONFIGURATION), - CassandraConfiguration.DEFAULT_CONFIGURATION), - new CassandraUserMailboxRightsDAO(session, CassandraUtils.WITH_DEFAULT_CONFIGURATION), - CassandraUtils.WITH_DEFAULT_CONFIGURATION, - CassandraConfiguration.DEFAULT_CONFIGURATION); + new CassandraUserMailboxRightsDAO(session, utils), + cassandraConfiguration), + new CassandraUserMailboxRightsDAO(session, utils), + utils, + cassandraConfiguration); } } http://git-wip-us.apache.org/repos/asf/james-project/blob/e9cc5022/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraMessageIdMapperTest.java ---------------------------------------------------------------------- diff --git a/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraMessageIdMapperTest.java b/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraMessageIdMapperTest.java index bc7f9b4..d6d0f65 100644 --- a/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraMessageIdMapperTest.java +++ b/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraMessageIdMapperTest.java @@ -19,10 +19,18 @@ package org.apache.james.mailbox.cassandra.mail; +import static org.assertj.core.api.Assertions.assertThat; + +import java.util.List; + import org.apache.james.backends.cassandra.CassandraCluster; import org.apache.james.backends.cassandra.DockerCassandraRule; +import org.apache.james.backends.cassandra.init.CassandraConfiguration; import org.apache.james.backends.cassandra.init.CassandraModuleComposite; import org.apache.james.blob.cassandra.CassandraBlobModule; +import org.apache.james.mailbox.cassandra.CassandraMailboxSessionMapperFactory; +import org.apache.james.mailbox.cassandra.TestCassandraMailboxSessionMapperFactory; +import org.apache.james.mailbox.cassandra.ids.CassandraMessageId; import org.apache.james.mailbox.cassandra.modules.CassandraAclModule; import org.apache.james.mailbox.cassandra.modules.CassandraAnnotationModule; import org.apache.james.mailbox.cassandra.modules.CassandraApplicableFlagsModule; @@ -36,13 +44,20 @@ import org.apache.james.mailbox.cassandra.modules.CassandraMessageModule; import org.apache.james.mailbox.cassandra.modules.CassandraModSeqModule; import org.apache.james.mailbox.cassandra.modules.CassandraUidModule; import org.apache.james.mailbox.exception.MailboxException; +import org.apache.james.mailbox.mock.MockMailboxSession; +import org.apache.james.mailbox.store.mail.MessageMapper; +import org.apache.james.mailbox.store.mail.model.MailboxMessage; import org.apache.james.mailbox.store.mail.model.MessageIdMapperTest; import org.junit.After; import org.junit.Before; import org.junit.ClassRule; +import org.junit.Test; + +import com.google.common.collect.ImmutableList; public class CassandraMessageIdMapperTest extends MessageIdMapperTest { - + + public static final MockMailboxSession MAILBOX_SESSION = new MockMailboxSession("benwa"); @ClassRule public static DockerCassandraRule cassandraServer = new DockerCassandraRule(); private CassandraCluster cassandra; @@ -77,4 +92,27 @@ public class CassandraMessageIdMapperTest extends MessageIdMapperTest { protected CassandraMapperProvider provideMapper() { return new CassandraMapperProvider(cassandra); } + + @Test + public void findShouldReturnCorrectElementsWhenChunking() throws Exception { + CassandraMessageId.Factory messageIdFactory = new CassandraMessageId.Factory(); + CassandraMailboxSessionMapperFactory mapperFactory = TestCassandraMailboxSessionMapperFactory.forTests( + cassandra.getConf(), cassandra.getTypesProvider(), messageIdFactory, + CassandraConfiguration.builder() + .messageReadChunkSize(3) + .build()); + + saveMessages(); + + List<MailboxMessage> messages = mapperFactory.getMessageIdMapper(MAILBOX_SESSION) + .find( + ImmutableList.of(message1.getMessageId(), + message2.getMessageId(), + message3.getMessageId(), + message4.getMessageId()), + MessageMapper.FetchType.Metadata); + + assertThat(messages) + .containsOnly(message1, message2, message3, message4); + } } http://git-wip-us.apache.org/repos/asf/james-project/blob/e9cc5022/mailbox/store/src/test/java/org/apache/james/mailbox/store/mail/model/MessageIdMapperTest.java ---------------------------------------------------------------------- diff --git a/mailbox/store/src/test/java/org/apache/james/mailbox/store/mail/model/MessageIdMapperTest.java b/mailbox/store/src/test/java/org/apache/james/mailbox/store/mail/model/MessageIdMapperTest.java index 676e1bb..054c44a 100644 --- a/mailbox/store/src/test/java/org/apache/james/mailbox/store/mail/model/MessageIdMapperTest.java +++ b/mailbox/store/src/test/java/org/apache/james/mailbox/store/mail/model/MessageIdMapperTest.java @@ -61,19 +61,19 @@ public abstract class MessageIdMapperTest { private static final char DELIMITER = '.'; private static final int BODY_START = 16; - private static final long UID_VALIDITY = 42; + protected static final long UID_VALIDITY = 42; private MessageMapper messageMapper; private MailboxMapper mailboxMapper; private MessageIdMapper sut; - private SimpleMailbox benwaInboxMailbox; - private SimpleMailbox benwaWorkMailbox; + protected SimpleMailbox benwaInboxMailbox; + protected SimpleMailbox benwaWorkMailbox; - private SimpleMailboxMessage message1; - private SimpleMailboxMessage message2; - private SimpleMailboxMessage message3; - private SimpleMailboxMessage message4; + protected SimpleMailboxMessage message1; + protected SimpleMailboxMessage message2; + protected SimpleMailboxMessage message3; + protected SimpleMailboxMessage message4; @Rule public ExpectedException expected = ExpectedException.none(); @@ -887,7 +887,7 @@ public abstract class MessageIdMapperTest { return mailbox; } - private void saveMessages() throws MailboxException { + protected void saveMessages() throws MailboxException { addMessageAndSetModSeq(benwaInboxMailbox, message1); addMessageAndSetModSeq(benwaInboxMailbox, message2); addMessageAndSetModSeq(benwaInboxMailbox, message3); --------------------------------------------------------------------- To unsubscribe, e-mail: [email protected] For additional commands, e-mail: [email protected]
