diff --git a/spring-boot-tests/spring-boot-integration-tests/spring-boot-launch-script-tests/src/intTest/java/org/springframework/boot/launchscript/AbstractLaunchScriptIntegrationTests.java b/spring-boot-tests/spring-boot-integration-tests/spring-boot-launch-script-tests/src/intTest/java/org/springframework/boot/launchscript/AbstractLaunchScriptIntegrationTests.java new file mode 100644 index 00000000000..a0032da7c71 --- /dev/null +++ b/spring-boot-tests/spring-boot-integration-tests/spring-boot-launch-script-tests/src/intTest/java/org/springframework/boot/launchscript/AbstractLaunchScriptIntegrationTests.java @@ -0,0 +1,120 @@ +/* + * 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. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.springframework.boot.launchscript; + +import java.io.File; +import java.time.Duration; +import java.util.ArrayList; +import java.util.List; + +import org.assertj.core.api.Condition; +import org.testcontainers.containers.GenericContainer; +import org.testcontainers.containers.output.ToStringConsumer; +import org.testcontainers.containers.startupcheck.OneShotStartupCheckStrategy; +import org.testcontainers.images.builder.ImageFromDockerfile; +import org.testcontainers.utility.MountableFile; + +import org.springframework.boot.ansi.AnsiColor; + +import static org.assertj.core.api.Assertions.assertThat; +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 AbstractLaunchScriptIntegrationTests { + + protected static final char ESC = 27; + + private final String scriptsDir; + + protected AbstractLaunchScriptIntegrationTests(String scriptsDir) { + this.scriptsDir = scriptsDir; + } + + static List parameters() { + List parameters = new ArrayList<>(); + for (File os : new File("src/intTest/resources/conf").listFiles()) { + for (File version : os.listFiles()) { + parameters.add(new Object[] { os.getName(), version.getName() }); + } + } + return parameters; + } + + protected Condition coloredString(AnsiColor color, String string) { + String colorString = ESC + "[0;" + color + "m" + string + ESC + "[0m"; + return new Condition() { + + @Override + public boolean matches(String value) { + return containsString(colorString).matches(value); + } + + }; + } + + protected void doLaunch(String os, String version, String script) throws Exception { + assertThat(doTest(os, version, script)).contains("Launched"); + } + + protected String doTest(String os, String version, String script) throws Exception { + ToStringConsumer consumer = new ToStringConsumer().withRemoveAnsiCodes(false); + try (LaunchScriptTestContainer container = new LaunchScriptTestContainer(os, version, this.scriptsDir, + script)) { + container.withLogConsumer(consumer); + container.start(); + while (container.isRunning()) { + Thread.sleep(100); + } + } + return consumer.toUtf8String(); + } + + private static final class LaunchScriptTestContainer extends GenericContainer { + + 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/intTest/resources/conf/" + os + "/" + version + "/Dockerfile"))); + withCopyFileToContainer(MountableFile.forHostPath(findApplication().getAbsolutePath()), "/app.jar"); + withCopyFileToContainer( + MountableFile.forHostPath("src/intTest/resources/scripts/" + scriptsDir + "test-functions.sh"), + "/test-functions.sh"); + withCopyFileToContainer( + MountableFile.forHostPath("src/intTest/resources/scripts/" + scriptsDir + testScript), + "/" + testScript); + withCommand("/bin/bash", "-c", "chmod +x " + testScript + " && ./" + testScript); + withStartupCheckStrategy(new OneShotStartupCheckStrategy().withTimeout(Duration.ofMinutes(5))); + } + + private static File findApplication() { + File appJar = new File("build/app/build/libs/app.jar"); + if (appJar.isFile()) { + return appJar; + } + throw new IllegalStateException( + "Could not find test application in build/app/build/libs directory. Have you built it?"); + } + + } + +} diff --git a/spring-boot-tests/spring-boot-integration-tests/spring-boot-launch-script-tests/src/intTest/java/org/springframework/boot/launchscript/JarLaunchScriptIntegrationTests.java b/spring-boot-tests/spring-boot-integration-tests/spring-boot-launch-script-tests/src/intTest/java/org/springframework/boot/launchscript/JarLaunchScriptIntegrationTests.java new file mode 100644 index 00000000000..58acc0ffd4a --- /dev/null +++ b/spring-boot-tests/spring-boot-integration-tests/spring-boot-launch-script-tests/src/intTest/java/org/springframework/boot/launchscript/JarLaunchScriptIntegrationTests.java @@ -0,0 +1,93 @@ +/* + * 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. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.springframework.boot.launchscript; + +import org.junit.jupiter.params.ParameterizedTest; +import org.junit.jupiter.params.provider.MethodSource; + +import static org.assertj.core.api.Assertions.assertThat; + +/** + * Integration tests of Spring Boot's launch script when executing the jar directly. + * + * @author Alexey Vinogradov + * @author Andy Wilkinson + */ +class JarLaunchScriptIntegrationTests extends AbstractLaunchScriptIntegrationTests { + + JarLaunchScriptIntegrationTests() { + super("jar/"); + } + + @ParameterizedTest(name = "{0} {1}") + @MethodSource("parameters") + void basicLaunch(String os, String version) throws Exception { + 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, "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, "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 launchWithSingleCommandLineArgument(String os, String version) throws Exception { + 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, "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"); + } + +} diff --git a/spring-boot-tests/spring-boot-integration-tests/spring-boot-launch-script-tests/src/intTest/java/org/springframework/boot/launchscript/SysVinitLaunchScriptIntegrationTests.java b/spring-boot-tests/spring-boot-integration-tests/spring-boot-launch-script-tests/src/intTest/java/org/springframework/boot/launchscript/SysVinitLaunchScriptIntegrationTests.java index 52699693e1f..298b438928a 100644 --- a/spring-boot-tests/spring-boot-integration-tests/spring-boot-launch-script-tests/src/intTest/java/org/springframework/boot/launchscript/SysVinitLaunchScriptIntegrationTests.java +++ b/spring-boot-tests/spring-boot-integration-tests/spring-boot-launch-script-tests/src/intTest/java/org/springframework/boot/launchscript/SysVinitLaunchScriptIntegrationTests.java @@ -16,37 +16,30 @@ package org.springframework.boot.launchscript; -import java.io.File; -import java.time.Duration; -import java.util.ArrayList; -import java.util.List; import java.util.regex.Pattern; -import org.assertj.core.api.Condition; import org.junit.jupiter.api.Assumptions; import org.junit.jupiter.params.ParameterizedTest; import org.junit.jupiter.params.provider.MethodSource; -import org.testcontainers.containers.GenericContainer; -import org.testcontainers.containers.output.ToStringConsumer; -import org.testcontainers.images.builder.ImageFromDockerfile; -import org.testcontainers.utility.MountableFile; import org.springframework.boot.ansi.AnsiColor; import org.springframework.boot.testsupport.testcontainers.DisabledIfDockerUnavailable; import static org.assertj.core.api.Assertions.assertThat; -import static org.hamcrest.Matchers.containsString; /** * Integration tests for Spring Boot's launch script on OSs that use SysVinit. * * @author Andy Wilkinson * @author Ali Shahbour + * @author Alexey Vinogradov */ @DisabledIfDockerUnavailable -class SysVinitLaunchScriptIntegrationTests { +class SysVinitLaunchScriptIntegrationTests extends AbstractLaunchScriptIntegrationTests { - private static final char ESC = 27; + SysVinitLaunchScriptIntegrationTests() { + super("init.d/"); + } @ParameterizedTest(name = "{0} {1}") @MethodSource("parameters") @@ -279,44 +272,6 @@ class SysVinitLaunchScriptIntegrationTests { assertThat(output).has(coloredString(AnsiColor.RED, "Cannot run as 'wagner': current user is not root")); } - static List parameters() { - List parameters = new ArrayList<>(); - for (File os : new File("src/intTest/resources/conf").listFiles()) { - for (File version : os.listFiles()) { - parameters.add(new Object[] { os.getName(), version.getName() }); - } - } - return parameters; - } - - private void doLaunch(String os, String version, String script) throws Exception { - assertThat(doTest(os, version, script)).contains("Launched"); - } - - private String doTest(String os, String version, String script) throws Exception { - ToStringConsumer consumer = new ToStringConsumer().withRemoveAnsiCodes(false); - try (LaunchScriptTestContainer container = new LaunchScriptTestContainer(os, version, script)) { - container.withLogConsumer(consumer); - container.start(); - while (container.isRunning()) { - Thread.sleep(100); - } - } - return consumer.toUtf8String(); - } - - private Condition coloredString(AnsiColor color, String string) { - String colorString = ESC + "[0;" + color + "m" + string + ESC + "[0m"; - return new Condition() { - - @Override - public boolean matches(String value) { - return containsString(colorString).matches(value); - } - - }; - } - private String extractPid(String output) { return extract("PID", output); } @@ -330,29 +285,4 @@ class SysVinitLaunchScriptIntegrationTests { throw new IllegalArgumentException("Failed to extract " + label + " from output: " + output); } - private static final class LaunchScriptTestContainer extends GenericContainer { - - private LaunchScriptTestContainer(String os, String version, String testScript) { - super(new ImageFromDockerfile("spring-boot-launch-script/" + os.toLowerCase() + "-" + version) - .withFileFromFile("Dockerfile", - new File("src/intTest/resources/conf/" + os + "/" + version + "/Dockerfile")) - .withFileFromFile("app.jar", findApplication()).withFileFromFile("test-functions.sh", - new File("src/intTest/resources/scripts/test-functions.sh"))); - withCopyFileToContainer(MountableFile.forHostPath("src/intTest/resources/scripts/" + testScript), - "/" + testScript); - withCommand("/bin/bash", "-c", "chmod +x " + testScript + " && ./" + testScript); - withStartupTimeout(Duration.ofMinutes(10)); - } - - private static File findApplication() { - File appJar = new File("build/app/build/libs/app.jar"); - if (appJar.isFile()) { - return appJar; - } - throw new IllegalStateException( - "Could not find test application in build/app/build/libs directory. Have you built it?"); - } - - } - } diff --git a/spring-boot-tests/spring-boot-integration-tests/spring-boot-launch-script-tests/src/intTest/resources/conf/CentOS/6.9-a23bced6/Dockerfile b/spring-boot-tests/spring-boot-integration-tests/spring-boot-launch-script-tests/src/intTest/resources/conf/CentOS/6.9-a23bced6/Dockerfile index c97b60e6029..f4856452b61 100644 --- a/spring-boot-tests/spring-boot-integration-tests/spring-boot-launch-script-tests/src/intTest/resources/conf/CentOS/6.9-a23bced6/Dockerfile +++ b/spring-boot-tests/spring-boot-integration-tests/spring-boot-launch-script-tests/src/intTest/resources/conf/CentOS/6.9-a23bced6/Dockerfile @@ -7,5 +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 app.jar /app.jar -ADD test-functions.sh /test-functions.sh \ No newline at end of file diff --git a/spring-boot-tests/spring-boot-integration-tests/spring-boot-launch-script-tests/src/intTest/resources/conf/Ubuntu/trusty-20160914/Dockerfile b/spring-boot-tests/spring-boot-integration-tests/spring-boot-launch-script-tests/src/intTest/resources/conf/Ubuntu/trusty-20160914/Dockerfile index 7e7a726f494..0e4cc372d52 100644 --- a/spring-boot-tests/spring-boot-integration-tests/spring-boot-launch-script-tests/src/intTest/resources/conf/Ubuntu/trusty-20160914/Dockerfile +++ b/spring-boot-tests/spring-boot-integration-tests/spring-boot-launch-script-tests/src/intTest/resources/conf/Ubuntu/trusty-20160914/Dockerfile @@ -6,5 +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 app.jar /app.jar -ADD test-functions.sh /test-functions.sh \ No newline at end of file diff --git a/spring-boot-tests/spring-boot-integration-tests/spring-boot-launch-script-tests/src/intTest/resources/conf/Ubuntu/xenial-20160914/Dockerfile b/spring-boot-tests/spring-boot-integration-tests/spring-boot-launch-script-tests/src/intTest/resources/conf/Ubuntu/xenial-20160914/Dockerfile index 8f8cae543fc..e8e84e0c478 100644 --- a/spring-boot-tests/spring-boot-integration-tests/spring-boot-launch-script-tests/src/intTest/resources/conf/Ubuntu/xenial-20160914/Dockerfile +++ b/spring-boot-tests/spring-boot-integration-tests/spring-boot-launch-script-tests/src/intTest/resources/conf/Ubuntu/xenial-20160914/Dockerfile @@ -6,5 +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 app.jar /app.jar -ADD test-functions.sh /test-functions.sh \ No newline at end of file diff --git a/spring-boot-tests/spring-boot-integration-tests/spring-boot-launch-script-tests/src/intTest/resources/scripts/basic-launch.sh b/spring-boot-tests/spring-boot-integration-tests/spring-boot-launch-script-tests/src/intTest/resources/scripts/init.d/basic-launch.sh similarity index 100% rename from spring-boot-tests/spring-boot-integration-tests/spring-boot-launch-script-tests/src/intTest/resources/scripts/basic-launch.sh rename to spring-boot-tests/spring-boot-integration-tests/spring-boot-launch-script-tests/src/intTest/resources/scripts/init.d/basic-launch.sh diff --git a/spring-boot-tests/spring-boot-integration-tests/spring-boot-launch-script-tests/src/intTest/resources/scripts/force-stop-when-stopped.sh b/spring-boot-tests/spring-boot-integration-tests/spring-boot-launch-script-tests/src/intTest/resources/scripts/init.d/force-stop-when-stopped.sh similarity index 100% rename from spring-boot-tests/spring-boot-integration-tests/spring-boot-launch-script-tests/src/intTest/resources/scripts/force-stop-when-stopped.sh rename to spring-boot-tests/spring-boot-integration-tests/spring-boot-launch-script-tests/src/intTest/resources/scripts/init.d/force-stop-when-stopped.sh diff --git a/spring-boot-tests/spring-boot-integration-tests/spring-boot-launch-script-tests/src/intTest/resources/scripts/launch-with-double-link-single-java-opt.sh b/spring-boot-tests/spring-boot-integration-tests/spring-boot-launch-script-tests/src/intTest/resources/scripts/init.d/launch-with-double-link-single-java-opt.sh similarity index 100% rename from spring-boot-tests/spring-boot-integration-tests/spring-boot-launch-script-tests/src/intTest/resources/scripts/launch-with-double-link-single-java-opt.sh rename to spring-boot-tests/spring-boot-integration-tests/spring-boot-launch-script-tests/src/intTest/resources/scripts/init.d/launch-with-double-link-single-java-opt.sh diff --git a/spring-boot-tests/spring-boot-integration-tests/spring-boot-launch-script-tests/src/intTest/resources/scripts/launch-with-missing-log-folder.sh b/spring-boot-tests/spring-boot-integration-tests/spring-boot-launch-script-tests/src/intTest/resources/scripts/init.d/launch-with-missing-log-folder.sh similarity index 100% rename from spring-boot-tests/spring-boot-integration-tests/spring-boot-launch-script-tests/src/intTest/resources/scripts/launch-with-missing-log-folder.sh rename to spring-boot-tests/spring-boot-integration-tests/spring-boot-launch-script-tests/src/intTest/resources/scripts/init.d/launch-with-missing-log-folder.sh diff --git a/spring-boot-tests/spring-boot-integration-tests/spring-boot-launch-script-tests/src/intTest/resources/scripts/launch-with-missing-pid-folder.sh b/spring-boot-tests/spring-boot-integration-tests/spring-boot-launch-script-tests/src/intTest/resources/scripts/init.d/launch-with-missing-pid-folder.sh similarity index 100% rename from spring-boot-tests/spring-boot-integration-tests/spring-boot-launch-script-tests/src/intTest/resources/scripts/launch-with-missing-pid-folder.sh rename to spring-boot-tests/spring-boot-integration-tests/spring-boot-launch-script-tests/src/intTest/resources/scripts/init.d/launch-with-missing-pid-folder.sh diff --git a/spring-boot-tests/spring-boot-integration-tests/spring-boot-launch-script-tests/src/intTest/resources/scripts/launch-with-multiple-command-line-arguments.sh b/spring-boot-tests/spring-boot-integration-tests/spring-boot-launch-script-tests/src/intTest/resources/scripts/init.d/launch-with-multiple-command-line-arguments.sh similarity index 100% rename from spring-boot-tests/spring-boot-integration-tests/spring-boot-launch-script-tests/src/intTest/resources/scripts/launch-with-multiple-command-line-arguments.sh rename to spring-boot-tests/spring-boot-integration-tests/spring-boot-launch-script-tests/src/intTest/resources/scripts/init.d/launch-with-multiple-command-line-arguments.sh diff --git a/spring-boot-tests/spring-boot-integration-tests/spring-boot-launch-script-tests/src/intTest/resources/scripts/launch-with-multiple-java-opts.sh b/spring-boot-tests/spring-boot-integration-tests/spring-boot-launch-script-tests/src/intTest/resources/scripts/init.d/launch-with-multiple-java-opts.sh similarity index 100% rename from spring-boot-tests/spring-boot-integration-tests/spring-boot-launch-script-tests/src/intTest/resources/scripts/launch-with-multiple-java-opts.sh rename to spring-boot-tests/spring-boot-integration-tests/spring-boot-launch-script-tests/src/intTest/resources/scripts/init.d/launch-with-multiple-java-opts.sh diff --git a/spring-boot-tests/spring-boot-integration-tests/spring-boot-launch-script-tests/src/intTest/resources/scripts/launch-with-multiple-run-args.sh b/spring-boot-tests/spring-boot-integration-tests/spring-boot-launch-script-tests/src/intTest/resources/scripts/init.d/launch-with-multiple-run-args.sh similarity index 100% rename from spring-boot-tests/spring-boot-integration-tests/spring-boot-launch-script-tests/src/intTest/resources/scripts/launch-with-multiple-run-args.sh rename to spring-boot-tests/spring-boot-integration-tests/spring-boot-launch-script-tests/src/intTest/resources/scripts/init.d/launch-with-multiple-run-args.sh diff --git a/spring-boot-tests/spring-boot-integration-tests/spring-boot-launch-script-tests/src/intTest/resources/scripts/launch-with-relative-log-folder.sh b/spring-boot-tests/spring-boot-integration-tests/spring-boot-launch-script-tests/src/intTest/resources/scripts/init.d/launch-with-relative-log-folder.sh similarity index 100% rename from spring-boot-tests/spring-boot-integration-tests/spring-boot-launch-script-tests/src/intTest/resources/scripts/launch-with-relative-log-folder.sh rename to spring-boot-tests/spring-boot-integration-tests/spring-boot-launch-script-tests/src/intTest/resources/scripts/init.d/launch-with-relative-log-folder.sh diff --git a/spring-boot-tests/spring-boot-integration-tests/spring-boot-launch-script-tests/src/intTest/resources/scripts/launch-with-relative-pid-folder.sh b/spring-boot-tests/spring-boot-integration-tests/spring-boot-launch-script-tests/src/intTest/resources/scripts/init.d/launch-with-relative-pid-folder.sh similarity index 100% rename from spring-boot-tests/spring-boot-integration-tests/spring-boot-launch-script-tests/src/intTest/resources/scripts/launch-with-relative-pid-folder.sh rename to spring-boot-tests/spring-boot-integration-tests/spring-boot-launch-script-tests/src/intTest/resources/scripts/init.d/launch-with-relative-pid-folder.sh diff --git a/spring-boot-tests/spring-boot-integration-tests/spring-boot-launch-script-tests/src/intTest/resources/scripts/launch-with-run-as-invalid-user.sh b/spring-boot-tests/spring-boot-integration-tests/spring-boot-launch-script-tests/src/intTest/resources/scripts/init.d/launch-with-run-as-invalid-user.sh similarity index 100% rename from spring-boot-tests/spring-boot-integration-tests/spring-boot-launch-script-tests/src/intTest/resources/scripts/launch-with-run-as-invalid-user.sh rename to spring-boot-tests/spring-boot-integration-tests/spring-boot-launch-script-tests/src/intTest/resources/scripts/init.d/launch-with-run-as-invalid-user.sh diff --git a/spring-boot-tests/spring-boot-integration-tests/spring-boot-launch-script-tests/src/intTest/resources/scripts/launch-with-run-as-user-preferred-to-jar-owner.sh b/spring-boot-tests/spring-boot-integration-tests/spring-boot-launch-script-tests/src/intTest/resources/scripts/init.d/launch-with-run-as-user-preferred-to-jar-owner.sh similarity index 100% rename from spring-boot-tests/spring-boot-integration-tests/spring-boot-launch-script-tests/src/intTest/resources/scripts/launch-with-run-as-user-preferred-to-jar-owner.sh rename to spring-boot-tests/spring-boot-integration-tests/spring-boot-launch-script-tests/src/intTest/resources/scripts/init.d/launch-with-run-as-user-preferred-to-jar-owner.sh diff --git a/spring-boot-tests/spring-boot-integration-tests/spring-boot-launch-script-tests/src/intTest/resources/scripts/launch-with-run-as-user-root-required.sh b/spring-boot-tests/spring-boot-integration-tests/spring-boot-launch-script-tests/src/intTest/resources/scripts/init.d/launch-with-run-as-user-root-required.sh similarity index 100% rename from spring-boot-tests/spring-boot-integration-tests/spring-boot-launch-script-tests/src/intTest/resources/scripts/launch-with-run-as-user-root-required.sh rename to spring-boot-tests/spring-boot-integration-tests/spring-boot-launch-script-tests/src/intTest/resources/scripts/init.d/launch-with-run-as-user-root-required.sh diff --git a/spring-boot-tests/spring-boot-integration-tests/spring-boot-launch-script-tests/src/intTest/resources/scripts/launch-with-run-as-user.sh b/spring-boot-tests/spring-boot-integration-tests/spring-boot-launch-script-tests/src/intTest/resources/scripts/init.d/launch-with-run-as-user.sh similarity index 100% rename from spring-boot-tests/spring-boot-integration-tests/spring-boot-launch-script-tests/src/intTest/resources/scripts/launch-with-run-as-user.sh rename to spring-boot-tests/spring-boot-integration-tests/spring-boot-launch-script-tests/src/intTest/resources/scripts/init.d/launch-with-run-as-user.sh diff --git a/spring-boot-tests/spring-boot-integration-tests/spring-boot-launch-script-tests/src/intTest/resources/scripts/launch-with-single-command-line-argument.sh b/spring-boot-tests/spring-boot-integration-tests/spring-boot-launch-script-tests/src/intTest/resources/scripts/init.d/launch-with-single-command-line-argument.sh similarity index 100% rename from spring-boot-tests/spring-boot-integration-tests/spring-boot-launch-script-tests/src/intTest/resources/scripts/launch-with-single-command-line-argument.sh rename to spring-boot-tests/spring-boot-integration-tests/spring-boot-launch-script-tests/src/intTest/resources/scripts/init.d/launch-with-single-command-line-argument.sh diff --git a/spring-boot-tests/spring-boot-integration-tests/spring-boot-launch-script-tests/src/intTest/resources/scripts/launch-with-single-java-opt.sh b/spring-boot-tests/spring-boot-integration-tests/spring-boot-launch-script-tests/src/intTest/resources/scripts/init.d/launch-with-single-java-opt.sh similarity index 100% rename from spring-boot-tests/spring-boot-integration-tests/spring-boot-launch-script-tests/src/intTest/resources/scripts/launch-with-single-java-opt.sh rename to spring-boot-tests/spring-boot-integration-tests/spring-boot-launch-script-tests/src/intTest/resources/scripts/init.d/launch-with-single-java-opt.sh diff --git a/spring-boot-tests/spring-boot-integration-tests/spring-boot-launch-script-tests/src/intTest/resources/scripts/launch-with-single-run-arg.sh b/spring-boot-tests/spring-boot-integration-tests/spring-boot-launch-script-tests/src/intTest/resources/scripts/init.d/launch-with-single-run-arg.sh similarity index 100% rename from spring-boot-tests/spring-boot-integration-tests/spring-boot-launch-script-tests/src/intTest/resources/scripts/launch-with-single-run-arg.sh rename to spring-boot-tests/spring-boot-integration-tests/spring-boot-launch-script-tests/src/intTest/resources/scripts/init.d/launch-with-single-run-arg.sh diff --git a/spring-boot-tests/spring-boot-integration-tests/spring-boot-launch-script-tests/src/intTest/resources/scripts/launch-with-use-of-start-stop-daemon-disabled.sh b/spring-boot-tests/spring-boot-integration-tests/spring-boot-launch-script-tests/src/intTest/resources/scripts/init.d/launch-with-use-of-start-stop-daemon-disabled.sh similarity index 100% rename from spring-boot-tests/spring-boot-integration-tests/spring-boot-launch-script-tests/src/intTest/resources/scripts/launch-with-use-of-start-stop-daemon-disabled.sh rename to spring-boot-tests/spring-boot-integration-tests/spring-boot-launch-script-tests/src/intTest/resources/scripts/init.d/launch-with-use-of-start-stop-daemon-disabled.sh diff --git a/spring-boot-tests/spring-boot-integration-tests/spring-boot-launch-script-tests/src/intTest/resources/scripts/log-file-ownership-is-changed-when-created.sh b/spring-boot-tests/spring-boot-integration-tests/spring-boot-launch-script-tests/src/intTest/resources/scripts/init.d/log-file-ownership-is-changed-when-created.sh similarity index 100% rename from spring-boot-tests/spring-boot-integration-tests/spring-boot-launch-script-tests/src/intTest/resources/scripts/log-file-ownership-is-changed-when-created.sh rename to spring-boot-tests/spring-boot-integration-tests/spring-boot-launch-script-tests/src/intTest/resources/scripts/init.d/log-file-ownership-is-changed-when-created.sh diff --git a/spring-boot-tests/spring-boot-integration-tests/spring-boot-launch-script-tests/src/intTest/resources/scripts/log-file-ownership-is-unchanged-when-exists.sh b/spring-boot-tests/spring-boot-integration-tests/spring-boot-launch-script-tests/src/intTest/resources/scripts/init.d/log-file-ownership-is-unchanged-when-exists.sh similarity index 100% rename from spring-boot-tests/spring-boot-integration-tests/spring-boot-launch-script-tests/src/intTest/resources/scripts/log-file-ownership-is-unchanged-when-exists.sh rename to spring-boot-tests/spring-boot-integration-tests/spring-boot-launch-script-tests/src/intTest/resources/scripts/init.d/log-file-ownership-is-unchanged-when-exists.sh diff --git a/spring-boot-tests/spring-boot-integration-tests/spring-boot-launch-script-tests/src/intTest/resources/scripts/log-file-ownership.sh b/spring-boot-tests/spring-boot-integration-tests/spring-boot-launch-script-tests/src/intTest/resources/scripts/init.d/log-file-ownership.sh similarity index 100% rename from spring-boot-tests/spring-boot-integration-tests/spring-boot-launch-script-tests/src/intTest/resources/scripts/log-file-ownership.sh rename to spring-boot-tests/spring-boot-integration-tests/spring-boot-launch-script-tests/src/intTest/resources/scripts/init.d/log-file-ownership.sh diff --git a/spring-boot-tests/spring-boot-integration-tests/spring-boot-launch-script-tests/src/intTest/resources/scripts/pid-file-ownership.sh b/spring-boot-tests/spring-boot-integration-tests/spring-boot-launch-script-tests/src/intTest/resources/scripts/init.d/pid-file-ownership.sh similarity index 100% rename from spring-boot-tests/spring-boot-integration-tests/spring-boot-launch-script-tests/src/intTest/resources/scripts/pid-file-ownership.sh rename to spring-boot-tests/spring-boot-integration-tests/spring-boot-launch-script-tests/src/intTest/resources/scripts/init.d/pid-file-ownership.sh diff --git a/spring-boot-tests/spring-boot-integration-tests/spring-boot-launch-script-tests/src/intTest/resources/scripts/pid-folder-ownership.sh b/spring-boot-tests/spring-boot-integration-tests/spring-boot-launch-script-tests/src/intTest/resources/scripts/init.d/pid-folder-ownership.sh similarity index 100% rename from spring-boot-tests/spring-boot-integration-tests/spring-boot-launch-script-tests/src/intTest/resources/scripts/pid-folder-ownership.sh rename to spring-boot-tests/spring-boot-integration-tests/spring-boot-launch-script-tests/src/intTest/resources/scripts/init.d/pid-folder-ownership.sh diff --git a/spring-boot-tests/spring-boot-integration-tests/spring-boot-launch-script-tests/src/intTest/resources/scripts/restart-when-started.sh b/spring-boot-tests/spring-boot-integration-tests/spring-boot-launch-script-tests/src/intTest/resources/scripts/init.d/restart-when-started.sh similarity index 100% rename from spring-boot-tests/spring-boot-integration-tests/spring-boot-launch-script-tests/src/intTest/resources/scripts/restart-when-started.sh rename to spring-boot-tests/spring-boot-integration-tests/spring-boot-launch-script-tests/src/intTest/resources/scripts/init.d/restart-when-started.sh diff --git a/spring-boot-tests/spring-boot-integration-tests/spring-boot-launch-script-tests/src/intTest/resources/scripts/restart-when-stopped.sh b/spring-boot-tests/spring-boot-integration-tests/spring-boot-launch-script-tests/src/intTest/resources/scripts/init.d/restart-when-stopped.sh similarity index 100% rename from spring-boot-tests/spring-boot-integration-tests/spring-boot-launch-script-tests/src/intTest/resources/scripts/restart-when-stopped.sh rename to spring-boot-tests/spring-boot-integration-tests/spring-boot-launch-script-tests/src/intTest/resources/scripts/init.d/restart-when-stopped.sh diff --git a/spring-boot-tests/spring-boot-integration-tests/spring-boot-launch-script-tests/src/intTest/resources/scripts/start-when-started.sh b/spring-boot-tests/spring-boot-integration-tests/spring-boot-launch-script-tests/src/intTest/resources/scripts/init.d/start-when-started.sh similarity index 100% rename from spring-boot-tests/spring-boot-integration-tests/spring-boot-launch-script-tests/src/intTest/resources/scripts/start-when-started.sh rename to spring-boot-tests/spring-boot-integration-tests/spring-boot-launch-script-tests/src/intTest/resources/scripts/init.d/start-when-started.sh diff --git a/spring-boot-tests/spring-boot-integration-tests/spring-boot-launch-script-tests/src/intTest/resources/scripts/start-when-stopped.sh b/spring-boot-tests/spring-boot-integration-tests/spring-boot-launch-script-tests/src/intTest/resources/scripts/init.d/start-when-stopped.sh similarity index 100% rename from spring-boot-tests/spring-boot-integration-tests/spring-boot-launch-script-tests/src/intTest/resources/scripts/start-when-stopped.sh rename to spring-boot-tests/spring-boot-integration-tests/spring-boot-launch-script-tests/src/intTest/resources/scripts/init.d/start-when-stopped.sh diff --git a/spring-boot-tests/spring-boot-integration-tests/spring-boot-launch-script-tests/src/intTest/resources/scripts/status-when-killed.sh b/spring-boot-tests/spring-boot-integration-tests/spring-boot-launch-script-tests/src/intTest/resources/scripts/init.d/status-when-killed.sh similarity index 100% rename from spring-boot-tests/spring-boot-integration-tests/spring-boot-launch-script-tests/src/intTest/resources/scripts/status-when-killed.sh rename to spring-boot-tests/spring-boot-integration-tests/spring-boot-launch-script-tests/src/intTest/resources/scripts/init.d/status-when-killed.sh diff --git a/spring-boot-tests/spring-boot-integration-tests/spring-boot-launch-script-tests/src/intTest/resources/scripts/status-when-started.sh b/spring-boot-tests/spring-boot-integration-tests/spring-boot-launch-script-tests/src/intTest/resources/scripts/init.d/status-when-started.sh similarity index 100% rename from spring-boot-tests/spring-boot-integration-tests/spring-boot-launch-script-tests/src/intTest/resources/scripts/status-when-started.sh rename to spring-boot-tests/spring-boot-integration-tests/spring-boot-launch-script-tests/src/intTest/resources/scripts/init.d/status-when-started.sh diff --git a/spring-boot-tests/spring-boot-integration-tests/spring-boot-launch-script-tests/src/intTest/resources/scripts/status-when-stopped.sh b/spring-boot-tests/spring-boot-integration-tests/spring-boot-launch-script-tests/src/intTest/resources/scripts/init.d/status-when-stopped.sh similarity index 100% rename from spring-boot-tests/spring-boot-integration-tests/spring-boot-launch-script-tests/src/intTest/resources/scripts/status-when-stopped.sh rename to spring-boot-tests/spring-boot-integration-tests/spring-boot-launch-script-tests/src/intTest/resources/scripts/init.d/status-when-stopped.sh diff --git a/spring-boot-tests/spring-boot-integration-tests/spring-boot-launch-script-tests/src/intTest/resources/scripts/stop-when-stopped.sh b/spring-boot-tests/spring-boot-integration-tests/spring-boot-launch-script-tests/src/intTest/resources/scripts/init.d/stop-when-stopped.sh similarity index 100% rename from spring-boot-tests/spring-boot-integration-tests/spring-boot-launch-script-tests/src/intTest/resources/scripts/stop-when-stopped.sh rename to spring-boot-tests/spring-boot-integration-tests/spring-boot-launch-script-tests/src/intTest/resources/scripts/init.d/stop-when-stopped.sh diff --git a/spring-boot-tests/spring-boot-integration-tests/spring-boot-launch-script-tests/src/intTest/resources/scripts/test-functions.sh b/spring-boot-tests/spring-boot-integration-tests/spring-boot-launch-script-tests/src/intTest/resources/scripts/init.d/test-functions.sh similarity index 98% rename from spring-boot-tests/spring-boot-integration-tests/spring-boot-launch-script-tests/src/intTest/resources/scripts/test-functions.sh rename to spring-boot-tests/spring-boot-integration-tests/spring-boot-launch-script-tests/src/intTest/resources/scripts/init.d/test-functions.sh index e7430eb7707..cd6b5217dd8 100644 --- a/spring-boot-tests/spring-boot-integration-tests/spring-boot-launch-script-tests/src/intTest/resources/scripts/test-functions.sh +++ b/spring-boot-tests/spring-boot-integration-tests/spring-boot-launch-script-tests/src/intTest/resources/scripts/init.d/test-functions.sh @@ -1,3 +1,22 @@ +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 mv /app.jar /test-service/spring-boot-app.jar @@ -32,22 +51,3 @@ stop_service() { force_stop_service() { service spring-boot-app force-stop } - -await_app() { - if [ -z $1 ] - then - url=http://127.0.0.1:8080 - else - url=$1 - fi - end=$(date +%s) - let "end+=600" - until curl -s $url > /dev/null - do - now=$(date +%s) - if [[ $now -ge $end ]]; then - break - fi - sleep 1 - done -} diff --git a/spring-boot-tests/spring-boot-integration-tests/spring-boot-launch-script-tests/src/intTest/resources/scripts/jar/basic-launch.sh b/spring-boot-tests/spring-boot-integration-tests/spring-boot-launch-script-tests/src/intTest/resources/scripts/jar/basic-launch.sh new file mode 100644 index 00000000000..cf6be88597a --- /dev/null +++ b/spring-boot-tests/spring-boot-integration-tests/spring-boot-launch-script-tests/src/intTest/resources/scripts/jar/basic-launch.sh @@ -0,0 +1,4 @@ +source ./test-functions.sh +launch_jar +await_app +curl -s http://127.0.0.1:8080/ diff --git a/spring-boot-tests/spring-boot-integration-tests/spring-boot-launch-script-tests/src/intTest/resources/scripts/jar/launch-with-debug.sh b/spring-boot-tests/spring-boot-integration-tests/spring-boot-launch-script-tests/src/intTest/resources/scripts/jar/launch-with-debug.sh new file mode 100644 index 00000000000..b9d1f6fc850 --- /dev/null +++ b/spring-boot-tests/spring-boot-integration-tests/spring-boot-launch-script-tests/src/intTest/resources/scripts/jar/launch-with-debug.sh @@ -0,0 +1,5 @@ +export DEBUG=true +source ./test-functions.sh +launch_jar +await_app +curl -s http://127.0.0.1:8080/ diff --git a/spring-boot-tests/spring-boot-integration-tests/spring-boot-launch-script-tests/src/intTest/resources/scripts/jar/launch-with-jarfile.sh b/spring-boot-tests/spring-boot-integration-tests/spring-boot-launch-script-tests/src/intTest/resources/scripts/jar/launch-with-jarfile.sh new file mode 100644 index 00000000000..110ab78f01c --- /dev/null +++ b/spring-boot-tests/spring-boot-integration-tests/spring-boot-launch-script-tests/src/intTest/resources/scripts/jar/launch-with-jarfile.sh @@ -0,0 +1,6 @@ +source ./test-functions.sh +cp app.jar app-another.jar +export JARFILE=app-another.jar +launch_jar +await_app +curl -s http://127.0.0.1:8080/ diff --git a/spring-boot-tests/spring-boot-integration-tests/spring-boot-launch-script-tests/src/intTest/resources/scripts/jar/launch-with-multiple-command-line-arguments.sh b/spring-boot-tests/spring-boot-integration-tests/spring-boot-launch-script-tests/src/intTest/resources/scripts/jar/launch-with-multiple-command-line-arguments.sh new file mode 100755 index 00000000000..6a97eab32a2 --- /dev/null +++ b/spring-boot-tests/spring-boot-integration-tests/spring-boot-launch-script-tests/src/intTest/resources/scripts/jar/launch-with-multiple-command-line-arguments.sh @@ -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/ diff --git a/spring-boot-tests/spring-boot-integration-tests/spring-boot-launch-script-tests/src/intTest/resources/scripts/jar/launch-with-multiple-java-opts.sh b/spring-boot-tests/spring-boot-integration-tests/spring-boot-launch-script-tests/src/intTest/resources/scripts/jar/launch-with-multiple-java-opts.sh new file mode 100755 index 00000000000..02f376c0bee --- /dev/null +++ b/spring-boot-tests/spring-boot-integration-tests/spring-boot-launch-script-tests/src/intTest/resources/scripts/jar/launch-with-multiple-java-opts.sh @@ -0,0 +1,5 @@ +source ./test-functions.sh +echo 'JAVA_OPTS="-Dserver.port=8081 -Dserver.servlet.context-path=/test"' > app.conf +launch_jar +await_app http://127.0.0.1:8081/test/ +curl -s http://127.0.0.1:8081/test/ diff --git a/spring-boot-tests/spring-boot-integration-tests/spring-boot-launch-script-tests/src/intTest/resources/scripts/jar/launch-with-multiple-run-args.sh b/spring-boot-tests/spring-boot-integration-tests/spring-boot-launch-script-tests/src/intTest/resources/scripts/jar/launch-with-multiple-run-args.sh new file mode 100755 index 00000000000..aa610e08b5a --- /dev/null +++ b/spring-boot-tests/spring-boot-integration-tests/spring-boot-launch-script-tests/src/intTest/resources/scripts/jar/launch-with-multiple-run-args.sh @@ -0,0 +1,5 @@ +source ./test-functions.sh +echo 'RUN_ARGS="--server.port=8081 --server.servlet.context-path=/test"' > app.conf +launch_jar +await_app http://127.0.0.1:8081/test/ +curl -s http://127.0.0.1:8081/test/ diff --git a/spring-boot-tests/spring-boot-integration-tests/spring-boot-launch-script-tests/src/intTest/resources/scripts/jar/launch-with-single-command-line-argument.sh b/spring-boot-tests/spring-boot-integration-tests/spring-boot-launch-script-tests/src/intTest/resources/scripts/jar/launch-with-single-command-line-argument.sh new file mode 100755 index 00000000000..d1be39e8492 --- /dev/null +++ b/spring-boot-tests/spring-boot-integration-tests/spring-boot-launch-script-tests/src/intTest/resources/scripts/jar/launch-with-single-command-line-argument.sh @@ -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/ diff --git a/spring-boot-tests/spring-boot-integration-tests/spring-boot-launch-script-tests/src/intTest/resources/scripts/jar/launch-with-single-java-opt.sh b/spring-boot-tests/spring-boot-integration-tests/spring-boot-launch-script-tests/src/intTest/resources/scripts/jar/launch-with-single-java-opt.sh new file mode 100755 index 00000000000..110c2ec9e9e --- /dev/null +++ b/spring-boot-tests/spring-boot-integration-tests/spring-boot-launch-script-tests/src/intTest/resources/scripts/jar/launch-with-single-java-opt.sh @@ -0,0 +1,5 @@ +source ./test-functions.sh +echo 'JAVA_OPTS=-Dserver.port=8081' > app.conf +launch_jar +await_app http://127.0.0.1:8081/ +curl -s http://127.0.0.1:8081/ diff --git a/spring-boot-tests/spring-boot-integration-tests/spring-boot-launch-script-tests/src/intTest/resources/scripts/jar/launch-with-single-run-arg.sh b/spring-boot-tests/spring-boot-integration-tests/spring-boot-launch-script-tests/src/intTest/resources/scripts/jar/launch-with-single-run-arg.sh new file mode 100755 index 00000000000..63f92a886ee --- /dev/null +++ b/spring-boot-tests/spring-boot-integration-tests/spring-boot-launch-script-tests/src/intTest/resources/scripts/jar/launch-with-single-run-arg.sh @@ -0,0 +1,5 @@ +source ./test-functions.sh +echo 'RUN_ARGS=--server.port=8081' > app.conf +launch_jar +await_app http://127.0.0.1:8081/ +curl -s http://127.0.0.1:8081/ diff --git a/spring-boot-tests/spring-boot-integration-tests/spring-boot-launch-script-tests/src/intTest/resources/scripts/jar/test-functions.sh b/spring-boot-tests/spring-boot-integration-tests/spring-boot-launch-script-tests/src/intTest/resources/scripts/jar/test-functions.sh new file mode 100644 index 00000000000..aa6ea03e1dd --- /dev/null +++ b/spring-boot-tests/spring-boot-integration-tests/spring-boot-launch-script-tests/src/intTest/resources/scripts/jar/test-functions.sh @@ -0,0 +1,22 @@ +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() { + ./app.jar $@ & +}