From 1481e2a2aa6442220d0cea31bfd8c27bfc9f0990 Mon Sep 17 00:00:00 2001 From: Ali Beyad Date: Mon, 17 Apr 2017 23:27:13 -0400 Subject: [PATCH 1/2] [TEST] ensures REST tests wait for cluster state updates to finish processing before moving to the next test --- .../elasticsearch/test/rest/ESRestTestCase.java | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/test/framework/src/main/java/org/elasticsearch/test/rest/ESRestTestCase.java b/test/framework/src/main/java/org/elasticsearch/test/rest/ESRestTestCase.java index 1fc4cec9f8009..b1f119e209780 100644 --- a/test/framework/src/main/java/org/elasticsearch/test/rest/ESRestTestCase.java +++ b/test/framework/src/main/java/org/elasticsearch/test/rest/ESRestTestCase.java @@ -125,6 +125,7 @@ public void initClient() throws IOException { @After public final void cleanUpCluster() throws Exception { wipeCluster(); + waitForClusterStateUpdatesToFinish(); logIfThereAreRunningTasks(); } @@ -253,6 +254,22 @@ private void logIfThereAreRunningTasks() throws InterruptedException, IOExceptio */ } + /** + * 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 tasks = (List) entityAsMap(response).get("tasks"); + assertTrue(tasks.isEmpty()); + } catch (IOException e) { + fail("cannot get cluster health: " + e.getMessage()); + } + }); + } + /** * Used to obtain settings for the REST client that is used to send REST requests. */ From 8b7cbaa01d5497f1817a3dc02c51880a2dc0cf26 Mon Sep 17 00:00:00 2001 From: Ali Beyad Date: Tue, 18 Apr 2017 13:44:58 -0400 Subject: [PATCH 2/2] fix wording --- .../main/java/org/elasticsearch/test/rest/ESRestTestCase.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/framework/src/main/java/org/elasticsearch/test/rest/ESRestTestCase.java b/test/framework/src/main/java/org/elasticsearch/test/rest/ESRestTestCase.java index b1f119e209780..9e4723f0fe606 100644 --- a/test/framework/src/main/java/org/elasticsearch/test/rest/ESRestTestCase.java +++ b/test/framework/src/main/java/org/elasticsearch/test/rest/ESRestTestCase.java @@ -265,7 +265,7 @@ private void waitForClusterStateUpdatesToFinish() throws Exception { List tasks = (List) entityAsMap(response).get("tasks"); assertTrue(tasks.isEmpty()); } catch (IOException e) { - fail("cannot get cluster health: " + e.getMessage()); + fail("cannot get cluster's pending tasks: " + e.getMessage()); } }); }