Initial commit
This commit is contained in:
134
src/test/java/com/github/nkzawa/engineio/client/SocketTest.java
Normal file
134
src/test/java/com/github/nkzawa/engineio/client/SocketTest.java
Normal file
@@ -0,0 +1,134 @@
|
||||
package com.github.nkzawa.engineio.client;
|
||||
|
||||
import org.junit.After;
|
||||
import org.junit.Before;
|
||||
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 java.net.URISyntaxException;
|
||||
import java.util.concurrent.*;
|
||||
|
||||
import static org.hamcrest.CoreMatchers.is;
|
||||
import static org.junit.Assert.assertThat;
|
||||
|
||||
@RunWith(JUnit4.class)
|
||||
public class SocketTest {
|
||||
|
||||
final static int PORT = 3000;
|
||||
|
||||
private Process serverProcess;
|
||||
private ExecutorService serverService;
|
||||
private Future serverOutout;
|
||||
private Future serverError;
|
||||
private Socket socket;
|
||||
|
||||
@Before
|
||||
public void startServer() throws IOException, InterruptedException {
|
||||
System.out.println("Starting server ...");
|
||||
|
||||
final CountDownLatch latch = new CountDownLatch(1);
|
||||
serverProcess = Runtime.getRuntime().exec(
|
||||
"node src/test/resources/index.js " + PORT, new String[] {"DEBUG=engine*"});
|
||||
serverService = Executors.newCachedThreadPool();
|
||||
serverOutout = serverService.submit(new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
BufferedReader reader = new BufferedReader(
|
||||
new InputStreamReader(serverProcess.getInputStream()));
|
||||
String line;
|
||||
try {
|
||||
line = reader.readLine();
|
||||
latch.countDown();
|
||||
do {
|
||||
System.out.println("SERVER OUT: " + line);
|
||||
} while ((line = reader.readLine()) != null);
|
||||
} catch (IOException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
});
|
||||
serverError = serverService.submit(new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
BufferedReader reader = new BufferedReader(
|
||||
new InputStreamReader(serverProcess.getErrorStream()));
|
||||
String line;
|
||||
try {
|
||||
while ((line = reader.readLine()) != null) {
|
||||
System.err.println("SERVER ERR: " + line);
|
||||
}
|
||||
} catch (IOException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
});
|
||||
latch.await(3000, TimeUnit.MILLISECONDS);
|
||||
}
|
||||
|
||||
@After
|
||||
public void stopServer() throws InterruptedException {
|
||||
System.out.println("Stopping server ...");
|
||||
serverProcess.destroy();
|
||||
serverOutout.cancel(true);
|
||||
serverError.cancel(true);
|
||||
serverService.shutdown();
|
||||
serverService.awaitTermination(3000, TimeUnit.MILLISECONDS);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void openAndClose() throws URISyntaxException, InterruptedException {
|
||||
final BlockingQueue<String> events = new LinkedBlockingQueue<String>();
|
||||
|
||||
socket = new Socket("ws://localhost:" + PORT) {
|
||||
@Override
|
||||
public void onopen() {
|
||||
System.out.println("onopen:");
|
||||
events.offer("onopen");
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onmessage(String data) {}
|
||||
|
||||
@Override
|
||||
public void onclose() {
|
||||
System.out.println("onclose:");
|
||||
events.offer("onclose");
|
||||
}
|
||||
}.open();
|
||||
|
||||
assertThat(events.take(), is("onopen"));
|
||||
socket.close();
|
||||
assertThat(events.take(), is("onclose"));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void messages() throws URISyntaxException, InterruptedException {
|
||||
final BlockingQueue<String> events = new LinkedBlockingQueue<String>();
|
||||
|
||||
socket = new Socket("ws://localhost:" + PORT) {
|
||||
@Override
|
||||
public void onopen() {
|
||||
System.out.println("onopen:");
|
||||
socket.send("hi");
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onmessage(String data) {
|
||||
System.out.println("onmessage: " + data);
|
||||
events.offer(data);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onclose() {}
|
||||
};
|
||||
socket.open();
|
||||
|
||||
assertThat(events.take(), is("hello client"));
|
||||
assertThat(events.take(), is("hi"));
|
||||
socket.close();
|
||||
}
|
||||
}
|
||||
31
src/test/resources/index.js
Normal file
31
src/test/resources/index.js
Normal file
@@ -0,0 +1,31 @@
|
||||
var engine = require('engine.io')
|
||||
, port = parseInt(process.argv[2], 10) || 3000
|
||||
, server = engine.listen(port, function() {
|
||||
console.log('Engine.IO server listening on port', port);
|
||||
});
|
||||
|
||||
server.on('connection', function(socket) {
|
||||
socket.send('hello client');
|
||||
|
||||
socket.on('packet', function(packet) {
|
||||
console.log('packet:', packet);
|
||||
});
|
||||
|
||||
socket.on('packetCreate', function(packet) {
|
||||
console.log('packetCreate:', packet);
|
||||
});
|
||||
|
||||
socket.on('message', function(message) {
|
||||
console.log('message:', message);
|
||||
socket.send(message);
|
||||
});
|
||||
|
||||
socket.on('close', function(reason, desc) {
|
||||
console.log('close:', reason, desc);
|
||||
});
|
||||
|
||||
socket.on('error', function(err) {
|
||||
console.log('error:', err);
|
||||
});
|
||||
});
|
||||
|
||||
8
src/test/resources/package.json
Normal file
8
src/test/resources/package.json
Normal file
@@ -0,0 +1,8 @@
|
||||
{
|
||||
"name": "engine.io-client.java-test",
|
||||
"version": "0.0.0",
|
||||
"private": true,
|
||||
"dependencies": {
|
||||
"engine.io": "0.5.0"
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user