compatible with engine.io-client v1.4.2
This commit is contained in:
@@ -104,6 +104,7 @@ public class ConnectionTest extends Connection {
|
||||
}
|
||||
});
|
||||
socket.close();
|
||||
socket.send("hi");
|
||||
Timer timer = new Timer();
|
||||
timer.schedule(new TimerTask() {
|
||||
@Override
|
||||
@@ -117,4 +118,128 @@ public class ConnectionTest extends Connection {
|
||||
socket.open();
|
||||
assertThat((Boolean)values.take(), is(true));
|
||||
}
|
||||
|
||||
@Test(timeout = TIMEOUT)
|
||||
public void deferCloseWhenUpgrading() throws InterruptedException {
|
||||
final BlockingQueue<Object> values = new LinkedBlockingQueue<Object>();
|
||||
|
||||
socket = new Socket(createOptions());
|
||||
socket.on(Socket.EVENT_OPEN, new Emitter.Listener() {
|
||||
@Override
|
||||
public void call(Object... args) {
|
||||
final boolean[] upgraded = new boolean[] {false};
|
||||
socket.on(Socket.EVENT_UPGRADE, new Emitter.Listener() {
|
||||
@Override
|
||||
public void call(Object... args) {
|
||||
upgraded[0] = true;
|
||||
}
|
||||
}).on(Socket.EVENT_UPGRADING, new Emitter.Listener() {
|
||||
@Override
|
||||
public void call(Object... args) {
|
||||
socket.on(Socket.EVENT_CLOSE, new Emitter.Listener() {
|
||||
@Override
|
||||
public void call(Object... args) {
|
||||
values.offer(upgraded[0]);
|
||||
}
|
||||
});
|
||||
socket.close();
|
||||
}
|
||||
});
|
||||
}
|
||||
});
|
||||
socket.open();
|
||||
assertThat((Boolean)values.take(), is(true));
|
||||
}
|
||||
|
||||
@Test(timeout = TIMEOUT)
|
||||
public void closeOnUpgradeErrorIfClosingIsDeferred() throws InterruptedException {
|
||||
final BlockingQueue<Object> values = new LinkedBlockingQueue<Object>();
|
||||
|
||||
socket = new Socket(createOptions());
|
||||
socket.on(Socket.EVENT_OPEN, new Emitter.Listener() {
|
||||
@Override
|
||||
public void call(Object... args) {
|
||||
final boolean[] upgradError = new boolean[] {false};
|
||||
socket.on(Socket.EVENT_UPGRADE_ERROR, new Emitter.Listener() {
|
||||
@Override
|
||||
public void call(Object... args) {
|
||||
upgradError[0] = true;
|
||||
}
|
||||
}).on(Socket.EVENT_UPGRADING, new Emitter.Listener() {
|
||||
@Override
|
||||
public void call(Object... args) {
|
||||
socket.on(Socket.EVENT_CLOSE, new Emitter.Listener() {
|
||||
@Override
|
||||
public void call(Object... args) {
|
||||
values.offer(upgradError[0]);
|
||||
}
|
||||
});
|
||||
socket.close();
|
||||
socket.transport.onError("upgrade error", new Exception());
|
||||
}
|
||||
});
|
||||
}
|
||||
});
|
||||
socket.open();
|
||||
assertThat((Boolean) values.take(), is(true));
|
||||
}
|
||||
|
||||
public void notSendPacketsIfClosingIsDeferred() throws InterruptedException {
|
||||
final BlockingQueue<Object> values = new LinkedBlockingQueue<Object>();
|
||||
|
||||
socket = new Socket(createOptions());
|
||||
socket.on(Socket.EVENT_OPEN, new Emitter.Listener() {
|
||||
@Override
|
||||
public void call(Object... args) {
|
||||
final boolean[] noPacket = new boolean[] {true};
|
||||
socket.on(Socket.EVENT_UPGRADING, new Emitter.Listener() {
|
||||
@Override
|
||||
public void call(Object... args) {
|
||||
socket.on(Socket.EVENT_PACKET_CREATE, new Emitter.Listener() {
|
||||
@Override
|
||||
public void call(Object... args) {
|
||||
noPacket[0] = false;
|
||||
}
|
||||
});
|
||||
socket.close();
|
||||
socket.send("hi");
|
||||
}
|
||||
});
|
||||
new Timer().schedule(new TimerTask() {
|
||||
@Override
|
||||
public void run() {
|
||||
values.offer(noPacket[0]);
|
||||
}
|
||||
}, 1200);
|
||||
}
|
||||
});
|
||||
socket.open();
|
||||
assertThat((Boolean) values.take(), is(true));
|
||||
}
|
||||
|
||||
@Test(timeout = TIMEOUT)
|
||||
public void sendAllBufferedPacketsIfClosingIsDeferred() throws InterruptedException {
|
||||
final BlockingQueue<Object> values = new LinkedBlockingQueue<Object>();
|
||||
|
||||
socket = new Socket(createOptions());
|
||||
socket.on(Socket.EVENT_OPEN, new Emitter.Listener() {
|
||||
@Override
|
||||
public void call(Object... args) {
|
||||
socket.on(Socket.EVENT_UPGRADING, new Emitter.Listener() {
|
||||
@Override
|
||||
public void call(Object... args) {
|
||||
socket.send("hi");
|
||||
socket.close();
|
||||
}
|
||||
}).on(Socket.EVENT_CLOSE, new Emitter.Listener() {
|
||||
@Override
|
||||
public void call(Object... args) {
|
||||
values.offer(socket.writeBuffer.size());
|
||||
}
|
||||
});
|
||||
}
|
||||
});
|
||||
socket.open();
|
||||
assertThat((Integer) values.take(), is(0));
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user