diff --git a/tools/quick-e2e/src/main/java/de/oliver/quicke2e/Main.java b/tools/quick-e2e/src/main/java/de/oliver/quicke2e/Main.java index 471038d2..b6560a96 100644 --- a/tools/quick-e2e/src/main/java/de/oliver/quicke2e/Main.java +++ b/tools/quick-e2e/src/main/java/de/oliver/quicke2e/Main.java @@ -49,6 +49,20 @@ public class Main { StartServerService startServer = new StartServerService(); startServer.startServer(context); + + Runtime.getRuntime().addShutdownHook(new Thread(() -> { + if (context.serverProcess().isAlive()) { + context.serverProcess().destroy(); + } + })); + + if (context.serverProcess() != null && context.serverProcess().isAlive()) { + try { + context.serverProcess().waitFor(); + } catch (InterruptedException e) { + e.printStackTrace(); + } + } } } diff --git a/tools/quick-e2e/src/main/java/de/oliver/quicke2e/config/Context.java b/tools/quick-e2e/src/main/java/de/oliver/quicke2e/config/Context.java index dc3edcc2..5c1a45bc 100644 --- a/tools/quick-e2e/src/main/java/de/oliver/quicke2e/config/Context.java +++ b/tools/quick-e2e/src/main/java/de/oliver/quicke2e/config/Context.java @@ -6,10 +6,13 @@ public class Context { private final Configuration configuration; private String actualBuildNumber; + private Path serverEnvPath; private Path serverJarPath; private Path startScriptPath; + private Process serverProcess; + public Context(Configuration configuration) { this.configuration = configuration; this.actualBuildNumber = configuration.build(); @@ -54,4 +57,12 @@ public class Context { public void setStartScriptPath(Path startScriptPath) { this.startScriptPath = startScriptPath; } + + public Process serverProcess() { + return serverProcess; + } + + public void setServerProcess(Process serverProcess) { + this.serverProcess = serverProcess; + } } diff --git a/tools/quick-e2e/src/main/java/de/oliver/quicke2e/steps/startServer/StartServerService.java b/tools/quick-e2e/src/main/java/de/oliver/quicke2e/steps/startServer/StartServerService.java index 278f3b35..bdca3989 100644 --- a/tools/quick-e2e/src/main/java/de/oliver/quicke2e/steps/startServer/StartServerService.java +++ b/tools/quick-e2e/src/main/java/de/oliver/quicke2e/steps/startServer/StartServerService.java @@ -10,7 +10,7 @@ public class StartServerService { try { Process process = processBuilder.start(); - process.waitFor(); + context.setServerProcess(process); } catch (Exception e) { e.printStackTrace(); }