Clarify missing java error message (#46160)
Since the bundled jdk was added to Elasticsearch, there are now 2 ways java can be missing. Either JAVA_HOME is set but does not exist, or the bundled jdk does not exist. This commit improves the error messages in those two cases, and also ensures our tests cover both cases.
This commit is contained in:
parent
5cfcd7c458
commit
bd5f64848e
|
@ -38,6 +38,7 @@ ES_CLASSPATH="$ES_HOME/lib/*"
|
|||
# now set the path to java
|
||||
if [ ! -z "$JAVA_HOME" ]; then
|
||||
JAVA="$JAVA_HOME/bin/java"
|
||||
JAVA_TYPE="JAVA_HOME"
|
||||
else
|
||||
if [ "$(uname -s)" = "Darwin" ]; then
|
||||
# OSX has a different structure
|
||||
|
@ -45,12 +46,13 @@ else
|
|||
else
|
||||
JAVA="$ES_HOME/jdk/bin/java"
|
||||
fi
|
||||
JAVA_TYPE="bundled jdk"
|
||||
fi
|
||||
|
||||
if [ ! -x "$JAVA" ]; then
|
||||
echo "could not find java in JAVA_HOME or bundled at $JAVA" >&2
|
||||
exit 1
|
||||
fi
|
||||
echo "could not find java in $JAVA_TYPE at $JAVA" >&2
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# do not let JAVA_TOOL_OPTIONS slip in (as the JVM does by default)
|
||||
if [ ! -z "$JAVA_TOOL_OPTIONS" ]; then
|
||||
|
|
|
@ -38,13 +38,15 @@ if "%1" == "nojava" (
|
|||
|
||||
if defined JAVA_HOME (
|
||||
set JAVA="%JAVA_HOME%\bin\java.exe"
|
||||
set JAVA_TYPE=JAVA_HOME
|
||||
) else (
|
||||
set JAVA="%ES_HOME%\jdk\bin\java.exe"
|
||||
set JAVA_HOME="%ES_HOME%\jdk"
|
||||
set JAVA_TYPE=bundled jdk
|
||||
)
|
||||
|
||||
if not exist %JAVA% (
|
||||
echo "could not find java in JAVA_HOME or bundled at %ES_HOME%\jdk" >&2
|
||||
if not exist !JAVA! (
|
||||
echo "could not find java in !JAVA_TYPE! at !JAVA!" >&2
|
||||
exit /b 1
|
||||
)
|
||||
|
||||
|
|
|
@ -74,7 +74,7 @@ public class ArchiveTests extends PackagingTestCase {
|
|||
assertThat(r.stdout, isEmptyString());
|
||||
}
|
||||
|
||||
public void test30NoJava() throws Exception {
|
||||
public void test30MissingBundledJdk() throws Exception {
|
||||
final Installation.Executables bin = installation.executables();
|
||||
sh.getEnv().remove("JAVA_HOME");
|
||||
|
||||
|
@ -87,7 +87,7 @@ public class ArchiveTests extends PackagingTestCase {
|
|||
// ask for elasticsearch version to quickly exit if java is actually found (ie test failure)
|
||||
final Result runResult = sh.runIgnoreExitCode(bin.elasticsearch.toString() + " -v");
|
||||
assertThat(runResult.exitCode, is(1));
|
||||
assertThat(runResult.stderr, containsString("could not find java in JAVA_HOME or bundled"));
|
||||
assertThat(runResult.stderr, containsString("could not find java in bundled jdk"));
|
||||
} finally {
|
||||
if (distribution().hasJdk) {
|
||||
mv(relocatedJdk, installation.bundledJdk);
|
||||
|
@ -95,6 +95,17 @@ public class ArchiveTests extends PackagingTestCase {
|
|||
}
|
||||
}
|
||||
|
||||
public void test31BadJavaHome() throws Exception {
|
||||
final Installation.Executables bin = installation.executables();
|
||||
sh.getEnv().put("JAVA_HOME", "doesnotexist");
|
||||
|
||||
// ask for elasticsearch version to quickly exit if java is actually found (ie test failure)
|
||||
final Result runResult = sh.runIgnoreExitCode(bin.elasticsearch.toString() + " -v");
|
||||
assertThat(runResult.exitCode, is(1));
|
||||
assertThat(runResult.stderr, containsString("could not find java in JAVA_HOME"));
|
||||
|
||||
}
|
||||
|
||||
public void test40CreateKeystoreManually() throws Exception {
|
||||
final Installation.Executables bin = installation.executables();
|
||||
|
||||
|
@ -178,7 +189,7 @@ public class ArchiveTests extends PackagingTestCase {
|
|||
|
||||
public void test53JavaHomeWithSpecialCharacters() throws Exception {
|
||||
Platforms.onWindows(() -> {
|
||||
final Shell sh = new Shell();
|
||||
final Shell sh = newShell();
|
||||
try {
|
||||
// once windows 2012 is no longer supported and powershell 5.0 is always available we can change this command
|
||||
sh.run("cmd /c mklink /D 'C:\\Program Files (x86)\\java' $Env:SYSTEM_JAVA_HOME");
|
||||
|
@ -201,7 +212,7 @@ public class ArchiveTests extends PackagingTestCase {
|
|||
});
|
||||
|
||||
Platforms.onLinux(() -> {
|
||||
final Shell sh = new Shell();
|
||||
final Shell sh = newShell();
|
||||
// Create temporary directory with a space and link to real java home
|
||||
String testJavaHome = Paths.get("/tmp", "java home").toString();
|
||||
try {
|
||||
|
|
|
@ -117,20 +117,27 @@ public class WindowsServiceTests extends PackagingTestCase {
|
|||
sh.run(serviceScript + " remove");
|
||||
}
|
||||
|
||||
public void test13InstallMissingJava() throws IOException {
|
||||
public void test13InstallMissingBundledJdk() throws IOException {
|
||||
final Path relocatedJdk = installation.bundledJdk.getParent().resolve("jdk.relocated");
|
||||
|
||||
try {
|
||||
mv(installation.bundledJdk, relocatedJdk);
|
||||
Result result = sh.runIgnoreExitCode(serviceScript + " install");
|
||||
assertThat(result.exitCode, equalTo(1));
|
||||
assertThat(result.stderr, containsString("could not find java in JAVA_HOME or bundled"));
|
||||
assertThat(result.stderr, containsString("could not find java in bundled jdk"));
|
||||
} finally {
|
||||
mv(relocatedJdk, installation.bundledJdk);
|
||||
}
|
||||
}
|
||||
|
||||
public void test14RemoveNotInstalled() {
|
||||
public void test14InstallBadJavaHome() throws IOException {
|
||||
sh.getEnv().put("JAVA_HOME", "doesnotexist");
|
||||
Result result = sh.runIgnoreExitCode(serviceScript + " install");
|
||||
assertThat(result.exitCode, equalTo(1));
|
||||
assertThat(result.stderr, containsString("could not find java in JAVA_HOME"));
|
||||
}
|
||||
|
||||
public void test15RemoveNotInstalled() {
|
||||
Result result = assertFailure(serviceScript + " remove", 1);
|
||||
assertThat(result.stdout, containsString("Failed removing '" + DEFAULT_ID + "' service"));
|
||||
}
|
||||
|
|
|
@ -72,7 +72,7 @@ public class ServerUtils {
|
|||
|
||||
} catch (HttpHostConnectException e) {
|
||||
// we want to retry if the connection is refused
|
||||
LOG.debug("Got connection refused when waiting for cluster health", e);
|
||||
LOG.info("Got connection refused when waiting for cluster health", e);
|
||||
}
|
||||
|
||||
timeElapsed = System.currentTimeMillis() - startTime;
|
||||
|
|
Loading…
Reference in New Issue