diff --git a/pom.xml b/pom.xml index 3aafb5737..6779e248c 100644 --- a/pom.xml +++ b/pom.xml @@ -115,6 +115,18 @@ 589.vb_a_b_4a_a_8c443c test + + org.awaitility + awaitility + 4.2.0 + test + + + org.hamcrest + hamcrest + + + io.jenkins.plugins okhttp-api diff --git a/src/test/java/org/jenkinsci/plugins/github_branch_source/EventsTest.java b/src/test/java/org/jenkinsci/plugins/github_branch_source/EventsTest.java index 7416da7f4..13f2fbfd2 100644 --- a/src/test/java/org/jenkinsci/plugins/github_branch_source/EventsTest.java +++ b/src/test/java/org/jenkinsci/plugins/github_branch_source/EventsTest.java @@ -25,6 +25,8 @@ package org.jenkinsci.plugins.github_branch_source; +import static java.util.concurrent.TimeUnit.MILLISECONDS; +import static java.util.concurrent.TimeUnit.MINUTES; import static org.junit.Assert.assertEquals; import java.io.IOException; @@ -34,6 +36,7 @@ import jenkins.scm.api.SCMHeadEvent; import jenkins.scm.api.SCMSourceEvent; import org.apache.commons.io.IOUtils; +import org.awaitility.Awaitility; import org.jenkinsci.plugins.github.extension.GHSubscriberEvent; import org.junit.AfterClass; import org.junit.Before; @@ -55,7 +58,7 @@ public class EventsTest { @BeforeClass public static void setupDelay() { - GitHubSCMSource.setEventDelaySeconds(1); + GitHubSCMSource.setEventDelaySeconds(0); // fire immediately without delay } @Before @@ -188,7 +191,11 @@ private GHSubscriberEvent createEvent(String eventPayloadFile) throws IOExceptio private void waitAndAssertReceived(boolean received) throws InterruptedException { long watermark = SCMEvents.getWatermark(); // event will be fired by subscriber at some point - SCMEvents.awaitOne(watermark, 1200, TimeUnit.MILLISECONDS); + SCMEvents.awaitOne(watermark, received ? 20 : 200, TimeUnit.MILLISECONDS); + + if (received) { + TestSCMEventListener.awaitUntilReceived(); + } assertEquals( "Event should have " + ((!received) ? "not " : "") + "been received", @@ -223,5 +230,12 @@ public static boolean didReceive() { public static void setReceived(boolean received) { eventReceived = received; } + + public static void awaitUntilReceived() { + Awaitility.await() + .pollInterval(10, MILLISECONDS) + .atMost(1, MINUTES) + .until(() -> eventReceived); + } } }