diff --git a/pom.xml b/pom.xml index 582a64c..176fbc5 100644 --- a/pom.xml +++ b/pom.xml @@ -42,6 +42,19 @@ 2.3 test + + org.awaitility + awaitility + 4.2.0 + test + + + + org.hamcrest + hamcrest + + + diff --git a/src/test/java/org/jenkinsci/plugins/cloudstats/CloudStatisticsTest.java b/src/test/java/org/jenkinsci/plugins/cloudstats/CloudStatisticsTest.java index b47dade..705a77d 100644 --- a/src/test/java/org/jenkinsci/plugins/cloudstats/CloudStatisticsTest.java +++ b/src/test/java/org/jenkinsci/plugins/cloudstats/CloudStatisticsTest.java @@ -31,12 +31,7 @@ import hudson.BulkChange; import hudson.ExtensionList; import hudson.Functions; -import hudson.model.Computer; -import hudson.model.FreeStyleBuild; -import hudson.model.FreeStyleProject; -import hudson.model.Label; -import hudson.model.LoadStatistics; -import hudson.model.Node; +import hudson.model.*; import hudson.model.queue.QueueTaskFuture; import hudson.security.AuthorizationStrategy; import hudson.slaves.NodeProvisioner; @@ -56,12 +51,16 @@ import javax.annotation.Nonnull; import java.io.ObjectStreamException; import java.net.URL; +import java.time.Duration; import java.util.ArrayList; import java.util.Collections; import java.util.List; import java.util.Random; import java.util.concurrent.Callable; +import java.util.concurrent.TimeUnit; +import static java.util.concurrent.TimeUnit.SECONDS; +import static org.awaitility.Awaitility.await; import static org.hamcrest.MatcherAssert.assertThat; import static org.hamcrest.Matchers.contains; import static org.hamcrest.Matchers.containsString; @@ -229,13 +228,13 @@ public void ui() throws Exception { Id okId = new Id("MyCloud", "working-template", "future-agent"); provisioningListener.onStarted(okId); - slave = TrackedAgent.create(okId, j); - provisioningListener.onComplete(okId, slave); - slave.toComputer().waitUntilOnline(); - Thread.sleep(500); - slave.toComputer().doDoDelete(); + final Node agent = TrackedAgent.create(okId, j); + provisioningListener.onComplete(okId, agent); + agent.toComputer().waitUntilOnline(); + Thread.sleep(1000L); + agent.toComputer().doDoDelete(); - Thread.sleep(500); + await().atMost(10, SECONDS).until(() -> j.jenkins.getNode(agent.getNodeName()) == null); // Then ProvisioningActivity failedToProvision = cs.getActivityFor(failId);