JAMES-1868 Adding a metric for Local Delivered emails
Project: http://git-wip-us.apache.org/repos/asf/james-project/repo Commit: http://git-wip-us.apache.org/repos/asf/james-project/commit/9d40cb20 Tree: http://git-wip-us.apache.org/repos/asf/james-project/tree/9d40cb20 Diff: http://git-wip-us.apache.org/repos/asf/james-project/diff/9d40cb20 Branch: refs/heads/master Commit: 9d40cb205160d05e4caefcfb49885e262a84e3c8 Parents: 6ce3c8e Author: Benoit Tellier <btell...@linagora.com> Authored: Fri Nov 25 10:44:34 2016 +0700 Committer: Benoit Tellier <btell...@linagora.com> Committed: Wed Nov 30 16:32:21 2016 +0700 ---------------------------------------------------------------------- .../james/transport/mailets/LocalDelivery.java | 7 ++++++- .../james/transport/mailets/ToRecipientFolder.java | 9 ++++++++- .../transport/mailets/delivery/SimpleMailStore.java | 15 +++++++++++++-- .../mailets/delivery/LocalDeliveryTest.java | 7 ++++++- .../mailets/delivery/SieveIntegrationTest.java | 2 +- .../mailets/delivery/SimpleMailStoreTest.java | 2 ++ .../mailets/delivery/ToRecipientFolderTest.java | 6 +++++- 7 files changed, 41 insertions(+), 7 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/james-project/blob/9d40cb20/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/LocalDelivery.java ---------------------------------------------------------------------- diff --git a/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/LocalDelivery.java b/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/LocalDelivery.java index 70a193e..130bf91 100644 --- a/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/LocalDelivery.java +++ b/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/LocalDelivery.java @@ -28,6 +28,7 @@ import org.apache.james.domainlist.api.DomainList; import org.apache.james.mailbox.MailboxManager; import org.apache.james.mailbox.model.MailboxConstants; +import org.apache.james.metrics.api.MetricFactory; import org.apache.james.transport.mailets.delivery.MailDispatcher; import org.apache.james.transport.mailets.delivery.MailboxAppender; import org.apache.james.transport.mailets.delivery.SimpleMailStore; @@ -46,14 +47,17 @@ import org.apache.mailet.base.GenericMailet; */ public class LocalDelivery extends GenericMailet { + public static final String LOCAL_DELIVERED_MAILS_METRIC_NAME = "localDeliveredMails"; private final UsersRepository usersRepository; private final MailboxManager mailboxManager; private final RecipientRewriteTable recipientRewriteTable; + private final MetricFactory metricFactory; private MailDispatcher mailDispatcher; @Inject public LocalDelivery(org.apache.james.rrt.api.RecipientRewriteTable rrt, UsersRepository usersRepository, - @Named("mailboxmanager") MailboxManager mailboxManager, DomainList domainList) { + @Named("mailboxmanager") MailboxManager mailboxManager, DomainList domainList, MetricFactory metricFactory) { + this.metricFactory = metricFactory; this.usersRepository = usersRepository; this.mailboxManager = mailboxManager; this.recipientRewriteTable = new RecipientRewriteTable(rrt, domainList); @@ -82,6 +86,7 @@ public class LocalDelivery extends GenericMailet { .mailboxAppender(new MailboxAppender(mailboxManager, getMailetContext().getLogger())) .usersRepository(usersRepository) .folder(MailboxConstants.INBOX) + .metric(metricFactory.generate(LOCAL_DELIVERED_MAILS_METRIC_NAME)) .log(log) .build()) .consume(getInitParameter("consume", true)) http://git-wip-us.apache.org/repos/asf/james-project/blob/9d40cb20/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/ToRecipientFolder.java ---------------------------------------------------------------------- diff --git a/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/ToRecipientFolder.java b/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/ToRecipientFolder.java index 9cebeb1..bba8ed2 100644 --- a/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/ToRecipientFolder.java +++ b/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/ToRecipientFolder.java @@ -18,6 +18,8 @@ ****************************************************************/ package org.apache.james.transport.mailets; +import static org.apache.james.transport.mailets.LocalDelivery.LOCAL_DELIVERED_MAILS_METRIC_NAME; + import javax.inject.Inject; import javax.inject.Named; import javax.mail.MessagingException; @@ -25,6 +27,7 @@ import javax.mail.MessagingException; import org.apache.commons.logging.Log; import org.apache.james.mailbox.MailboxManager; import org.apache.james.mailbox.model.MailboxConstants; +import org.apache.james.metrics.api.MetricFactory; import org.apache.james.transport.mailets.delivery.MailDispatcher; import org.apache.james.transport.mailets.delivery.MailboxAppender; import org.apache.james.transport.mailets.delivery.SimpleMailStore; @@ -56,10 +59,13 @@ public class ToRecipientFolder extends GenericMailet { private final MailboxManager mailboxManager; private final UsersRepository usersRepository; + private final MetricFactory metricFactory; private MailDispatcher mailDispatcher; @Inject - public ToRecipientFolder(@Named("mailboxmanager")MailboxManager mailboxManager, UsersRepository usersRepository) { + public ToRecipientFolder(@Named("mailboxmanager")MailboxManager mailboxManager, UsersRepository usersRepository, + MetricFactory metricFactory) { + this.metricFactory = metricFactory; this.mailboxManager = mailboxManager; this.usersRepository = usersRepository; } @@ -81,6 +87,7 @@ public class ToRecipientFolder extends GenericMailet { .mailboxAppender(new MailboxAppender(mailboxManager, getMailetContext().getLogger())) .usersRepository(usersRepository) .folder(getInitParameter(FOLDER_PARAMETER, MailboxConstants.INBOX)) + .metric(metricFactory.generate(LOCAL_DELIVERED_MAILS_METRIC_NAME)) .log(log) .build()) .consume(getInitParameter(CONSUME_PARAMETER, false)) http://git-wip-us.apache.org/repos/asf/james-project/blob/9d40cb20/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/delivery/SimpleMailStore.java ---------------------------------------------------------------------- diff --git a/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/delivery/SimpleMailStore.java b/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/delivery/SimpleMailStore.java index d693065..7f2783e 100644 --- a/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/delivery/SimpleMailStore.java +++ b/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/delivery/SimpleMailStore.java @@ -22,6 +22,7 @@ package org.apache.james.transport.mailets.delivery; import javax.mail.MessagingException; import org.apache.commons.logging.Log; +import org.apache.james.metrics.api.Metric; import org.apache.james.user.api.UsersRepository; import org.apache.james.user.api.UsersRepositoryException; import org.apache.mailet.Mail; @@ -39,6 +40,7 @@ public class SimpleMailStore implements MailStore { private UsersRepository usersRepos; private MailboxAppender mailboxAppender; private String folder; + private Metric metric; private Log log; public Builder folder(String folder) { @@ -61,23 +63,31 @@ public class SimpleMailStore implements MailStore { return this; } + public Builder metric(Metric metric) { + this.metric = metric; + return this; + } + public SimpleMailStore build() throws MessagingException { Preconditions.checkNotNull(usersRepos); Preconditions.checkNotNull(folder); Preconditions.checkNotNull(log); Preconditions.checkNotNull(mailboxAppender); - return new SimpleMailStore(mailboxAppender, usersRepos, log, folder); + Preconditions.checkNotNull(metric); + return new SimpleMailStore(mailboxAppender, usersRepos, metric, log, folder); } } private final MailboxAppender mailboxAppender; private final UsersRepository usersRepository; + private final Metric metric; private final Log log; private final String folder; - private SimpleMailStore(MailboxAppender mailboxAppender, UsersRepository usersRepository, Log log, String folder) { + private SimpleMailStore(MailboxAppender mailboxAppender, UsersRepository usersRepository, Metric metric, Log log, String folder) { this.mailboxAppender = mailboxAppender; this.usersRepository = usersRepository; + this.metric = metric; this.log = log; this.folder = folder; } @@ -89,6 +99,7 @@ public class SimpleMailStore implements MailStore { String locatedFolder = locateFolder(username, mail); mailboxAppender.append(mail.getMessage(), username, locatedFolder); + metric.increment(); log.info("Local delivered mail " + mail.getName() + " successfully from " + DeliveryUtils.prettyPrint(mail.getSender()) + " to " + DeliveryUtils.prettyPrint(recipient) + " in folder " + locatedFolder); } http://git-wip-us.apache.org/repos/asf/james-project/blob/9d40cb20/server/mailet/mailets/src/test/java/org/apache/james/transport/mailets/delivery/LocalDeliveryTest.java ---------------------------------------------------------------------- diff --git a/server/mailet/mailets/src/test/java/org/apache/james/transport/mailets/delivery/LocalDeliveryTest.java b/server/mailet/mailets/src/test/java/org/apache/james/transport/mailets/delivery/LocalDeliveryTest.java index 61d842b..84d2e50 100644 --- a/server/mailet/mailets/src/test/java/org/apache/james/transport/mailets/delivery/LocalDeliveryTest.java +++ b/server/mailet/mailets/src/test/java/org/apache/james/transport/mailets/delivery/LocalDeliveryTest.java @@ -20,6 +20,7 @@ package org.apache.james.transport.mailets.delivery; import static org.mockito.Matchers.any; +import static org.mockito.Matchers.anyString; import static org.mockito.Matchers.eq; import static org.mockito.Mockito.mock; import static org.mockito.Mockito.verify; @@ -46,6 +47,8 @@ import org.apache.james.mailbox.MailboxSession; import org.apache.james.mailbox.MessageManager; import org.apache.james.mailbox.exception.MailboxException; import org.apache.james.mailbox.model.MailboxPath; +import org.apache.james.metrics.api.Metric; +import org.apache.james.metrics.api.MetricFactory; import org.apache.james.rrt.api.RecipientRewriteTable; import org.apache.james.transport.mailets.LocalDelivery; import org.apache.james.user.api.UsersRepository; @@ -77,7 +80,9 @@ public class LocalDeliveryTest { DomainList domainList = mock(DomainList.class); - testee = new LocalDelivery(recipientRewriteTable, usersRepository, mailboxManager, domainList); + MetricFactory metricFactory = mock(MetricFactory.class); + when(metricFactory.generate(anyString())).thenReturn(mock(Metric.class)); + testee = new LocalDelivery(recipientRewriteTable, usersRepository, mailboxManager, domainList, metricFactory); user = mock(MailboxSession.User.class); MailboxSession session = mock(MailboxSession.class); http://git-wip-us.apache.org/repos/asf/james-project/blob/9d40cb20/server/mailet/mailets/src/test/java/org/apache/james/transport/mailets/delivery/SieveIntegrationTest.java ---------------------------------------------------------------------- diff --git a/server/mailet/mailets/src/test/java/org/apache/james/transport/mailets/delivery/SieveIntegrationTest.java b/server/mailet/mailets/src/test/java/org/apache/james/transport/mailets/delivery/SieveIntegrationTest.java index 0e669e9..97556de 100644 --- a/server/mailet/mailets/src/test/java/org/apache/james/transport/mailets/delivery/SieveIntegrationTest.java +++ b/server/mailet/mailets/src/test/java/org/apache/james/transport/mailets/delivery/SieveIntegrationTest.java @@ -88,7 +88,7 @@ public class SieveIntegrationTest { fakeMailContext = FakeMailContext.builder().logger(mock(Logger.class)).build(); testee = new Sieve(usersRepository, resourceLocator); - testee.init(new FakeMailetConfig("Sieve", fakeMailContext)); + testee.init(FakeMailetConfig.builder().mailetName("Sieve").mailetContext(fakeMailContext).build()); } @Test http://git-wip-us.apache.org/repos/asf/james-project/blob/9d40cb20/server/mailet/mailets/src/test/java/org/apache/james/transport/mailets/delivery/SimpleMailStoreTest.java ---------------------------------------------------------------------- diff --git a/server/mailet/mailets/src/test/java/org/apache/james/transport/mailets/delivery/SimpleMailStoreTest.java b/server/mailet/mailets/src/test/java/org/apache/james/transport/mailets/delivery/SimpleMailStoreTest.java index 42d09f2..15cac3f 100644 --- a/server/mailet/mailets/src/test/java/org/apache/james/transport/mailets/delivery/SimpleMailStoreTest.java +++ b/server/mailet/mailets/src/test/java/org/apache/james/transport/mailets/delivery/SimpleMailStoreTest.java @@ -36,6 +36,7 @@ import javax.mail.internet.MimeMultipart; import javax.mail.util.ByteArrayDataSource; import org.apache.commons.logging.Log; +import org.apache.james.metrics.api.Metric; import org.apache.james.user.api.UsersRepository; import org.apache.james.user.api.UsersRepositoryException; import org.apache.mailet.MailAddress; @@ -60,6 +61,7 @@ public class SimpleMailStoreTest { .usersRepository(usersRepository) .mailboxAppender(mailboxAppender) .folder(FOLDER) + .metric(mock(Metric.class)) .log(mock(Log.class)) .build(); http://git-wip-us.apache.org/repos/asf/james-project/blob/9d40cb20/server/mailet/mailets/src/test/java/org/apache/james/transport/mailets/delivery/ToRecipientFolderTest.java ---------------------------------------------------------------------- diff --git a/server/mailet/mailets/src/test/java/org/apache/james/transport/mailets/delivery/ToRecipientFolderTest.java b/server/mailet/mailets/src/test/java/org/apache/james/transport/mailets/delivery/ToRecipientFolderTest.java index 48306f3..f166c09 100644 --- a/server/mailet/mailets/src/test/java/org/apache/james/transport/mailets/delivery/ToRecipientFolderTest.java +++ b/server/mailet/mailets/src/test/java/org/apache/james/transport/mailets/delivery/ToRecipientFolderTest.java @@ -21,6 +21,7 @@ package org.apache.james.transport.mailets.delivery; import static org.assertj.core.api.Assertions.assertThat; import static org.mockito.Matchers.any; +import static org.mockito.Matchers.anyString; import static org.mockito.Matchers.eq; import static org.mockito.Mockito.mock; import static org.mockito.Mockito.verify; @@ -46,6 +47,7 @@ import org.apache.james.mailbox.MailboxSession; import org.apache.james.mailbox.MessageManager; import org.apache.james.mailbox.exception.MailboxException; import org.apache.james.mailbox.model.MailboxPath; +import org.apache.james.metrics.api.Metric; import org.apache.james.metrics.api.MetricFactory; import org.apache.james.transport.mailets.ToRecipientFolder; import org.apache.james.user.api.UsersRepository; @@ -86,7 +88,9 @@ public class ToRecipientFolderTest { user = mock(MailboxSession.User.class); - testee = new ToRecipientFolder(mailboxManager, usersRepository, mock(MetricFactory.class)); + MetricFactory metricFactory = mock(MetricFactory.class); + when(metricFactory.generate(anyString())).thenReturn(mock(Metric.class)); + testee = new ToRecipientFolder(mailboxManager, usersRepository, metricFactory); MailboxSession session = mock(MailboxSession.class); when(session.getPathDelimiter()).thenReturn('.'); --------------------------------------------------------------------- To unsubscribe, e-mail: server-dev-unsubscr...@james.apache.org For additional commands, e-mail: server-dev-h...@james.apache.org