support the rememberUpgrade option
This commit is contained in:
@@ -311,4 +311,127 @@ public class ServerConnectionTest {
|
||||
assertThat(messages.take(), is("foo"));
|
||||
socket.close();
|
||||
}
|
||||
|
||||
@Test(timeout = TIMEOUT)
|
||||
public void rememberWebsocket() throws URISyntaxException, InterruptedException {
|
||||
final Semaphore semaphore = new Semaphore(0);
|
||||
|
||||
EventThread.exec(new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
Socket.Options opts = new Socket.Options();
|
||||
opts.port = PORT;
|
||||
|
||||
final Socket socket = new Socket(opts) {
|
||||
@Override
|
||||
public void onopen() {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onmessage(String data) {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onclose() {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onerror(Exception err) {
|
||||
}
|
||||
};
|
||||
|
||||
socket.on(Socket.EVENT_UPGRADE, new Emitter.Listener() {
|
||||
@Override
|
||||
public void call(Object... args) {
|
||||
Transport transport = (Transport) args[0];
|
||||
socket.close();
|
||||
if (WebSocket.NAME.equals(transport.name)) {
|
||||
Socket.Options opts = new Socket.Options();
|
||||
opts.port = PORT;
|
||||
opts.rememberUpgrade = true;
|
||||
|
||||
final Socket socket2 = new Socket(opts) {
|
||||
@Override
|
||||
public void onopen() {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onmessage(String data) {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onclose() {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onerror(Exception err) {
|
||||
}
|
||||
};
|
||||
socket2.open();
|
||||
assertThat(socket2.transport.name, is(WebSocket.NAME));
|
||||
}
|
||||
semaphore.release();
|
||||
}
|
||||
});
|
||||
socket.open();
|
||||
assertThat(socket.transport.name, is(Polling.NAME));
|
||||
}
|
||||
});
|
||||
semaphore.acquire();
|
||||
}
|
||||
|
||||
@Test(timeout = TIMEOUT)
|
||||
public void notRememberWebsocket() throws URISyntaxException, InterruptedException {
|
||||
final Semaphore semaphore = new Semaphore(0);
|
||||
|
||||
EventThread.exec(new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
Socket.Options opts = new Socket.Options();
|
||||
opts.port = PORT;
|
||||
|
||||
final Socket socket = new Socket(opts) {
|
||||
@Override
|
||||
public void onopen() {}
|
||||
@Override
|
||||
public void onmessage(String data) {}
|
||||
@Override
|
||||
public void onclose() {}
|
||||
@Override
|
||||
public void onerror(Exception err) {}
|
||||
};
|
||||
|
||||
socket.on(Socket.EVENT_UPGRADE, new Emitter.Listener() {
|
||||
@Override
|
||||
public void call(Object... args) {
|
||||
Transport transport = (Transport)args[0];
|
||||
socket.close();
|
||||
if (WebSocket.NAME.equals(transport.name)) {
|
||||
Socket.Options opts = new Socket.Options();
|
||||
opts.port = PORT;
|
||||
opts.rememberUpgrade = false;
|
||||
|
||||
final Socket socket2 = new Socket(opts) {
|
||||
@Override
|
||||
public void onopen() {}
|
||||
@Override
|
||||
public void onmessage(String data) {}
|
||||
@Override
|
||||
public void onclose() {}
|
||||
@Override
|
||||
public void onerror(Exception err) {}
|
||||
};
|
||||
socket2.open();
|
||||
assertThat(socket2.transport.name, is(not(WebSocket.NAME)));
|
||||
}
|
||||
semaphore.release();
|
||||
}
|
||||
});
|
||||
socket.open();
|
||||
assertThat(socket.transport.name, is(Polling.NAME));
|
||||
}
|
||||
});
|
||||
semaphore.acquire();
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -12,6 +12,7 @@ import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.Timer;
|
||||
import java.util.TimerTask;
|
||||
import java.util.concurrent.Semaphore;
|
||||
|
||||
import static org.hamcrest.CoreMatchers.is;
|
||||
import static org.junit.Assert.assertThat;
|
||||
@@ -42,13 +43,14 @@ public class SocketTest {
|
||||
}
|
||||
|
||||
/**
|
||||
* should not emit close on incorrect connection.
|
||||
* should emit close on incorrect connection.
|
||||
*
|
||||
* @throws URISyntaxException
|
||||
* @throws InterruptedException
|
||||
*/
|
||||
@Test
|
||||
public void socketClosing() throws URISyntaxException, InterruptedException {
|
||||
final Semaphore semaphore = new Semaphore(0);
|
||||
Socket socket = new Socket("ws://0.0.0.0:8080") {
|
||||
@Override
|
||||
public void onopen() {}
|
||||
@@ -68,7 +70,8 @@ public class SocketTest {
|
||||
timer.schedule(new TimerTask() {
|
||||
@Override
|
||||
public void run() {
|
||||
assertThat(closed[0], is(false));
|
||||
assertThat(closed[0], is(true));
|
||||
semaphore.release();
|
||||
}
|
||||
}, 20);
|
||||
}
|
||||
@@ -81,5 +84,7 @@ public class SocketTest {
|
||||
}
|
||||
});
|
||||
socket.open();
|
||||
semaphore.acquire();
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -14,6 +14,8 @@ import static org.junit.Assert.assertThat;
|
||||
@RunWith(JUnit4.class)
|
||||
public class TransportTest {
|
||||
|
||||
// NOTE: tests for the rememberUpgrade option are on ServerConnectionTest.
|
||||
|
||||
@Test
|
||||
public void uri() {
|
||||
Transport.Options opt = new Transport.Options();
|
||||
|
||||
Reference in New Issue
Block a user