aboutsummaryrefslogtreecommitdiff
path: root/launcher/src/test/java/org/apache/spark/launcher/LauncherServerSuite.java
diff options
context:
space:
mode:
Diffstat (limited to 'launcher/src/test/java/org/apache/spark/launcher/LauncherServerSuite.java')
-rw-r--r--launcher/src/test/java/org/apache/spark/launcher/LauncherServerSuite.java31
1 files changed, 31 insertions, 0 deletions
diff --git a/launcher/src/test/java/org/apache/spark/launcher/LauncherServerSuite.java b/launcher/src/test/java/org/apache/spark/launcher/LauncherServerSuite.java
index bfe1fcc87f..12f1a0ce2d 100644
--- a/launcher/src/test/java/org/apache/spark/launcher/LauncherServerSuite.java
+++ b/launcher/src/test/java/org/apache/spark/launcher/LauncherServerSuite.java
@@ -152,6 +152,37 @@ public class LauncherServerSuite extends BaseSuite {
}
}
+ @Test
+ public void testSparkSubmitVmShutsDown() throws Exception {
+ ChildProcAppHandle handle = LauncherServer.newAppHandle();
+ TestClient client = null;
+ final Semaphore semaphore = new Semaphore(0);
+ try {
+ Socket s = new Socket(InetAddress.getLoopbackAddress(),
+ LauncherServer.getServerInstance().getPort());
+ handle.addListener(new SparkAppHandle.Listener() {
+ public void stateChanged(SparkAppHandle handle) {
+ semaphore.release();
+ }
+ public void infoChanged(SparkAppHandle handle) {
+ semaphore.release();
+ }
+ });
+ client = new TestClient(s);
+ client.send(new Hello(handle.getSecret(), "1.4.0"));
+ assertTrue(semaphore.tryAcquire(30, TimeUnit.SECONDS));
+ // Make sure the server matched the client to the handle.
+ assertNotNull(handle.getConnection());
+ close(client);
+ assertTrue(semaphore.tryAcquire(30, TimeUnit.SECONDS));
+ assertEquals(SparkAppHandle.State.LOST, handle.getState());
+ } finally {
+ kill(handle);
+ close(client);
+ client.clientThread.join();
+ }
+ }
+
private void kill(SparkAppHandle handle) {
if (handle != null) {
handle.kill();