use of io.helidon.webclient.WebClientResponse in project helidon by oracle.
the class HealthServerTest method checkResponse.
private static void checkResponse(Supplier<WebClientRequestBuilder> requestFactory, String requestPath, boolean expectContent) {
WebClientResponse response = null;
try {
response = requestFactory.get().path(requestPath).accept(MediaType.APPLICATION_JSON).request().await();
int expectedStatus = expectContent ? Http.Status.OK_200.code() : Http.Status.NO_CONTENT_204.code();
assertThat("health response status", response.status().code(), is(expectedStatus));
MessageBodyReadableContent content = response.content();
String textContent = null;
try {
textContent = content.as(String.class).get();
} catch (InterruptedException | ExecutionException e) {
throw new RuntimeException(e);
}
assertThat("content length", textContent.length(), expectContent ? greaterThan(0) : equalTo(0));
if (expectContent) {
JsonObject health = Json.createReader(new StringReader(textContent)).readObject();
assertThat("health status", health.getString("status"), is("UP"));
}
} finally {
if (response != null) {
response.close();
}
}
}
use of io.helidon.webclient.WebClientResponse in project helidon by oracle.
the class MainTest method runJsonFunctionalTest.
/**
* Run some basic CRUD operations on the server. The server supports
* running with any of our three JSON libraries: jsonp, jsonb, jackson.
* So we set a system property to select the library to use before starting
* the server
*
* @param edition "mp", "se"
* @param jsonLibrary "jsonp", "jsonb" or "jackson"
* @throws Exception on test failure
*/
private void runJsonFunctionalTest(String edition, String jsonLibrary) throws Exception {
JsonObject json = getBookAsJsonObject();
int numberOfBooks = 1000;
List<String> systemPropertyArgs = new LinkedList<>();
systemPropertyArgs.add("-Dbookstore.size=" + numberOfBooks);
if (jsonLibrary != null && !jsonLibrary.isEmpty()) {
systemPropertyArgs.add("-Dapp.json-library=" + jsonLibrary);
}
HelidonApplication application = startTheApplication(editionToJarPath(edition), systemPropertyArgs);
WebClient webClient = WebClient.builder().baseUri(application.getBaseUrl()).addMediaSupport(JsonpSupport.create()).build();
webClient.get().path("/books").request(JsonArray.class).thenAccept(bookArray -> assertThat("Number of books", bookArray.size(), is(numberOfBooks))).toCompletableFuture().get();
webClient.post().path("/books").submit(json).thenAccept(it -> assertThat("HTTP response POST", it.status(), is(Http.Status.OK_200))).thenCompose(it -> webClient.get().path("/books/123456").request(JsonObject.class)).thenAccept(it -> assertThat("Checking if correct ISBN", it.getString("isbn"), is("123456"))).toCompletableFuture().get();
webClient.get().path("/books/0000").request().thenAccept(it -> assertThat("HTTP response GET bad ISBN", it.status(), is(Http.Status.NOT_FOUND_404))).toCompletableFuture().get();
webClient.get().path("/books").request().thenApply(it -> {
assertThat("HTTP response list books", it.status(), is(Http.Status.OK_200));
return it;
}).thenCompose(WebClientResponse::close).toCompletableFuture().get();
webClient.delete().path("/books/123456").request().thenAccept(it -> assertThat("HTTP response delete book", it.status(), is(Http.Status.OK_200))).toCompletableFuture().get();
application.stop();
}
use of io.helidon.webclient.WebClientResponse in project helidon by oracle.
the class MetricsTest method testCounter.
@Test
public void testCounter() {
WebClientService serviceCounterAll = WebClientMetrics.counter().nameFormat("counter.%1$s.%2$s").build();
WebClientService serviceCounterGet = WebClientMetrics.counter().methods(Http.Method.GET).nameFormat("counter.get.%1$s.%2$s").build();
WebClientService serviceCounterError = WebClientMetrics.counter().nameFormat("counter.error.%1$s.%2$s").success(false).build();
WebClientService serviceCounterSuccess = WebClientMetrics.counter().nameFormat("counter.success.%1$s.%2$s").errors(false).build();
WebClient webClient = createNewClient(serviceCounterAll, serviceCounterGet, serviceCounterError, serviceCounterSuccess);
Counter counterAll = FACTORY.counter("counter.GET.localhost");
Counter counterGet = FACTORY.counter("counter.get.GET.localhost");
Counter counterError = FACTORY.counter("counter.error.GET.localhost");
Counter counterSuccess = FACTORY.counter("counter.success.GET.localhost");
assertThat(counterAll.getCount(), is(0L));
assertThat(counterGet.getCount(), is(0L));
assertThat(counterError.getCount(), is(0L));
assertThat(counterSuccess.getCount(), is(0L));
try {
webClient.get().request(String.class).toCompletableFuture().get();
assertThat(counterAll.getCount(), is(1L));
assertThat(counterGet.getCount(), is(1L));
assertThat(counterError.getCount(), is(0L));
assertThat(counterSuccess.getCount(), is(1L));
webClient.get().path("/error").request().thenCompose(WebClientResponse::close).toCompletableFuture().get();
assertThat(counterAll.getCount(), is(2L));
assertThat(counterGet.getCount(), is(2L));
assertThat(counterError.getCount(), is(1L));
assertThat(counterSuccess.getCount(), is(1L));
} catch (Exception e) {
fail(e);
}
}
use of io.helidon.webclient.WebClientResponse in project helidon by oracle.
the class MetricsTest method testMeter.
@Test
public void testMeter() {
WebClientService serviceMeterAll = WebClientMetrics.meter().nameFormat("meter.%1$s.%2$s").build();
WebClientService serviceMeterGet = WebClientMetrics.meter().methods(Http.Method.GET).nameFormat("meter.get.%1$s.%2$s").build();
WebClientService serviceMeterError = WebClientMetrics.meter().nameFormat("meter.error.%1$s.%2$s").success(false).build();
WebClientService serviceMeterSuccess = WebClientMetrics.meter().nameFormat("meter.success.%1$s.%2$s").errors(false).build();
WebClient webClient = createNewClient(serviceMeterAll, serviceMeterGet, serviceMeterError, serviceMeterSuccess);
Meter meterAll = FACTORY.meter("meter.GET.localhost");
Meter meterGet = FACTORY.meter("meter.get.GET.localhost");
Meter meterError = FACTORY.meter("meter.error.GET.localhost");
Meter meterSuccess = FACTORY.meter("meter.success.GET.localhost");
assertThat(meterAll.getCount(), is(0L));
assertThat(meterGet.getCount(), is(0L));
assertThat(meterError.getCount(), is(0L));
assertThat(meterSuccess.getCount(), is(0L));
try {
webClient.get().request(String.class).toCompletableFuture().get();
assertThat(meterAll.getCount(), is(1L));
assertThat(meterGet.getCount(), is(1L));
assertThat(meterError.getCount(), is(0L));
assertThat(meterSuccess.getCount(), is(1L));
webClient.get().path("/error").request().thenCompose(WebClientResponse::close).toCompletableFuture().get();
assertThat(meterAll.getCount(), is(2L));
assertThat(meterGet.getCount(), is(2L));
assertThat(meterError.getCount(), is(1L));
assertThat(meterSuccess.getCount(), is(1L));
} catch (Exception e) {
fail(e);
}
}
use of io.helidon.webclient.WebClientResponse in project helidon by oracle.
the class MetricsTest method testGaugeInProgress.
@Test
public void testGaugeInProgress() throws Exception {
ConcurrentGauge progressAll = FACTORY.concurrentGauge("gauge.GET.localhost");
ConcurrentGauge progressPut = FACTORY.concurrentGauge("gauge.put.PUT.localhost");
ConcurrentGauge progressGet = FACTORY.concurrentGauge("gauge.get.GET.localhost");
WebClientService inProgressAll = WebClientMetrics.gaugeInProgress().nameFormat("gauge.%1$s.%2$s").build();
WebClientService inProgressPut = WebClientMetrics.gaugeInProgress().methods(Http.Method.PUT).nameFormat("gauge.put.%1$s.%2$s").build();
WebClientService inProgressGet = WebClientMetrics.gaugeInProgress().methods(Http.Method.GET).nameFormat("gauge.get.%1$s.%2$s").build();
WebClientService clientService = request -> {
request.whenSent().thenAccept(clientServiceRequest -> {
assertThat(progressAll.getCount(), is(1L));
assertThat(progressGet.getCount(), is(1L));
assertThat(progressPut.getCount(), is(0L));
});
return Single.just(request);
};
WebClient webClient = createNewClient(inProgressAll, inProgressPut, inProgressGet, clientService);
assertThat(progressAll.getCount(), is(0L));
assertThat(progressGet.getCount(), is(0L));
assertThat(progressPut.getCount(), is(0L));
webClient.get().request().thenCompose(WebClientResponse::close).toCompletableFuture().get();
assertThat(progressAll.getCount(), is(0L));
assertThat(progressGet.getCount(), is(0L));
assertThat(progressPut.getCount(), is(0L));
}
Aggregations