From 278a87098783a4fa4c3f9579fe0e86b02f4cb633 Mon Sep 17 00:00:00 2001 From: Jason Tedor Date: Wed, 1 Sep 2021 12:16:51 -0400 Subject: [PATCH 1/4] Move die with dignity to be a test module This commit moves the die with dignity tests to be a test module. The purpose of this is so the _die_with_dignity endpoint is available in snapshot builds, for the purpose of enabling testing orchestration logic that manages what happens to a node after it dies with an OutOfMemoryError. --- .../die-with-dignity/build.gradle | 8 +++----- .../qa/die_with_dignity/DieWithDignityIT.java | 15 --------------- .../org/elasticsearch/DieWithDignityPlugin.java | 4 ---- .../elasticsearch/RestDieWithDignityAction.java | 0 4 files changed, 3 insertions(+), 24 deletions(-) rename {qa => test/external-modules}/die-with-dignity/build.gradle (81%) rename {qa => test/external-modules}/die-with-dignity/src/javaRestTest/java/org/elasticsearch/qa/die_with_dignity/DieWithDignityIT.java (82%) rename {qa => test/external-modules}/die-with-dignity/src/main/java/org/elasticsearch/DieWithDignityPlugin.java (90%) rename {qa => test/external-modules}/die-with-dignity/src/main/java/org/elasticsearch/RestDieWithDignityAction.java (100%) diff --git a/qa/die-with-dignity/build.gradle b/test/external-modules/die-with-dignity/build.gradle similarity index 81% rename from qa/die-with-dignity/build.gradle rename to test/external-modules/die-with-dignity/build.gradle index cd7f2b9f738cc..fdcd508b9106d 100644 --- a/qa/die-with-dignity/build.gradle +++ b/test/external-modules/die-with-dignity/build.gradle @@ -19,13 +19,11 @@ tasks.named("javaRestTest").configure { systemProperty 'runtime.java.home', BuildParams.runtimeJavaHome } -testClusters.matching { it.name == "javaRestTest" }.configureEach { - systemProperty "die.with.dignity.test", "whatever" - setting 'xpack.security.enabled', 'true' - user username: 'admin', password: 'admin-password', role: 'superuser' +tasks.named("test").configure { + enabled = false } -tasks.named("test").configure { +tasks.named("yamlRestTest").configure { enabled = false } diff --git a/qa/die-with-dignity/src/javaRestTest/java/org/elasticsearch/qa/die_with_dignity/DieWithDignityIT.java b/test/external-modules/die-with-dignity/src/javaRestTest/java/org/elasticsearch/qa/die_with_dignity/DieWithDignityIT.java similarity index 82% rename from qa/die-with-dignity/src/javaRestTest/java/org/elasticsearch/qa/die_with_dignity/DieWithDignityIT.java rename to test/external-modules/die-with-dignity/src/javaRestTest/java/org/elasticsearch/qa/die_with_dignity/DieWithDignityIT.java index dc6deac379117..4f929bf16c522 100644 --- a/qa/die-with-dignity/src/javaRestTest/java/org/elasticsearch/qa/die_with_dignity/DieWithDignityIT.java +++ b/test/external-modules/die-with-dignity/src/javaRestTest/java/org/elasticsearch/qa/die_with_dignity/DieWithDignityIT.java @@ -10,9 +10,6 @@ import org.elasticsearch.client.Request; import org.elasticsearch.core.PathUtils; -import org.elasticsearch.common.settings.SecureString; -import org.elasticsearch.common.settings.Settings; -import org.elasticsearch.common.util.concurrent.ThreadContext; import org.elasticsearch.test.rest.ESRestTestCase; import java.io.BufferedReader; @@ -99,16 +96,4 @@ protected boolean preserveClusterUponCompletion() { return true; } - @Override - protected final Settings restClientSettings() { - String token = basicAuthHeaderValue("admin", new SecureString("admin-password".toCharArray())); - return Settings.builder() - .put(super.restClientSettings()) - .put(ThreadContext.PREFIX + ".Authorization", token) - // increase the timeout here to 90 seconds to handle long waits for a green - // cluster health. the waits for green need to be longer than a minute to - // account for delayed shards - .put(ESRestTestCase.CLIENT_SOCKET_TIMEOUT, "1s") - .build(); - } } diff --git a/qa/die-with-dignity/src/main/java/org/elasticsearch/DieWithDignityPlugin.java b/test/external-modules/die-with-dignity/src/main/java/org/elasticsearch/DieWithDignityPlugin.java similarity index 90% rename from qa/die-with-dignity/src/main/java/org/elasticsearch/DieWithDignityPlugin.java rename to test/external-modules/die-with-dignity/src/main/java/org/elasticsearch/DieWithDignityPlugin.java index 9c6a8fe95182e..c17369928a4d1 100644 --- a/qa/die-with-dignity/src/main/java/org/elasticsearch/DieWithDignityPlugin.java +++ b/test/external-modules/die-with-dignity/src/main/java/org/elasticsearch/DieWithDignityPlugin.java @@ -25,10 +25,6 @@ public class DieWithDignityPlugin extends Plugin implements ActionPlugin { - public DieWithDignityPlugin() { - assert System.getProperty("die.with.dignity.test") != null : "test should pass the `die.with.dignity.test` property"; - } - @Override public List getRestHandlers( final Settings settings, diff --git a/qa/die-with-dignity/src/main/java/org/elasticsearch/RestDieWithDignityAction.java b/test/external-modules/die-with-dignity/src/main/java/org/elasticsearch/RestDieWithDignityAction.java similarity index 100% rename from qa/die-with-dignity/src/main/java/org/elasticsearch/RestDieWithDignityAction.java rename to test/external-modules/die-with-dignity/src/main/java/org/elasticsearch/RestDieWithDignityAction.java From 09738b421d4930db30c7f07f3e237f54a2d2fdbb Mon Sep 17 00:00:00 2001 From: Jason Tedor Date: Wed, 1 Sep 2021 12:36:02 -0400 Subject: [PATCH 2/4] Keep the system property --- test/external-modules/die-with-dignity/build.gradle | 4 ++++ .../src/main/java/org/elasticsearch/DieWithDignityPlugin.java | 4 ++++ 2 files changed, 8 insertions(+) diff --git a/test/external-modules/die-with-dignity/build.gradle b/test/external-modules/die-with-dignity/build.gradle index fdcd508b9106d..166a9ca6d138e 100644 --- a/test/external-modules/die-with-dignity/build.gradle +++ b/test/external-modules/die-with-dignity/build.gradle @@ -19,6 +19,10 @@ tasks.named("javaRestTest").configure { systemProperty 'runtime.java.home', BuildParams.runtimeJavaHome } +testClusters.matching { it.name == "javaRestTest" }.configureEach { + systemProperty "die.with.dignity.test", "true" +} + tasks.named("test").configure { enabled = false } diff --git a/test/external-modules/die-with-dignity/src/main/java/org/elasticsearch/DieWithDignityPlugin.java b/test/external-modules/die-with-dignity/src/main/java/org/elasticsearch/DieWithDignityPlugin.java index c17369928a4d1..be10705fbc542 100644 --- a/test/external-modules/die-with-dignity/src/main/java/org/elasticsearch/DieWithDignityPlugin.java +++ b/test/external-modules/die-with-dignity/src/main/java/org/elasticsearch/DieWithDignityPlugin.java @@ -25,6 +25,10 @@ public class DieWithDignityPlugin extends Plugin implements ActionPlugin { + public DieWithDignityPlugin() { + assert System.getProperty("die.with.dignity.test").equals("true") : "test should pass the `die.with.dignity.test` property"; + } + @Override public List getRestHandlers( final Settings settings, From 15005b28944d666757fc5bb3bff4b8322c99798c Mon Sep 17 00:00:00 2001 From: Jason Tedor Date: Wed, 1 Sep 2021 13:00:15 -0400 Subject: [PATCH 3/4] Can no longer assert --- .../qa/die_with_dignity/DieWithDignityIT.java | 20 ++++++++++++++++++- .../elasticsearch/DieWithDignityPlugin.java | 4 ---- 2 files changed, 19 insertions(+), 5 deletions(-) diff --git a/test/external-modules/die-with-dignity/src/javaRestTest/java/org/elasticsearch/qa/die_with_dignity/DieWithDignityIT.java b/test/external-modules/die-with-dignity/src/javaRestTest/java/org/elasticsearch/qa/die_with_dignity/DieWithDignityIT.java index 4f929bf16c522..7e92cd31fc408 100644 --- a/test/external-modules/die-with-dignity/src/javaRestTest/java/org/elasticsearch/qa/die_with_dignity/DieWithDignityIT.java +++ b/test/external-modules/die-with-dignity/src/javaRestTest/java/org/elasticsearch/qa/die_with_dignity/DieWithDignityIT.java @@ -27,6 +27,24 @@ public class DieWithDignityIT extends ESRestTestCase { public void testDieWithDignity() throws Exception { + // there should be an Elasticsearch process running with the die.with.dignity.test system property + assertBusy(() -> { + final String jpsPath = PathUtils.get(System.getProperty("runtime.java.home"), "bin/jps").toString(); + final Process process = new ProcessBuilder().command(jpsPath, "-v").start(); + + boolean found = false; + try (InputStream is = process.getInputStream(); BufferedReader in = new BufferedReader(new InputStreamReader(is, "UTF-8"))) { + String line; + while ((line = in.readLine()) != null) { + if (line.contains("-Ddie.with.dignity.test=true")) { + found = true; + break; + } + } + } + assertTrue(found); + }); + expectThrows(IOException.class, () -> client().performRequest(new Request("GET", "/_die_with_dignity"))); // the Elasticsearch process should die and disappear from the output of jps @@ -37,7 +55,7 @@ public void testDieWithDignity() throws Exception { try (InputStream is = process.getInputStream(); BufferedReader in = new BufferedReader(new InputStreamReader(is, "UTF-8"))) { String line; while ((line = in.readLine()) != null) { - assertThat(line, line, not(containsString("-Ddie.with.dignity.test"))); + assertThat(line, line, not(containsString("-Ddie.with.dignity.test=true"))); } } }); diff --git a/test/external-modules/die-with-dignity/src/main/java/org/elasticsearch/DieWithDignityPlugin.java b/test/external-modules/die-with-dignity/src/main/java/org/elasticsearch/DieWithDignityPlugin.java index be10705fbc542..c17369928a4d1 100644 --- a/test/external-modules/die-with-dignity/src/main/java/org/elasticsearch/DieWithDignityPlugin.java +++ b/test/external-modules/die-with-dignity/src/main/java/org/elasticsearch/DieWithDignityPlugin.java @@ -25,10 +25,6 @@ public class DieWithDignityPlugin extends Plugin implements ActionPlugin { - public DieWithDignityPlugin() { - assert System.getProperty("die.with.dignity.test").equals("true") : "test should pass the `die.with.dignity.test` property"; - } - @Override public List getRestHandlers( final Settings settings, From 3dd8db62638691bcb96f2813bf719c82b4546655 Mon Sep 17 00:00:00 2001 From: Jason Tedor Date: Fri, 3 Sep 2021 11:26:59 -0400 Subject: [PATCH 4/4] Remove assert busy --- .../elasticsearch/qa/die_with_dignity/DieWithDignityIT.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/test/external-modules/die-with-dignity/src/javaRestTest/java/org/elasticsearch/qa/die_with_dignity/DieWithDignityIT.java b/test/external-modules/die-with-dignity/src/javaRestTest/java/org/elasticsearch/qa/die_with_dignity/DieWithDignityIT.java index 7e92cd31fc408..2fa35e10c2cf6 100644 --- a/test/external-modules/die-with-dignity/src/javaRestTest/java/org/elasticsearch/qa/die_with_dignity/DieWithDignityIT.java +++ b/test/external-modules/die-with-dignity/src/javaRestTest/java/org/elasticsearch/qa/die_with_dignity/DieWithDignityIT.java @@ -28,7 +28,7 @@ public class DieWithDignityIT extends ESRestTestCase { public void testDieWithDignity() throws Exception { // there should be an Elasticsearch process running with the die.with.dignity.test system property - assertBusy(() -> { + { final String jpsPath = PathUtils.get(System.getProperty("runtime.java.home"), "bin/jps").toString(); final Process process = new ProcessBuilder().command(jpsPath, "-v").start(); @@ -43,7 +43,7 @@ public void testDieWithDignity() throws Exception { } } assertTrue(found); - }); + } expectThrows(IOException.class, () -> client().performRequest(new Request("GET", "/_die_with_dignity")));