compatible with engine.io-client v1.4.2

This commit is contained in:
Naoyuki Kanezawa
2014-11-03 22:45:45 +09:00
parent ba8755384e
commit 96fba4e20a
2 changed files with 181 additions and 9 deletions

View File

@@ -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));
}
}