From f51c4c3df0bfd9cec77f048e959672fe6d82d5bb Mon Sep 17 00:00:00 2001 From: Mico Piira <--global> Date: Mon, 26 Sep 2022 21:19:10 +0300 Subject: [PATCH] Use non-blocking API in CouchbaseReactiveHealthIndicator See gh-32505 --- .../CouchbaseReactiveHealthIndicator.java | 7 ++++--- .../CouchbaseReactiveHealthIndicatorTests.java | 14 ++++++++++---- 2 files changed, 14 insertions(+), 7 deletions(-) diff --git a/spring-boot-project/spring-boot-actuator/src/main/java/org/springframework/boot/actuate/couchbase/CouchbaseReactiveHealthIndicator.java b/spring-boot-project/spring-boot-actuator/src/main/java/org/springframework/boot/actuate/couchbase/CouchbaseReactiveHealthIndicator.java index b368f9306e1b..363ddc6c9e14 100644 --- a/spring-boot-project/spring-boot-actuator/src/main/java/org/springframework/boot/actuate/couchbase/CouchbaseReactiveHealthIndicator.java +++ b/spring-boot-project/spring-boot-actuator/src/main/java/org/springframework/boot/actuate/couchbase/CouchbaseReactiveHealthIndicator.java @@ -46,9 +46,10 @@ public CouchbaseReactiveHealthIndicator(Cluster cluster) { @Override protected Mono doHealthCheck(Health.Builder builder) { - DiagnosticsResult diagnostics = this.cluster.diagnostics(); - new CouchbaseHealth(diagnostics).applyTo(builder); - return Mono.just(builder.build()); + return this.cluster.reactive().diagnostics().map(diagnostics -> { + new CouchbaseHealth(diagnostics).applyTo(builder); + return builder.build(); + }); } } diff --git a/spring-boot-project/spring-boot-actuator/src/test/java/org/springframework/boot/actuate/couchbase/CouchbaseReactiveHealthIndicatorTests.java b/spring-boot-project/spring-boot-actuator/src/test/java/org/springframework/boot/actuate/couchbase/CouchbaseReactiveHealthIndicatorTests.java index adc00a875134..0106c562150a 100644 --- a/spring-boot-project/spring-boot-actuator/src/test/java/org/springframework/boot/actuate/couchbase/CouchbaseReactiveHealthIndicatorTests.java +++ b/spring-boot-project/spring-boot-actuator/src/test/java/org/springframework/boot/actuate/couchbase/CouchbaseReactiveHealthIndicatorTests.java @@ -28,10 +28,12 @@ import com.couchbase.client.core.endpoint.EndpointState; import com.couchbase.client.core.service.ServiceType; import com.couchbase.client.java.Cluster; +import com.couchbase.client.java.ReactiveCluster; import org.junit.jupiter.api.Test; import org.springframework.boot.actuate.health.Health; import org.springframework.boot.actuate.health.Status; +import reactor.core.publisher.Mono; import static org.assertj.core.api.Assertions.assertThat; import static org.mockito.BDDMockito.given; @@ -52,13 +54,15 @@ void couchbaseClusterIsUp() { Collections.singletonList(new EndpointDiagnostics(ServiceType.KV, EndpointState.CONNECTED, "127.0.0.1", "127.0.0.1", Optional.empty(), Optional.of(1234L), Optional.of("endpoint-1")))); DiagnosticsResult diagnostics = new DiagnosticsResult(endpoints, "test-sdk", "test-id"); - given(cluster.diagnostics()).willReturn(diagnostics); + ReactiveCluster reactiveCluster = mock(ReactiveCluster.class); + given(reactiveCluster.diagnostics()).willReturn(Mono.just(diagnostics)); + given(cluster.reactive()).willReturn(reactiveCluster); Health health = healthIndicator.health().block(Duration.ofSeconds(30)); assertThat(health.getStatus()).isEqualTo(Status.UP); assertThat(health.getDetails()).containsEntry("sdk", "test-sdk"); assertThat(health.getDetails()).containsKey("endpoints"); assertThat((List>) health.getDetails().get("endpoints")).hasSize(1); - then(cluster).should().diagnostics(); + then(reactiveCluster).should().diagnostics(); } @Test @@ -73,13 +77,15 @@ void couchbaseClusterIsDown() { new EndpointDiagnostics(ServiceType.KV, EndpointState.CONNECTING, "127.0.0.1", "127.0.0.1", Optional.empty(), Optional.of(1234L), Optional.of("endpoint-2")))); DiagnosticsResult diagnostics = new DiagnosticsResult(endpoints, "test-sdk", "test-id"); - given(cluster.diagnostics()).willReturn(diagnostics); + ReactiveCluster reactiveCluster = mock(ReactiveCluster.class); + given(reactiveCluster.diagnostics()).willReturn(Mono.just(diagnostics)); + given(cluster.reactive()).willReturn(reactiveCluster); Health health = healthIndicator.health().block(Duration.ofSeconds(30)); assertThat(health.getStatus()).isEqualTo(Status.DOWN); assertThat(health.getDetails()).containsEntry("sdk", "test-sdk"); assertThat(health.getDetails()).containsKey("endpoints"); assertThat((List>) health.getDetails().get("endpoints")).hasSize(2); - then(cluster).should().diagnostics(); + then(reactiveCluster).should().diagnostics(); } }