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/04/17 02:06:56 UTC
[james-project] 03/04: JAMES-3138 Refactor StoreCurrentQuotaManager
to use QuotaOperation
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 284a4fe2a41b1ce4c48656ba58353853f6fc0639
Author: Rene Cordier <rc...@linagora.com>
AuthorDate: Wed Apr 8 17:42:02 2020 +0700
JAMES-3138 Refactor StoreCurrentQuotaManager to use QuotaOperation
---
.../quota/CassandraCurrentQuotaManager.java | 26 +++----
.../mailbox/jpa/quota/JpaCurrentQuotaManager.java | 26 +++----
.../quota/InMemoryCurrentQuotaManager.java | 20 ++---
.../quota/InMemoryCurrentQuotaManagerTest.java | 54 +-------------
.../store/quota/ListeningCurrentQuotaUpdater.java | 86 ++++++++++++----------
.../store/quota/StoreCurrentQuotaManager.java | 6 +-
.../quota/ListeningCurrentQuotaUpdaterTest.java | 12 +--
.../store/quota/StoreCurrentQuotaManagerTest.java | 60 ++-------------
.../james/webadmin/routes/UserQuotaRoutesTest.java | 9 ++-
9 files changed, 103 insertions(+), 196 deletions(-)
diff --git a/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/quota/CassandraCurrentQuotaManager.java b/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/quota/CassandraCurrentQuotaManager.java
index eb23bf2..0254999 100644
--- a/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/quota/CassandraCurrentQuotaManager.java
+++ b/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/quota/CassandraCurrentQuotaManager.java
@@ -31,14 +31,13 @@ import javax.inject.Inject;
import org.apache.james.core.quota.QuotaCountUsage;
import org.apache.james.core.quota.QuotaSizeUsage;
import org.apache.james.mailbox.cassandra.table.CassandraCurrentQuota;
-import org.apache.james.mailbox.exception.MailboxException;
+import org.apache.james.mailbox.model.QuotaOperation;
import org.apache.james.mailbox.model.QuotaRoot;
import org.apache.james.mailbox.store.quota.StoreCurrentQuotaManager;
import com.datastax.driver.core.PreparedStatement;
import com.datastax.driver.core.ResultSet;
import com.datastax.driver.core.Session;
-import com.google.common.base.Preconditions;
public class CassandraCurrentQuotaManager implements StoreCurrentQuotaManager {
@@ -68,19 +67,21 @@ public class CassandraCurrentQuotaManager implements StoreCurrentQuotaManager {
}
@Override
- public void increase(QuotaRoot quotaRoot, long count, long size) throws MailboxException {
- checkArguments(count, size);
- session.execute(increaseStatement.bind(count, size, quotaRoot.getValue()));
+ public void increase(QuotaOperation quotaOperation) {
+ session.execute(increaseStatement.bind(quotaOperation.count().asLong(),
+ quotaOperation.size().asLong(),
+ quotaOperation.quotaRoot().getValue()));
}
@Override
- public void decrease(QuotaRoot quotaRoot, long count, long size) throws MailboxException {
- checkArguments(count, size);
- session.execute(decreaseStatement.bind(count, size, quotaRoot.getValue()));
+ public void decrease(QuotaOperation quotaOperation) {
+ session.execute(decreaseStatement.bind(quotaOperation.count().asLong(),
+ quotaOperation.size().asLong(),
+ quotaOperation.quotaRoot().getValue()));
}
@Override
- public QuotaCountUsage getCurrentMessageCount(QuotaRoot quotaRoot) throws MailboxException {
+ public QuotaCountUsage getCurrentMessageCount(QuotaRoot quotaRoot) {
ResultSet resultSet = session.execute(getCurrentMessageCountStatement.bind(quotaRoot.getValue()));
if (resultSet.isExhausted()) {
return QuotaCountUsage.count(0L);
@@ -89,16 +90,11 @@ public class CassandraCurrentQuotaManager implements StoreCurrentQuotaManager {
}
@Override
- public QuotaSizeUsage getCurrentStorage(QuotaRoot quotaRoot) throws MailboxException {
+ public QuotaSizeUsage getCurrentStorage(QuotaRoot quotaRoot) {
ResultSet resultSet = session.execute(getCurrentStorageStatement.bind(quotaRoot.getValue()));
if (resultSet.isExhausted()) {
return QuotaSizeUsage.size(0L);
}
return QuotaSizeUsage.size(resultSet.one().getLong(CassandraCurrentQuota.STORAGE));
}
-
- private void checkArguments(long count, long size) {
- Preconditions.checkArgument(count > 0, "Count should be positive");
- Preconditions.checkArgument(size > 0, "Size should be positive");
- }
}
diff --git a/mailbox/jpa/src/main/java/org/apache/james/mailbox/jpa/quota/JpaCurrentQuotaManager.java b/mailbox/jpa/src/main/java/org/apache/james/mailbox/jpa/quota/JpaCurrentQuotaManager.java
index 99ff928..48ef98a 100644
--- a/mailbox/jpa/src/main/java/org/apache/james/mailbox/jpa/quota/JpaCurrentQuotaManager.java
+++ b/mailbox/jpa/src/main/java/org/apache/james/mailbox/jpa/quota/JpaCurrentQuotaManager.java
@@ -28,13 +28,11 @@ import javax.persistence.EntityManagerFactory;
import org.apache.james.backends.jpa.TransactionRunner;
import org.apache.james.core.quota.QuotaCountUsage;
import org.apache.james.core.quota.QuotaSizeUsage;
-import org.apache.james.mailbox.exception.MailboxException;
import org.apache.james.mailbox.jpa.quota.model.JpaCurrentQuota;
+import org.apache.james.mailbox.model.QuotaOperation;
import org.apache.james.mailbox.model.QuotaRoot;
import org.apache.james.mailbox.store.quota.StoreCurrentQuotaManager;
-import com.google.common.base.Preconditions;
-
public class JpaCurrentQuotaManager implements StoreCurrentQuotaManager {
public static final long NO_MESSAGES = 0L;
@@ -66,34 +64,32 @@ public class JpaCurrentQuotaManager implements StoreCurrentQuotaManager {
}
@Override
- public void increase(QuotaRoot quotaRoot, long count, long size) {
- Preconditions.checkArgument(count > 0, "Counts should be positive");
- Preconditions.checkArgument(size > 0, "Size should be positive");
-
+ public void increase(QuotaOperation quotaOperation) {
transactionRunner.run(
entityManager -> {
+ QuotaRoot quotaRoot = quotaOperation.quotaRoot();
+
JpaCurrentQuota jpaCurrentQuota = Optional.ofNullable(retrieveUserQuota(entityManager, quotaRoot))
.orElse(new JpaCurrentQuota(quotaRoot.getValue(), NO_MESSAGES, NO_STORED_BYTES));
entityManager.merge(new JpaCurrentQuota(quotaRoot.getValue(),
- jpaCurrentQuota.getMessageCount().asLong() + count,
- jpaCurrentQuota.getSize().asLong() + size));
+ jpaCurrentQuota.getMessageCount().asLong() + quotaOperation.count().asLong(),
+ jpaCurrentQuota.getSize().asLong() + quotaOperation.size().asLong()));
});
}
@Override
- public void decrease(QuotaRoot quotaRoot, long count, long size) throws MailboxException {
- Preconditions.checkArgument(count > 0, "Counts should be positive");
- Preconditions.checkArgument(size > 0, "Counts should be positive");
-
+ public void decrease(QuotaOperation quotaOperation) {
transactionRunner.run(
entityManager -> {
+ QuotaRoot quotaRoot = quotaOperation.quotaRoot();
+
JpaCurrentQuota jpaCurrentQuota = Optional.ofNullable(retrieveUserQuota(entityManager, quotaRoot))
.orElse(new JpaCurrentQuota(quotaRoot.getValue(), NO_MESSAGES, NO_STORED_BYTES));
entityManager.merge(new JpaCurrentQuota(quotaRoot.getValue(),
- jpaCurrentQuota.getMessageCount().asLong() - count,
- jpaCurrentQuota.getSize().asLong() - size));
+ jpaCurrentQuota.getMessageCount().asLong() - quotaOperation.count().asLong(),
+ jpaCurrentQuota.getSize().asLong() - quotaOperation.size().asLong()));
});
}
diff --git a/mailbox/memory/src/main/java/org/apache/james/mailbox/inmemory/quota/InMemoryCurrentQuotaManager.java b/mailbox/memory/src/main/java/org/apache/james/mailbox/inmemory/quota/InMemoryCurrentQuotaManager.java
index 392196a..fbd2330 100644
--- a/mailbox/memory/src/main/java/org/apache/james/mailbox/inmemory/quota/InMemoryCurrentQuotaManager.java
+++ b/mailbox/memory/src/main/java/org/apache/james/mailbox/inmemory/quota/InMemoryCurrentQuotaManager.java
@@ -29,12 +29,12 @@ import org.apache.james.core.quota.QuotaCountUsage;
import org.apache.james.core.quota.QuotaSizeUsage;
import org.apache.james.mailbox.SessionProvider;
import org.apache.james.mailbox.exception.MailboxException;
+import org.apache.james.mailbox.model.QuotaOperation;
import org.apache.james.mailbox.model.QuotaRoot;
import org.apache.james.mailbox.store.quota.CurrentQuotaCalculator;
import org.apache.james.mailbox.store.quota.CurrentQuotaCalculator.CurrentQuotas;
import org.apache.james.mailbox.store.quota.StoreCurrentQuotaManager;
-import com.google.common.base.Preconditions;
import com.google.common.cache.CacheBuilder;
import com.google.common.cache.CacheLoader;
import com.google.common.cache.LoadingCache;
@@ -54,15 +54,13 @@ public class InMemoryCurrentQuotaManager implements StoreCurrentQuotaManager {
}
@Override
- public void increase(QuotaRoot quotaRoot, long count, long size) throws MailboxException {
- checkArguments(count, size);
- doIncrease(quotaRoot, count, size);
+ public void increase(QuotaOperation quotaOperation) throws MailboxException {
+ updateQuota(quotaOperation.quotaRoot(), quotaOperation.count().asLong(), quotaOperation.size().asLong());
}
@Override
- public void decrease(QuotaRoot quotaRoot, long count, long size) throws MailboxException {
- checkArguments(count, size);
- doIncrease(quotaRoot, -count, -size);
+ public void decrease(QuotaOperation quotaOperation) throws MailboxException {
+ updateQuota(quotaOperation.quotaRoot(), -(quotaOperation.count().asLong()), -(quotaOperation.size().asLong()));
}
@Override
@@ -83,7 +81,7 @@ public class InMemoryCurrentQuotaManager implements StoreCurrentQuotaManager {
}
}
- private void doIncrease(QuotaRoot quotaRoot, long count, long size) throws MailboxException {
+ private void updateQuota(QuotaRoot quotaRoot, long count, long size) throws MailboxException {
try {
Entry entry = quotaCache.get(quotaRoot);
entry.getCount().addAndGet(count);
@@ -91,12 +89,6 @@ public class InMemoryCurrentQuotaManager implements StoreCurrentQuotaManager {
} catch (ExecutionException e) {
throw new MailboxException("Exception caught", e);
}
-
- }
-
- private void checkArguments(long count, long size) {
- Preconditions.checkArgument(count > 0, "Count should be positive");
- Preconditions.checkArgument(size > 0, "Size should be positive");
}
static class Entry {
diff --git a/mailbox/memory/src/test/java/org/apache/james/mailbox/inmemory/quota/InMemoryCurrentQuotaManagerTest.java b/mailbox/memory/src/test/java/org/apache/james/mailbox/inmemory/quota/InMemoryCurrentQuotaManagerTest.java
index 75c9427..2014706 100644
--- a/mailbox/memory/src/test/java/org/apache/james/mailbox/inmemory/quota/InMemoryCurrentQuotaManagerTest.java
+++ b/mailbox/memory/src/test/java/org/apache/james/mailbox/inmemory/quota/InMemoryCurrentQuotaManagerTest.java
@@ -20,7 +20,6 @@
package org.apache.james.mailbox.inmemory.quota;
import static org.assertj.core.api.Assertions.assertThat;
-import static org.assertj.core.api.Assertions.assertThatThrownBy;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.when;
@@ -29,6 +28,7 @@ import java.util.Optional;
import org.apache.james.core.quota.QuotaCountUsage;
import org.apache.james.core.quota.QuotaSizeUsage;
import org.apache.james.mailbox.SessionProvider;
+import org.apache.james.mailbox.model.QuotaOperation;
import org.apache.james.mailbox.model.QuotaRoot;
import org.apache.james.mailbox.store.quota.CurrentQuotaCalculator;
import org.apache.james.mailbox.store.quota.CurrentQuotaCalculator.CurrentQuotas;
@@ -72,58 +72,10 @@ class InMemoryCurrentQuotaManagerTest {
when(mockedCurrentQuotaCalculator.recalculateCurrentQuotas(QUOTA_ROOT, null))
.thenReturn(CURRENT_QUOTAS);
- testee.increase(QUOTA_ROOT, 10, 100);
+ QuotaOperation quotaOperation = new QuotaOperation(QUOTA_ROOT, QuotaCountUsage.count(10), QuotaSizeUsage.size(100));
+ testee.increase(quotaOperation);
assertThat(testee.getCurrentMessageCount(QUOTA_ROOT)).isEqualTo(QuotaCountUsage.count(28));
assertThat(testee.getCurrentStorage(QUOTA_ROOT)).isEqualTo(QuotaSizeUsage.size(612));
}
-
- @Test
- void increaseShouldThrowOnZeroCount() {
- assertThatThrownBy(() -> testee.increase(QUOTA_ROOT, 0, 5))
- .isInstanceOf(IllegalArgumentException.class);
- }
-
- @Test
- void increaseShouldThrowOnNegativeCount() {
- assertThatThrownBy(() -> testee.increase(QUOTA_ROOT, -1, 5))
- .isInstanceOf(IllegalArgumentException.class);
- }
-
- @Test
- void increaseShouldThrowOnZeroSize() {
- assertThatThrownBy(() -> testee.increase(QUOTA_ROOT, 5, 0))
- .isInstanceOf(IllegalArgumentException.class);
- }
-
- @Test
- void increaseShouldThrowOnNegativeSize() {
- assertThatThrownBy(() -> testee.increase(QUOTA_ROOT, 5, -1))
- .isInstanceOf(IllegalArgumentException.class);
- }
-
- @Test
- void decreaseShouldThrowOnZeroCount() {
- assertThatThrownBy(() -> testee.decrease(QUOTA_ROOT, 0, 5))
- .isInstanceOf(IllegalArgumentException.class);
- }
-
- @Test
- void decreaseShouldThrowOnNegativeCount() {
- assertThatThrownBy(() -> testee.decrease(QUOTA_ROOT, -1, 5))
- .isInstanceOf(IllegalArgumentException.class);
- }
-
- @Test
- void decreaseShouldThrowOnZeroSize() {
- assertThatThrownBy(() -> testee.decrease(QUOTA_ROOT, 5, 0))
- .isInstanceOf(IllegalArgumentException.class);
- }
-
- @Test
- void decreaseShouldThrowOnNegativeSize() {
- assertThatThrownBy(() -> testee.decrease(QUOTA_ROOT, 5, -1))
- .isInstanceOf(IllegalArgumentException.class);
- }
-
}
diff --git a/mailbox/store/src/main/java/org/apache/james/mailbox/store/quota/ListeningCurrentQuotaUpdater.java b/mailbox/store/src/main/java/org/apache/james/mailbox/store/quota/ListeningCurrentQuotaUpdater.java
index 13171cb..bf96d76 100644
--- a/mailbox/store/src/main/java/org/apache/james/mailbox/store/quota/ListeningCurrentQuotaUpdater.java
+++ b/mailbox/store/src/main/java/org/apache/james/mailbox/store/quota/ListeningCurrentQuotaUpdater.java
@@ -19,20 +19,25 @@
package org.apache.james.mailbox.store.quota;
import java.time.Instant;
+import java.util.Optional;
import javax.inject.Inject;
+import org.apache.james.core.quota.QuotaCountUsage;
+import org.apache.james.core.quota.QuotaSizeUsage;
import org.apache.james.mailbox.events.Event;
import org.apache.james.mailbox.events.EventBus;
import org.apache.james.mailbox.events.Group;
import org.apache.james.mailbox.events.MailboxListener;
import org.apache.james.mailbox.events.RegistrationKey;
import org.apache.james.mailbox.exception.MailboxException;
+import org.apache.james.mailbox.model.QuotaOperation;
import org.apache.james.mailbox.model.QuotaRoot;
import org.apache.james.mailbox.quota.QuotaManager;
import org.apache.james.mailbox.quota.QuotaRootResolver;
import org.apache.james.mailbox.store.event.EventFactory;
+import com.github.fge.lambdas.Throwing;
import com.google.common.collect.ImmutableSet;
public class ListeningCurrentQuotaUpdater implements MailboxListener.GroupMailboxListener, QuotaUpdater {
@@ -82,43 +87,50 @@ public class ListeningCurrentQuotaUpdater implements MailboxListener.GroupMailbo
}
}
- private void handleExpungedEvent(Expunged expunged, QuotaRoot quotaRoot) throws MailboxException {
- long expungedSize = totalSize(expunged);
- long expungedCount = (long) expunged.getUids().size();
- // Expunge event can contain no data (expunge performed while no messages marked \Deleted)
- if (expungedCount != 0 && expungedSize != 0) {
- currentQuotaManager.decrease(quotaRoot, expungedCount, expungedSize);
- }
- eventBus.dispatch(
- EventFactory.quotaUpdated()
- .randomEventId()
- .user(expunged.getUsername())
- .quotaRoot(quotaRoot)
- .quotaCount(quotaManager.getMessageQuota(quotaRoot))
- .quotaSize(quotaManager.getStorageQuota(quotaRoot))
- .instant(Instant.now())
- .build(),
- NO_REGISTRATION_KEYS)
- .block();
+ private void handleExpungedEvent(Expunged expunged, QuotaRoot quotaRoot) {
+ computeQuotaOperation(expunged, quotaRoot).ifPresent(Throwing.<QuotaOperation>consumer(quotaOperation -> {
+ currentQuotaManager.decrease(quotaOperation);
+
+ eventBus.dispatch(
+ EventFactory.quotaUpdated()
+ .randomEventId()
+ .user(expunged.getUsername())
+ .quotaRoot(quotaRoot)
+ .quotaCount(quotaManager.getMessageQuota(quotaRoot))
+ .quotaSize(quotaManager.getStorageQuota(quotaRoot))
+ .instant(Instant.now())
+ .build(),
+ NO_REGISTRATION_KEYS)
+ .block();
+ }).sneakyThrow());
+ }
+
+ private void handleAddedEvent(Added added, QuotaRoot quotaRoot) {
+ computeQuotaOperation(added, quotaRoot).ifPresent(Throwing.<QuotaOperation>consumer(quotaOperation -> {
+ currentQuotaManager.increase(quotaOperation);
+
+ eventBus.dispatch(
+ EventFactory.quotaUpdated()
+ .randomEventId()
+ .user(added.getUsername())
+ .quotaRoot(quotaRoot)
+ .quotaCount(quotaManager.getMessageQuota(quotaRoot))
+ .quotaSize(quotaManager.getStorageQuota(quotaRoot))
+ .instant(Instant.now())
+ .build(),
+ NO_REGISTRATION_KEYS)
+ .block();
+ }).sneakyThrow());
}
- private void handleAddedEvent(Added added, QuotaRoot quotaRoot) throws MailboxException {
- long addedSize = totalSize(added);
- long addedCount = (long) added.getUids().size();
- if (addedCount != 0 && addedSize != 0) {
- currentQuotaManager.increase(quotaRoot, addedCount, addedSize);
+ private Optional<QuotaOperation> computeQuotaOperation(MetaDataHoldingEvent metaDataHoldingEvent, QuotaRoot quotaRoot) {
+ long size = totalSize(metaDataHoldingEvent);
+ long count = Integer.toUnsignedLong(metaDataHoldingEvent.getUids().size());
+
+ if (count != 0 && size != 0) {
+ return Optional.of(new QuotaOperation(quotaRoot, QuotaCountUsage.count(count), QuotaSizeUsage.size(size)));
}
- eventBus.dispatch(
- EventFactory.quotaUpdated()
- .randomEventId()
- .user(added.getUsername())
- .quotaRoot(quotaRoot)
- .quotaCount(quotaManager.getMessageQuota(quotaRoot))
- .quotaSize(quotaManager.getStorageQuota(quotaRoot))
- .instant(Instant.now())
- .build(),
- NO_REGISTRATION_KEYS)
- .block();
+ return Optional.empty();
}
private long totalSize(MetaDataHoldingEvent metaDataHoldingEvent) {
@@ -131,9 +143,9 @@ public class ListeningCurrentQuotaUpdater implements MailboxListener.GroupMailbo
private void handleMailboxDeletionEvent(MailboxDeletion mailboxDeletionEvent) throws MailboxException {
boolean mailboxContainedMessages = mailboxDeletionEvent.getDeletedMessageCount().asLong() > 0;
if (mailboxContainedMessages) {
- currentQuotaManager.decrease(mailboxDeletionEvent.getQuotaRoot(),
- mailboxDeletionEvent.getDeletedMessageCount().asLong(),
- mailboxDeletionEvent.getTotalDeletedSize().asLong());
+ currentQuotaManager.decrease(new QuotaOperation(mailboxDeletionEvent.getQuotaRoot(),
+ mailboxDeletionEvent.getDeletedMessageCount(),
+ mailboxDeletionEvent.getTotalDeletedSize()));
}
}
diff --git a/mailbox/store/src/main/java/org/apache/james/mailbox/store/quota/StoreCurrentQuotaManager.java b/mailbox/store/src/main/java/org/apache/james/mailbox/store/quota/StoreCurrentQuotaManager.java
index d977dd2..d785f89 100644
--- a/mailbox/store/src/main/java/org/apache/james/mailbox/store/quota/StoreCurrentQuotaManager.java
+++ b/mailbox/store/src/main/java/org/apache/james/mailbox/store/quota/StoreCurrentQuotaManager.java
@@ -20,13 +20,13 @@
package org.apache.james.mailbox.store.quota;
import org.apache.james.mailbox.exception.MailboxException;
-import org.apache.james.mailbox.model.QuotaRoot;
+import org.apache.james.mailbox.model.QuotaOperation;
import org.apache.james.mailbox.quota.CurrentQuotaManager;
public interface StoreCurrentQuotaManager extends CurrentQuotaManager {
- void increase(QuotaRoot quotaRoot, long count, long size) throws MailboxException;
+ void increase(QuotaOperation quotaOperation) throws MailboxException;
- void decrease(QuotaRoot quotaRoot, long count, long size) throws MailboxException;
+ void decrease(QuotaOperation quotaOperation) throws MailboxException;
}
diff --git a/mailbox/store/src/test/java/org/apache/james/mailbox/store/quota/ListeningCurrentQuotaUpdaterTest.java b/mailbox/store/src/test/java/org/apache/james/mailbox/store/quota/ListeningCurrentQuotaUpdaterTest.java
index ccfcc9d..6825773 100644
--- a/mailbox/store/src/test/java/org/apache/james/mailbox/store/quota/ListeningCurrentQuotaUpdaterTest.java
+++ b/mailbox/store/src/test/java/org/apache/james/mailbox/store/quota/ListeningCurrentQuotaUpdaterTest.java
@@ -45,6 +45,7 @@ import org.apache.james.mailbox.events.Group;
import org.apache.james.mailbox.events.MailboxListener;
import org.apache.james.mailbox.model.MailboxId;
import org.apache.james.mailbox.model.MessageMetaData;
+import org.apache.james.mailbox.model.QuotaOperation;
import org.apache.james.mailbox.model.QuotaRoot;
import org.apache.james.mailbox.model.TestId;
import org.apache.james.mailbox.quota.QuotaManager;
@@ -64,6 +65,7 @@ class ListeningCurrentQuotaUpdaterTest {
static final String BENWA = "benwa";
static final Username USERNAME_BENWA = Username.of(BENWA);
static final QuotaRoot QUOTA_ROOT = QuotaRoot.quotaRoot(BENWA, Optional.empty());
+ static final QuotaOperation QUOTA = new QuotaOperation(QUOTA_ROOT, QuotaCountUsage.count(2), QuotaSizeUsage.size(2 * SIZE));
StoreCurrentQuotaManager mockedCurrentQuotaManager;
QuotaRootResolver mockedQuotaRootResolver;
@@ -97,7 +99,7 @@ class ListeningCurrentQuotaUpdaterTest {
testee.event(added);
- verify(mockedCurrentQuotaManager).increase(QUOTA_ROOT, 2, 2 * SIZE);
+ verify(mockedCurrentQuotaManager).increase(QUOTA);
}
@Test
@@ -112,7 +114,7 @@ class ListeningCurrentQuotaUpdaterTest {
testee.event(expunged);
- verify(mockedCurrentQuotaManager).decrease(QUOTA_ROOT, 2, 2 * SIZE);
+ verify(mockedCurrentQuotaManager).decrease(QUOTA);
}
@Test
@@ -125,7 +127,7 @@ class ListeningCurrentQuotaUpdaterTest {
testee.event(expunged);
- verify(mockedCurrentQuotaManager, never()).decrease(QUOTA_ROOT, 0, 0);
+ verify(mockedCurrentQuotaManager, never()).decrease(any());
}
@Test
@@ -138,7 +140,7 @@ class ListeningCurrentQuotaUpdaterTest {
testee.event(added);
- verify(mockedCurrentQuotaManager, never()).increase(QUOTA_ROOT, 0, 0);
+ verify(mockedCurrentQuotaManager, never()).increase(any());
}
@Test
@@ -153,7 +155,7 @@ class ListeningCurrentQuotaUpdaterTest {
testee.event(deletion);
- verify(mockedCurrentQuotaManager).decrease(QUOTA_ROOT, 10, 5);
+ verify(mockedCurrentQuotaManager).decrease(new QuotaOperation(QUOTA_ROOT, QuotaCountUsage.count(10), QuotaSizeUsage.size(5)));
}
@Test
diff --git a/mailbox/store/src/test/java/org/apache/james/mailbox/store/quota/StoreCurrentQuotaManagerTest.java b/mailbox/store/src/test/java/org/apache/james/mailbox/store/quota/StoreCurrentQuotaManagerTest.java
index f6614ff..df39dd2 100644
--- a/mailbox/store/src/test/java/org/apache/james/mailbox/store/quota/StoreCurrentQuotaManagerTest.java
+++ b/mailbox/store/src/test/java/org/apache/james/mailbox/store/quota/StoreCurrentQuotaManagerTest.java
@@ -20,18 +20,18 @@
package org.apache.james.mailbox.store.quota;
import static org.assertj.core.api.Assertions.assertThat;
-import static org.assertj.core.api.Assertions.assertThatThrownBy;
import java.util.Optional;
import org.apache.james.core.quota.QuotaCountUsage;
import org.apache.james.core.quota.QuotaSizeUsage;
+import org.apache.james.mailbox.model.QuotaOperation;
import org.apache.james.mailbox.model.QuotaRoot;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
public abstract class StoreCurrentQuotaManagerTest {
- public static final QuotaRoot QUOTA_ROOT = QuotaRoot.quotaRoot("benwa", Optional.empty());
+ private static final QuotaRoot QUOTA_ROOT = QuotaRoot.quotaRoot("benwa", Optional.empty());
protected abstract StoreCurrentQuotaManager provideTestee();
@@ -49,7 +49,7 @@ public abstract class StoreCurrentQuotaManagerTest {
@Test
void increaseShouldWork() throws Exception {
- testee.increase(QUOTA_ROOT, 10, 100);
+ testee.increase(new QuotaOperation(QUOTA_ROOT, QuotaCountUsage.count(10), QuotaSizeUsage.size(100)));
assertThat(testee.getCurrentMessageCount(QUOTA_ROOT)).isEqualTo(QuotaCountUsage.count(10));
assertThat(testee.getCurrentStorage(QUOTA_ROOT)).isEqualTo(QuotaSizeUsage.size(100));
@@ -57,9 +57,9 @@ public abstract class StoreCurrentQuotaManagerTest {
@Test
void decreaseShouldWork() throws Exception {
- testee.increase(QUOTA_ROOT, 20, 200);
+ testee.increase(new QuotaOperation(QUOTA_ROOT, QuotaCountUsage.count(20), QuotaSizeUsage.size(200)));
- testee.decrease(QUOTA_ROOT, 10, 100);
+ testee.decrease(new QuotaOperation(QUOTA_ROOT, QuotaCountUsage.count(10), QuotaSizeUsage.size(100)));
assertThat(testee.getCurrentMessageCount(QUOTA_ROOT)).isEqualTo(QuotaCountUsage.count(10));
assertThat(testee.getCurrentStorage(QUOTA_ROOT)).isEqualTo(QuotaSizeUsage.size(100));
@@ -67,57 +67,9 @@ public abstract class StoreCurrentQuotaManagerTest {
@Test
void decreaseShouldNotFailWhenItLeadsToNegativeValues() throws Exception {
- testee.decrease(QUOTA_ROOT, 10, 100);
+ testee.decrease(new QuotaOperation(QUOTA_ROOT, QuotaCountUsage.count(10), QuotaSizeUsage.size(100)));
assertThat(testee.getCurrentMessageCount(QUOTA_ROOT)).isEqualTo(QuotaCountUsage.count(-10));
assertThat(testee.getCurrentStorage(QUOTA_ROOT)).isEqualTo(QuotaSizeUsage.size(-100));
}
-
- @Test
- void increaseShouldThrowOnZeroCount() {
- assertThatThrownBy(() -> testee.increase(QUOTA_ROOT, 0, 5))
- .isInstanceOf(IllegalArgumentException.class);
- }
-
- @Test
- void increaseShouldThrowOnNegativeCount() {
- assertThatThrownBy(() -> testee.increase(QUOTA_ROOT, -1, 5))
- .isInstanceOf(IllegalArgumentException.class);
- }
-
- @Test
- void increaseShouldThrowOnZeroSize() {
- assertThatThrownBy(() -> testee.increase(QUOTA_ROOT, 5, 0))
- .isInstanceOf(IllegalArgumentException.class);
- }
-
- @Test
- void increaseShouldThrowOnNegativeSize() {
- assertThatThrownBy(() -> testee.increase(QUOTA_ROOT, 5, -1))
- .isInstanceOf(IllegalArgumentException.class);
- }
-
- @Test
- void decreaseShouldThrowOnZeroCount() {
- assertThatThrownBy(() -> testee.decrease(QUOTA_ROOT, 0, 5))
- .isInstanceOf(IllegalArgumentException.class);
- }
-
- @Test
- void decreaseShouldThrowOnNegativeCount() {
- assertThatThrownBy(() -> testee.decrease(QUOTA_ROOT, -1, 5))
- .isInstanceOf(IllegalArgumentException.class);
- }
-
- @Test
- void decreaseShouldThrowOnZeroSize() {
- assertThatThrownBy(() -> testee.decrease(QUOTA_ROOT, 5, 0))
- .isInstanceOf(IllegalArgumentException.class);
- }
-
- @Test
- void decreaseShouldThrowOnNegativeSize() {
- assertThatThrownBy(() -> testee.decrease(QUOTA_ROOT, 5, -1))
- .isInstanceOf(IllegalArgumentException.class);
- }
}
diff --git a/server/protocols/webadmin/webadmin-mailbox/src/test/java/org/apache/james/webadmin/routes/UserQuotaRoutesTest.java b/server/protocols/webadmin/webadmin-mailbox/src/test/java/org/apache/james/webadmin/routes/UserQuotaRoutesTest.java
index 0763109..e320c5a 100644
--- a/server/protocols/webadmin/webadmin-mailbox/src/test/java/org/apache/james/webadmin/routes/UserQuotaRoutesTest.java
+++ b/server/protocols/webadmin/webadmin-mailbox/src/test/java/org/apache/james/webadmin/routes/UserQuotaRoutesTest.java
@@ -36,7 +36,9 @@ import java.util.Map;
import org.apache.james.core.Domain;
import org.apache.james.core.Username;
import org.apache.james.core.quota.QuotaCountLimit;
+import org.apache.james.core.quota.QuotaCountUsage;
import org.apache.james.core.quota.QuotaSizeLimit;
+import org.apache.james.core.quota.QuotaSizeUsage;
import org.apache.james.domainlist.api.DomainList;
import org.apache.james.mailbox.MailboxManager;
import org.apache.james.mailbox.MailboxSession;
@@ -44,6 +46,7 @@ import org.apache.james.mailbox.MessageManager;
import org.apache.james.mailbox.exception.MailboxException;
import org.apache.james.mailbox.inmemory.quota.InMemoryCurrentQuotaManager;
import org.apache.james.mailbox.model.MailboxPath;
+import org.apache.james.mailbox.model.QuotaOperation;
import org.apache.james.mailbox.quota.MaxQuotaManager;
import org.apache.james.mailbox.quota.UserQuotaRootResolver;
import org.apache.james.quota.search.QuotaSearchTestSystem;
@@ -845,10 +848,11 @@ class UserQuotaRoutesTest {
MaxQuotaManager maxQuotaManager = testSystem.getQuotaSearchTestSystem().getMaxQuotaManager();
UserQuotaRootResolver userQuotaRootResolver = testSystem.getQuotaSearchTestSystem().getQuotaRootResolver();
InMemoryCurrentQuotaManager currentQuotaManager = testSystem.getQuotaSearchTestSystem().getCurrentQuotaManager();
+ QuotaOperation quotaIncrease = new QuotaOperation(userQuotaRootResolver.forUser(BOB), QuotaCountUsage.count(20), QuotaSizeUsage.size(40));
maxQuotaManager.setMaxStorage(userQuotaRootResolver.forUser(BOB), QuotaSizeLimit.size(80));
maxQuotaManager.setMaxMessage(userQuotaRootResolver.forUser(BOB), QuotaCountLimit.count(100));
- currentQuotaManager.increase(userQuotaRootResolver.forUser(BOB), 20, 40);
+ currentQuotaManager.increase(quotaIncrease);
JsonPath jsonPath =
when()
@@ -873,10 +877,11 @@ class UserQuotaRoutesTest {
MaxQuotaManager maxQuotaManager = testSystem.getQuotaSearchTestSystem().getMaxQuotaManager();
UserQuotaRootResolver userQuotaRootResolver = testSystem.getQuotaSearchTestSystem().getQuotaRootResolver();
InMemoryCurrentQuotaManager currentQuotaManager = testSystem.getQuotaSearchTestSystem().getCurrentQuotaManager();
+ QuotaOperation quotaIncrease = new QuotaOperation(userQuotaRootResolver.forUser(BOB), QuotaCountUsage.count(20), QuotaSizeUsage.size(40));
maxQuotaManager.setMaxStorage(userQuotaRootResolver.forUser(BOB), QuotaSizeLimit.unlimited());
maxQuotaManager.setMaxMessage(userQuotaRootResolver.forUser(BOB), QuotaCountLimit.unlimited());
- currentQuotaManager.increase(userQuotaRootResolver.forUser(BOB), 20, 40);
+ currentQuotaManager.increase(quotaIncrease);
JsonPath jsonPath =
when()
---------------------------------------------------------------------
To unsubscribe, e-mail: server-dev-unsubscribe@james.apache.org
For additional commands, e-mail: server-dev-help@james.apache.org