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