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 <[email protected]> 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: [email protected] For additional commands, e-mail: [email protected]
