Wait for cluster to become quiescent between REST tests (#24148)

[TEST] ensures REST tests wait for cluster state updates to finish
processing before moving to the next test
This commit is contained in:
Ali Beyad 2017-04-19 13:17:09 -04:00 committed by GitHub
parent c7e9231a86
commit 3c82eea5fb
1 changed files with 17 additions and 0 deletions

View File

@ -125,6 +125,7 @@ public abstract class ESRestTestCase extends ESTestCase {
@After @After
public final void cleanUpCluster() throws Exception { public final void cleanUpCluster() throws Exception {
wipeCluster(); wipeCluster();
waitForClusterStateUpdatesToFinish();
logIfThereAreRunningTasks(); logIfThereAreRunningTasks();
} }
@ -253,6 +254,22 @@ public abstract class ESRestTestCase extends ESTestCase {
*/ */
} }
/**
* Waits for the cluster state updates to have been processed, so that no cluster
* state updates are still in-progress when the next test starts.
*/
private void waitForClusterStateUpdatesToFinish() throws Exception {
assertBusy(() -> {
try {
Response response = adminClient().performRequest("GET", "_cluster/pending_tasks");
List<Object> tasks = (List<Object>) entityAsMap(response).get("tasks");
assertTrue(tasks.isEmpty());
} catch (IOException e) {
fail("cannot get cluster's pending tasks: " + e.getMessage());
}
});
}
/** /**
* Used to obtain settings for the REST client that is used to send REST requests. * Used to obtain settings for the REST client that is used to send REST requests.
*/ */