diff --git a/src/test/java/com/github/nkzawa/engineio/client/ExecutionTest.java b/src/test/java/com/github/nkzawa/engineio/client/ExecutionTest.java new file mode 100644 index 0000000..244b383 --- /dev/null +++ b/src/test/java/com/github/nkzawa/engineio/client/ExecutionTest.java @@ -0,0 +1,46 @@ +package com.github.nkzawa.engineio.client; + +import org.junit.Test; +import org.junit.runner.RunWith; +import org.junit.runners.JUnit4; + +import java.io.BufferedReader; +import java.io.IOException; +import java.io.InputStreamReader; + +import static org.hamcrest.CoreMatchers.is; +import static org.junit.Assert.assertThat; + +@RunWith(JUnit4.class) +public class ExecutionTest extends Connection { + + final static int TIMEOUT = 30 * 1000; + + @Test(timeout = TIMEOUT) + public void execConnection() throws InterruptedException, IOException { + exec("com.github.nkzawa.engineio.client.executions.Connection"); + } + + @Test(timeout = TIMEOUT) + public void execConnectionFailure() throws InterruptedException, IOException { + exec("com.github.nkzawa.engineio.client.executions.ConnectionFailure"); + } + + @Test(timeout = TIMEOUT) + public void execImmediateClose() throws InterruptedException, IOException { + exec("com.github.nkzawa.engineio.client.executions.ImmediateClose"); + } + + private void exec(String mainClass) throws InterruptedException, IOException { + Process process = Runtime.getRuntime().exec(String.format("mvn --quiet exec:java" + + " -Dexec.mainClass=%s -Dexec.classpathScope=test", mainClass), createEnv()); + BufferedReader input = new BufferedReader( + new InputStreamReader(process.getInputStream())); + String line; + while ((line = input.readLine()) != null) { + System.out.println("EXEC OUT: " + line); + } + process.waitFor(); + assertThat(process.exitValue(), is(0)); + } +} diff --git a/src/test/java/com/github/nkzawa/engineio/client/executions/Connection.java b/src/test/java/com/github/nkzawa/engineio/client/executions/Connection.java new file mode 100644 index 0000000..371ff1c --- /dev/null +++ b/src/test/java/com/github/nkzawa/engineio/client/executions/Connection.java @@ -0,0 +1,23 @@ +package com.github.nkzawa.engineio.client.executions; + +import com.github.nkzawa.emitter.Emitter; +import com.github.nkzawa.engineio.client.Socket; + +import java.net.URISyntaxException; +import java.util.Map; + +public class Connection { + + public static void main(String[] args) throws URISyntaxException { + Map env = System.getenv(); + final Socket socket = new Socket("http://localhost:" + env.get("PORT")); + socket.on(Socket.EVENT_OPEN, new Emitter.Listener() { + @Override + public void call(Object... args) { + System.out.println("open"); + socket.close(); + } + }); + socket.open(); + } +} diff --git a/src/test/java/com/github/nkzawa/engineio/client/executions/ConnectionFailure.java b/src/test/java/com/github/nkzawa/engineio/client/executions/ConnectionFailure.java new file mode 100644 index 0000000..371564c --- /dev/null +++ b/src/test/java/com/github/nkzawa/engineio/client/executions/ConnectionFailure.java @@ -0,0 +1,29 @@ +package com.github.nkzawa.engineio.client.executions; + +import com.github.nkzawa.emitter.Emitter; +import com.github.nkzawa.engineio.client.Socket; + +import java.net.URISyntaxException; +import java.util.Map; + +public class ConnectionFailure { + + public static void main(String[] args) throws URISyntaxException { + Map env = System.getenv(); + int port = Integer.parseInt(env.get("PORT")); + port++; + final Socket socket = new Socket("http://localhost:" + port); + socket.on(Socket.EVENT_CLOSE, new Emitter.Listener() { + @Override + public void call(Object... args) { + System.out.println("close"); + } + }).on(Socket.EVENT_ERROR, new Emitter.Listener() { + @Override + public void call(Object... args) { + System.out.println("error"); + } + }); + socket.open(); + } +} diff --git a/src/test/java/com/github/nkzawa/engineio/client/executions/ImmediateClose.java b/src/test/java/com/github/nkzawa/engineio/client/executions/ImmediateClose.java new file mode 100644 index 0000000..b5983ec --- /dev/null +++ b/src/test/java/com/github/nkzawa/engineio/client/executions/ImmediateClose.java @@ -0,0 +1,28 @@ +package com.github.nkzawa.engineio.client.executions; + +import com.github.nkzawa.emitter.Emitter; +import com.github.nkzawa.engineio.client.Socket; + +import java.net.URISyntaxException; +import java.util.Map; + +public class ImmediateClose { + + public static void main(String[] args) throws URISyntaxException { + Map env = System.getenv(); + final Socket socket = new Socket("http://localhost:" + env.get("PORT")); + socket.on(Socket.EVENT_OPEN, new Emitter.Listener() { + @Override + public void call(Object... args) { + System.out.println("open"); + } + }).on(Socket.EVENT_CLOSE, new Emitter.Listener() { + @Override + public void call(Object... args) { + System.out.println("close"); + } + }); + socket.open(); + socket.close(); + } +}