Skip to content

Commit 8dfe8da

Browse files
Merge pull request #168 from pagopa/release-uat
fix: promote to Main
2 parents f96d054 + 0b4be96 commit 8dfe8da

File tree

6 files changed

+97
-99
lines changed

6 files changed

+97
-99
lines changed

pom.xml

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -129,6 +129,11 @@
129129
<version>4.2.0</version>
130130
<scope>test</scope>
131131
</dependency>
132+
<dependency>
133+
<groupId>io.projectreactor</groupId>
134+
<artifactId>reactor-test</artifactId>
135+
<scope>test</scope>
136+
</dependency>
132137
</dependencies>
133138

134139
<dependencyManagement>
Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
package it.gov.pagopa.common.config;
2+
3+
import org.bson.Document;
4+
import org.springframework.boot.actuate.health.AbstractReactiveHealthIndicator;
5+
import org.springframework.boot.actuate.health.Health;
6+
import org.springframework.data.mongodb.core.ReactiveMongoTemplate;
7+
import org.springframework.util.Assert;
8+
import reactor.core.publisher.Mono;
9+
10+
public class CustomReactiveMongoHealthIndicator extends AbstractReactiveHealthIndicator {
11+
private final ReactiveMongoTemplate reactiveMongoTemplate;
12+
public CustomReactiveMongoHealthIndicator(ReactiveMongoTemplate reactiveMongoTemplate) {
13+
super("Mongo health check failed");
14+
Assert.notNull(reactiveMongoTemplate, "ReactiveMongoTemplate must not be null");
15+
this.reactiveMongoTemplate = reactiveMongoTemplate;
16+
}
17+
18+
@Override
19+
protected Mono<Health> doHealthCheck(Health.Builder builder) {
20+
Mono<Document> buildInfo = this.reactiveMongoTemplate.executeCommand("{ isMaster: 1 }");
21+
return buildInfo.map(document -> up(builder, document));
22+
}
23+
24+
private Health up(Health.Builder builder, Document document) {
25+
return builder.up().withDetail("maxWireVersion", document.getInteger("maxWireVersion")).build();
26+
}
27+
}

src/main/java/it/gov/pagopa/common/config/HealthIndicatorLogger.java

Lines changed: 0 additions & 33 deletions
This file was deleted.
Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
package it.gov.pagopa.common.reactive.mongo.config;
2+
3+
import it.gov.pagopa.common.config.CustomReactiveMongoHealthIndicator;
4+
import org.springframework.context.annotation.Bean;
5+
import org.springframework.context.annotation.Configuration;
6+
import org.springframework.data.mongodb.core.ReactiveMongoTemplate;
7+
8+
@Configuration
9+
public class MongoHealthConfig {
10+
@Bean
11+
public CustomReactiveMongoHealthIndicator customMongoHealthIndicator(ReactiveMongoTemplate mongoTemplate) {
12+
return new CustomReactiveMongoHealthIndicator(mongoTemplate);
13+
}
14+
}
15+
Lines changed: 50 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,50 @@
1+
package it.gov.pagopa.common.config;
2+
3+
import com.mongodb.MongoException;
4+
import org.bson.Document;
5+
import org.junit.jupiter.api.Test;
6+
import org.springframework.boot.actuate.health.Health;
7+
import org.springframework.boot.actuate.health.Status;
8+
import org.springframework.data.mongodb.core.ReactiveMongoTemplate;
9+
import reactor.core.publisher.Mono;
10+
import reactor.test.StepVerifier;
11+
12+
import java.time.Duration;
13+
14+
import static org.assertj.core.api.Assertions.assertThat;
15+
import static org.mockito.BDDMockito.given;
16+
import static org.mockito.Mockito.mock;
17+
18+
19+
class CustomReactiveMongoHealthIndicatorTest {
20+
@Test
21+
void testMongoIsUp() {
22+
Document buildInfo = mock(Document.class);
23+
given(buildInfo.getInteger("maxWireVersion")).willReturn(10);
24+
ReactiveMongoTemplate reactiveMongoTemplate = mock(ReactiveMongoTemplate.class);
25+
given(reactiveMongoTemplate.executeCommand("{ isMaster: 1 }")).willReturn(Mono.just(buildInfo));
26+
CustomReactiveMongoHealthIndicator mongoReactiveHealthIndicator = new CustomReactiveMongoHealthIndicator(
27+
reactiveMongoTemplate);
28+
Mono<Health> health = mongoReactiveHealthIndicator.health();
29+
StepVerifier.create(health).consumeNextWith(h -> {
30+
assertThat(h.getStatus()).isEqualTo(Status.UP);
31+
assertThat(h.getDetails()).containsOnlyKeys("maxWireVersion");
32+
assertThat(h.getDetails()).containsEntry("maxWireVersion", 10);
33+
}).expectComplete().verify(Duration.ofSeconds(30));
34+
}
35+
36+
@Test
37+
void testMongoIsDown() {
38+
ReactiveMongoTemplate reactiveMongoTemplate = mock(ReactiveMongoTemplate.class);
39+
given(reactiveMongoTemplate.executeCommand("{ isMaster: 1 }")).willThrow(new MongoException("Connection failed"));
40+
CustomReactiveMongoHealthIndicator mongoReactiveHealthIndicator = new CustomReactiveMongoHealthIndicator(
41+
reactiveMongoTemplate);
42+
Mono<Health> health = mongoReactiveHealthIndicator.health();
43+
StepVerifier.create(health).consumeNextWith(h -> {
44+
assertThat(h.getStatus()).isEqualTo(Status.DOWN);
45+
assertThat(h.getDetails()).containsOnlyKeys("error");
46+
assertThat(h.getDetails()).containsEntry("error", MongoException.class.getName() + ": Connection failed");
47+
}).expectComplete().verify(Duration.ofSeconds(30));
48+
}
49+
50+
}

src/test/java/it/gov/pagopa/common/config/HealthIndicatorLoggerTest.java

Lines changed: 0 additions & 66 deletions
This file was deleted.

0 commit comments

Comments
 (0)