@Override public Boolean call() throws Exception { logger.log(Level.FINE, "sendStringMessage: {0}", message); return sender.sendObjectMessage(message); } });
@Nonnull @Override public Object serialize(@Nonnull byte[] message) throws ObjectParseException { throw new ObjectParseException("Could not parse binary messages"); }
@Nonnull @Override public Observable<RxObjectEvent> connection() { return sockets.webSocketObservable() .retryWhen(repeatDuration(1, TimeUnit.SECONDS)); }
public RetentionFragment() { final Gson gson = new GsonBuilder() .registerTypeAdapter(Message.class, new Message.Deserializer()) .registerTypeAdapter(MessageType.class, new MessageType.SerializerDeserializer()) .create(); final OkHttpClient okHttpClient = new OkHttpClient(); final RxWebSockets webSockets = new RxWebSockets(okHttpClient, new Request.Builder() .get() .url("ws://coreos2.appunite.net:8080/ws") .addHeader("Sec-WebSocket-Protocol", "chat") .build()); final GsonObjectSerializer serializer = new GsonObjectSerializer(gson, Message.class); final RxObjectWebSockets jsonWebSockets = new RxObjectWebSockets(webSockets, serializer); final SocketConnection socketConnection = new SocketConnectionImpl(jsonWebSockets, Schedulers.io()); presenter = new MainPresenter(new Socket(socketConnection, Schedulers.io()), Schedulers.io(), AndroidSchedulers.mainThread()); }
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(); }
@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 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(); } }
@Before public void setUp() throws Exception { final Gson gson = new GsonBuilder() .registerTypeAdapter(Message.class, new Message.Deserializer()) .registerTypeAdapter(MessageType.class, new MessageType.SerializerDeserializer()) .create(); final RxWebSockets rxWebSockets = new RxWebSockets(new OkHttpClient(), new Request.Builder() .get() .url("ws://10.10.0.2:8080/ws") .addHeader("Sec-WebSocket-Protocol", "chat") .build()); socket = new RxObjectWebSockets(rxWebSockets, new GsonObjectSerializer(gson, Message.class)); }
@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(); } }
@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 @Ignore public void testName() throws Exception { final Subscription subscribe = socket.webSocketObservable() .subscribeOn(Schedulers.io()) .subscribe(); Thread.sleep(5000); subscribe.unsubscribe(); Thread.sleep(5000); }
@Nonnull @Override public Object serialize(@Nonnull String message) throws ObjectParseException { try { return gson.fromJson(message, typeOfT); } catch (JsonParseException e) { throw new ObjectParseException("Could not parse", e); } }
@Before public void setUp() throws Exception { final Gson gson = new GsonBuilder() .registerTypeAdapter(Message.class, new Message.Deserializer()) .registerTypeAdapter(MessageType.class, new MessageType.SerializerDeserializer()) .create(); final RxWebSockets webSockets = new RxWebSockets(new OkHttpClient(), new Request.Builder() .get() .url("ws://10.10.0.2:8080/ws") .addHeader("Sec-WebSocket-Protocol", "chat") .build()); final RxObjectWebSockets jsonWebSockets = new RxObjectWebSockets(webSockets, new GsonObjectSerializer(gson, Message.class)); final SocketConnection socketConnection = new SocketConnectionImpl(jsonWebSockets, Schedulers.computation()); socket = new Socket(socketConnection, Schedulers.computation()); }
@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(); } } }
@Nonnull @Override public String deserializeString(@Nonnull Object message) throws ObjectParseException { try { return gson.toJson(message); } catch (JsonParseException e) { throw new ObjectParseException("Could not parse", e); } }
@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(); } }