JAMES-2402 ToRepositoryTest was unstable

Project: http://git-wip-us.apache.org/repos/asf/james-project/repo
Commit: http://git-wip-us.apache.org/repos/asf/james-project/commit/b11d0be1
Tree: http://git-wip-us.apache.org/repos/asf/james-project/tree/b11d0be1
Diff: http://git-wip-us.apache.org/repos/asf/james-project/diff/b11d0be1

Branch: refs/heads/master
Commit: b11d0be1a089cdb31e8b75314ab7c134f4d77532
Parents: 43a09f9
Author: benwa <btell...@linagora.com>
Authored: Mon May 21 19:21:58 2018 +0700
Committer: Matthieu Baechler <matth...@apache.org>
Committed: Tue May 22 15:20:40 2018 +0200

----------------------------------------------------------------------
 .../transport/mailets/ToRepositoryTest.java     | 18 ++++++++------
 .../apache/james/utils/IMAPMessageReader.java   | 26 ++++++++++++++++----
 2 files changed, 32 insertions(+), 12 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/james-project/blob/b11d0be1/server/mailet/integration-testing/src/test/java/org/apache/james/transport/mailets/ToRepositoryTest.java
----------------------------------------------------------------------
diff --git 
a/server/mailet/integration-testing/src/test/java/org/apache/james/transport/mailets/ToRepositoryTest.java
 
b/server/mailet/integration-testing/src/test/java/org/apache/james/transport/mailets/ToRepositoryTest.java
index ede133d..04c4abd 100644
--- 
a/server/mailet/integration-testing/src/test/java/org/apache/james/transport/mailets/ToRepositoryTest.java
+++ 
b/server/mailet/integration-testing/src/test/java/org/apache/james/transport/mailets/ToRepositoryTest.java
@@ -43,6 +43,7 @@ import org.apache.james.utils.SMTPMessageSender;
 import org.apache.james.utils.WebAdminGuiceProbe;
 import org.apache.james.webadmin.WebAdminUtils;
 import org.apache.james.webadmin.routes.MailRepositoriesRoutes;
+import org.apache.james.webadmin.routes.TasksRoutes;
 import org.junit.After;
 import org.junit.Before;
 import org.junit.Rule;
@@ -112,21 +113,25 @@ public class ToRepositoryTest {
 
         awaitAtMostOneMinute.until(() -> 
probe.getRepositoryMailCount(CUSTOM_REPOSITORY) == 2);
 
-        with()
+        String taskId = with()
             .spec(webAdminAPI)
             .queryParam("processor", ProcessorConfiguration.STATE_TRANSPORT)
             .queryParam("action", "reprocess")
-            .patch(MailRepositoriesRoutes.MAIL_REPOSITORIES
+        .patch(MailRepositoriesRoutes.MAIL_REPOSITORIES
                 + "/" + URLEncoder.encode(CUSTOM_REPOSITORY, 
StandardCharsets.UTF_8.displayName())
                 + "/mails")
             .jsonPath()
-            .get("taskId");
+            .getString("taskId");
+
+        with()
+            .spec(webAdminAPI)
+            .basePath(TasksRoutes.BASE)
+            .get(taskId + "/await");
 
         imapMessageReader.connect(LOCALHOST_IP, IMAP_PORT)
             .login(RECIPIENT, PASSWORD)
             .select(IMAPMessageReader.INBOX)
-            .awaitMessage(awaitAtMostOneMinute)
-            .hasMessageCount(2);
+            .awaitMessageCount(awaitAtMostOneMinute, 2);
         awaitAtMostOneMinute.until(() -> 
probe.getRepositoryMailCount(CUSTOM_REPOSITORY) == 0);
     }
 
@@ -152,8 +157,7 @@ public class ToRepositoryTest {
         imapMessageReader.connect(LOCALHOST_IP, IMAP_PORT)
             .login(RECIPIENT, PASSWORD)
             .select(IMAPMessageReader.INBOX)
-            .awaitMessage(awaitAtMostOneMinute)
-            .hasMessageCount(1);
+            .awaitMessageCount(awaitAtMostOneMinute, 1);
         awaitAtMostOneMinute.until(() -> 
probe.getRepositoryMailCount(CUSTOM_REPOSITORY) == 1);
     }
 }

http://git-wip-us.apache.org/repos/asf/james-project/blob/b11d0be1/server/testing/src/main/java/org/apache/james/utils/IMAPMessageReader.java
----------------------------------------------------------------------
diff --git 
a/server/testing/src/main/java/org/apache/james/utils/IMAPMessageReader.java 
b/server/testing/src/main/java/org/apache/james/utils/IMAPMessageReader.java
index 071c8a8..4d83fba 100644
--- a/server/testing/src/main/java/org/apache/james/utils/IMAPMessageReader.java
+++ b/server/testing/src/main/java/org/apache/james/utils/IMAPMessageReader.java
@@ -66,11 +66,6 @@ public class IMAPMessageReader extends ExternalResource 
implements Closeable {
         return this;
     }
 
-    public boolean hasMessageCount(int numberOfMessages) throws IOException {
-        return imapClient.getReplyString()
-            .contains(numberOfMessages + " EXISTS");
-    }
-
     public boolean hasAMessage() throws IOException {
         imapClient.fetch("1:1", "ALL");
         return imapClient.getReplyString()
@@ -82,6 +77,27 @@ public class IMAPMessageReader extends ExternalResource 
implements Closeable {
         return this;
     }
 
+    public IMAPMessageReader awaitMessageCount(ConditionFactory 
conditionFactory, int messageCount) {
+        conditionFactory.until(() -> {
+            try {
+                imapClient.fetch("1:*", "ALL");
+                return  countFetchedEntries() == messageCount;
+            } catch (Exception e) {
+                throw new RuntimeException(e);
+            }
+        });
+        return this;
+    }
+
+    private long countFetchedEntries() {
+        return Splitter.on("\n")
+            .trimResults()
+            .splitToList(imapClient.getReplyString())
+            .stream()
+            .filter(s -> s.startsWith("*"))
+            .count();
+    }
+
     public IMAPMessageReader awaitNoMessage(ConditionFactory conditionFactory) 
throws IOException {
         conditionFactory.until(this::userDoesNotReceiveMessage);
         return this;


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

Reply via email to