use of io.vertx.mutiny.ext.web.client.HttpRequest in project smallrye-mutiny-vertx-bindings by smallrye.
the class RouterTest method testRouter.
@Test
public void testRouter() throws InterruptedException {
Router router = Router.router(vertx);
router.get("/").handler(rc -> {
rc.response().endAndForget("hello");
});
router.get("/assets/*").handler(StaticHandler.create("src/test/resources/assets"));
router.post().handler(BodyHandler.create());
router.post("/post").handler(rc -> rc.response().endAndForget(rc.getBodyAsString()));
vertx.createHttpServer().requestHandler(router::handle).listenAndAwait(8085);
HttpClient client = vertx.createHttpClient();
CountDownLatch latch1 = new CountDownLatch(1);
RequestOptions req1 = new RequestOptions().setAbsoluteURI("http://localhost:8085");
HttpClientRequest request1 = client.requestAndAwait(req1);
request1.response().subscribe().with(resp -> resp.toMulti().subscribe().with(buffer -> {
assertEquals(buffer.toString(), "hello");
latch1.countDown();
}));
request1.exceptionHandler(t -> System.out.println("Got failure " + t)).endAndForget();
assertTrue(latch1.await(1, TimeUnit.SECONDS));
CountDownLatch latch2 = new CountDownLatch(1);
RequestOptions req2 = new RequestOptions().setAbsoluteURI("http://localhost:8085/assets/test.txt");
HttpClientRequest request2 = client.requestAndAwait(req2);
request2.response().subscribe().with(resp -> {
resp.toMulti().subscribe().with(buffer -> {
assertEquals(buffer.toString(), "This is a test.");
latch2.countDown();
});
});
request2.exceptionHandler(t -> System.out.println("Got failure " + t)).endAndForget();
assertTrue(latch2.await(1, TimeUnit.SECONDS));
CountDownLatch latch3 = new CountDownLatch(1);
WebClient webClient = WebClient.create(vertx);
HttpRequest<Buffer> request3 = webClient.postAbs("http://localhost:8085/post");
Uni<HttpResponse<Buffer>> uni = request3.sendStream(Multi.createFrom().items("Hello", " ", "World", "!").map(Buffer::buffer));
uni.subscribe().with(r -> {
assertEquals(r.bodyAsString(), "Hello World!");
latch3.countDown();
});
assertTrue(latch3.await(1, TimeUnit.SECONDS));
}
Aggregations