@Test(timeOut = 60000) public void onCloseWithCode() throws Exception { try (AsyncHttpClient c = asyncHttpClient()) { final CountDownLatch latch = new CountDownLatch(1); final AtomicReference<String> text = new AtomicReference<>(""); WebSocket websocket = c.prepareGet(getTargetUrl()).execute(new WebSocketUpgradeHandler.Builder().addWebSocketListener(new Listener(latch, text)).build()).get(); websocket.sendCloseFrame(); latch.await(); assertTrue(text.get().startsWith("1000"), "Expected a 1000 code but got " + text.get()); } }
@Test(groups = "online", timeOut = 60000, expectedExceptions = IllegalArgumentException.class) public void wrongStatusCode() throws Throwable { try (AsyncHttpClient client = asyncHttpClient()) { final CountDownLatch latch = new CountDownLatch(1); final AtomicReference<Throwable> throwable = new AtomicReference<>(); client.prepareGet("http://apache.org").execute(new WebSocketUpgradeHandler.Builder().addWebSocketListener(new WebSocketListener() { @Override public void onOpen(org.asynchttpclient.ws.WebSocket websocket) { } @Override public void onClose(WebSocket websocket, int code, String reason) { } @Override public void onError(Throwable t) { throwable.set(t); latch.countDown(); } }).build()); latch.await(); assertNotNull(throwable.get()); throw throwable.get(); } }
@Test(timeOut = 60000) public void onCloseWithCodeServerClose() throws Exception { try (AsyncHttpClient c = asyncHttpClient()) { final CountDownLatch latch = new CountDownLatch(1); final AtomicReference<String> text = new AtomicReference<>(""); c.prepareGet(getTargetUrl()).execute(new WebSocketUpgradeHandler.Builder().addWebSocketListener(new Listener(latch, text)).build()).get(); latch.await(); assertEquals(text.get(), "1001-Idle Timeout"); } }
final AtomicReference<String> text = new AtomicReference<>(""); WebSocket websocket = asyncHttpClient.prepareGet(targetUrl).execute(new WebSocketUpgradeHandler.Builder().addWebSocketListener(new WebSocketListener() {
final AtomicReference<byte[]> text = new AtomicReference<>(null); c.prepareGet(getTargetUrl()).execute(new WebSocketUpgradeHandler.Builder().addWebSocketListener(new WebSocketListener() {
@Test public void echoTwoMessagesTest() throws Exception { try (AsyncHttpClient c = asyncHttpClient()) { final CountDownLatch latch = new CountDownLatch(2); final AtomicReference<String> text = new AtomicReference<>(""); c.prepareGet(getTargetUrl()).execute(new WebSocketUpgradeHandler.Builder().addWebSocketListener(new WebSocketListener() { @Override public void onTextFrame(String payload, boolean finalFragment, int rsv) { text.set(text.get() + payload); latch.countDown(); } @Override public void onOpen(WebSocket websocket) { websocket.sendTextFrame("ECHO"); websocket.sendTextFrame("ECHO"); } @Override public void onClose(WebSocket websocket, int code, String reason) { latch.countDown(); } @Override public void onError(Throwable t) { t.printStackTrace(); latch.countDown(); } }).build()).get(); latch.await(); assertEquals(text.get(), "ECHOECHO"); } }
final AtomicReference<String> text = new AtomicReference<>(""); final WebSocket websocket = c.prepareGet(getTargetUrl()).execute(new WebSocketUpgradeHandler.Builder().addWebSocketListener(new WebSocketListener() {
private void echoByte0(boolean enableCompression) throws Exception { try (AsyncHttpClient c = asyncHttpClient(config().setEnablewebSocketCompression(enableCompression))) { final CountDownLatch latch = new CountDownLatch(1); final AtomicReference<byte[]> receivedBytes = new AtomicReference<>(new byte[0]); WebSocket websocket = c.prepareGet(getTargetUrl()).execute(new WebSocketUpgradeHandler.Builder().addWebSocketListener(new WebSocketListener() { @Override public void onOpen(WebSocket websocket) { } @Override public void onClose(WebSocket websocket, int code, String reason) { latch.countDown(); } @Override public void onError(Throwable t) { t.printStackTrace(); latch.countDown(); } @Override public void onBinaryFrame(byte[] frame, boolean finalFragment, int rsv) { receivedBytes.set(frame); latch.countDown(); } }).build()).get(); websocket.sendBinaryFrame(ECHO_BYTES); latch.await(); assertEquals(receivedBytes.get(), ECHO_BYTES); } }
@Test public void echoFragments() throws Exception { try (AsyncHttpClient c = asyncHttpClient()) { final CountDownLatch latch = new CountDownLatch(1); final AtomicReference<String> text = new AtomicReference<>(""); WebSocket websocket = c.prepareGet(getTargetUrl()).execute(new WebSocketUpgradeHandler.Builder().addWebSocketListener(new WebSocketListener() { @Override public void onTextFrame(String payload, boolean finalFragment, int rsv) { text.set(payload); latch.countDown(); } @Override public void onOpen(WebSocket websocket) { } @Override public void onClose(WebSocket websocket, int code, String reason) { latch.countDown(); } @Override public void onError(Throwable t) { t.printStackTrace(); latch.countDown(); } }).build()).get(); websocket.sendTextFrame("ECHO", false, 0); websocket.sendContinuationFrame("ECHO", true, 0); latch.await(); assertEquals(text.get(), "ECHOECHO"); } }
@Test(timeOut = 60000) public void echoText() throws Exception { try (AsyncHttpClient c = asyncHttpClient()) { final CountDownLatch latch = new CountDownLatch(1); final AtomicReference<String> text = new AtomicReference<>(""); WebSocket websocket = c.prepareGet(getTargetUrl()).execute(new WebSocketUpgradeHandler.Builder().addWebSocketListener(new WebSocketListener() { @Override public void onTextFrame(String payload, boolean finalFragment, int rsv) { text.set(payload); latch.countDown(); } @Override public void onOpen(WebSocket websocket) { } @Override public void onClose(WebSocket websocket, int code, String reason) { latch.countDown(); } @Override public void onError(Throwable t) { t.printStackTrace(); latch.countDown(); } }).build()).get(); websocket.sendTextFrame("ECHO"); latch.await(); assertEquals(text.get(), "ECHO"); } }
@Test(timeOut = 60000) public void testRedirectToWSResource() throws Exception { try (AsyncHttpClient c = asyncHttpClient(config().setFollowRedirect(true))) { final CountDownLatch latch = new CountDownLatch(1); final AtomicReference<String> text = new AtomicReference<>(""); WebSocket websocket = c.prepareGet(getRedirectURL()).execute(new WebSocketUpgradeHandler.Builder().addWebSocketListener(new WebSocketListener() { @Override public void onOpen(WebSocket websocket) { text.set("OnOpen"); latch.countDown(); } @Override public void onClose(WebSocket websocket, int code, String reason) { } @Override public void onError(Throwable t) { t.printStackTrace(); latch.countDown(); } }).build()).get(); latch.await(); assertEquals(text.get(), "OnOpen"); websocket.sendCloseFrame(); } }
@Test(timeOut = 60000) public void onOpen() throws Exception { try (AsyncHttpClient c = asyncHttpClient()) { final CountDownLatch latch = new CountDownLatch(1); final AtomicReference<String> text = new AtomicReference<>(""); c.prepareGet(getTargetUrl()).execute(new WebSocketUpgradeHandler.Builder().addWebSocketListener(new WebSocketListener() { @Override public void onOpen(WebSocket websocket) { text.set("OnOpen"); latch.countDown(); } @Override public void onClose(WebSocket websocket, int code, String reason) { } @Override public void onError(Throwable t) { t.printStackTrace(); latch.countDown(); } }).build()).get(); latch.await(); assertEquals(text.get(), "OnOpen"); } }
@Test(timeOut = 60000) public void onTimeoutCloseTest() throws Exception { try (AsyncHttpClient c = asyncHttpClient()) { final CountDownLatch latch = new CountDownLatch(1); final AtomicReference<String> text = new AtomicReference<>(""); c.prepareGet(getTargetUrl()).execute(new WebSocketUpgradeHandler.Builder().addWebSocketListener(new WebSocketListener() { @Override public void onOpen(WebSocket websocket) { } @Override public void onClose(WebSocket websocket, int code, String reason) { text.set("OnClose"); latch.countDown(); } @Override public void onError(Throwable t) { t.printStackTrace(); latch.countDown(); } }).build()).get(); latch.await(); assertEquals(text.get(), "OnClose"); } }
@Test(timeOut = 60000) public void onClose() throws Exception { try (AsyncHttpClient c = asyncHttpClient()) { final CountDownLatch latch = new CountDownLatch(1); final AtomicReference<String> text = new AtomicReference<>(""); WebSocket websocket = c.prepareGet(getTargetUrl()).execute(new WebSocketUpgradeHandler.Builder().addWebSocketListener(new WebSocketListener() { @Override public void onOpen(WebSocket websocket) { } @Override public void onClose(WebSocket websocket, int code, String reason) { text.set("OnClose"); latch.countDown(); } @Override public void onError(Throwable t) { t.printStackTrace(); latch.countDown(); } }).build()).get(); websocket.sendCloseFrame(); latch.await(); assertEquals(text.get(), "OnClose"); } }
@Test(groups = "online", timeOut = 60000, expectedExceptions = IOException.class) public void wrongProtocolCode() throws Throwable { try (AsyncHttpClient c = asyncHttpClient()) { final CountDownLatch latch = new CountDownLatch(1); final AtomicReference<Throwable> throwable = new AtomicReference<>(); c.prepareGet("ws://www.google.com").execute(new WebSocketUpgradeHandler.Builder().addWebSocketListener(new WebSocketListener() { @Override public void onOpen(WebSocket websocket) { } @Override public void onClose(WebSocket websocket, int code, String reason) { } @Override public void onError(Throwable t) { throwable.set(t); latch.countDown(); } }).build()); latch.await(); assertNotNull(throwable.get()); throw throwable.get(); } }
@Test(groups = "online", timeOut = 60000, expectedExceptions = ExecutionException.class) public void getWebSocketThrowsException() throws Throwable { final CountDownLatch latch = new CountDownLatch(1); try (AsyncHttpClient client = asyncHttpClient()) { client.prepareGet("http://apache.org").execute(new WebSocketUpgradeHandler.Builder().addWebSocketListener(new WebSocketListener() { @Override public void onOpen(WebSocket websocket) { } @Override public void onClose(WebSocket websocket, int code, String reason) { } @Override public void onError(Throwable t) { latch.countDown(); } }).build()).get(); } latch.await(); }
private WebSocket getWebSocket(final AsyncHttpClient c, CountDownLatch closeLatch) throws Exception { return c.prepareGet(getTargetUrl()).execute(new WebSocketUpgradeHandler.Builder().addWebSocketListener(new WebSocketListener() { @Override public void onOpen(WebSocket websocket) { } @Override public void onError(Throwable t) { } @Override public void onClose(WebSocket websocket, int code, String reason) { closeLatch.countDown(); } }).build()).get(); } }
private WebSocket getWebSocket(final AsyncHttpClient c) throws Exception { return c.prepareGet(getTargetUrl()).execute(new WebSocketUpgradeHandler.Builder().build()).get(); }
@Test(timeOut = 60000, expectedExceptions = UnknownHostException.class) public void onFailureTest() throws Throwable { try (AsyncHttpClient c = asyncHttpClient()) { c.prepareGet("ws://abcdefg").execute(new WebSocketUpgradeHandler.Builder().build()).get(); } catch (ExecutionException e) { throw e.getCause(); } }
@Test(timeOut = 60000) public void onEmptyListenerTest() throws Exception { try (AsyncHttpClient c = asyncHttpClient()) { WebSocket websocket = null; try { websocket = c.prepareGet(getTargetUrl()).execute(new WebSocketUpgradeHandler.Builder().build()).get(); } catch (Throwable t) { fail(); } assertTrue(websocket != null); } }