/** * Start the Pump. The Pump can be started and stopped multiple times. */ @Override public PumpImpl start() { readStream.handler(dataHandler); return this; }
@Override public HttpServer websocketHandler(Handler<ServerWebSocket> handler) { websocketStream().handler(handler); return this; }
/** * Stop the Pump. The Pump can be started and stopped multiple times. */ @Override public PumpImpl stop() { writeStream.drainHandler(null); readStream.handler(null); return this; }
@Test public void testPauseResumeBodyStream() { testPauseResume((consumer, handler) -> consumer.bodyStream().handler(handler)); }
@Test public void testPauseFetchBodyStream() throws Exception { testPauseFetch((consumer, handler) -> consumer.bodyStream().handler(handler)); }
@Test public void testExceptionWhenDeliveringBufferedMessageWithBodyStream() { testExceptionWhenDeliveringBufferedMessage((consumer, handler) -> consumer.bodyStream().handler(handler)); }
@Test public void testTimerStreamCallingWithNullHandlerCancelsTheTimer() throws Exception { vertx.runOnContext(v -> { ReadStream<Long> timer = vertx.timerStream(200); AtomicInteger count = new AtomicInteger(); timer.handler(l -> { if (count.incrementAndGet() == 1) { timer.handler(null); vertx.setTimer(200, id -> { assertEquals(1, count.get()); testComplete(); }); } else { fail(); } }); }); await(); }
@Test public void testTimerStreamExceptionDuringHandle() throws Exception { vertx.runOnContext(v -> { ReadStream<Long> timer = vertx.timerStream(200); AtomicBoolean handled = new AtomicBoolean(); timer.handler(l -> { assertFalse(handled.get()); handled.set(true); throw new RuntimeException(); }); timer.endHandler(v2 -> { assertTrue(handled.get()); testComplete(); }); }); await(); }
@Test public void testTimerStreamSetHandlerSchedulesTheTimer() throws Exception { vertx.runOnContext(v -> { ReadStream<Long> timer = vertx.timerStream(200); AtomicBoolean handled = new AtomicBoolean(); timer.handler(l -> { assertFalse(handled.get()); handled.set(true); }); timer.endHandler(v2 -> { assertTrue(handled.get()); testComplete(); }); }); await(); }
@Test public void testClosingServerClosesRequestStreamEndHandler() { this.server = vertx.createHttpServer(new HttpServerOptions().setPort(HttpTestBase.DEFAULT_HTTP_PORT)); ReadStream<HttpServerRequest> stream = server.requestStream(); AtomicBoolean closed = new AtomicBoolean(); stream.endHandler(v -> closed.set(true)); stream.handler(req -> {}); server.listen(ar -> { assertTrue(ar.succeeded()); assertFalse(closed.get()); server.close(v -> { assertTrue(ar.succeeded()); assertTrue(closed.get()); testComplete(); }); }); await(); }
@Test public void testClosingServerClosesWebSocketStreamEndHandler() { this.server = vertx.createHttpServer(new HttpServerOptions().setPort(DEFAULT_HTTP_PORT)); ReadStream<ServerWebSocket> stream = server.websocketStream(); AtomicBoolean closed = new AtomicBoolean(); stream.endHandler(v -> closed.set(true)); stream.handler(ws -> { }); server.listen(ar -> { assertTrue(ar.succeeded()); assertFalse(closed.get()); server.close(v -> { assertTrue(ar.succeeded()); assertTrue(closed.get()); testComplete(); }); }); await(); }
@Test public void testPeriodicPauseResume() throws Exception { ReadStream<Long> timer = vertx.periodicStream(200); AtomicInteger count = new AtomicInteger(); timer.handler(id -> { int cnt = count.incrementAndGet(); if (cnt == 2) { timer.pause(); vertx.setTimer(500, id2 -> { assertEquals(2, count.get()); timer.resume(); }); } else if (cnt == 3) { testComplete(); } }); await(); }
private void testInvalidSubProtocol(WebsocketVersion version) throws Exception { String path = "/some/path"; String subProtocol = "myprotocol"; server = vertx.createHttpServer(new HttpServerOptions().setPort(DEFAULT_HTTP_PORT).setWebsocketSubProtocols("invalid")).websocketHandler(ws -> { }); server.listen(onSuccess(ar -> { client.websocketStream(DEFAULT_HTTP_PORT, HttpTestBase.DEFAULT_HTTP_HOST, path, null, version, subProtocol). exceptionHandler(t -> { // Should fail testComplete(); }). handler(ws -> { }); })); await(); }
@Test public void testPump() { String str = TestUtils.randomUnicodeString(100); ReadStream<String> consumer = eb.<String>consumer(ADDRESS1).bodyStream(); consumer.handler(message -> { if (message.equals(str)) { testComplete(); } }); MessageProducer<String> producer = eb.sender(ADDRESS2); Pump.pump(consumer, producer); producer.write(str); }
@Test public void testTimerPauseResume() throws Exception { ReadStream<Long> timer = vertx.timerStream(10); timer.handler(l -> testComplete()); timer.pause(); timer.resume(); await(); }
@Test public void testTimerPause() throws Exception { vertx.runOnContext(v -> { ReadStream<Long> timer = vertx.timerStream(10); timer.handler(l -> fail()); timer.endHandler(l -> testComplete()); timer.pause(); }); await(); }