You are viewing a plain text version of this content. The canonical link for it is here.
Posted to server-dev@james.apache.org by rc...@apache.org on 2020/06/30 10:52:56 UTC
[james-project] 03/07: JAMES-3277 Add a test about limiting
mailboxes reads for StoreMessageIdManager::setInMailboxes
This is an automated email from the ASF dual-hosted git repository.
rcordier pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/james-project.git
commit 36c7e232bc65c1566178e14842ede43384ada159
Author: Benoit Tellier <bt...@linagora.com>
AuthorDate: Fri Jun 26 10:19:00 2020 +0700
JAMES-3277 Add a test about limiting mailboxes reads for StoreMessageIdManager::setInMailboxes
---
.../CassandraMessageIdManagerSideEffectTest.java | 29 ++++++++++++++++++++++
.../AbstractMessageIdManagerSideEffectTest.java | 20 +++++++--------
2 files changed, 39 insertions(+), 10 deletions(-)
diff --git a/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/CassandraMessageIdManagerSideEffectTest.java b/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/CassandraMessageIdManagerSideEffectTest.java
index db4f8bb..1f60f1c 100644
--- a/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/CassandraMessageIdManagerSideEffectTest.java
+++ b/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/CassandraMessageIdManagerSideEffectTest.java
@@ -21,15 +21,23 @@ package org.apache.james.mailbox.cassandra;
import java.util.Set;
+import org.apache.james.backends.cassandra.CassandraCluster;
import org.apache.james.backends.cassandra.CassandraClusterExtension;
+import org.apache.james.backends.cassandra.StatementRecorder;
import org.apache.james.mailbox.cassandra.mail.MailboxAggregateModule;
import org.apache.james.mailbox.events.EventBus;
import org.apache.james.mailbox.extension.PreDeletionHook;
+import org.apache.james.mailbox.model.MessageId;
import org.apache.james.mailbox.quota.QuotaManager;
import org.apache.james.mailbox.store.AbstractMessageIdManagerSideEffectTest;
import org.apache.james.mailbox.store.MessageIdManagerTestSystem;
+import org.assertj.core.api.SoftAssertions;
+import org.junit.jupiter.api.Disabled;
+import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.extension.RegisterExtension;
+import com.google.common.collect.ImmutableList;
+
class CassandraMessageIdManagerSideEffectTest extends AbstractMessageIdManagerSideEffectTest {
@RegisterExtension
@@ -39,4 +47,25 @@ class CassandraMessageIdManagerSideEffectTest extends AbstractMessageIdManagerSi
protected MessageIdManagerTestSystem createTestSystem(QuotaManager quotaManager, EventBus eventBus, Set<PreDeletionHook> preDeletionHooks) {
return CassandraMessageIdManagerTestSystem.createTestingData(cassandraCluster.getCassandraCluster(), quotaManager, eventBus, preDeletionHooks);
}
+
+ @Disabled("11 mailbox reads and 10 acl reads")
+ @Test
+ void setInMailboxesShouldLimitMailboxReads(CassandraCluster cassandra) throws Exception {
+ givenUnlimitedQuota();
+ MessageId messageId = testingData.persist(mailbox2.getMailboxId(), messageUid1, FLAGS, session);
+
+ StatementRecorder statementRecorder = new StatementRecorder();
+ cassandra.getConf().recordStatements(statementRecorder);
+
+ messageIdManager.setInMailboxes(messageId, ImmutableList.of(mailbox1.getMailboxId()), session);
+
+ SoftAssertions.assertSoftly(softly -> {
+ softly.assertThat(statementRecorder.listExecutedStatements(
+ StatementRecorder.Selector.preparedStatement("SELECT id,mailboxbase,uidvalidity,name FROM mailbox WHERE id=:id;")))
+ .hasSize(3); // an extra read is still performed
+ softly.assertThat(statementRecorder.listExecutedStatements(
+ StatementRecorder.Selector.preparedStatement("SELECT acl,version FROM acl WHERE id=:id;")))
+ .hasSize(2);
+ });
+ }
}
diff --git a/mailbox/store/src/test/java/org/apache/james/mailbox/store/AbstractMessageIdManagerSideEffectTest.java b/mailbox/store/src/test/java/org/apache/james/mailbox/store/AbstractMessageIdManagerSideEffectTest.java
index 52e7895..e351d9a 100644
--- a/mailbox/store/src/test/java/org/apache/james/mailbox/store/AbstractMessageIdManagerSideEffectTest.java
+++ b/mailbox/store/src/test/java/org/apache/james/mailbox/store/AbstractMessageIdManagerSideEffectTest.java
@@ -86,18 +86,18 @@ public abstract class AbstractMessageIdManagerSideEffectTest {
.used(QuotaCountUsage.count(102))
.computedLimit(QuotaCountLimit.count(100))
.build();
- private static final MessageUid messageUid1 = MessageUid.of(111);
- private static final MessageUid messageUid2 = MessageUid.of(113);
+ protected static final MessageUid messageUid1 = MessageUid.of(111);
+ protected static final MessageUid messageUid2 = MessageUid.of(113);
- private static final Flags FLAGS = new Flags();
+ protected static final Flags FLAGS = new Flags();
- private MessageIdManager messageIdManager;
- private MailboxSession session;
- private Mailbox mailbox1;
- private Mailbox mailbox2;
- private Mailbox mailbox3;
+ protected MessageIdManager messageIdManager;
+ protected MailboxSession session;
+ protected Mailbox mailbox1;
+ protected Mailbox mailbox2;
+ protected Mailbox mailbox3;
private QuotaManager quotaManager;
- private MessageIdManagerTestSystem testingData;
+ protected MessageIdManagerTestSystem testingData;
private EventCollector eventCollector;
private EventBus eventBus;
private PreDeletionHook preDeletionHook1;
@@ -525,7 +525,7 @@ public abstract class AbstractMessageIdManagerSideEffectTest {
assertThat(eventCollector.getEvents()).isEmpty();
}
- private void givenUnlimitedQuota() throws MailboxException {
+ protected void givenUnlimitedQuota() throws MailboxException {
when(quotaManager.getMessageQuota(any(QuotaRoot.class))).thenReturn(
Quota.<QuotaCountLimit, QuotaCountUsage>builder().used(QuotaCountUsage.count(2)).computedLimit(QuotaCountLimit.unlimited()).build());
when(quotaManager.getStorageQuota(any(QuotaRoot.class))).thenReturn(
---------------------------------------------------------------------
To unsubscribe, e-mail: server-dev-unsubscribe@james.apache.org
For additional commands, e-mail: server-dev-help@james.apache.org