public void tryAddition(long count, long size) throws OverQuotaException { tryCountAddition(count); trySizeAddition(size); }
@Override public ListenerType getType() { return currentQuotaManager.getAssociatedListenerType(); }
@Test public void getCurrentStorageShouldReturnRecalculateSizeWhenEntryIsNotInitialized() throws Exception { when(mockedCurrentQuotaCalculator.recalculateCurrentQuotas(QUOTA_ROOT, null)) .thenReturn(new CurrentQuotaCalculator.CurrentQuotas(18, 512)); assertThat(testee.getCurrentStorage(QUOTA_ROOT)).isEqualTo(QuotaSize.size(512)); }
@Override public DefaultUserQuotaRootResolver createQuotaRootResolver(StoreMailboxManager mailboxManager) { if (quotaRootResolver == null) { quotaRootResolver = new DefaultUserQuotaRootResolver(mailboxManager.getMapperFactory()); } return quotaRootResolver; }
@Override public QuotaManager createQuotaManager(MaxQuotaManager maxQuotaManager, StoreMailboxManager mailboxManager) throws Exception { QuotaRootResolver quotaRootResolver = createQuotaRootResolver(mailboxManager); InMemoryCurrentQuotaManager currentQuotaManager = createCurrentQuotaManager(mailboxManager); StoreQuotaManager quotaManager = new StoreQuotaManager(currentQuotaManager, maxQuotaManager); ListeningCurrentQuotaUpdater listeningCurrentQuotaUpdater = new ListeningCurrentQuotaUpdater(currentQuotaManager, quotaRootResolver, mailboxManager.getEventDispatcher(), quotaManager); mailboxManager.setQuotaManager(quotaManager); mailboxManager.addGlobalListener(listeningCurrentQuotaUpdater, null); return quotaManager; }
@Override protected QuotaManager createQuotaManager(MaxQuotaManager maxQuotaManager, CurrentQuotaManager currentQuotaManager) { return new StoreQuotaManager(currentQuotaManager, maxQuotaManager); }
public CurrentQuotas recalculateCurrentQuotas(QuotaRoot quotaRoot, MailboxSession session) throws MailboxException { List<Mailbox> mailboxes = retrieveMailboxes(quotaRoot, session); MessageMapper mapper = factory.getMessageMapper(session); long messagesSizes = 0; long messageCount = 0; for (Mailbox mailbox : mailboxes) { Iterator<MailboxMessage> messages = mapper.findInMailbox(mailbox, MessageRange.all(), MessageMapper.FetchType.Metadata, -1); messageCount += mapper.countMessagesInMailbox(mailbox); while (messages.hasNext()) { messagesSizes += messages.next().getFullContentOctets(); } } return new CurrentQuotas(messageCount, messagesSizes); }
@Override protected MessageIdManagerTestSystem createTestingData() throws Exception { return CassandraMessageIdManagerTestSystem.createTestingData(cassandra, new NoQuotaManager(), MailboxEventDispatcher.ofListener(mock(MailboxListener.class))); } }
@Override public Entry load(QuotaRoot quotaRoot) throws Exception { return new Entry(quotaCalculator.recalculateCurrentQuotas(quotaRoot, mailboxManager.createSystemSession(quotaRoot.getValue()))); } });
@Override public InMemoryCurrentQuotaManager createCurrentQuotaManager(StoreMailboxManager mailboxManager) { if (currentQuotaManager == null) { currentQuotaManager = new InMemoryCurrentQuotaManager( new CurrentQuotaCalculator(mailboxManager.getMapperFactory(), createQuotaRootResolver(mailboxManager)), mailboxManager); } return currentQuotaManager; }
public static MessageIdManagerTestSystem createTestingDataWithQuota(CassandraCluster cassandra, QuotaManager quotaManager, CurrentQuotaManager currentQuotaManager) throws Exception { CassandraMailboxSessionMapperFactory mapperFactory = CassandraTestSystemFixture.createMapperFactory(cassandra); CassandraMailboxManager mailboxManager = CassandraTestSystemFixture.createMailboxManager(mapperFactory); ListeningCurrentQuotaUpdater listeningCurrentQuotaUpdater = new ListeningCurrentQuotaUpdater( (StoreCurrentQuotaManager) currentQuotaManager, mailboxManager.getQuotaRootResolver(), mailboxManager.getEventDispatcher(), quotaManager); mailboxManager.addGlobalListener(listeningCurrentQuotaUpdater, mailboxManager.createSystemSession("System")); return new MessageIdManagerTestSystem(CassandraTestSystemFixture.createMessageIdManager(mapperFactory, quotaManager, mailboxManager.getEventDispatcher()), new CassandraMessageId.Factory(), mapperFactory, mailboxManager); }
@Override protected void configure() { bind(NoQuotaManager.class).in(Scopes.SINGLETON); bind(DefaultUserQuotaRootResolver.class).in(Scopes.SINGLETON); bind(NoMaxQuotaManager.class).in(Scopes.SINGLETON); bind(MaxQuotaManager.class).toInstance(new NoMaxQuotaManager()); bind(QuotaManager.class).to(NoQuotaManager.class); bind(QuotaRootResolver.class).to(DefaultUserQuotaRootResolver.class); bind(UserQuotaRootResolver.class).to(DefaultUserQuotaRootResolver.class); }
@Override public QuotaRoot fromString(String serializedQuotaRoot) throws MailboxException { List<String> parts = toParts(serializedQuotaRoot); User user = User.fromUsername(parts.get(1)); return QuotaRoot.quotaRoot(serializedQuotaRoot, user.getDomainPart()); }
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()); } }
@Test public void getCurrentMessageCountShouldReturnRecalculateMessageCountWhenEntryIsNotInitialized() throws Exception { when(mockedCurrentQuotaCalculator.recalculateCurrentQuotas(QUOTA_ROOT, null)) .thenReturn(new CurrentQuotaCalculator.CurrentQuotas(18, 512)); assertThat(testee.getCurrentMessageCount(QUOTA_ROOT)).isEqualTo(QuotaCount.count(18)); }
public static StoreMessageIdManager createMessageIdManager(CassandraMailboxSessionMapperFactory mapperFactory, QuotaManager quotaManager, MailboxEventDispatcher dispatcher) throws Exception { return new StoreMessageIdManager( createMailboxManager(mapperFactory), mapperFactory, dispatcher, new CassandraMessageId.Factory(), quotaManager, new DefaultUserQuotaRootResolver(mapperFactory)); }
public static QuotaManager createQuotaManager(CassandraCluster cassandra, MaxQuotaManager maxQuotaManager) { return new StoreQuotaManager(new CassandraCurrentQuotaManager(cassandra.getConf()), maxQuotaManager); }
@Override public CombinationManagerTestSystem createTestingData() throws Exception { return CassandraCombinationManagerTestSystem.createTestingData(cassandra, new NoQuotaManager(), MailboxEventDispatcher.ofListener(mock(MailboxListener.class))); }
@Test public void getCurrentStorageShouldReRetrieveStoredQuotasWhenCalculateOnUnknownQuotaIsTrue() throws Exception { when(mockedCurrentQuotaCalculator.recalculateCurrentQuotas(QUOTA_ROOT, null)) .thenReturn(new CurrentQuotaCalculator.CurrentQuotas(18, 512)); testee.increase(QUOTA_ROOT, 10, 100); assertThat(testee.getCurrentMessageCount(QUOTA_ROOT)).isEqualTo(QuotaCount.count(28)); assertThat(testee.getCurrentStorage(QUOTA_ROOT)).isEqualTo(QuotaSize.size(612)); }