MAILBOX-364 Builder for QuotaUsageUpdatedEvent
Project: http://git-wip-us.apache.org/repos/asf/james-project/repo Commit: http://git-wip-us.apache.org/repos/asf/james-project/commit/5392ad98 Tree: http://git-wip-us.apache.org/repos/asf/james-project/tree/5392ad98 Diff: http://git-wip-us.apache.org/repos/asf/james-project/diff/5392ad98 Branch: refs/heads/master Commit: 5392ad98b35860b26a63fd8e7b7bcbe256da8966 Parents: 7097446 Author: Benoit Tellier <btell...@linagora.com> Authored: Thu Jan 3 13:46:21 2019 +0700 Committer: Benoit Tellier <btell...@linagora.com> Committed: Tue Jan 8 14:41:11 2019 +0700 ---------------------------------------------------------------------- .../QuotaThresholdConfigurationChangesTest.java | 206 ++++++++++++++--- .../QuotaThresholdMailingIntegrationTest.java | 223 ++++++++++++++++--- .../ElasticSearchQuotaMailboxListenerTest.java | 10 +- .../json/QuotaRatioToElasticSearchJsonTest.java | 34 +-- .../james/mailbox/store/event/EventFactory.java | 48 +++- 5 files changed, 444 insertions(+), 77 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/james-project/blob/5392ad98/mailbox/plugin/quota-mailing/src/test/java/org/apache/james/mailbox/quota/mailing/listeners/QuotaThresholdConfigurationChangesTest.java ---------------------------------------------------------------------- diff --git a/mailbox/plugin/quota-mailing/src/test/java/org/apache/james/mailbox/quota/mailing/listeners/QuotaThresholdConfigurationChangesTest.java b/mailbox/plugin/quota-mailing/src/test/java/org/apache/james/mailbox/quota/mailing/listeners/QuotaThresholdConfigurationChangesTest.java index 87d720d..3114c65 100644 --- a/mailbox/plugin/quota-mailing/src/test/java/org/apache/james/mailbox/quota/mailing/listeners/QuotaThresholdConfigurationChangesTest.java +++ b/mailbox/plugin/quota-mailing/src/test/java/org/apache/james/mailbox/quota/mailing/listeners/QuotaThresholdConfigurationChangesTest.java @@ -29,10 +29,10 @@ import static org.apache.james.mailbox.quota.model.QuotaThresholdFixture.mailetC import static org.assertj.core.api.Assertions.assertThat; import org.apache.james.eventsourcing.eventstore.EventStore; -import org.apache.james.mailbox.MailboxListener.QuotaUsageUpdatedEvent; import org.apache.james.mailbox.quota.QuotaFixture.Counts; import org.apache.james.mailbox.quota.QuotaFixture.Sizes; import org.apache.james.mailbox.quota.mailing.QuotaMailingListenerConfiguration; +import org.apache.james.mailbox.store.event.EventFactory; import org.apache.mailet.base.test.FakeMailContext; import org.junit.jupiter.api.Test; @@ -56,13 +56,25 @@ public interface QuotaThresholdConfigurationChangesTest { FakeMailContext mailetContext = mailetContext(); QuotaThresholdListenersTestSystem testee = new QuotaThresholdListenersTestSystem(mailetContext, store, CONFIGURATION_50); - - testee.event(new QuotaUsageUpdatedEvent(BOB_USER, QUOTAROOT, Counts._40_PERCENT, Sizes._55_PERCENT, NOW)); + testee.event(EventFactory.quotaUpdated() + .user(BOB_USER) + .quotaRoot(QUOTAROOT) + .quotaCount(Counts._40_PERCENT) + .quotaSize(Sizes._55_PERCENT) + .instant(NOW) + .build()); testee = new QuotaThresholdListenersTestSystem(mailetContext, store, CONFIGURATION_75); mailetContext.resetSentMails(); - testee.event(new QuotaUsageUpdatedEvent(BOB_USER, QUOTAROOT, Counts._40_PERCENT, Sizes._55_PERCENT, NOW)); + + testee.event(EventFactory.quotaUpdated() + .user(BOB_USER) + .quotaRoot(QUOTAROOT) + .quotaCount(Counts._40_PERCENT) + .quotaSize(Sizes._55_PERCENT) + .instant(NOW) + .build()); assertThat(mailetContext.getSentMails()).isEmpty(); } @@ -72,12 +84,25 @@ public interface QuotaThresholdConfigurationChangesTest { FakeMailContext mailetContext = mailetContext(); QuotaThresholdListenersTestSystem testee = new QuotaThresholdListenersTestSystem(mailetContext, store, CONFIGURATION_75); - testee.event(new QuotaUsageUpdatedEvent(BOB_USER, QUOTAROOT, Counts._40_PERCENT, Sizes._92_PERCENT, NOW)); + testee.event(EventFactory.quotaUpdated() + .user(BOB_USER) + .quotaRoot(QUOTAROOT) + .quotaCount(Counts._40_PERCENT) + .quotaSize(Sizes._92_PERCENT) + .instant(NOW) + .build()); testee = new QuotaThresholdListenersTestSystem(mailetContext, store, CONFIGURATION_50); mailetContext.resetSentMails(); - testee.event(new QuotaUsageUpdatedEvent(BOB_USER, QUOTAROOT, Counts._40_PERCENT, Sizes._92_PERCENT, NOW)); + + testee.event(EventFactory.quotaUpdated() + .user(BOB_USER) + .quotaRoot(QUOTAROOT) + .quotaCount(Counts._40_PERCENT) + .quotaSize(Sizes._92_PERCENT) + .instant(NOW) + .build()); assertThat(mailetContext.getSentMails()).isEmpty(); } @@ -87,12 +112,25 @@ public interface QuotaThresholdConfigurationChangesTest { FakeMailContext mailetContext = mailetContext(); QuotaThresholdListenersTestSystem testee = new QuotaThresholdListenersTestSystem(mailetContext, store, CONFIGURATION_50); - testee.event(new QuotaUsageUpdatedEvent(BOB_USER, QUOTAROOT, Counts._40_PERCENT, Sizes._92_PERCENT, NOW)); + testee.event(EventFactory.quotaUpdated() + .user(BOB_USER) + .quotaRoot(QUOTAROOT) + .quotaCount(Counts._40_PERCENT) + .quotaSize(Sizes._92_PERCENT) + .instant(NOW) + .build()); testee = new QuotaThresholdListenersTestSystem(mailetContext, store, CONFIGURATION_75); mailetContext.resetSentMails(); - testee.event(new QuotaUsageUpdatedEvent(BOB_USER, QUOTAROOT, Counts._40_PERCENT, Sizes._92_PERCENT, NOW)); + + testee.event(EventFactory.quotaUpdated() + .user(BOB_USER) + .quotaRoot(QUOTAROOT) + .quotaCount(Counts._40_PERCENT) + .quotaSize(Sizes._92_PERCENT) + .instant(NOW) + .build()); assertThat(mailetContext.getSentMails()).hasSize(1); } @@ -102,12 +140,25 @@ public interface QuotaThresholdConfigurationChangesTest { FakeMailContext mailetContext = mailetContext(); QuotaThresholdListenersTestSystem testee = new QuotaThresholdListenersTestSystem(mailetContext, store, CONFIGURATION_50); - testee.event(new QuotaUsageUpdatedEvent(BOB_USER, QUOTAROOT, Counts._40_PERCENT, Sizes._30_PERCENT, NOW)); + testee.event(EventFactory.quotaUpdated() + .user(BOB_USER) + .quotaRoot(QUOTAROOT) + .quotaCount(Counts._40_PERCENT) + .quotaSize(Sizes._30_PERCENT) + .instant(NOW) + .build()); testee = new QuotaThresholdListenersTestSystem(mailetContext, store, CONFIGURATION_75); mailetContext.resetSentMails(); - testee.event(new QuotaUsageUpdatedEvent(BOB_USER, QUOTAROOT, Counts._40_PERCENT, Sizes._30_PERCENT, NOW)); + + testee.event(EventFactory.quotaUpdated() + .user(BOB_USER) + .quotaRoot(QUOTAROOT) + .quotaCount(Counts._40_PERCENT) + .quotaSize(Sizes._30_PERCENT) + .instant(NOW) + .build()); assertThat(mailetContext.getSentMails()).isEmpty(); } @@ -117,12 +168,24 @@ public interface QuotaThresholdConfigurationChangesTest { FakeMailContext mailetContext = mailetContext(); QuotaThresholdListenersTestSystem testee = new QuotaThresholdListenersTestSystem(mailetContext, store, CONFIGURATION_75); - testee.event(new QuotaUsageUpdatedEvent(BOB_USER, QUOTAROOT, Counts._40_PERCENT, Sizes._30_PERCENT, NOW)); + testee.event(EventFactory.quotaUpdated() + .user(BOB_USER) + .quotaRoot(QUOTAROOT) + .quotaCount(Counts._40_PERCENT) + .quotaSize(Sizes._30_PERCENT) + .instant(NOW) + .build()); testee = new QuotaThresholdListenersTestSystem(mailetContext, store, CONFIGURATION_50); mailetContext.resetSentMails(); - testee.event(new QuotaUsageUpdatedEvent(BOB_USER, QUOTAROOT, Counts._40_PERCENT, Sizes._30_PERCENT, NOW)); + testee.event(EventFactory.quotaUpdated() + .user(BOB_USER) + .quotaRoot(QUOTAROOT) + .quotaCount(Counts._40_PERCENT) + .quotaSize(Sizes._30_PERCENT) + .instant(NOW) + .build()); assertThat(mailetContext.getSentMails()).isEmpty(); } @@ -132,12 +195,25 @@ public interface QuotaThresholdConfigurationChangesTest { FakeMailContext mailetContext = mailetContext(); QuotaThresholdListenersTestSystem testee = new QuotaThresholdListenersTestSystem(mailetContext, store, CONFIGURATION_75); - testee.event(new QuotaUsageUpdatedEvent(BOB_USER, QUOTAROOT, Counts._40_PERCENT, Sizes._60_PERCENT, NOW)); + testee.event(EventFactory.quotaUpdated() + .user(BOB_USER) + .quotaRoot(QUOTAROOT) + .quotaCount(Counts._40_PERCENT) + .quotaSize(Sizes._60_PERCENT) + .instant(NOW) + .build()); testee = new QuotaThresholdListenersTestSystem(mailetContext, store, CONFIGURATION_50); mailetContext.resetSentMails(); - testee.event(new QuotaUsageUpdatedEvent(BOB_USER, QUOTAROOT, Counts._40_PERCENT, Sizes._60_PERCENT, NOW)); + + testee.event(EventFactory.quotaUpdated() + .user(BOB_USER) + .quotaRoot(QUOTAROOT) + .quotaCount(Counts._40_PERCENT) + .quotaSize(Sizes._60_PERCENT) + .instant(NOW) + .build()); assertThat(mailetContext.getSentMails()).hasSize(1); } @@ -147,13 +223,26 @@ public interface QuotaThresholdConfigurationChangesTest { FakeMailContext mailetContext = mailetContext(); QuotaThresholdListenersTestSystem testee = new QuotaThresholdListenersTestSystem(mailetContext, store, CONFIGURATION_50); - testee.event(new QuotaUsageUpdatedEvent(BOB_USER, QUOTAROOT, Counts._40_PERCENT, Sizes._92_PERCENT, NOW)); + testee.event(EventFactory.quotaUpdated() + .user(BOB_USER) + .quotaRoot(QUOTAROOT) + .quotaCount(Counts._40_PERCENT) + .quotaSize(Sizes._92_PERCENT) + .instant(NOW) + .build()); testee = new QuotaThresholdListenersTestSystem(mailetContext, store, CONFIGURATION_50_75); mailetContext.resetSentMails(); - testee.event(new QuotaUsageUpdatedEvent(BOB_USER, QUOTAROOT, Counts._40_PERCENT, Sizes._92_PERCENT, NOW)); + + testee.event(EventFactory.quotaUpdated() + .user(BOB_USER) + .quotaRoot(QUOTAROOT) + .quotaCount(Counts._40_PERCENT) + .quotaSize(Sizes._92_PERCENT) + .instant(NOW) + .build()); assertThat(mailetContext.getSentMails()).hasSize(1); } @@ -163,13 +252,26 @@ public interface QuotaThresholdConfigurationChangesTest { FakeMailContext mailetContext = mailetContext(); QuotaThresholdListenersTestSystem testee = new QuotaThresholdListenersTestSystem(mailetContext, store, CONFIGURATION_50); - testee.event(new QuotaUsageUpdatedEvent(BOB_USER, QUOTAROOT, Counts._40_PERCENT, Sizes._60_PERCENT, NOW)); + testee.event(EventFactory.quotaUpdated() + .user(BOB_USER) + .quotaRoot(QUOTAROOT) + .quotaCount(Counts._40_PERCENT) + .quotaSize(Sizes._60_PERCENT) + .instant(NOW) + .build()); testee = new QuotaThresholdListenersTestSystem(mailetContext, store, CONFIGURATION_50_75); mailetContext.resetSentMails(); - testee.event(new QuotaUsageUpdatedEvent(BOB_USER, QUOTAROOT, Counts._40_PERCENT, Sizes._60_PERCENT, NOW)); + + testee.event(EventFactory.quotaUpdated() + .user(BOB_USER) + .quotaRoot(QUOTAROOT) + .quotaCount(Counts._40_PERCENT) + .quotaSize(Sizes._60_PERCENT) + .instant(NOW) + .build()); assertThat(mailetContext.getSentMails()).isEmpty(); } @@ -179,13 +281,26 @@ public interface QuotaThresholdConfigurationChangesTest { FakeMailContext mailetContext = mailetContext(); QuotaThresholdListenersTestSystem testee = new QuotaThresholdListenersTestSystem(mailetContext, store, CONFIGURATION_75); - testee.event(new QuotaUsageUpdatedEvent(BOB_USER, QUOTAROOT, Counts._40_PERCENT, Sizes._92_PERCENT, NOW)); + testee.event(EventFactory.quotaUpdated() + .user(BOB_USER) + .quotaRoot(QUOTAROOT) + .quotaCount(Counts._40_PERCENT) + .quotaSize(Sizes._92_PERCENT) + .instant(NOW) + .build()); testee = new QuotaThresholdListenersTestSystem(mailetContext, store, CONFIGURATION_50_75); mailetContext.resetSentMails(); - testee.event(new QuotaUsageUpdatedEvent(BOB_USER, QUOTAROOT, Counts._40_PERCENT, Sizes._92_PERCENT, NOW)); + + testee.event(EventFactory.quotaUpdated() + .user(BOB_USER) + .quotaRoot(QUOTAROOT) + .quotaCount(Counts._40_PERCENT) + .quotaSize(Sizes._92_PERCENT) + .instant(NOW) + .build()); assertThat(mailetContext.getSentMails()).isEmpty(); } @@ -196,12 +311,25 @@ public interface QuotaThresholdConfigurationChangesTest { QuotaThresholdListenersTestSystem testee = new QuotaThresholdListenersTestSystem(mailetContext, store, CONFIGURATION_50_75); - testee.event(new QuotaUsageUpdatedEvent(BOB_USER, QUOTAROOT, Counts._40_PERCENT, Sizes._92_PERCENT, NOW)); + testee.event(EventFactory.quotaUpdated() + .user(BOB_USER) + .quotaRoot(QUOTAROOT) + .quotaCount(Counts._40_PERCENT) + .quotaSize(Sizes._92_PERCENT) + .instant(NOW) + .build()); testee = new QuotaThresholdListenersTestSystem(mailetContext, store, CONFIGURATION_75); mailetContext.resetSentMails(); - testee.event(new QuotaUsageUpdatedEvent(BOB_USER, QUOTAROOT, Counts._40_PERCENT, Sizes._92_PERCENT, NOW)); + + testee.event(EventFactory.quotaUpdated() + .user(BOB_USER) + .quotaRoot(QUOTAROOT) + .quotaCount(Counts._40_PERCENT) + .quotaSize(Sizes._92_PERCENT) + .instant(NOW) + .build()); assertThat(mailetContext.getSentMails()).isEmpty(); } @@ -212,12 +340,25 @@ public interface QuotaThresholdConfigurationChangesTest { QuotaThresholdListenersTestSystem testee = new QuotaThresholdListenersTestSystem(mailetContext, store, CONFIGURATION_50_75); - testee.event(new QuotaUsageUpdatedEvent(BOB_USER, QUOTAROOT, Counts._40_PERCENT, Sizes._92_PERCENT, NOW)); + testee.event(EventFactory.quotaUpdated() + .user(BOB_USER) + .quotaRoot(QUOTAROOT) + .quotaCount(Counts._40_PERCENT) + .quotaSize(Sizes._92_PERCENT) + .instant(NOW) + .build()); testee = new QuotaThresholdListenersTestSystem(mailetContext, store, CONFIGURATION_50); mailetContext.resetSentMails(); - testee.event(new QuotaUsageUpdatedEvent(BOB_USER, QUOTAROOT, Counts._40_PERCENT, Sizes._92_PERCENT, NOW)); + + testee.event(EventFactory.quotaUpdated() + .user(BOB_USER) + .quotaRoot(QUOTAROOT) + .quotaCount(Counts._40_PERCENT) + .quotaSize(Sizes._92_PERCENT) + .instant(NOW) + .build()); assertThat(mailetContext.getSentMails()).isEmpty(); } @@ -228,12 +369,25 @@ public interface QuotaThresholdConfigurationChangesTest { QuotaThresholdListenersTestSystem testee = new QuotaThresholdListenersTestSystem(mailetContext, store, CONFIGURATION_50_75); - testee.event(new QuotaUsageUpdatedEvent(BOB_USER, QUOTAROOT, Counts._40_PERCENT, Sizes._60_PERCENT, NOW)); + testee.event(EventFactory.quotaUpdated() + .user(BOB_USER) + .quotaRoot(QUOTAROOT) + .quotaCount(Counts._40_PERCENT) + .quotaSize(Sizes._60_PERCENT) + .instant(NOW) + .build()); testee = new QuotaThresholdListenersTestSystem(mailetContext, store, CONFIGURATION_50); mailetContext.resetSentMails(); - testee.event(new QuotaUsageUpdatedEvent(BOB_USER, QUOTAROOT, Counts._40_PERCENT, Sizes._60_PERCENT, NOW)); + + testee.event(EventFactory.quotaUpdated() + .user(BOB_USER) + .quotaRoot(QUOTAROOT) + .quotaCount(Counts._40_PERCENT) + .quotaSize(Sizes._60_PERCENT) + .instant(NOW) + .build()); assertThat(mailetContext.getSentMails()).isEmpty(); } http://git-wip-us.apache.org/repos/asf/james-project/blob/5392ad98/mailbox/plugin/quota-mailing/src/test/java/org/apache/james/mailbox/quota/mailing/listeners/QuotaThresholdMailingIntegrationTest.java ---------------------------------------------------------------------- diff --git a/mailbox/plugin/quota-mailing/src/test/java/org/apache/james/mailbox/quota/mailing/listeners/QuotaThresholdMailingIntegrationTest.java b/mailbox/plugin/quota-mailing/src/test/java/org/apache/james/mailbox/quota/mailing/listeners/QuotaThresholdMailingIntegrationTest.java index f1a8343..cefec6e 100644 --- a/mailbox/plugin/quota-mailing/src/test/java/org/apache/james/mailbox/quota/mailing/listeners/QuotaThresholdMailingIntegrationTest.java +++ b/mailbox/plugin/quota-mailing/src/test/java/org/apache/james/mailbox/quota/mailing/listeners/QuotaThresholdMailingIntegrationTest.java @@ -38,10 +38,10 @@ import static org.assertj.core.api.Assertions.assertThat; import java.time.Duration; import org.apache.james.eventsourcing.eventstore.EventStore; -import org.apache.james.mailbox.MailboxListener.QuotaUsageUpdatedEvent; import org.apache.james.mailbox.quota.QuotaFixture.Counts; import org.apache.james.mailbox.quota.QuotaFixture.Sizes; import org.apache.james.mailbox.quota.mailing.QuotaMailingListenerConfiguration; +import org.apache.james.mailbox.store.event.EventFactory; import org.apache.james.util.concurrency.ConcurrentTestRunner; import org.apache.mailet.base.test.FakeMailContext; import org.junit.jupiter.api.Test; @@ -53,7 +53,13 @@ public interface QuotaThresholdMailingIntegrationTest { FakeMailContext mailetContext = mailetContext(); QuotaThresholdListenersTestSystem testee = new QuotaThresholdListenersTestSystem(mailetContext, store, DEFAULT_CONFIGURATION); - testee.event(new QuotaUsageUpdatedEvent(BOB_USER, QUOTAROOT, Counts._40_PERCENT, Sizes._30_PERCENT, NOW)); + testee.event(EventFactory.quotaUpdated() + .user(BOB_USER) + .quotaRoot(QUOTAROOT) + .quotaCount(Counts._40_PERCENT) + .quotaSize(Sizes._30_PERCENT) + .instant(NOW) + .build()); assertThat(mailetContext.getSentMails()).isEmpty(); } @@ -62,10 +68,23 @@ public interface QuotaThresholdMailingIntegrationTest { default void shouldNotSendMailWhenNoThresholdUpdate(EventStore store) throws Exception { FakeMailContext mailetContext = mailetContext(); QuotaThresholdListenersTestSystem testee = new QuotaThresholdListenersTestSystem(mailetContext, store, DEFAULT_CONFIGURATION); - testee.event(new QuotaUsageUpdatedEvent(BOB_USER, QUOTAROOT, Counts._40_PERCENT, Sizes._55_PERCENT, ONE_HOUR_AGO)); + + testee.event(EventFactory.quotaUpdated() + .user(BOB_USER) + .quotaRoot(QUOTAROOT) + .quotaCount(Counts._40_PERCENT) + .quotaSize(Sizes._55_PERCENT) + .instant(ONE_HOUR_AGO) + .build()); mailetContext.resetSentMails(); - testee.event(new QuotaUsageUpdatedEvent(BOB_USER, QUOTAROOT, Counts._40_PERCENT, Sizes._55_PERCENT, NOW)); + testee.event(EventFactory.quotaUpdated() + .user(BOB_USER) + .quotaRoot(QUOTAROOT) + .quotaCount(Counts._40_PERCENT) + .quotaSize(Sizes._55_PERCENT) + .instant(NOW) + .build()); assertThat(mailetContext.getSentMails()).isEmpty(); } @@ -74,11 +93,29 @@ public interface QuotaThresholdMailingIntegrationTest { default void shouldNotSendMailWhenThresholdOverPassedRecently(EventStore store) throws Exception { FakeMailContext mailetContext = mailetContext(); QuotaThresholdListenersTestSystem testee = new QuotaThresholdListenersTestSystem(mailetContext, store, DEFAULT_CONFIGURATION); - testee.event(new QuotaUsageUpdatedEvent(BOB_USER, QUOTAROOT, Counts._40_PERCENT, Sizes._55_PERCENT, TWELVE_HOURS_AGO)); - testee.event(new QuotaUsageUpdatedEvent(BOB_USER, QUOTAROOT, Counts._40_PERCENT, Sizes._30_PERCENT, SIX_HOURS_AGO)); + testee.event(EventFactory.quotaUpdated() + .user(BOB_USER) + .quotaRoot(QUOTAROOT) + .quotaCount(Counts._40_PERCENT) + .quotaSize(Sizes._55_PERCENT) + .instant(TWELVE_HOURS_AGO) + .build()); + testee.event(EventFactory.quotaUpdated() + .user(BOB_USER) + .quotaRoot(QUOTAROOT) + .quotaCount(Counts._40_PERCENT) + .quotaSize(Sizes._30_PERCENT) + .instant(SIX_HOURS_AGO) + .build()); mailetContext.resetSentMails(); - testee.event(new QuotaUsageUpdatedEvent(BOB_USER, QUOTAROOT, Counts._40_PERCENT, Sizes._55_PERCENT, NOW)); + testee.event(EventFactory.quotaUpdated() + .user(BOB_USER) + .quotaRoot(QUOTAROOT) + .quotaCount(Counts._40_PERCENT) + .quotaSize(Sizes._55_PERCENT) + .instant(NOW) + .build()); assertThat(mailetContext.getSentMails()).isEmpty(); } @@ -88,7 +125,13 @@ public interface QuotaThresholdMailingIntegrationTest { FakeMailContext mailetContext = mailetContext(); QuotaThresholdListenersTestSystem testee = new QuotaThresholdListenersTestSystem(mailetContext, store, DEFAULT_CONFIGURATION); - testee.event(new QuotaUsageUpdatedEvent(BOB_USER, QUOTAROOT, Counts._40_PERCENT, Sizes._55_PERCENT, NOW)); + testee.event(EventFactory.quotaUpdated() + .user(BOB_USER) + .quotaRoot(QUOTAROOT) + .quotaCount(Counts._40_PERCENT) + .quotaSize(Sizes._55_PERCENT) + .instant(NOW) + .build()); assertThat(mailetContext.getSentMails()).hasSize(1); } @@ -97,9 +140,21 @@ public interface QuotaThresholdMailingIntegrationTest { default void shouldNotSendDuplicates(EventStore store) throws Exception { FakeMailContext mailetContext = mailetContext(); QuotaThresholdListenersTestSystem testee = new QuotaThresholdListenersTestSystem(mailetContext, store, DEFAULT_CONFIGURATION); - testee.event(new QuotaUsageUpdatedEvent(BOB_USER, QUOTAROOT, Counts._40_PERCENT, Sizes._55_PERCENT, ONE_HOUR_AGO)); - - testee.event(new QuotaUsageUpdatedEvent(BOB_USER, QUOTAROOT, Counts._40_PERCENT, Sizes._55_PERCENT, NOW)); + testee.event(EventFactory.quotaUpdated() + .user(BOB_USER) + .quotaRoot(QUOTAROOT) + .quotaCount(Counts._40_PERCENT) + .quotaSize(Sizes._55_PERCENT) + .instant(ONE_HOUR_AGO) + .build()); + + testee.event(EventFactory.quotaUpdated() + .user(BOB_USER) + .quotaRoot(QUOTAROOT) + .quotaCount(Counts._40_PERCENT) + .quotaSize(Sizes._55_PERCENT) + .instant(NOW) + .build()); assertThat(mailetContext.getSentMails()).hasSize(1); } @@ -108,9 +163,21 @@ public interface QuotaThresholdMailingIntegrationTest { default void shouldNotifySeparatelyCountAndSize(EventStore store) throws Exception { FakeMailContext mailetContext = mailetContext(); QuotaThresholdListenersTestSystem testee = new QuotaThresholdListenersTestSystem(mailetContext, store, DEFAULT_CONFIGURATION); - testee.event(new QuotaUsageUpdatedEvent(BOB_USER, QUOTAROOT, Counts._40_PERCENT, Sizes._55_PERCENT, ONE_HOUR_AGO)); - - testee.event(new QuotaUsageUpdatedEvent(BOB_USER, QUOTAROOT, Counts._52_PERCENT, Sizes._60_PERCENT, NOW)); + testee.event(EventFactory.quotaUpdated() + .user(BOB_USER) + .quotaRoot(QUOTAROOT) + .quotaCount(Counts._40_PERCENT) + .quotaSize(Sizes._55_PERCENT) + .instant(ONE_HOUR_AGO) + .build()); + + testee.event(EventFactory.quotaUpdated() + .user(BOB_USER) + .quotaRoot(QUOTAROOT) + .quotaCount(Counts._52_PERCENT) + .quotaSize(Sizes._60_PERCENT) + .instant(NOW) + .build()); assertThat(mailetContext.getSentMails()).hasSize(2); } @@ -120,7 +187,13 @@ public interface QuotaThresholdMailingIntegrationTest { FakeMailContext mailetContext = mailetContext(); QuotaThresholdListenersTestSystem testee = new QuotaThresholdListenersTestSystem(mailetContext, store, DEFAULT_CONFIGURATION); - testee.event(new QuotaUsageUpdatedEvent(BOB_USER, QUOTAROOT, Counts._52_PERCENT, Sizes._55_PERCENT, NOW)); + testee.event(EventFactory.quotaUpdated() + .user(BOB_USER) + .quotaRoot(QUOTAROOT) + .quotaCount(Counts._52_PERCENT) + .quotaSize(Sizes._55_PERCENT) + .instant(NOW) + .build()); assertThat(mailetContext.getSentMails()).hasSize(1); } @@ -129,11 +202,29 @@ public interface QuotaThresholdMailingIntegrationTest { default void shouldSendMailWhenThresholdOverPassedOverGracePeriod(EventStore store) throws Exception { FakeMailContext mailetContext = mailetContext(); QuotaThresholdListenersTestSystem testee = new QuotaThresholdListenersTestSystem(mailetContext, store, DEFAULT_CONFIGURATION); - testee.event(new QuotaUsageUpdatedEvent(BOB_USER, QUOTAROOT, Counts._40_PERCENT, Sizes._55_PERCENT, TWELVE_DAYS_AGO)); - testee.event(new QuotaUsageUpdatedEvent(BOB_USER, QUOTAROOT, Counts._40_PERCENT, Sizes._30_PERCENT, SIX_DAYS_AGO)); + testee.event(EventFactory.quotaUpdated() + .user(BOB_USER) + .quotaRoot(QUOTAROOT) + .quotaCount(Counts._40_PERCENT) + .quotaSize(Sizes._55_PERCENT) + .instant(TWELVE_DAYS_AGO) + .build()); + testee.event(EventFactory.quotaUpdated() + .user(BOB_USER) + .quotaRoot(QUOTAROOT) + .quotaCount(Counts._40_PERCENT) + .quotaSize(Sizes._30_PERCENT) + .instant(SIX_DAYS_AGO) + .build()); mailetContext.resetSentMails(); - testee.event(new QuotaUsageUpdatedEvent(BOB_USER, QUOTAROOT, Counts._40_PERCENT, Sizes._55_PERCENT, NOW)); + testee.event(EventFactory.quotaUpdated() + .user(BOB_USER) + .quotaRoot(QUOTAROOT) + .quotaCount(Counts._40_PERCENT) + .quotaSize(Sizes._55_PERCENT) + .instant(NOW) + .build()); assertThat(mailetContext.getSentMails()).hasSize(1); } @@ -142,10 +233,22 @@ public interface QuotaThresholdMailingIntegrationTest { default void shouldNotSendMailWhenNoThresholdUpdateForCount(EventStore store) throws Exception { FakeMailContext mailetContext = mailetContext(); QuotaThresholdListenersTestSystem testee = new QuotaThresholdListenersTestSystem(mailetContext, store, DEFAULT_CONFIGURATION); - testee.event(new QuotaUsageUpdatedEvent(BOB_USER, QUOTAROOT, Counts._32_PERCENT, Sizes._55_PERCENT, TWO_DAYS_AGO)); + testee.event(EventFactory.quotaUpdated() + .user(BOB_USER) + .quotaRoot(QUOTAROOT) + .quotaCount(Counts._32_PERCENT) + .quotaSize(Sizes._55_PERCENT) + .instant(TWO_DAYS_AGO) + .build()); mailetContext.resetSentMails(); - testee.event(new QuotaUsageUpdatedEvent(BOB_USER, QUOTAROOT, Counts._40_PERCENT, Sizes._60_PERCENT, TWO_DAYS_AGO)); + testee.event(EventFactory.quotaUpdated() + .user(BOB_USER) + .quotaRoot(QUOTAROOT) + .quotaCount(Counts._40_PERCENT) + .quotaSize(Sizes._60_PERCENT) + .instant(TWO_DAYS_AGO) + .build()); assertThat(mailetContext.getSentMails()).isEmpty(); } @@ -154,11 +257,29 @@ public interface QuotaThresholdMailingIntegrationTest { default void shouldNotSendMailWhenThresholdOverPassedRecentlyForCount(EventStore store) throws Exception { FakeMailContext mailetContext = mailetContext(); QuotaThresholdListenersTestSystem testee = new QuotaThresholdListenersTestSystem(mailetContext, store, DEFAULT_CONFIGURATION); - testee.event(new QuotaUsageUpdatedEvent(BOB_USER, QUOTAROOT, Counts._52_PERCENT, Sizes._30_PERCENT, TWELVE_HOURS_AGO)); - testee.event(new QuotaUsageUpdatedEvent(BOB_USER, QUOTAROOT, Counts._40_PERCENT, Sizes._30_PERCENT, SIX_HOURS_AGO)); + testee.event(EventFactory.quotaUpdated() + .user(BOB_USER) + .quotaRoot(QUOTAROOT) + .quotaCount(Counts._52_PERCENT) + .quotaSize(Sizes._30_PERCENT) + .instant(TWELVE_HOURS_AGO) + .build()); + testee.event(EventFactory.quotaUpdated() + .user(BOB_USER) + .quotaRoot(QUOTAROOT) + .quotaCount(Counts._40_PERCENT) + .quotaSize(Sizes._30_PERCENT) + .instant(SIX_HOURS_AGO) + .build()); mailetContext.resetSentMails(); - testee.event(new QuotaUsageUpdatedEvent(BOB_USER, QUOTAROOT, Counts._52_PERCENT, Sizes._30_PERCENT, NOW)); + testee.event(EventFactory.quotaUpdated() + .user(BOB_USER) + .quotaRoot(QUOTAROOT) + .quotaCount(Counts._52_PERCENT) + .quotaSize(Sizes._30_PERCENT) + .instant(NOW) + .build()); assertThat(mailetContext.getSentMails()).isEmpty(); } @@ -168,7 +289,13 @@ public interface QuotaThresholdMailingIntegrationTest { FakeMailContext mailetContext = mailetContext(); QuotaThresholdListenersTestSystem testee = new QuotaThresholdListenersTestSystem(mailetContext, store, DEFAULT_CONFIGURATION); - testee.event(new QuotaUsageUpdatedEvent(BOB_USER, QUOTAROOT, Counts._52_PERCENT, Sizes._30_PERCENT, TWELVE_HOURS_AGO)); + testee.event(EventFactory.quotaUpdated() + .user(BOB_USER) + .quotaRoot(QUOTAROOT) + .quotaCount(Counts._52_PERCENT) + .quotaSize(Sizes._30_PERCENT) + .instant(TWELVE_HOURS_AGO) + .build()); assertThat(mailetContext.getSentMails()).hasSize(1); } @@ -177,11 +304,29 @@ public interface QuotaThresholdMailingIntegrationTest { default void shouldSendMailWhenThresholdOverPassedOverGracePeriodForCount(EventStore store) throws Exception { FakeMailContext mailetContext = mailetContext(); QuotaThresholdListenersTestSystem testee = new QuotaThresholdListenersTestSystem(mailetContext, store, DEFAULT_CONFIGURATION); - testee.event(new QuotaUsageUpdatedEvent(BOB_USER, QUOTAROOT, Counts._52_PERCENT, Sizes._30_PERCENT, TWELVE_DAYS_AGO)); - testee.event(new QuotaUsageUpdatedEvent(BOB_USER, QUOTAROOT, Counts._40_PERCENT, Sizes._30_PERCENT, SIX_DAYS_AGO)); + testee.event(EventFactory.quotaUpdated() + .user(BOB_USER) + .quotaRoot(QUOTAROOT) + .quotaCount(Counts._52_PERCENT) + .quotaSize(Sizes._30_PERCENT) + .instant(TWELVE_DAYS_AGO) + .build()); + testee.event(EventFactory.quotaUpdated() + .user(BOB_USER) + .quotaRoot(QUOTAROOT) + .quotaCount(Counts._40_PERCENT) + .quotaSize(Sizes._30_PERCENT) + .instant(SIX_DAYS_AGO) + .build()); mailetContext.resetSentMails(); - testee.event(new QuotaUsageUpdatedEvent(BOB_USER, QUOTAROOT, Counts._52_PERCENT, Sizes._30_PERCENT, NOW)); + testee.event(EventFactory.quotaUpdated() + .user(BOB_USER) + .quotaRoot(QUOTAROOT) + .quotaCount(Counts._52_PERCENT) + .quotaSize(Sizes._30_PERCENT) + .instant(NOW) + .build()); assertThat(mailetContext.getSentMails()).hasSize(1); } @@ -195,8 +340,20 @@ public interface QuotaThresholdMailingIntegrationTest { .gracePeriod(GRACE_PERIOD) .build()); - testee.event(new QuotaUsageUpdatedEvent(BOB_USER, QUOTAROOT, Counts._52_PERCENT, Sizes._30_PERCENT, NOW)); - testee.event(new QuotaUsageUpdatedEvent(BOB_USER, QUOTAROOT, Counts._85_PERCENT, Sizes._42_PERCENT, NOW)); + testee.event(EventFactory.quotaUpdated() + .user(BOB_USER) + .quotaRoot(QUOTAROOT) + .quotaCount(Counts._52_PERCENT) + .quotaSize(Sizes._30_PERCENT) + .instant(NOW) + .build()); + testee.event(EventFactory.quotaUpdated() + .user(BOB_USER) + .quotaRoot(QUOTAROOT) + .quotaCount(Counts._85_PERCENT) + .quotaSize(Sizes._42_PERCENT) + .instant(NOW) + .build()); assertThat(mailetContext.getSentMails()) .hasSize(2); @@ -212,7 +369,13 @@ public interface QuotaThresholdMailingIntegrationTest { .build()); ConcurrentTestRunner.builder() - .operation((threadNb, step) -> testee.event(new QuotaUsageUpdatedEvent(BOB_USER, QUOTAROOT, Counts._40_PERCENT, Sizes._55_PERCENT, NOW))) + .operation((threadNb, step) -> testee.event(EventFactory.quotaUpdated() + .user(BOB_USER) + .quotaRoot(QUOTAROOT) + .quotaCount(Counts._40_PERCENT) + .quotaSize(Sizes._55_PERCENT) + .instant(NOW) + .build())) .threadCount(10) .runSuccessfullyWithin(Duration.ofMinutes(1)); http://git-wip-us.apache.org/repos/asf/james-project/blob/5392ad98/mailbox/plugin/quota-search-elasticsearch/src/test/java/org/apache/james/quota/search/elasticsearch/events/ElasticSearchQuotaMailboxListenerTest.java ---------------------------------------------------------------------- diff --git a/mailbox/plugin/quota-search-elasticsearch/src/test/java/org/apache/james/quota/search/elasticsearch/events/ElasticSearchQuotaMailboxListenerTest.java b/mailbox/plugin/quota-search-elasticsearch/src/test/java/org/apache/james/quota/search/elasticsearch/events/ElasticSearchQuotaMailboxListenerTest.java index d749146..4f33fe5 100644 --- a/mailbox/plugin/quota-search-elasticsearch/src/test/java/org/apache/james/quota/search/elasticsearch/events/ElasticSearchQuotaMailboxListenerTest.java +++ b/mailbox/plugin/quota-search-elasticsearch/src/test/java/org/apache/james/quota/search/elasticsearch/events/ElasticSearchQuotaMailboxListenerTest.java @@ -34,9 +34,9 @@ import org.apache.james.backends.es.ElasticSearchIndexer; import org.apache.james.backends.es.EmbeddedElasticSearch; import org.apache.james.backends.es.utils.TestingClientProvider; import org.apache.james.mailbox.Event; -import org.apache.james.mailbox.MailboxListener.QuotaUsageUpdatedEvent; import org.apache.james.mailbox.quota.QuotaFixture.Counts; import org.apache.james.mailbox.quota.QuotaFixture.Sizes; +import org.apache.james.mailbox.store.event.EventFactory; import org.apache.james.quota.search.elasticsearch.QuotaRatioElasticSearchConstants; import org.apache.james.quota.search.elasticsearch.QuotaSearchIndexCreationUtil; import org.apache.james.quota.search.elasticsearch.json.QuotaRatioToElasticSearchJson; @@ -93,7 +93,13 @@ public class ElasticSearchQuotaMailboxListenerTest { @Test public void eventShouldIndexEventWhenQuotaEvent() throws Exception { - quotaMailboxListener.event(new QuotaUsageUpdatedEvent(BOB_USER, QUOTAROOT, Counts._52_PERCENT, Sizes._55_PERCENT, NOW)); + quotaMailboxListener.event(EventFactory.quotaUpdated() + .user(BOB_USER) + .quotaRoot(QUOTAROOT) + .quotaCount(Counts._52_PERCENT) + .quotaSize(Sizes._55_PERCENT) + .instant(NOW) + .build()); embeddedElasticSearch.awaitForElasticSearch(); http://git-wip-us.apache.org/repos/asf/james-project/blob/5392ad98/mailbox/plugin/quota-search-elasticsearch/src/test/java/org/apache/james/quota/search/elasticsearch/json/QuotaRatioToElasticSearchJsonTest.java ---------------------------------------------------------------------- diff --git a/mailbox/plugin/quota-search-elasticsearch/src/test/java/org/apache/james/quota/search/elasticsearch/json/QuotaRatioToElasticSearchJsonTest.java b/mailbox/plugin/quota-search-elasticsearch/src/test/java/org/apache/james/quota/search/elasticsearch/json/QuotaRatioToElasticSearchJsonTest.java index 4564be1..be9a938 100644 --- a/mailbox/plugin/quota-search-elasticsearch/src/test/java/org/apache/james/quota/search/elasticsearch/json/QuotaRatioToElasticSearchJsonTest.java +++ b/mailbox/plugin/quota-search-elasticsearch/src/test/java/org/apache/james/quota/search/elasticsearch/json/QuotaRatioToElasticSearchJsonTest.java @@ -30,21 +30,22 @@ import org.apache.james.core.User; import org.apache.james.mailbox.MailboxListener.QuotaUsageUpdatedEvent; import org.apache.james.mailbox.model.QuotaRoot; import org.apache.james.mailbox.quota.QuotaFixture; +import org.apache.james.mailbox.store.event.EventFactory; import org.apache.james.util.ClassLoaderUtils; import org.junit.jupiter.api.Test; -public class QuotaRatioToElasticSearchJsonTest { +class QuotaRatioToElasticSearchJsonTest { @Test - public void quotaRatioShouldBeWellConvertedToJson() throws IOException { + void quotaRatioShouldBeWellConvertedToJson() throws IOException { String user = "u...@domain.org"; - QuotaUsageUpdatedEvent event = new QuotaUsageUpdatedEvent( - User.fromUsername(user), - QuotaRoot.quotaRoot("any", Optional.of(Domain.of("domain.org"))), - QuotaFixture.Counts._52_PERCENT, - QuotaFixture.Sizes._55_PERCENT, - Instant.now()); - + QuotaUsageUpdatedEvent event = EventFactory.quotaUpdated() + .user(User.fromUsername(user)) + .quotaRoot(QuotaRoot.quotaRoot(user, Optional.of(Domain.of("domain.org")))) + .quotaCount(QuotaFixture.Counts._52_PERCENT) + .quotaSize(QuotaFixture.Sizes._55_PERCENT) + .instant(Instant.now()) + .build(); QuotaRatioToElasticSearchJson quotaRatioToElasticSearchJson = new QuotaRatioToElasticSearchJson(); String convertToJson = quotaRatioToElasticSearchJson.convertToJson(user, event); @@ -55,14 +56,15 @@ public class QuotaRatioToElasticSearchJsonTest { } @Test - public void quotaRatioShouldBeWellConvertedToJsonWhenNoDomain() throws IOException { + void quotaRatioShouldBeWellConvertedToJsonWhenNoDomain() throws IOException { String user = "user"; - QuotaUsageUpdatedEvent event = new QuotaUsageUpdatedEvent( - User.fromUsername(user), - QuotaRoot.quotaRoot("any", Optional.empty()), - QuotaFixture.Counts._52_PERCENT, - QuotaFixture.Sizes._55_PERCENT, - Instant.now()); + QuotaUsageUpdatedEvent event = EventFactory.quotaUpdated() + .user(User.fromUsername(user)) + .quotaRoot(QuotaRoot.quotaRoot(user, Optional.empty())) + .quotaCount(QuotaFixture.Counts._52_PERCENT) + .quotaSize(QuotaFixture.Sizes._55_PERCENT) + .instant(Instant.now()) + .build(); QuotaRatioToElasticSearchJson quotaRatioToElasticSearchJson = new QuotaRatioToElasticSearchJson(); http://git-wip-us.apache.org/repos/asf/james-project/blob/5392ad98/mailbox/store/src/main/java/org/apache/james/mailbox/store/event/EventFactory.java ---------------------------------------------------------------------- diff --git a/mailbox/store/src/main/java/org/apache/james/mailbox/store/event/EventFactory.java b/mailbox/store/src/main/java/org/apache/james/mailbox/store/event/EventFactory.java index 5695c6f..e4a96e8 100644 --- a/mailbox/store/src/main/java/org/apache/james/mailbox/store/event/EventFactory.java +++ b/mailbox/store/src/main/java/org/apache/james/mailbox/store/event/EventFactory.java @@ -19,6 +19,8 @@ package org.apache.james.mailbox.store.event; +import java.time.Instant; + import org.apache.james.core.User; import org.apache.james.core.quota.QuotaCount; import org.apache.james.core.quota.QuotaSize; @@ -30,6 +32,7 @@ import org.apache.james.mailbox.acl.ACLDiff; import org.apache.james.mailbox.model.MailboxId; import org.apache.james.mailbox.model.MailboxPath; import org.apache.james.mailbox.model.MessageMetaData; +import org.apache.james.mailbox.model.Quota; import org.apache.james.mailbox.model.QuotaRoot; import org.apache.james.mailbox.model.UpdatedFlags; import org.apache.james.mailbox.store.mail.model.Mailbox; @@ -137,16 +140,31 @@ public class EventFactory { } @FunctionalInterface - public interface RequireQuotaCount<T> { + public interface RequireQuotaCountValue<T> { T quotaCount(QuotaCount quotaCount); } @FunctionalInterface - public interface RequireQuotaSize<T> { + public interface RequireQuotaSizeValue<T> { T quotaSize(QuotaSize quotaSize); } @FunctionalInterface + public interface RequireQuotaCount<T> { + T quotaCount(Quota<QuotaCount> quotaCount); + } + + @FunctionalInterface + public interface RequireQuotaSize<T> { + T quotaSize(Quota<QuotaSize> quotaSize); + } + + @FunctionalInterface + public interface RequireInstant<T> { + T instant(Instant instant); + } + + @FunctionalInterface public interface RequireMailboxEvent<T> extends RequireSession<RequireMailbox<T>> {} public static class MailboxAddedFinalStage { @@ -336,6 +354,26 @@ public class EventFactory { } } + public static final class QuotaUsageUpdatedFinalStage { + private final User user; + private final QuotaRoot quotaRoot; + private final Quota<QuotaCount> countQuota; + private final Quota<QuotaSize> sizeQuota; + private final Instant instant; + + QuotaUsageUpdatedFinalStage(User user, QuotaRoot quotaRoot, Quota<QuotaCount> countQuota, Quota<QuotaSize> sizeQuota, Instant instant) { + this.user = user; + this.quotaRoot = quotaRoot; + this.countQuota = countQuota; + this.sizeQuota = sizeQuota; + this.instant = instant; + } + + public MailboxListener.QuotaUsageUpdatedEvent build() { + return new MailboxListener.QuotaUsageUpdatedEvent(user, quotaRoot, countQuota, sizeQuota, instant); + } + } + public static RequireMailboxEvent<RequireMetadata<AddedFinalStage>> added() { return user -> sessionId -> mailboxId -> path -> metaData -> new AddedFinalStage(path, mailboxId, user, sessionId, metaData); } @@ -352,7 +390,7 @@ public class EventFactory { return user -> sessionId -> mailboxId -> oldPath -> newPath -> new MailboxRenamedFinalStage(oldPath, mailboxId, user, sessionId, newPath); } - public static RequireMailboxEvent<RequireQuotaRoot<RequireQuotaCount<RequireQuotaSize<MailboxDeletionFinalStage>>>> mailboxDeleted() { + public static RequireMailboxEvent<RequireQuotaRoot<RequireQuotaCountValue<RequireQuotaSizeValue<MailboxDeletionFinalStage>>>> mailboxDeleted() { return user -> sessionId -> mailboxId -> path -> quotaRoot -> quotaCount -> quotaSize -> new MailboxDeletionFinalStage( path, mailboxId, user, sessionId, quotaRoot, quotaCount, quotaSize); } @@ -365,6 +403,10 @@ public class EventFactory { return user -> sessionId -> mailboxId -> path -> aclDiff -> new MailboxAclUpdatedFinalStage(path, mailboxId, user, sessionId, aclDiff); } + public static RequireUser<RequireQuotaRoot<RequireQuotaCount<RequireQuotaSize<RequireInstant<QuotaUsageUpdatedFinalStage>>>>> quotaUpdated() { + return user -> quotaRoot -> quotaCount -> quotaSize -> instant -> new QuotaUsageUpdatedFinalStage(user, quotaRoot, quotaCount, quotaSize, instant); + } + public static MessageMoveEvent.Builder moved() { return MessageMoveEvent.builder(); } --------------------------------------------------------------------- To unsubscribe, e-mail: server-dev-unsubscr...@james.apache.org For additional commands, e-mail: server-dev-h...@james.apache.org