@Override public Boolean call() throws Exception { logger.log(Level.FINE, "sendStringMessage: {0}", message); return sender.sendObjectMessage(message); } });
@Test public void testWhenTimePassBeforeConnection_sendAllPings() throws Exception { final Subscription subscribe = socket.connection().subscribe(observer); socket.sendPingEvery5seconds(); try { testScheduler.advanceTimeBy(30, TimeUnit.SECONDS); register(); verify(sender, times(6)).sendObjectMessage(new PingMessage("be_sure_to_send")); } finally { subscribe.unsubscribe(); } }
@Test public void testConnection_registerIsSent() throws Exception { final Subscription subscribe = socket.connection().subscribe(observer); try { connection.onNext(new RxObjectEventConnected(sender), 0); testScheduler.triggerActions(); verify(sender).sendObjectMessage(new RegisterMessage("asdf")); } finally { subscribe.unsubscribe(); } }
@Test public void testWhenTimePassBeforeConnection_sendPingOnlyOnce() throws Exception { final Subscription subscribe = socket.connection().subscribe(observer); socket.sendPingWhenConnected(); try { testScheduler.advanceTimeBy(30, TimeUnit.SECONDS); register(); verify(sender).sendObjectMessage(new PingMessage("send_only_when_connected")); } finally { subscribe.unsubscribe(); } } }
@Test public void testWhenNoResponse_throwError() throws Exception { final Subscription subscribe = socket.connection().subscribe(observer); socket.sendMessageOnceWhenConnected( new Func1<String, Observable<Object>>() { @Override public Observable<Object> call(String id) { return Observable.<Object>just(new DataMessage(id, "krowa")); } }) .subscribe(dataObserver); try { register(); verify(sender).sendObjectMessage(new DataMessage("0", "krowa")); testScheduler.advanceTimeBy(10, TimeUnit.SECONDS); verify(dataObserver).onError(any(Throwable.class)); } finally { subscribe.unsubscribe(); } }
@Test public void testWhenResponseOnDifferentMessage_throwError() throws Exception { final Subscription subscribe = socket.connection().subscribe(observer); socket.sendMessageOnceWhenConnected( new Func1<String, Observable<Object>>() { @Override public Observable<Object> call(String id) { return Observable.<Object>just(new DataMessage(id, "krowa")); } }) .subscribe(dataObserver); try { register(); verify(sender).sendObjectMessage(new DataMessage("0", "krowa")); connection.onNext(new RxObjectEventMessage(sender, new DataMessage("100", "asdf")), 0); testScheduler.advanceTimeBy(10, TimeUnit.SECONDS); verify(dataObserver).onError(any(Throwable.class)); } finally { subscribe.unsubscribe(); } }
@Test public void testWhenResponse_messageSuccess() throws Exception { final Subscription subscribe = socket.connection().subscribe(observer); socket.sendMessageOnceWhenConnected( new Func1<String, Observable<Object>>() { @Override public Observable<Object> call(String id) { return Observable.<Object>just(new DataMessage(id, "krowa")); } }) .subscribe(dataObserver); try { register(); verify(sender).sendObjectMessage(new DataMessage("0", "krowa")); connection.onNext(new RxObjectEventMessage(sender, new DataMessage("0", "asdf")), 0); testScheduler.advanceTimeBy(10, TimeUnit.SECONDS); verify(dataObserver).onNext(new DataMessage("0", "asdf")); verify(dataObserver).onCompleted(); } finally { subscribe.unsubscribe(); } }
private void register() throws IOException, InterruptedException, ObjectParseException { connection.onNext(new RxObjectEventConnected(sender), 0); testScheduler.triggerActions(); verify(sender).sendObjectMessage(new RegisterMessage("asdf")); connection.onNext(new RxObjectEventMessage(sender, new RegisteredMessage()), 0); testScheduler.triggerActions(); }