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 bt...@apache.org on 2020/07/10 01:49:06 UTC

[james-project] 04/09: JAMES-3295 remoteDeliveryShouldStoreTemporaryFailureAsPermanentWhenExceedsMaximumRetries

This is an automated email from the ASF dual-hosted git repository.

btellier pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/james-project.git

commit 3a80f69e9643c577f3b5fcffabb0db9e7212235b
Author: Rene Cordier <rc...@linagora.com>
AuthorDate: Mon Jul 6 16:52:29 2020 +0700

    JAMES-3295 remoteDeliveryShouldStoreTemporaryFailureAsPermanentWhenExceedsMaximumRetries
---
 .../mailets/RemoteDeliveryErrorHandlingTest.java     | 20 ++++++++++++++++++--
 1 file changed, 18 insertions(+), 2 deletions(-)

diff --git a/server/mailet/integration-testing/src/test/java/org/apache/james/transport/mailets/RemoteDeliveryErrorHandlingTest.java b/server/mailet/integration-testing/src/test/java/org/apache/james/transport/mailets/RemoteDeliveryErrorHandlingTest.java
index e9fcb39..0db780c 100644
--- a/server/mailet/integration-testing/src/test/java/org/apache/james/transport/mailets/RemoteDeliveryErrorHandlingTest.java
+++ b/server/mailet/integration-testing/src/test/java/org/apache/james/transport/mailets/RemoteDeliveryErrorHandlingTest.java
@@ -46,6 +46,7 @@ import org.apache.james.mock.smtp.server.testing.MockSmtpServerExtension.DockerM
 import org.apache.james.modules.protocols.SmtpGuiceProbe;
 import org.apache.james.queue.api.MailQueueFactory;
 import org.apache.james.transport.matchers.All;
+import org.apache.james.transport.matchers.AtMost;
 import org.apache.james.utils.DataProbeImpl;
 import org.apache.james.utils.MailRepositoryProbeImpl;
 import org.apache.james.utils.SMTPMessageSender;
@@ -70,6 +71,7 @@ public class RemoteDeliveryErrorHandlingTest {
     private static final String LOCALHOST = "localhost";
     private static final MailRepositoryUrl REMOTE_DELIVERY_TEMPORARY_ERROR_REPOSITORY = MailRepositoryUrl.from("memory://var/mail/error/remote-delivery/temporary");
     private static final MailRepositoryUrl REMOTE_DELIVERY_PERMANENT_ERROR_REPOSITORY = MailRepositoryUrl.from("memory://var/mail/error/remote-delivery/permanent");
+    private static final Integer MAX_EXECUTIONS = 2;
 
     @RegisterExtension
     static MockSmtpServerExtension mockSmtpServerExtension = new MockSmtpServerExtension();
@@ -99,7 +101,12 @@ public class RemoteDeliveryErrorHandlingTest {
                         .addProperty("maxRetries", "1")
                         .addProperty("delayTime", "0")
                         .addProperty("bounceProcessor", "remote-delivery-error")
-                        .matcher(All.class)))
+                        .matcher(AtMost.class)
+                        .matcherCondition(MAX_EXECUTIONS.toString()))
+                    .addMailet(MailetConfiguration.builder()
+                        .matcher(All.class)
+                        .mailet(ToRepository.class)
+                        .addProperty("repositoryPath", REMOTE_DELIVERY_PERMANENT_ERROR_REPOSITORY.asString())))
                 .putProcessor(ProcessorConfiguration.builder()
                     .state("remote-delivery-error")
                     .addMailet(MailetConfiguration.builder()
@@ -205,7 +212,6 @@ public class RemoteDeliveryErrorHandlingTest {
     }
 
     @Test
-    @Disabled("We need to count retries")
     void remoteDeliveryShouldStoreTemporaryFailureAsPermanentWhenExceedsMaximumRetries(SMTPMessageSender smtpMessageSender, DockerMockSmtp dockerMockSmtp) throws Exception {
         // Given a failed remote delivery
         dockerMockSmtp.getConfigurationClient()
@@ -230,6 +236,16 @@ public class RemoteDeliveryErrorHandlingTest {
             .param("queue", MailQueueFactory.SPOOL.asString())
             .param("processor", TRANSPORT_PROCESSOR)
             .patch("/mailRepositories/" + REMOTE_DELIVERY_TEMPORARY_ERROR_REPOSITORY.getPath().urlEncoded() + "/mails");
+        awaitAtMostOneMinute
+            .untilAsserted(() -> assertThat(jamesServer.getProbe(MailRepositoryProbeImpl.class)
+                .getRepositoryMailCount(REMOTE_DELIVERY_TEMPORARY_ERROR_REPOSITORY))
+                .isEqualTo(1));
+        given()
+            .spec(webAdminApi)
+            .param("action", "reprocess")
+            .param("queue", MailQueueFactory.SPOOL.asString())
+            .param("processor", TRANSPORT_PROCESSOR)
+            .patch("/mailRepositories/" + REMOTE_DELIVERY_TEMPORARY_ERROR_REPOSITORY.getPath().urlEncoded() + "/mails");
 
         // Then mail should be stored in permanent error repository
         awaitAtMostOneMinute


---------------------------------------------------------------------
To unsubscribe, e-mail: server-dev-unsubscribe@james.apache.org
For additional commands, e-mail: server-dev-help@james.apache.org