diff --git a/microprofile/messaging/health/pom.xml b/microprofile/messaging/health/pom.xml index 1ec6191dfd8..0b6b2646f69 100644 --- a/microprofile/messaging/health/pom.xml +++ b/microprofile/messaging/health/pom.xml @@ -55,21 +55,6 @@ junit-jupiter-params test - - io.helidon.reactive.webclient - helidon-reactive-webclient - test - - - io.helidon.reactive.media - helidon-reactive-media-jsonp - test - - - io.helidon.reactive.media - helidon-reactive-media-jsonb - test - io.helidon.microprofile.tests helidon-microprofile-tests-junit5 diff --git a/microprofile/messaging/health/src/test/java/io/helidon/microprofile/messaging/health/MessagingHealthTest.java b/microprofile/messaging/health/src/test/java/io/helidon/microprofile/messaging/health/MessagingHealthTest.java index 7734b2a6876..9f0218c7841 100644 --- a/microprofile/messaging/health/src/test/java/io/helidon/microprofile/messaging/health/MessagingHealthTest.java +++ b/microprofile/messaging/health/src/test/java/io/helidon/microprofile/messaging/health/MessagingHealthTest.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2020, 2022 Oracle and/or its affiliates. + * Copyright (c) 2020, 2023 Oracle and/or its affiliates. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -30,14 +30,15 @@ import io.helidon.microprofile.tests.junit5.AddExtensions; import io.helidon.microprofile.tests.junit5.DisableDiscovery; import io.helidon.microprofile.tests.junit5.HelidonTest; -import io.helidon.reactive.media.jsonp.JsonpSupport; -import io.helidon.reactive.webclient.WebClient; import jakarta.enterprise.inject.se.SeContainer; import jakarta.enterprise.inject.spi.CDI; import jakarta.json.JsonObject; import jakarta.json.JsonValue; +import jakarta.ws.rs.client.WebTarget; +import jakarta.ws.rs.core.Response; import org.eclipse.microprofile.health.HealthCheckResponse; +import org.glassfish.jersey.ext.cdi1x.internal.CdiComponentProvider; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; import org.opentest4j.AssertionFailedError; @@ -78,33 +79,28 @@ @AddExtension(JaxRsCdiExtension.class), @AddExtension(HealthCdiExtension.class), @AddExtension(MessagingCdiExtension.class), + @AddExtension(CdiComponentProvider.class) }) public class MessagingHealthTest { private static final String ERROR_MESSAGE = "BOOM!"; - private WebClient client; - @BeforeEach void setUp() { ServerCdiExtension server = CDI.current().select(ServerCdiExtension.class).get(); - client = WebClient.builder() - .baseUri("http://localhost:" + server.port()) - .addReader(JsonpSupport.reader()) - .build(); } @Test - void alivenessWithErrorSignal(SeContainer container) { + void alivenessWithErrorSignal(WebTarget webTarget, SeContainer container) { TestMessagingBean bean = container.select(TestMessagingBean.class).get(); - assertMessagingHealth(UP, Map.of( + assertMessagingHealth(webTarget, UP, Map.of( CHANNEL_1, UP, CHANNEL_2, UP )); bean.getEmitter1().fail(new RuntimeException(ERROR_MESSAGE)); - assertMessagingHealth(DOWN, Map.of( + assertMessagingHealth(webTarget, DOWN, Map.of( CHANNEL_1, DOWN, CHANNEL_2, UP )); @@ -112,7 +108,7 @@ void alivenessWithErrorSignal(SeContainer container) { equalTo(ERROR_MESSAGE)); bean.getEmitter2().fail(new RuntimeException(ERROR_MESSAGE)); - assertMessagingHealth(DOWN, Map.of( + assertMessagingHealth(webTarget, DOWN, Map.of( CHANNEL_1, DOWN, CHANNEL_2, DOWN )); @@ -121,10 +117,10 @@ void alivenessWithErrorSignal(SeContainer container) { } @Test - void alivenessWithCancelSignal(SeContainer container) { + void alivenessWithCancelSignal(WebTarget webTarget, SeContainer container) { TestMessagingBean bean = container.select(TestMessagingBean.class).get(); - assertMessagingHealth(UP, Map.of( + assertMessagingHealth(webTarget, UP, Map.of( CHANNEL_1, UP, CHANNEL_2, UP )); @@ -132,40 +128,35 @@ void alivenessWithCancelSignal(SeContainer container) { assertThat(bean.getEmitter2().isCancelled(), equalTo(Boolean.FALSE)); bean.getSubscriber1().cancel(); - assertMessagingHealth(DOWN, Map.of( + assertMessagingHealth(webTarget, DOWN, Map.of( CHANNEL_1, DOWN, CHANNEL_2, UP )); assertThat(bean.getEmitter1().isCancelled(), equalTo(Boolean.TRUE)); bean.getSubscriber2().cancel(); - assertMessagingHealth(DOWN, Map.of( + assertMessagingHealth(webTarget, DOWN, Map.of( CHANNEL_1, DOWN, CHANNEL_2, DOWN )); assertThat(bean.getEmitter2().isCancelled(), equalTo(Boolean.TRUE)); } - private void assertMessagingHealth(HealthCheckResponse.Status rootState, Map channels) { - JsonObject messaging = getHealthCheck("messaging"); + private void assertMessagingHealth(WebTarget webTarget, HealthCheckResponse.Status rootState, Map channels) { + JsonObject messaging = getHealthCheck(webTarget, "messaging"); assertThat(messaging.getString("status"), equalTo(rootState.name())); JsonObject data = messaging.getJsonObject("data"); channels.forEach((name, state) -> assertThat(data.getString(name), equalTo(state.name()))); } - private JsonObject getHealthCheck(String checkName) { - return client.get() - .path("/health") - .submit() - .await(5, TimeUnit.SECONDS) - .content() - .as(JsonObject.class) - .await(500, TimeUnit.MILLISECONDS) - .getValue("/checks") - .asJsonArray().stream() - .map(JsonValue::asJsonObject) - .filter(check -> check.getString("name").equals(checkName)) - .findFirst() - .orElseThrow(() -> new AssertionFailedError("Health check 'messaging' is missing!")); + private JsonObject getHealthCheck(WebTarget webTarget, String checkName) { + Response response = webTarget.path("/health").request().get(); + JsonObject jsonObject = response.readEntity(JsonObject.class); + return jsonObject.getValue("/checks") + .asJsonArray().stream() + .map(JsonValue::asJsonObject) + .filter(check -> check.getString("name").equals(checkName)) + .findFirst() + .orElseThrow(() -> new AssertionFailedError("Health check 'messaging' is missing!")); } }