diff --git a/src/main/java/io/crate/testing/CrateTestCluster.java b/src/main/java/io/crate/testing/CrateTestCluster.java index 22916ca..8f237e9 100644 --- a/src/main/java/io/crate/testing/CrateTestCluster.java +++ b/src/main/java/io/crate/testing/CrateTestCluster.java @@ -442,6 +442,7 @@ public void after() { CrateTestServer[] localServers = serversSafe(); for (CrateTestServer server : localServers) { server.after(); + assert !server.isAlive(); } try { removeCrateDir(); diff --git a/src/main/java/io/crate/testing/CrateTestServer.java b/src/main/java/io/crate/testing/CrateTestServer.java index 53e90f9..dc25cb9 100644 --- a/src/main/java/io/crate/testing/CrateTestServer.java +++ b/src/main/java/io/crate/testing/CrateTestServer.java @@ -135,6 +135,13 @@ protected void after() { } } + public Boolean isAlive() { + if (crateProcess == null) { + return false; + } + return crateProcess.isAlive(); + } + private long startCrateAsDaemon() throws IOException, InterruptedException { Map settingsMap = prepareSettings(); diff --git a/src/test/java/io/crate/testing/ShutdownTest.java b/src/test/java/io/crate/testing/ShutdownTest.java new file mode 100644 index 0000000..a688b9c --- /dev/null +++ b/src/test/java/io/crate/testing/ShutdownTest.java @@ -0,0 +1,31 @@ +import io.crate.testing.CrateTestCluster; +import org.junit.AfterClass; +import org.junit.BeforeClass; +import org.junit.Test; + +import static org.hamcrest.MatcherAssert.assertThat; +import static org.hamcrest.CoreMatchers.is; + +public class ShutdownTest { + + private static CrateTestCluster testCluster; + + @BeforeClass + public static void setUpClusterAndAgent() throws Throwable { + testCluster = CrateTestCluster.fromURL("https://cdn.crate.io/downloads/releases/nightly/crate-latest.tar.gz") + .keepWorkingDir(false) + .build(); + testCluster.before(); + } + + @AfterClass + public static void tearDown() { + // if cluster cannot be terminated, an expection will be thrown + testCluster.after(); + } + + @Test + public void test() { + assertThat(true, is(true)); + } +}