james-server-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From btell...@apache.org
Subject [3/6] james-project git commit: JAMES-2103 Add failing tests for StoreMessageIdManager Quota management
Date Tue, 08 Aug 2017 03:42:17 GMT
JAMES-2103 Add failing tests for StoreMessageIdManager Quota management


Project: http://git-wip-us.apache.org/repos/asf/james-project/repo
Commit: http://git-wip-us.apache.org/repos/asf/james-project/commit/69cef15f
Tree: http://git-wip-us.apache.org/repos/asf/james-project/tree/69cef15f
Diff: http://git-wip-us.apache.org/repos/asf/james-project/diff/69cef15f

Branch: refs/heads/master
Commit: 69cef15f708a7caf6dde96b1347e2367ab9d2de4
Parents: 56beed2
Author: benwa <btellier@linagora.com>
Authored: Fri Jul 28 11:23:30 2017 +0700
Committer: benwa <btellier@linagora.com>
Committed: Tue Aug 8 10:39:51 2017 +0700

----------------------------------------------------------------------
 .../CassandraMessageIdManagerQuotaTest.java     |  62 +++++++++
 .../CassandraMessageIdManagerTestSystem.java    |  40 +++++-
 .../cassandra/CassandraTestSystemFixture.java   |  53 +++++--
 .../InMemoryMessageIdManagerTestSystem.java     |   8 +-
 .../AbstractMessageIdManagerQuotaTest.java      | 137 +++++++++++++++++++
 .../store/MessageIdManagerTestSystem.java       |   2 +
 .../store/StoreMessageIdManagerTestSystem.java  |   5 +
 7 files changed, 288 insertions(+), 19 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/james-project/blob/69cef15f/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/CassandraMessageIdManagerQuotaTest.java
----------------------------------------------------------------------
diff --git a/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/CassandraMessageIdManagerQuotaTest.java
b/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/CassandraMessageIdManagerQuotaTest.java
new file mode 100644
index 0000000..423af97
--- /dev/null
+++ b/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/CassandraMessageIdManagerQuotaTest.java
@@ -0,0 +1,62 @@
+/****************************************************************
+ * 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.mailbox.quota.CurrentQuotaManager;
+import org.apache.james.mailbox.quota.MaxQuotaManager;
+import org.apache.james.mailbox.quota.QuotaManager;
+import org.apache.james.mailbox.store.AbstractMessageIdManagerQuotaTest;
+import org.apache.james.mailbox.store.MessageIdManagerTestSystem;
+import org.apache.james.mailbox.store.quota.StoreQuotaManager;
+import org.junit.AfterClass;
+import org.junit.BeforeClass;
+
+public class CassandraMessageIdManagerQuotaTest extends AbstractMessageIdManagerQuotaTest
{
+
+    @BeforeClass
+    public static void init() {
+        CassandraMessageIdManagerTestSystem.initWithQuota();
+    }
+
+    @AfterClass
+    public static void close() {
+        CassandraMessageIdManagerTestSystem.stop();
+    }
+
+    @Override
+    protected MessageIdManagerTestSystem createTestSystem(QuotaManager quotaManager, CurrentQuotaManager
currentQuotaManager) throws Exception {
+        return CassandraMessageIdManagerTestSystem.createTestingDataWithQuota(quotaManager,
currentQuotaManager);
+    }
+
+    @Override
+    protected MaxQuotaManager createMaxQuotaManager() {
+        return CassandraTestSystemFixture.createMaxQuotaManager();
+    }
+
+    @Override
+    protected QuotaManager createQuotaManager(MaxQuotaManager maxQuotaManager, CurrentQuotaManager
currentQuotaManager) {
+        return new StoreQuotaManager(currentQuotaManager, maxQuotaManager);
+    }
+
+    @Override
+    protected CurrentQuotaManager createCurrentQuotaManager() {
+        return CassandraTestSystemFixture.createCurrentQuotaManager();
+    }
+}

http://git-wip-us.apache.org/repos/asf/james-project/blob/69cef15f/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/CassandraMessageIdManagerTestSystem.java
----------------------------------------------------------------------
diff --git a/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/CassandraMessageIdManagerTestSystem.java
b/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/CassandraMessageIdManagerTestSystem.java
index 73c2b5d..2d4c6c1 100644
--- a/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/CassandraMessageIdManagerTestSystem.java
+++ b/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/CassandraMessageIdManagerTestSystem.java
@@ -32,19 +32,28 @@ import org.apache.james.mailbox.exception.MailboxException;
 import org.apache.james.mailbox.model.MailboxId;
 import org.apache.james.mailbox.model.MailboxPath;
 import org.apache.james.mailbox.model.MessageId;
+import org.apache.james.mailbox.quota.CurrentQuotaManager;
 import org.apache.james.mailbox.quota.QuotaManager;
 import org.apache.james.mailbox.store.MessageIdManagerTestSystem;
+import org.apache.james.mailbox.store.SimpleMessageMetaData;
 import org.apache.james.mailbox.store.event.MailboxEventDispatcher;
 import org.apache.james.mailbox.store.mail.model.Mailbox;
 import org.apache.james.mailbox.store.mail.model.MailboxMessage;
 import org.apache.james.mailbox.store.mail.model.impl.PropertyBuilder;
 import org.apache.james.mailbox.store.mail.model.impl.SimpleMailboxMessage;
+import org.apache.james.mailbox.store.quota.ListeningCurrentQuotaUpdater;
+import org.apache.james.mailbox.store.quota.StoreCurrentQuotaManager;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 
 import com.google.common.base.Charsets;
 import com.google.common.base.Throwables;
 
 public class CassandraMessageIdManagerTestSystem extends MessageIdManagerTestSystem {
 
+    private static final byte[] MESSAGE_CONTENT = "subject: any\n\nbody".getBytes(Charsets.UTF_8);
+    private static final Logger LOGGER = LoggerFactory.getLogger(CassandraMessageIdManagerTestSystem.class);
+
     public static MessageIdManagerTestSystem createTestingData(QuotaManager quotaManager,
MailboxEventDispatcher dispatcher) throws Exception {
         CassandraMailboxSessionMapperFactory mapperFactory = CassandraTestSystemFixture.createMapperFactory();
 
@@ -54,6 +63,20 @@ public class CassandraMessageIdManagerTestSystem extends MessageIdManagerTestSys
             CassandraTestSystemFixture.createMailboxManager(mapperFactory));
     }
 
+    public static MessageIdManagerTestSystem createTestingDataWithQuota(QuotaManager quotaManager,
CurrentQuotaManager currentQuotaManager) throws Exception {
+        CassandraMailboxSessionMapperFactory mapperFactory = CassandraTestSystemFixture.createMapperFactory();
+
+        CassandraMailboxManager mailboxManager = CassandraTestSystemFixture.createMailboxManager(mapperFactory);
+        ListeningCurrentQuotaUpdater listeningCurrentQuotaUpdater = new ListeningCurrentQuotaUpdater(
+            (StoreCurrentQuotaManager) currentQuotaManager,
+            mailboxManager.getQuotaRootResolver());
+        mailboxManager.addGlobalListener(listeningCurrentQuotaUpdater, mailboxManager.createSystemSession("System",
LOGGER));
+        return new CassandraMessageIdManagerTestSystem(CassandraTestSystemFixture.createMessageIdManager(mapperFactory,
quotaManager, mailboxManager.getEventDispatcher()),
+            new CassandraMessageId.Factory(),
+            mapperFactory,
+            mailboxManager);
+    }
+
     private final CassandraMessageId.Factory messageIdFactory;
     private final CassandraMailboxSessionMapperFactory mapperFactory;
     private final CassandraMailboxManager cassandraMailboxManager;
@@ -76,7 +99,9 @@ public class CassandraMessageIdManagerTestSystem extends MessageIdManagerTestSys
         try {
             CassandraMessageId messageId = messageIdFactory.generate();
             Mailbox mailbox = mapperFactory.getMailboxMapper(mailboxSession).findMailboxById(mailboxId);
-            mapperFactory.getMessageMapper(mailboxSession).add(mailbox, createMessage(mailboxId,
flags, messageId, uid));
+            MailboxMessage message = createMessage(mailboxId, flags, messageId, uid);
+            mapperFactory.getMessageMapper(mailboxSession).add(mailbox, message);
+            cassandraMailboxManager.getEventDispatcher().added(mailboxSession, new SimpleMessageMetaData(message),
mailbox);
             return messageId;
         } catch (Exception e) {
             throw Throwables.propagate(e);
@@ -104,8 +129,8 @@ public class CassandraMessageIdManagerTestSystem extends MessageIdManagerTestSys
     }
 
     private static MailboxMessage createMessage(MailboxId mailboxId, Flags flags, MessageId
messageId, MessageUid uid) {
-        MailboxMessage mailboxMessage = new SimpleMailboxMessage(messageId, new Date(), 1596,
1256,
-            new SharedByteArrayInputStream("subject: any\n\nbody".getBytes(Charsets.UTF_8)),
flags, new PropertyBuilder(), mailboxId);
+        MailboxMessage mailboxMessage = new SimpleMailboxMessage(messageId, new Date(), MESSAGE_CONTENT.length,
1256,
+            new SharedByteArrayInputStream(MESSAGE_CONTENT), flags, new PropertyBuilder(),
mailboxId);
         mailboxMessage.setModSeq(CassandraTestSystemFixture.MOD_SEQ);
         mailboxMessage.setUid(uid);
         return mailboxMessage;
@@ -115,9 +140,16 @@ public class CassandraMessageIdManagerTestSystem extends MessageIdManagerTestSys
         CassandraTestSystemFixture.init();
     }
 
+    public static void initWithQuota() {
+        CassandraTestSystemFixture.initWithQuota();
+    }
+
     public static void stop() {
         CassandraTestSystemFixture.stop();
     }
 
-
+    @Override
+    public int getConstantMessageSize() {
+        return MESSAGE_CONTENT.length;
+    }
 }
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/james-project/blob/69cef15f/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/CassandraTestSystemFixture.java
----------------------------------------------------------------------
diff --git a/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/CassandraTestSystemFixture.java
b/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/CassandraTestSystemFixture.java
index de5c0ad..8e1a5bd 100644
--- a/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/CassandraTestSystemFixture.java
+++ b/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/CassandraTestSystemFixture.java
@@ -50,7 +50,12 @@ 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.CassandraQuotaModule;
 import org.apache.james.mailbox.cassandra.modules.CassandraUidModule;
+import org.apache.james.mailbox.cassandra.quota.CassandraCurrentQuotaManager;
+import org.apache.james.mailbox.cassandra.quota.CassandraPerUserMaxQuotaManager;
+import org.apache.james.mailbox.quota.CurrentQuotaManager;
+import org.apache.james.mailbox.quota.MaxQuotaManager;
 import org.apache.james.mailbox.quota.QuotaManager;
 import org.apache.james.mailbox.store.Authenticator;
 import org.apache.james.mailbox.store.Authorizator;
@@ -59,10 +64,25 @@ import org.apache.james.mailbox.store.StoreMessageIdManager;
 import org.apache.james.mailbox.store.event.MailboxEventDispatcher;
 import org.apache.james.mailbox.store.mail.model.impl.MessageParser;
 import org.apache.james.mailbox.store.quota.DefaultQuotaRootResolver;
+import org.apache.james.mailbox.store.quota.StoreQuotaManager;
 
 public class CassandraTestSystemFixture {
     
     public static final int MOD_SEQ = 452;
+    public static final CassandraModuleComposite BASE_MAILBOX_MODULES = new CassandraModuleComposite(
+        new CassandraAclModule(),
+        new CassandraMailboxModule(),
+        new CassandraMessageModule(),
+        new CassandraBlobModule(),
+        new CassandraMailboxCounterModule(),
+        new CassandraMailboxRecentsModule(),
+        new CassandraFirstUnseenModule(),
+        new CassandraDeletedMessageModule(),
+        new CassandraUidModule(),
+        new CassandraModSeqModule(),
+        new CassandraAttachmentModule(),
+        new CassandraAnnotationModule(),
+        new CassandraApplicableFlagsModule());
     private static CassandraCluster cassandra;
     
     public static CassandraMailboxSessionMapperFactory createMapperFactory() {
@@ -115,26 +135,31 @@ public class CassandraTestSystemFixture {
             new DefaultQuotaRootResolver(mapperFactory));
     }
 
+    public static MaxQuotaManager createMaxQuotaManager() {
+        return new CassandraPerUserMaxQuotaManager(cassandra.getConf());
+    }
+
+    public static CurrentQuotaManager createCurrentQuotaManager() {
+        return new CassandraCurrentQuotaManager(cassandra.getConf());
+    }
+
+    public static QuotaManager createQuotaManager(MaxQuotaManager maxQuotaManager) {
+        return new StoreQuotaManager(new CassandraCurrentQuotaManager(cassandra.getConf()),
maxQuotaManager);
+    }
+
     public static void clean() {
         cassandra.clearAllTables();
     }
 
     public static void init() {
+        cassandra = CassandraCluster.create(BASE_MAILBOX_MODULES);
+    }
+
+    public static void initWithQuota() {
         cassandra = CassandraCluster.create(
-                new CassandraModuleComposite(
-                    new CassandraAclModule(),
-                    new CassandraMailboxModule(),
-                    new CassandraMessageModule(),
-                    new CassandraBlobModule(),
-                    new CassandraMailboxCounterModule(),
-                    new CassandraMailboxRecentsModule(),
-                    new CassandraFirstUnseenModule(),
-                    new CassandraDeletedMessageModule(),
-                    new CassandraUidModule(),
-                    new CassandraModSeqModule(),
-                    new CassandraAttachmentModule(),
-                    new CassandraAnnotationModule(),
-                    new CassandraApplicableFlagsModule()));
+            new CassandraModuleComposite(
+                BASE_MAILBOX_MODULES,
+                new CassandraQuotaModule()));
     }
 
     public static void stop() {

http://git-wip-us.apache.org/repos/asf/james-project/blob/69cef15f/mailbox/memory/src/test/java/org/apache/james/mailbox/inmemory/InMemoryMessageIdManagerTestSystem.java
----------------------------------------------------------------------
diff --git a/mailbox/memory/src/test/java/org/apache/james/mailbox/inmemory/InMemoryMessageIdManagerTestSystem.java
b/mailbox/memory/src/test/java/org/apache/james/mailbox/inmemory/InMemoryMessageIdManagerTestSystem.java
index 649f6cb..1bd6068 100644
--- a/mailbox/memory/src/test/java/org/apache/james/mailbox/inmemory/InMemoryMessageIdManagerTestSystem.java
+++ b/mailbox/memory/src/test/java/org/apache/james/mailbox/inmemory/InMemoryMessageIdManagerTestSystem.java
@@ -37,6 +37,7 @@ import org.apache.james.mailbox.store.MessageIdManagerTestSystem;
 import org.apache.james.mailbox.store.mail.model.Mailbox;
 import org.apache.james.mailbox.store.mail.model.impl.SimpleMailbox;
 
+import com.google.common.base.Charsets;
 import com.google.common.base.Optional;
 import com.google.common.base.Predicate;
 import com.google.common.base.Throwables;
@@ -47,6 +48,7 @@ public class InMemoryMessageIdManagerTestSystem extends MessageIdManagerTestSyst
     private static final MessageId FIRST_MESSAGE_ID = InMemoryMessageId.of(1);
     private static final long ONE_HUNDRED = 100;
     private static final int UID_VALIDITY = 1024;
+    public static final byte[] CONTENT = "Subject: test\r\n\r\ntestmail".getBytes(Charsets.UTF_8);
 
     private final MailboxManager mailboxManager;
     private Optional<MessageId> lastMessageIdUsed;
@@ -68,7 +70,7 @@ public class InMemoryMessageIdManagerTestSystem extends MessageIdManagerTestSyst
     public MessageId persist(MailboxId mailboxId, MessageUid uid, Flags flags, MailboxSession
session) {
         try {
             MessageManager messageManager = mailboxManager.getMailbox(mailboxId, session);
-            MessageId messageId = messageManager.appendMessage(new ByteArrayInputStream("Subject:
test\r\n\r\ntestmail".getBytes()), new Date(), session, false, flags)
+            MessageId messageId = messageManager.appendMessage(new ByteArrayInputStream(CONTENT),
new Date(), session, false, flags)
                     .getMessageId();
             lastMessageIdUsed = Optional.of(messageId);
             return messageId;
@@ -112,4 +114,8 @@ public class InMemoryMessageIdManagerTestSystem extends MessageIdManagerTestSyst
 
     }
 
+    @Override
+    public int getConstantMessageSize() {
+        return CONTENT.length;
+    }
 }

http://git-wip-us.apache.org/repos/asf/james-project/blob/69cef15f/mailbox/store/src/test/java/org/apache/james/mailbox/store/AbstractMessageIdManagerQuotaTest.java
----------------------------------------------------------------------
diff --git a/mailbox/store/src/test/java/org/apache/james/mailbox/store/AbstractMessageIdManagerQuotaTest.java
b/mailbox/store/src/test/java/org/apache/james/mailbox/store/AbstractMessageIdManagerQuotaTest.java
new file mode 100644
index 0000000..bfc59d6
--- /dev/null
+++ b/mailbox/store/src/test/java/org/apache/james/mailbox/store/AbstractMessageIdManagerQuotaTest.java
@@ -0,0 +1,137 @@
+/****************************************************************
+ * 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.store;
+
+import javax.mail.Flags;
+
+import org.apache.james.mailbox.MailboxSession;
+import org.apache.james.mailbox.MessageIdManager;
+import org.apache.james.mailbox.MessageUid;
+import org.apache.james.mailbox.exception.OverQuotaException;
+import org.apache.james.mailbox.manager.MailboxManagerFixture;
+import org.apache.james.mailbox.mock.MockMailboxSession;
+import org.apache.james.mailbox.model.MailboxPath;
+import org.apache.james.mailbox.model.MessageId;
+import org.apache.james.mailbox.quota.CurrentQuotaManager;
+import org.apache.james.mailbox.quota.MaxQuotaManager;
+import org.apache.james.mailbox.quota.QuotaManager;
+import org.apache.james.mailbox.store.mail.model.Mailbox;
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Ignore;
+import org.junit.Rule;
+import org.junit.Test;
+import org.junit.rules.ExpectedException;
+
+import com.google.common.collect.ImmutableList;
+
+public abstract class AbstractMessageIdManagerQuotaTest {
+    private static final MessageUid messageUid1 = MessageUid.of(111);
+
+    public static final Flags FLAGS = new Flags();
+
+    @Rule
+    public ExpectedException expectedException = ExpectedException.none();
+
+    private MessageIdManager messageIdManager;
+    private MailboxSession session;
+    private Mailbox mailbox1;
+    private Mailbox mailbox2;
+    private Mailbox mailbox3;
+    private MessageIdManagerTestSystem testingData;
+    private MaxQuotaManager maxQuotaManager;
+
+    protected abstract MessageIdManagerTestSystem createTestSystem(QuotaManager quotaManager,
CurrentQuotaManager currentQuotaManager) throws Exception;
+
+    protected abstract MaxQuotaManager createMaxQuotaManager();
+    protected abstract CurrentQuotaManager createCurrentQuotaManager();
+    protected abstract QuotaManager createQuotaManager(MaxQuotaManager maxQuotaManager, CurrentQuotaManager
currentQuotaManager);
+
+    @Before
+    public void setUp() throws Exception {
+        maxQuotaManager = createMaxQuotaManager();
+        CurrentQuotaManager currentQuotaManager = createCurrentQuotaManager();
+        QuotaManager quotaManager = createQuotaManager(maxQuotaManager, currentQuotaManager);
+
+        session = new MockMailboxSession("user");
+        testingData = createTestSystem(quotaManager, currentQuotaManager);
+        messageIdManager = testingData.getMessageIdManager();
+
+        mailbox1 = testingData.createMailbox(MailboxManagerFixture.MAILBOX_PATH1, session);
+        mailbox2 = testingData.createMailbox(MailboxManagerFixture.MAILBOX_PATH2, session);
+        mailbox3 = testingData.createMailbox(MailboxManagerFixture.MAILBOX_PATH3, session);
+    }
+
+    @After
+    public void tearDown() {
+        testingData.clean();
+    }
+
+    @Test
+    public void setInMailboxesShouldNotThrowWhenMessageQuotaNotExceeded() throws Exception
{
+        maxQuotaManager.setDefaultMaxMessage(1);
+
+        MessageId messageId = testingData.persist(mailbox2.getMailboxId(), messageUid1, FLAGS,
session);
+
+        messageIdManager.setInMailboxes(messageId, ImmutableList.of(mailbox1.getMailboxId()),
session);
+    }
+
+    @Test
+    public void setInMailboxesShouldNotThrowWhenStorageQuotaNotExceeded() throws Exception
{
+        maxQuotaManager.setDefaultMaxStorage(testingData.getConstantMessageSize());
+
+        MessageId messageId = testingData.persist(mailbox2.getMailboxId(), messageUid1, FLAGS,
session);
+
+        messageIdManager.setInMailboxes(messageId, ImmutableList.of(mailbox1.getMailboxId()),
session);
+    }
+
+    @Test
+    public void setInMailboxesShouldThrowWhenStorageQuotaExceeded() throws Exception {
+        maxQuotaManager.setDefaultMaxStorage(2 * testingData.getConstantMessageSize());
+
+        testingData.persist(mailbox1.getMailboxId(), messageUid1, FLAGS, session);
+        MessageId messageId = testingData.persist(mailbox2.getMailboxId(), messageUid1, FLAGS,
session);
+
+        expectedException.expect(OverQuotaException.class);
+        messageIdManager.setInMailboxes(messageId, ImmutableList.of(mailbox1.getMailboxId(),
mailbox2.getMailboxId()), session);
+    }
+
+    @Ignore
+    @Test
+    public void setInMailboxesShouldThrowWhenStorageQuotaExceededWhenCopiedToMultipleMailboxes()
throws Exception {
+        maxQuotaManager.setDefaultMaxStorage(2 * testingData.getConstantMessageSize());
+
+        MessageId messageId = testingData.persist(mailbox1.getMailboxId(), messageUid1, FLAGS,
session);
+
+        expectedException.expect(OverQuotaException.class);
+        messageIdManager.setInMailboxes(messageId, ImmutableList.of(mailbox1.getMailboxId(),
mailbox2.getMailboxId(), mailbox3.getMailboxId()), session);
+    }
+
+    @Test
+    public void setInMailboxesShouldThrowWhenStorageMessageExceeded() throws Exception {
+        maxQuotaManager.setDefaultMaxMessage(2);
+
+        testingData.persist(mailbox1.getMailboxId(), messageUid1, FLAGS, session);
+        MessageId messageId = testingData.persist(mailbox2.getMailboxId(), messageUid1, FLAGS,
session);
+
+        expectedException.expect(OverQuotaException.class);
+        messageIdManager.setInMailboxes(messageId, ImmutableList.of(mailbox1.getMailboxId(),
mailbox2.getMailboxId(), mailbox3.getMailboxId()), session);
+    }
+}

http://git-wip-us.apache.org/repos/asf/james-project/blob/69cef15f/mailbox/store/src/test/java/org/apache/james/mailbox/store/MessageIdManagerTestSystem.java
----------------------------------------------------------------------
diff --git a/mailbox/store/src/test/java/org/apache/james/mailbox/store/MessageIdManagerTestSystem.java
b/mailbox/store/src/test/java/org/apache/james/mailbox/store/MessageIdManagerTestSystem.java
index eeae592..ecb45d8e 100644
--- a/mailbox/store/src/test/java/org/apache/james/mailbox/store/MessageIdManagerTestSystem.java
+++ b/mailbox/store/src/test/java/org/apache/james/mailbox/store/MessageIdManagerTestSystem.java
@@ -61,4 +61,6 @@ public abstract class MessageIdManagerTestSystem {
     public abstract void deleteMailbox(MailboxId mailboxId, MailboxSession session);
 
     public abstract void clean();
+
+    public abstract int getConstantMessageSize();
 }

http://git-wip-us.apache.org/repos/asf/james-project/blob/69cef15f/mailbox/store/src/test/java/org/apache/james/mailbox/store/StoreMessageIdManagerTestSystem.java
----------------------------------------------------------------------
diff --git a/mailbox/store/src/test/java/org/apache/james/mailbox/store/StoreMessageIdManagerTestSystem.java
b/mailbox/store/src/test/java/org/apache/james/mailbox/store/StoreMessageIdManagerTestSystem.java
index 90883fc..2f68685 100644
--- a/mailbox/store/src/test/java/org/apache/james/mailbox/store/StoreMessageIdManagerTestSystem.java
+++ b/mailbox/store/src/test/java/org/apache/james/mailbox/store/StoreMessageIdManagerTestSystem.java
@@ -104,4 +104,9 @@ public class StoreMessageIdManagerTestSystem extends MessageIdManagerTestSystem
         when(mailboxMessage.createFlags()).thenReturn(flags);
         return mailboxMessage;
     }
+
+    @Override
+    public int getConstantMessageSize() {
+        throw new NotImplementedException();
+    }
 }


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


Mime
View raw message