Polish "Test the launch script when executed directly"
See gh-21388
This commit is contained in:
parent
02a6a84499
commit
84ff233590
|
|
@ -35,12 +35,20 @@ import static org.hamcrest.Matchers.containsString;
|
|||
/**
|
||||
* Abstract base class for testing the launch script.
|
||||
*
|
||||
* @author Andy Wilkinson
|
||||
* @author Ali Shahbour
|
||||
* @author Alexey Vinogradov
|
||||
*/
|
||||
abstract class AbstractLaunchScriptIT {
|
||||
|
||||
protected static final char ESC = 27;
|
||||
|
||||
private final String scriptsDir;
|
||||
|
||||
protected AbstractLaunchScriptIT(String scriptsDir) {
|
||||
this.scriptsDir = scriptsDir;
|
||||
}
|
||||
|
||||
static List<Object[]> parameters() {
|
||||
List<Object[]> parameters = new ArrayList<>();
|
||||
for (File os : new File("src/test/resources/conf").listFiles()) {
|
||||
|
|
@ -69,7 +77,8 @@ abstract class AbstractLaunchScriptIT {
|
|||
|
||||
protected String doTest(String os, String version, String script) throws Exception {
|
||||
ToStringConsumer consumer = new ToStringConsumer().withRemoveAnsiCodes(false);
|
||||
try (LaunchScriptTestContainer container = new LaunchScriptTestContainer(os, version, script)) {
|
||||
try (LaunchScriptTestContainer container = new LaunchScriptTestContainer(os, version, this.scriptsDir,
|
||||
script)) {
|
||||
container.withLogConsumer(consumer);
|
||||
container.start();
|
||||
while (container.isRunning()) {
|
||||
|
|
@ -81,17 +90,16 @@ abstract class AbstractLaunchScriptIT {
|
|||
|
||||
private static final class LaunchScriptTestContainer extends GenericContainer<LaunchScriptTestContainer> {
|
||||
|
||||
private LaunchScriptTestContainer(String os, String version, String testScript) {
|
||||
private LaunchScriptTestContainer(String os, String version, String scriptsDir, String testScript) {
|
||||
super(new ImageFromDockerfile("spring-boot-launch-script/" + os.toLowerCase() + "-" + version)
|
||||
.withFileFromFile("Dockerfile",
|
||||
new File("src/test/resources/conf/" + os + "/" + version + "/Dockerfile"))
|
||||
.withFileFromFile("spring-boot-launch-script-tests.jar", findApplication())
|
||||
.withFileFromFile("test-functions.sh", new File("src/test/resources/scripts/test-functions.sh"))
|
||||
.withFileFromFile("jar/test-functions.sh",
|
||||
new File("src/test/resources/scripts/jar/test-functions.sh"))
|
||||
.withFileFromFile("init.d/test-functions.sh",
|
||||
new File("src/test/resources/scripts/init.d/test-functions.sh")));
|
||||
withCopyFileToContainer(MountableFile.forHostPath("src/test/resources/scripts/" + testScript),
|
||||
new File("src/test/resources/conf/" + os + "/" + version + "/Dockerfile")));
|
||||
withCopyFileToContainer(MountableFile.forHostPath(findApplication().getAbsolutePath()),
|
||||
"/spring-boot-launch-script-tests.jar");
|
||||
withCopyFileToContainer(
|
||||
MountableFile.forHostPath("src/test/resources/scripts/" + scriptsDir + "test-functions.sh"),
|
||||
"/test-functions.sh");
|
||||
withCopyFileToContainer(MountableFile.forHostPath("src/test/resources/scripts/" + scriptsDir + testScript),
|
||||
"/" + testScript);
|
||||
withCommand("/bin/bash", "-c", "chmod +x " + testScript + " && ./" + testScript);
|
||||
withStartupTimeout(Duration.ofMinutes(10));
|
||||
|
|
|
|||
|
|
@ -22,45 +22,72 @@ import org.junit.jupiter.params.provider.MethodSource;
|
|||
import static org.assertj.core.api.Assertions.assertThat;
|
||||
|
||||
/**
|
||||
* Integration tests of Spring Boot's launch script with launching via shell.
|
||||
* Integration tests of Spring Boot's launch script when executing the jar directly.
|
||||
*
|
||||
* @author Alexey Vinogradov
|
||||
* @author Andy Wilkinson
|
||||
*/
|
||||
class ShellLaunchScriptIT extends AbstractLaunchScriptIT {
|
||||
class JarLaunchScriptIT extends AbstractLaunchScriptIT {
|
||||
|
||||
JarLaunchScriptIT() {
|
||||
super("jar/");
|
||||
}
|
||||
|
||||
@ParameterizedTest(name = "{0} {1}")
|
||||
@MethodSource("parameters")
|
||||
void basicLaunch(String os, String version) throws Exception {
|
||||
doLaunch(os, version, "jar/basic-launch.sh");
|
||||
doLaunch(os, version, "basic-launch.sh");
|
||||
}
|
||||
|
||||
@ParameterizedTest(name = "{0} {1}")
|
||||
@MethodSource("parameters")
|
||||
void launchWithDebugEnv(String os, String version) throws Exception {
|
||||
final String output = doTest(os, version, "jar/launch-with-debug.sh");
|
||||
final String output = doTest(os, version, "launch-with-debug.sh");
|
||||
assertThat(output).contains("++ pwd");
|
||||
}
|
||||
|
||||
@ParameterizedTest(name = "{0} {1}")
|
||||
@MethodSource("parameters")
|
||||
void launchWithDifferentJarFileEnv(String os, String version) throws Exception {
|
||||
final String output = doTest(os, version, "jar/launch-with-jarfile.sh");
|
||||
final String output = doTest(os, version, "launch-with-jarfile.sh");
|
||||
assertThat(output).contains("app-another.jar");
|
||||
assertThat(output).doesNotContain("spring-boot-launch-script-tests.jar");
|
||||
}
|
||||
|
||||
@ParameterizedTest(name = "{0} {1}")
|
||||
@MethodSource("parameters")
|
||||
void launchWithDifferentAppName(String os, String version) throws Exception {
|
||||
final String output = doTest(os, version, "jar/launch-with-app-name.sh");
|
||||
assertThat(output).contains("All tests are passed.");
|
||||
void launchWithSingleCommandLineArgument(String os, String version) throws Exception {
|
||||
doLaunch(os, version, "launch-with-single-command-line-argument.sh");
|
||||
}
|
||||
|
||||
@ParameterizedTest(name = "{0} {1}")
|
||||
@MethodSource("parameters")
|
||||
void launchInInitdDir(String os, String version) throws Exception {
|
||||
final String output = doTest(os, version, "jar/launch-in-init.d-dir.sh");
|
||||
assertThat(output).contains("Usage: ./some_app {start|stop|force-stop|restart|force-reload|status|run}");
|
||||
void launchWithMultipleCommandLineArguments(String os, String version) throws Exception {
|
||||
doLaunch(os, version, "launch-with-multiple-command-line-arguments.sh");
|
||||
}
|
||||
|
||||
@ParameterizedTest(name = "{0} {1}")
|
||||
@MethodSource("parameters")
|
||||
void launchWithSingleRunArg(String os, String version) throws Exception {
|
||||
doLaunch(os, version, "launch-with-single-run-arg.sh");
|
||||
}
|
||||
|
||||
@ParameterizedTest(name = "{0} {1}")
|
||||
@MethodSource("parameters")
|
||||
void launchWithMultipleRunArgs(String os, String version) throws Exception {
|
||||
doLaunch(os, version, "launch-with-multiple-run-args.sh");
|
||||
}
|
||||
|
||||
@ParameterizedTest(name = "{0} {1}")
|
||||
@MethodSource("parameters")
|
||||
void launchWithSingleJavaOpt(String os, String version) throws Exception {
|
||||
doLaunch(os, version, "launch-with-single-java-opt.sh");
|
||||
}
|
||||
|
||||
@ParameterizedTest(name = "{0} {1}")
|
||||
@MethodSource("parameters")
|
||||
void launchWithMultipleJavaOpts(String os, String version) throws Exception {
|
||||
doLaunch(os, version, "launch-with-multiple-java-opts.sh");
|
||||
}
|
||||
|
||||
}
|
||||
|
|
@ -1,5 +1,5 @@
|
|||
/*
|
||||
* Copyright 2012-2019 the original author or authors.
|
||||
* Copyright 2012-2020 the original author or authors.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
|
|
@ -31,13 +31,18 @@ import static org.assertj.core.api.Assertions.assertThat;
|
|||
*
|
||||
* @author Andy Wilkinson
|
||||
* @author Ali Shahbour
|
||||
* @author Alexey Vinogradov
|
||||
*/
|
||||
class SysVinitLaunchScriptIT extends AbstractLaunchScriptIT {
|
||||
|
||||
SysVinitLaunchScriptIT() {
|
||||
super("init.d/");
|
||||
}
|
||||
|
||||
@ParameterizedTest(name = "{0} {1}")
|
||||
@MethodSource("parameters")
|
||||
void statusWhenStopped(String os, String version) throws Exception {
|
||||
String output = doTest(os, version, "init.d/status-when-stopped.sh");
|
||||
String output = doTest(os, version, "status-when-stopped.sh");
|
||||
assertThat(output).contains("Status: 3");
|
||||
assertThat(output).has(coloredString(AnsiColor.RED, "Not running"));
|
||||
}
|
||||
|
|
@ -45,7 +50,7 @@ class SysVinitLaunchScriptIT extends AbstractLaunchScriptIT {
|
|||
@ParameterizedTest(name = "{0} {1}")
|
||||
@MethodSource("parameters")
|
||||
void statusWhenStarted(String os, String version) throws Exception {
|
||||
String output = doTest(os, version, "init.d/status-when-started.sh");
|
||||
String output = doTest(os, version, "status-when-started.sh");
|
||||
assertThat(output).contains("Status: 0");
|
||||
assertThat(output).has(coloredString(AnsiColor.GREEN, "Started [" + extractPid(output) + "]"));
|
||||
}
|
||||
|
|
@ -53,7 +58,7 @@ class SysVinitLaunchScriptIT extends AbstractLaunchScriptIT {
|
|||
@ParameterizedTest(name = "{0} {1}")
|
||||
@MethodSource("parameters")
|
||||
void statusWhenKilled(String os, String version) throws Exception {
|
||||
String output = doTest(os, version, "init.d/status-when-killed.sh");
|
||||
String output = doTest(os, version, "status-when-killed.sh");
|
||||
assertThat(output).contains("Status: 1");
|
||||
assertThat(output)
|
||||
.has(coloredString(AnsiColor.RED, "Not running (process " + extractPid(output) + " not found)"));
|
||||
|
|
@ -62,7 +67,7 @@ class SysVinitLaunchScriptIT extends AbstractLaunchScriptIT {
|
|||
@ParameterizedTest(name = "{0} {1}")
|
||||
@MethodSource("parameters")
|
||||
void stopWhenStopped(String os, String version) throws Exception {
|
||||
String output = doTest(os, version, "init.d/stop-when-stopped.sh");
|
||||
String output = doTest(os, version, "stop-when-stopped.sh");
|
||||
assertThat(output).contains("Status: 0");
|
||||
assertThat(output).has(coloredString(AnsiColor.YELLOW, "Not running (pidfile not found)"));
|
||||
}
|
||||
|
|
@ -70,7 +75,7 @@ class SysVinitLaunchScriptIT extends AbstractLaunchScriptIT {
|
|||
@ParameterizedTest(name = "{0} {1}")
|
||||
@MethodSource("parameters")
|
||||
void forceStopWhenStopped(String os, String version) throws Exception {
|
||||
String output = doTest(os, version, "init.d/force-stop-when-stopped.sh");
|
||||
String output = doTest(os, version, "force-stop-when-stopped.sh");
|
||||
assertThat(output).contains("Status: 0");
|
||||
assertThat(output).has(coloredString(AnsiColor.YELLOW, "Not running (pidfile not found)"));
|
||||
}
|
||||
|
|
@ -78,7 +83,7 @@ class SysVinitLaunchScriptIT extends AbstractLaunchScriptIT {
|
|||
@ParameterizedTest(name = "{0} {1}")
|
||||
@MethodSource("parameters")
|
||||
void startWhenStarted(String os, String version) throws Exception {
|
||||
String output = doTest(os, version, "init.d/start-when-started.sh");
|
||||
String output = doTest(os, version, "start-when-started.sh");
|
||||
assertThat(output).contains("Status: 0");
|
||||
assertThat(output).has(coloredString(AnsiColor.YELLOW, "Already running [" + extractPid(output) + "]"));
|
||||
}
|
||||
|
|
@ -86,7 +91,7 @@ class SysVinitLaunchScriptIT extends AbstractLaunchScriptIT {
|
|||
@ParameterizedTest(name = "{0} {1}")
|
||||
@MethodSource("parameters")
|
||||
void restartWhenStopped(String os, String version) throws Exception {
|
||||
String output = doTest(os, version, "init.d/restart-when-stopped.sh");
|
||||
String output = doTest(os, version, "restart-when-stopped.sh");
|
||||
assertThat(output).contains("Status: 0");
|
||||
assertThat(output).has(coloredString(AnsiColor.YELLOW, "Not running (pidfile not found)"));
|
||||
assertThat(output).has(coloredString(AnsiColor.GREEN, "Started [" + extractPid(output) + "]"));
|
||||
|
|
@ -95,7 +100,7 @@ class SysVinitLaunchScriptIT extends AbstractLaunchScriptIT {
|
|||
@ParameterizedTest(name = "{0} {1}")
|
||||
@MethodSource("parameters")
|
||||
void restartWhenStarted(String os, String version) throws Exception {
|
||||
String output = doTest(os, version, "init.d/restart-when-started.sh");
|
||||
String output = doTest(os, version, "restart-when-started.sh");
|
||||
assertThat(output).contains("Status: 0");
|
||||
assertThat(output).has(coloredString(AnsiColor.GREEN, "Started [" + extract("PID1", output) + "]"));
|
||||
assertThat(output).has(coloredString(AnsiColor.GREEN, "Stopped [" + extract("PID1", output) + "]"));
|
||||
|
|
@ -105,7 +110,7 @@ class SysVinitLaunchScriptIT extends AbstractLaunchScriptIT {
|
|||
@ParameterizedTest(name = "{0} {1}")
|
||||
@MethodSource("parameters")
|
||||
void startWhenStopped(String os, String version) throws Exception {
|
||||
String output = doTest(os, version, "init.d/start-when-stopped.sh");
|
||||
String output = doTest(os, version, "start-when-stopped.sh");
|
||||
assertThat(output).contains("Status: 0");
|
||||
assertThat(output).has(coloredString(AnsiColor.GREEN, "Started [" + extractPid(output) + "]"));
|
||||
}
|
||||
|
|
@ -113,14 +118,14 @@ class SysVinitLaunchScriptIT extends AbstractLaunchScriptIT {
|
|||
@ParameterizedTest(name = "{0} {1}")
|
||||
@MethodSource("parameters")
|
||||
void basicLaunch(String os, String version) throws Exception {
|
||||
String output = doTest(os, version, "init.d/basic-launch.sh");
|
||||
String output = doTest(os, version, "basic-launch.sh");
|
||||
assertThat(output).doesNotContain("PID_FOLDER");
|
||||
}
|
||||
|
||||
@ParameterizedTest(name = "{0} {1}")
|
||||
@MethodSource("parameters")
|
||||
void launchWithMissingLogFolderGeneratesAWarning(String os, String version) throws Exception {
|
||||
String output = doTest(os, version, "init.d/launch-with-missing-log-folder.sh");
|
||||
String output = doTest(os, version, "launch-with-missing-log-folder.sh");
|
||||
assertThat(output).has(
|
||||
coloredString(AnsiColor.YELLOW, "LOG_FOLDER /does/not/exist does not exist. Falling back to /tmp"));
|
||||
}
|
||||
|
|
@ -128,7 +133,7 @@ class SysVinitLaunchScriptIT extends AbstractLaunchScriptIT {
|
|||
@ParameterizedTest(name = "{0} {1}")
|
||||
@MethodSource("parameters")
|
||||
void launchWithMissingPidFolderGeneratesAWarning(String os, String version) throws Exception {
|
||||
String output = doTest(os, version, "init.d/launch-with-missing-pid-folder.sh");
|
||||
String output = doTest(os, version, "launch-with-missing-pid-folder.sh");
|
||||
assertThat(output).has(
|
||||
coloredString(AnsiColor.YELLOW, "PID_FOLDER /does/not/exist does not exist. Falling back to /tmp"));
|
||||
}
|
||||
|
|
@ -136,43 +141,43 @@ class SysVinitLaunchScriptIT extends AbstractLaunchScriptIT {
|
|||
@ParameterizedTest(name = "{0} {1}")
|
||||
@MethodSource("parameters")
|
||||
void launchWithSingleCommandLineArgument(String os, String version) throws Exception {
|
||||
doLaunch(os, version, "init.d/launch-with-single-command-line-argument.sh");
|
||||
doLaunch(os, version, "launch-with-single-command-line-argument.sh");
|
||||
}
|
||||
|
||||
@ParameterizedTest(name = "{0} {1}")
|
||||
@MethodSource("parameters")
|
||||
void launchWithMultipleCommandLineArguments(String os, String version) throws Exception {
|
||||
doLaunch(os, version, "init.d/launch-with-multiple-command-line-arguments.sh");
|
||||
doLaunch(os, version, "launch-with-multiple-command-line-arguments.sh");
|
||||
}
|
||||
|
||||
@ParameterizedTest(name = "{0} {1}")
|
||||
@MethodSource("parameters")
|
||||
void launchWithSingleRunArg(String os, String version) throws Exception {
|
||||
doLaunch(os, version, "init.d/launch-with-single-run-arg.sh");
|
||||
doLaunch(os, version, "launch-with-single-run-arg.sh");
|
||||
}
|
||||
|
||||
@ParameterizedTest(name = "{0} {1}")
|
||||
@MethodSource("parameters")
|
||||
void launchWithMultipleRunArgs(String os, String version) throws Exception {
|
||||
doLaunch(os, version, "init.d/launch-with-multiple-run-args.sh");
|
||||
doLaunch(os, version, "launch-with-multiple-run-args.sh");
|
||||
}
|
||||
|
||||
@ParameterizedTest(name = "{0} {1}")
|
||||
@MethodSource("parameters")
|
||||
void launchWithSingleJavaOpt(String os, String version) throws Exception {
|
||||
doLaunch(os, version, "init.d/launch-with-single-java-opt.sh");
|
||||
doLaunch(os, version, "launch-with-single-java-opt.sh");
|
||||
}
|
||||
|
||||
@ParameterizedTest(name = "{0} {1}")
|
||||
@MethodSource("parameters")
|
||||
void launchWithDoubleLinkSingleJavaOpt(String os, String version) throws Exception {
|
||||
doLaunch(os, version, "init.d/launch-with-double-link-single-java-opt.sh");
|
||||
doLaunch(os, version, "launch-with-double-link-single-java-opt.sh");
|
||||
}
|
||||
|
||||
@ParameterizedTest(name = "{0} {1}")
|
||||
@MethodSource("parameters")
|
||||
void launchWithMultipleJavaOpts(String os, String version) throws Exception {
|
||||
doLaunch(os, version, "init.d/launch-with-multiple-java-opts.sh");
|
||||
doLaunch(os, version, "launch-with-multiple-java-opts.sh");
|
||||
}
|
||||
|
||||
@ParameterizedTest(name = "{0} {1}")
|
||||
|
|
@ -180,13 +185,13 @@ class SysVinitLaunchScriptIT extends AbstractLaunchScriptIT {
|
|||
void launchWithUseOfStartStopDaemonDisabled(String os, String version) throws Exception {
|
||||
// CentOS doesn't have start-stop-daemon
|
||||
Assumptions.assumeFalse(os.equals("CentOS"));
|
||||
doLaunch(os, version, "init.d/launch-with-use-of-start-stop-daemon-disabled.sh");
|
||||
doLaunch(os, version, "launch-with-use-of-start-stop-daemon-disabled.sh");
|
||||
}
|
||||
|
||||
@ParameterizedTest(name = "{0} {1}")
|
||||
@MethodSource("parameters")
|
||||
void launchWithRelativePidFolder(String os, String version) throws Exception {
|
||||
String output = doTest(os, version, "init.d/launch-with-relative-pid-folder.sh");
|
||||
String output = doTest(os, version, "launch-with-relative-pid-folder.sh");
|
||||
assertThat(output).has(coloredString(AnsiColor.GREEN, "Started [" + extractPid(output) + "]"));
|
||||
assertThat(output).has(coloredString(AnsiColor.GREEN, "Running [" + extractPid(output) + "]"));
|
||||
assertThat(output).has(coloredString(AnsiColor.GREEN, "Stopped [" + extractPid(output) + "]"));
|
||||
|
|
@ -195,56 +200,56 @@ class SysVinitLaunchScriptIT extends AbstractLaunchScriptIT {
|
|||
@ParameterizedTest(name = "{0} {1}")
|
||||
@MethodSource("parameters")
|
||||
void pidFolderOwnership(String os, String version) throws Exception {
|
||||
String output = doTest(os, version, "init.d/pid-folder-ownership.sh");
|
||||
String output = doTest(os, version, "pid-folder-ownership.sh");
|
||||
assertThat(output).contains("phil root");
|
||||
}
|
||||
|
||||
@ParameterizedTest(name = "{0} {1}")
|
||||
@MethodSource("parameters")
|
||||
void pidFileOwnership(String os, String version) throws Exception {
|
||||
String output = doTest(os, version, "init.d/pid-file-ownership.sh");
|
||||
String output = doTest(os, version, "pid-file-ownership.sh");
|
||||
assertThat(output).contains("phil root");
|
||||
}
|
||||
|
||||
@ParameterizedTest(name = "{0} {1}")
|
||||
@MethodSource("parameters")
|
||||
void logFileOwnership(String os, String version) throws Exception {
|
||||
String output = doTest(os, version, "init.d/log-file-ownership.sh");
|
||||
String output = doTest(os, version, "log-file-ownership.sh");
|
||||
assertThat(output).contains("phil root");
|
||||
}
|
||||
|
||||
@ParameterizedTest(name = "{0} {1}")
|
||||
@MethodSource("parameters")
|
||||
void logFileOwnershipIsChangedWhenCreated(String os, String version) throws Exception {
|
||||
String output = doTest(os, version, "init.d/log-file-ownership-is-changed-when-created.sh");
|
||||
String output = doTest(os, version, "log-file-ownership-is-changed-when-created.sh");
|
||||
assertThat(output).contains("andy root");
|
||||
}
|
||||
|
||||
@ParameterizedTest(name = "{0} {1}")
|
||||
@MethodSource("parameters")
|
||||
void logFileOwnershipIsUnchangedWhenExists(String os, String version) throws Exception {
|
||||
String output = doTest(os, version, "init.d/log-file-ownership-is-unchanged-when-exists.sh");
|
||||
String output = doTest(os, version, "log-file-ownership-is-unchanged-when-exists.sh");
|
||||
assertThat(output).contains("root root");
|
||||
}
|
||||
|
||||
@ParameterizedTest(name = "{0} {1}")
|
||||
@MethodSource("parameters")
|
||||
void launchWithRelativeLogFolder(String os, String version) throws Exception {
|
||||
String output = doTest(os, version, "init.d/launch-with-relative-log-folder.sh");
|
||||
String output = doTest(os, version, "launch-with-relative-log-folder.sh");
|
||||
assertThat(output).contains("Log written");
|
||||
}
|
||||
|
||||
@ParameterizedTest(name = "{0} {1}")
|
||||
@MethodSource("parameters")
|
||||
void launchWithRunAsUser(String os, String version) throws Exception {
|
||||
String output = doTest(os, version, "init.d/launch-with-run-as-user.sh");
|
||||
String output = doTest(os, version, "launch-with-run-as-user.sh");
|
||||
assertThat(output).contains("wagner root");
|
||||
}
|
||||
|
||||
@ParameterizedTest(name = "{0} {1}")
|
||||
@MethodSource("parameters")
|
||||
void whenRunAsUserDoesNotExistLaunchFailsWithInvalidArgument(String os, String version) throws Exception {
|
||||
String output = doTest(os, version, "init.d/launch-with-run-as-invalid-user.sh");
|
||||
String output = doTest(os, version, "launch-with-run-as-invalid-user.sh");
|
||||
assertThat(output).contains("Status: 2");
|
||||
assertThat(output).has(coloredString(AnsiColor.RED, "Cannot run as 'johndoe': no such user"));
|
||||
}
|
||||
|
|
@ -252,7 +257,7 @@ class SysVinitLaunchScriptIT extends AbstractLaunchScriptIT {
|
|||
@ParameterizedTest(name = "{0} {1}")
|
||||
@MethodSource("parameters")
|
||||
void whenJarOwnerAndRunAsUserAreBothSpecifiedRunAsUserTakesPrecedence(String os, String version) throws Exception {
|
||||
String output = doTest(os, version, "init.d/launch-with-run-as-user-preferred-to-jar-owner.sh");
|
||||
String output = doTest(os, version, "launch-with-run-as-user-preferred-to-jar-owner.sh");
|
||||
assertThat(output).contains("wagner root");
|
||||
}
|
||||
|
||||
|
|
@ -260,7 +265,7 @@ class SysVinitLaunchScriptIT extends AbstractLaunchScriptIT {
|
|||
@MethodSource("parameters")
|
||||
void whenLaunchedUsingNonRootUserWithRunAsUserSpecifiedLaunchFailsWithInsufficientPrivilege(String os,
|
||||
String version) throws Exception {
|
||||
String output = doTest(os, version, "init.d/launch-with-run-as-user-root-required.sh");
|
||||
String output = doTest(os, version, "launch-with-run-as-user-root-required.sh");
|
||||
assertThat(output).contains("Status: 4");
|
||||
assertThat(output).has(coloredString(AnsiColor.RED, "Cannot run as 'wagner': current user is not root"));
|
||||
}
|
||||
|
|
|
|||
|
|
@ -7,7 +7,3 @@ RUN yum install -y wget && \
|
|||
https://cdn.azul.com/zulu/bin/zulu8.21.0.1-jdk8.0.131-linux.x86_64.rpm && \
|
||||
yum --nogpg localinstall -y jdk.rpm && \
|
||||
rm -f jdk.rpm
|
||||
ADD spring-boot-launch-script-tests.jar /spring-boot-launch-script-tests.jar
|
||||
ADD test-functions.sh /test-functions.sh
|
||||
ADD init.d/test-functions.sh /init.d/test-functions.sh
|
||||
ADD jar/test-functions.sh /jar/test-functions.sh
|
||||
|
|
|
|||
|
|
@ -6,7 +6,3 @@ RUN apt-get update && \
|
|||
curl -L https://github.com/AdoptOpenJDK/openjdk8-binaries/releases/download/jdk8u202-b08/OpenJDK8U-jdk_x64_linux_hotspot_8u202b08.tar.gz | tar zx --strip-components=1
|
||||
ENV JAVA_HOME /opt/openjdk
|
||||
ENV PATH $JAVA_HOME/bin:$PATH
|
||||
ADD spring-boot-launch-script-tests.jar /spring-boot-launch-script-tests.jar
|
||||
ADD test-functions.sh /test-functions.sh
|
||||
ADD init.d/test-functions.sh /init.d/test-functions.sh
|
||||
ADD jar/test-functions.sh /jar/test-functions.sh
|
||||
|
|
|
|||
|
|
@ -6,7 +6,3 @@ RUN apt-get update && \
|
|||
curl -L https://github.com/AdoptOpenJDK/openjdk8-binaries/releases/download/jdk8u202-b08/OpenJDK8U-jdk_x64_linux_hotspot_8u202b08.tar.gz | tar zx --strip-components=1
|
||||
ENV JAVA_HOME /opt/openjdk
|
||||
ENV PATH $JAVA_HOME/bin:$PATH
|
||||
ADD spring-boot-launch-script-tests.jar /spring-boot-launch-script-tests.jar
|
||||
ADD test-functions.sh /test-functions.sh
|
||||
ADD init.d/test-functions.sh /init.d/test-functions.sh
|
||||
ADD jar/test-functions.sh /jar/test-functions.sh
|
||||
|
|
|
|||
|
|
@ -1,5 +1,4 @@
|
|||
source ./test-functions.sh
|
||||
source ./init.d/test-functions.sh
|
||||
install_service
|
||||
start_service
|
||||
await_app
|
||||
|
|
|
|||
|
|
@ -1,5 +1,4 @@
|
|||
source ./test-functions.sh
|
||||
source ./init.d/test-functions.sh
|
||||
install_service
|
||||
force_stop_service
|
||||
echo "Status: $?"
|
||||
|
|
|
|||
|
|
@ -1,5 +1,4 @@
|
|||
source ./test-functions.sh
|
||||
source ./init.d/test-functions.sh
|
||||
install_double_link_service
|
||||
echo 'JAVA_OPTS=-Dserver.port=8081' > /test-service/spring-boot-app.conf
|
||||
start_service
|
||||
|
|
|
|||
|
|
@ -1,5 +1,4 @@
|
|||
source ./test-functions.sh
|
||||
source ./init.d/test-functions.sh
|
||||
install_service
|
||||
echo 'LOG_FOLDER=/does/not/exist' > /test-service/spring-boot-app.conf
|
||||
start_service
|
||||
|
|
|
|||
|
|
@ -1,5 +1,4 @@
|
|||
source ./test-functions.sh
|
||||
source ./init.d/test-functions.sh
|
||||
install_service
|
||||
echo 'PID_FOLDER=/does/not/exist' > /test-service/spring-boot-app.conf
|
||||
start_service
|
||||
|
|
|
|||
|
|
@ -1,5 +1,4 @@
|
|||
source ./test-functions.sh
|
||||
source ./init.d/test-functions.sh
|
||||
install_service
|
||||
start_service --server.port=8081 --server.servlet.context-path=/test
|
||||
await_app http://127.0.0.1:8081/test/
|
||||
|
|
|
|||
|
|
@ -1,5 +1,4 @@
|
|||
source ./test-functions.sh
|
||||
source ./init.d/test-functions.sh
|
||||
install_service
|
||||
echo 'JAVA_OPTS="-Dserver.port=8081 -Dserver.servlet.context-path=/test"' > /test-service/spring-boot-app.conf
|
||||
start_service
|
||||
|
|
|
|||
|
|
@ -1,5 +1,4 @@
|
|||
source ./test-functions.sh
|
||||
source ./init.d/test-functions.sh
|
||||
install_service
|
||||
echo 'RUN_ARGS="--server.port=8081 --server.servlet.context-path=/test"' > /test-service/spring-boot-app.conf
|
||||
start_service
|
||||
|
|
|
|||
|
|
@ -1,5 +1,4 @@
|
|||
source ./test-functions.sh
|
||||
source ./init.d/test-functions.sh
|
||||
mkdir ./pid
|
||||
install_service
|
||||
echo 'LOG_FOLDER=log' > /test-service/spring-boot-app.conf
|
||||
|
|
|
|||
|
|
@ -1,5 +1,4 @@
|
|||
source ./test-functions.sh
|
||||
source ./init.d/test-functions.sh
|
||||
install_service
|
||||
mkdir /test-service/pid
|
||||
echo 'PID_FOLDER=pid' > /test-service/spring-boot-app.conf
|
||||
|
|
|
|||
|
|
@ -1,5 +1,4 @@
|
|||
source ./test-functions.sh
|
||||
source ./init.d/test-functions.sh
|
||||
install_service
|
||||
|
||||
echo 'RUN_AS_USER=johndoe' > /test-service/spring-boot-app.conf
|
||||
|
|
|
|||
|
|
@ -1,5 +1,4 @@
|
|||
source ./test-functions.sh
|
||||
source ./init.d/test-functions.sh
|
||||
install_service
|
||||
|
||||
useradd wagner
|
||||
|
|
|
|||
|
|
@ -1,5 +1,4 @@
|
|||
source ./test-functions.sh
|
||||
source ./init.d/test-functions.sh
|
||||
install_service
|
||||
|
||||
useradd wagner
|
||||
|
|
|
|||
|
|
@ -1,5 +1,4 @@
|
|||
source ./test-functions.sh
|
||||
source ./init.d/test-functions.sh
|
||||
install_service
|
||||
|
||||
useradd wagner
|
||||
|
|
|
|||
|
|
@ -1,5 +1,4 @@
|
|||
source ./test-functions.sh
|
||||
source ./init.d/test-functions.sh
|
||||
install_service
|
||||
start_service --server.port=8081
|
||||
await_app http://127.0.0.1:8081/
|
||||
|
|
|
|||
|
|
@ -1,5 +1,4 @@
|
|||
source ./test-functions.sh
|
||||
source ./init.d/test-functions.sh
|
||||
install_service
|
||||
echo 'JAVA_OPTS=-Dserver.port=8081' > /test-service/spring-boot-app.conf
|
||||
start_service
|
||||
|
|
|
|||
|
|
@ -1,5 +1,4 @@
|
|||
source ./test-functions.sh
|
||||
source ./init.d/test-functions.sh
|
||||
install_service
|
||||
echo 'RUN_ARGS=--server.port=8081' > /test-service/spring-boot-app.conf
|
||||
start_service
|
||||
|
|
|
|||
|
|
@ -1,5 +1,4 @@
|
|||
source ./test-functions.sh
|
||||
source ./init.d/test-functions.sh
|
||||
chmod -x $(type -p start-stop-daemon)
|
||||
install_service
|
||||
echo 'USE_START_STOP_DAEMON=false' > /test-service/spring-boot-app.conf
|
||||
|
|
|
|||
|
|
@ -1,5 +1,4 @@
|
|||
source ./test-functions.sh
|
||||
source ./init.d/test-functions.sh
|
||||
install_service
|
||||
echo 'LOG_FOLDER=log' > /test-service/spring-boot-app.conf
|
||||
mkdir -p /test-service/log
|
||||
|
|
|
|||
|
|
@ -1,5 +1,4 @@
|
|||
source ./test-functions.sh
|
||||
source ./init.d/test-functions.sh
|
||||
install_service
|
||||
echo 'LOG_FOLDER=log' > /test-service/spring-boot-app.conf
|
||||
mkdir -p /test-service/log
|
||||
|
|
|
|||
|
|
@ -1,5 +1,4 @@
|
|||
source ./test-functions.sh
|
||||
source ./init.d/test-functions.sh
|
||||
install_service
|
||||
|
||||
chmod o+w /var/log
|
||||
|
|
|
|||
|
|
@ -1,5 +1,4 @@
|
|||
source ./test-functions.sh
|
||||
source ./init.d/test-functions.sh
|
||||
install_service
|
||||
|
||||
useradd phil
|
||||
|
|
|
|||
|
|
@ -1,5 +1,4 @@
|
|||
source ./test-functions.sh
|
||||
source ./init.d/test-functions.sh
|
||||
install_service
|
||||
|
||||
chmod o+w /var/run
|
||||
|
|
|
|||
|
|
@ -1,5 +1,4 @@
|
|||
source ./test-functions.sh
|
||||
source ./init.d/test-functions.sh
|
||||
install_service
|
||||
start_service
|
||||
echo "PID1: $(cat /var/run/spring-boot-app/spring-boot-app.pid)"
|
||||
|
|
|
|||
|
|
@ -1,5 +1,4 @@
|
|||
source ./test-functions.sh
|
||||
source ./init.d/test-functions.sh
|
||||
install_service
|
||||
restart_service
|
||||
echo "Status: $?"
|
||||
|
|
|
|||
|
|
@ -1,5 +1,4 @@
|
|||
source ./test-functions.sh
|
||||
source ./init.d/test-functions.sh
|
||||
install_service
|
||||
start_service
|
||||
echo "PID: $(cat /var/run/spring-boot-app/spring-boot-app.pid)"
|
||||
|
|
|
|||
|
|
@ -1,5 +1,4 @@
|
|||
source ./test-functions.sh
|
||||
source ./init.d/test-functions.sh
|
||||
install_service
|
||||
start_service
|
||||
echo "Status: $?"
|
||||
|
|
|
|||
|
|
@ -1,5 +1,4 @@
|
|||
source ./test-functions.sh
|
||||
source ./init.d/test-functions.sh
|
||||
install_service
|
||||
start_service
|
||||
pid=$(cat /var/run/spring-boot-app/spring-boot-app.pid)
|
||||
|
|
|
|||
|
|
@ -1,5 +1,4 @@
|
|||
source ./test-functions.sh
|
||||
source ./init.d/test-functions.sh
|
||||
install_service
|
||||
start_service
|
||||
status_service
|
||||
|
|
|
|||
|
|
@ -1,5 +1,4 @@
|
|||
source ./test-functions.sh
|
||||
source ./init.d/test-functions.sh
|
||||
install_service
|
||||
status_service
|
||||
echo "Status: $?"
|
||||
|
|
|
|||
|
|
@ -1,5 +1,4 @@
|
|||
source ./test-functions.sh
|
||||
source ./init.d/test-functions.sh
|
||||
install_service
|
||||
stop_service
|
||||
echo "Status: $?"
|
||||
|
|
|
|||
|
|
@ -1,4 +1,21 @@
|
|||
source ../test-functions.sh
|
||||
await_app() {
|
||||
if [ -z $1 ]
|
||||
then
|
||||
url=http://127.0.0.1:8080
|
||||
else
|
||||
url=$1
|
||||
fi
|
||||
end=$(date +%s)
|
||||
let "end+=30"
|
||||
until curl -s $url > /dev/null
|
||||
do
|
||||
now=$(date +%s)
|
||||
if [[ $now -ge $end ]]; then
|
||||
break
|
||||
fi
|
||||
sleep 1
|
||||
done
|
||||
}
|
||||
|
||||
install_service() {
|
||||
mkdir /test-service
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
source ./test-functions.sh
|
||||
source ./jar/test-functions.sh
|
||||
launch_jar & await_app
|
||||
launch_jar
|
||||
await_app
|
||||
curl -s http://127.0.0.1:8080/
|
||||
|
|
|
|||
|
|
@ -1,5 +0,0 @@
|
|||
source ./test-functions.sh
|
||||
source ./jar/test-functions.sh
|
||||
cd "init.d" || exit 1
|
||||
ln -s ../spring-boot-launch-script-tests.jar some_app
|
||||
./some_app
|
||||
|
|
@ -1,27 +0,0 @@
|
|||
source ./test-functions.sh
|
||||
source ./jar/test-functions.sh
|
||||
export APP_NAME="my-new-app"
|
||||
export MODE=service
|
||||
./spring-boot-launch-script-tests.jar start
|
||||
TEST_LOG_FILE="/var/log/$APP_NAME.log"
|
||||
if [[ (! (-e "$TEST_LOG_FILE")) || (! (-f "$TEST_LOG_FILE")) ]]; then
|
||||
echo Log file "$TEST_LOG_FILE" doesn\'t exists.
|
||||
exit 2
|
||||
else
|
||||
echo Test for a log file is passed.
|
||||
fi
|
||||
TEST_PID_FOLDER="/var/run/$APP_NAME"
|
||||
if [[ (! (-e "$TEST_PID_FOLDER")) || (! (-d "$TEST_PID_FOLDER")) ]]; then
|
||||
echo PID folder "$TEST_PID_FOLDER" doesn\'t exists.
|
||||
exit 2
|
||||
else
|
||||
echo Test for a PID folder is passed.
|
||||
fi
|
||||
TEST_PID_FILE="$TEST_PID_FOLDER/$APP_NAME.pid"
|
||||
if [[ (! (-e "$TEST_PID_FILE")) || (! (-f "$TEST_PID_FILE"))]]; then
|
||||
echo PID file "$TEST_PID_FILE" doesn\'t exists.
|
||||
exit 2
|
||||
else
|
||||
echo Test for a PID file is passed.
|
||||
fi
|
||||
echo All tests are passed.
|
||||
|
|
@ -1,5 +1,5 @@
|
|||
export DEBUG=true
|
||||
source ./test-functions.sh
|
||||
source ./jar/test-functions.sh
|
||||
launch_jar & await_app
|
||||
launch_jar
|
||||
await_app
|
||||
curl -s http://127.0.0.1:8080/
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
source ./test-functions.sh
|
||||
source ./jar/test-functions.sh
|
||||
cp spring-boot-launch-script-tests.jar app-another.jar
|
||||
export JARFILE=app-another.jar
|
||||
launch_jar & await_app
|
||||
launch_jar
|
||||
await_app
|
||||
curl -s http://127.0.0.1:8080/
|
||||
|
|
|
|||
|
|
@ -0,0 +1,4 @@
|
|||
source ./test-functions.sh
|
||||
launch_jar --server.port=8081 --server.servlet.context-path=/test
|
||||
await_app http://127.0.0.1:8081/test/
|
||||
curl -s http://127.0.0.1:8081/test/
|
||||
|
|
@ -0,0 +1,5 @@
|
|||
source ./test-functions.sh
|
||||
echo 'JAVA_OPTS="-Dserver.port=8081 -Dserver.servlet.context-path=/test"' > spring-boot-launch-script-tests.conf
|
||||
launch_jar
|
||||
await_app http://127.0.0.1:8081/test/
|
||||
curl -s http://127.0.0.1:8081/test/
|
||||
|
|
@ -0,0 +1,5 @@
|
|||
source ./test-functions.sh
|
||||
echo 'RUN_ARGS="--server.port=8081 --server.servlet.context-path=/test"' > spring-boot-launch-script-tests.conf
|
||||
launch_jar
|
||||
await_app http://127.0.0.1:8081/test/
|
||||
curl -s http://127.0.0.1:8081/test/
|
||||
|
|
@ -0,0 +1,4 @@
|
|||
source ./test-functions.sh
|
||||
launch_jar --server.port=8081
|
||||
await_app http://127.0.0.1:8081/
|
||||
curl -s http://127.0.0.1:8081/
|
||||
|
|
@ -0,0 +1,5 @@
|
|||
source ./test-functions.sh
|
||||
echo 'JAVA_OPTS=-Dserver.port=8081' > spring-boot-launch-script-tests.conf
|
||||
launch_jar
|
||||
await_app http://127.0.0.1:8081/
|
||||
curl -s http://127.0.0.1:8081/
|
||||
|
|
@ -0,0 +1,5 @@
|
|||
source ./test-functions.sh
|
||||
echo 'RUN_ARGS=--server.port=8081' > /spring-boot-launch-script-tests.conf
|
||||
launch_jar
|
||||
await_app http://127.0.0.1:8081/
|
||||
curl -s http://127.0.0.1:8081/
|
||||
|
|
@ -1,3 +1,22 @@
|
|||
launch_jar() {
|
||||
./spring-boot-launch-script-tests.jar
|
||||
await_app() {
|
||||
if [ -z $1 ]
|
||||
then
|
||||
url=http://127.0.0.1:8080
|
||||
else
|
||||
url=$1
|
||||
fi
|
||||
end=$(date +%s)
|
||||
let "end+=30"
|
||||
until curl -s $url > /dev/null
|
||||
do
|
||||
now=$(date +%s)
|
||||
if [[ $now -ge $end ]]; then
|
||||
break
|
||||
fi
|
||||
sleep 1
|
||||
done
|
||||
}
|
||||
|
||||
launch_jar() {
|
||||
./spring-boot-launch-script-tests.jar $@ &
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,18 +0,0 @@
|
|||
await_app() {
|
||||
if [ -z $1 ]
|
||||
then
|
||||
url=http://127.0.0.1:8080
|
||||
else
|
||||
url=$1
|
||||
fi
|
||||
end=$(date +%s)
|
||||
let "end+=30"
|
||||
until curl -s $url > /dev/null
|
||||
do
|
||||
now=$(date +%s)
|
||||
if [[ $now -ge $end ]]; then
|
||||
break
|
||||
fi
|
||||
sleep 1
|
||||
done
|
||||
}
|
||||
Loading…
Reference in New Issue