From a33c3eec3f0242165f21d95826d8e58ea5078b0d Mon Sep 17 00:00:00 2001 From: Stephane Nicoll Date: Thu, 14 Dec 2017 15:16:00 +0100 Subject: [PATCH] Polish "Add InfluxDb health indicator" Closes gh-11159 --- ...luxDbHealthIndicatorAutoConfiguration.java | 7 ++++--- ...itional-spring-configuration-metadata.json | 6 ++++++ ...HealthIndicatorAutoConfigurationTests.java | 21 +++++++++---------- .../infux/InfluxDbHealthIndicator.java | 7 ++++--- .../influx/InfluxDbHealthIndicatorTests.java | 16 ++++++++------ .../appendix-application-properties.adoc | 1 + .../asciidoc/production-ready-features.adoc | 3 +++ 7 files changed, 38 insertions(+), 23 deletions(-) diff --git a/spring-boot-project/spring-boot-actuator-autoconfigure/src/main/java/org/springframework/boot/actuate/autoconfigure/influx/InfluxDbHealthIndicatorAutoConfiguration.java b/spring-boot-project/spring-boot-actuator-autoconfigure/src/main/java/org/springframework/boot/actuate/autoconfigure/influx/InfluxDbHealthIndicatorAutoConfiguration.java index 445eec4491..d4f55274b2 100644 --- a/spring-boot-project/spring-boot-actuator-autoconfigure/src/main/java/org/springframework/boot/actuate/autoconfigure/influx/InfluxDbHealthIndicatorAutoConfiguration.java +++ b/spring-boot-project/spring-boot-actuator-autoconfigure/src/main/java/org/springframework/boot/actuate/autoconfigure/influx/InfluxDbHealthIndicatorAutoConfiguration.java @@ -37,7 +37,7 @@ import org.springframework.context.annotation.Configuration; /** * {@link EnableAutoConfiguration Auto-configuration} for {@link InfluxDbHealthIndicator}. - * + * * @author Eddú Meléndez * @since 2.0.0 */ @@ -57,8 +57,9 @@ public class InfluxDbHealthIndicatorAutoConfiguration extends } @Bean - @ConditionalOnMissingBean(name = "influxdbHealthIndicator") - public HealthIndicator influxdbHealthIndicator() { + @ConditionalOnMissingBean(name = "influxDbHealthIndicator") + public HealthIndicator influxDbHealthIndicator() { return createHealthIndicator(this.influxDbs); } + } diff --git a/spring-boot-project/spring-boot-actuator-autoconfigure/src/main/resources/META-INF/additional-spring-configuration-metadata.json b/spring-boot-project/spring-boot-actuator-autoconfigure/src/main/resources/META-INF/additional-spring-configuration-metadata.json index 6f45fcd902..12486747f0 100644 --- a/spring-boot-project/spring-boot-actuator-autoconfigure/src/main/resources/META-INF/additional-spring-configuration-metadata.json +++ b/spring-boot-project/spring-boot-actuator-autoconfigure/src/main/resources/META-INF/additional-spring-configuration-metadata.json @@ -103,6 +103,12 @@ "description": "Whether to enable elasticsearch health check.", "defaultValue": true }, + { + "name": "management.influxdb.jms.enabled", + "type": "java.lang.Boolean", + "description": "Whether to enable InfluxDB health check.", + "defaultValue": true + }, { "name": "management.health.jms.enabled", "type": "java.lang.Boolean", diff --git a/spring-boot-project/spring-boot-actuator-autoconfigure/src/test/java/org/springframework/boot/actuate/autoconfigure/influx/InfluxDbHealthIndicatorAutoConfigurationTests.java b/spring-boot-project/spring-boot-actuator-autoconfigure/src/test/java/org/springframework/boot/actuate/autoconfigure/influx/InfluxDbHealthIndicatorAutoConfigurationTests.java index 19c2884700..743bc96d53 100644 --- a/spring-boot-project/spring-boot-actuator-autoconfigure/src/test/java/org/springframework/boot/actuate/autoconfigure/influx/InfluxDbHealthIndicatorAutoConfigurationTests.java +++ b/spring-boot-project/spring-boot-actuator-autoconfigure/src/test/java/org/springframework/boot/actuate/autoconfigure/influx/InfluxDbHealthIndicatorAutoConfigurationTests.java @@ -23,7 +23,6 @@ import org.springframework.boot.actuate.autoconfigure.health.HealthIndicatorAuto import org.springframework.boot.actuate.health.ApplicationHealthIndicator; import org.springframework.boot.actuate.infux.InfluxDbHealthIndicator; import org.springframework.boot.autoconfigure.AutoConfigurations; -import org.springframework.boot.autoconfigure.AutoConfigureBefore; import org.springframework.boot.test.context.runner.ApplicationContextRunner; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; @@ -33,35 +32,35 @@ import static org.mockito.Mockito.mock; /** * Tests for {@link InfluxDbHealthIndicatorAutoConfiguration}. - * + * * @author Eddú Meléndez */ -public class InfluxDbHealthIndicatorAutonConfigurationTests { +public class InfluxDbHealthIndicatorAutoConfigurationTests { private ApplicationContextRunner contextRunner = new ApplicationContextRunner() - .withConfiguration(AutoConfigurations.of(InfluxDbConfiguration.class, + .withUserConfiguration(InfluxDbConfiguration.class) + .withConfiguration(AutoConfigurations.of( InfluxDbHealthIndicatorAutoConfiguration.class, HealthIndicatorAutoConfiguration.class)); @Test - public void runShouldCreateIndicator() throws Exception { + public void runShouldCreateIndicator() { this.contextRunner.run((context) -> assertThat(context) .hasSingleBean(InfluxDbHealthIndicator.class) .doesNotHaveBean(ApplicationHealthIndicator.class)); } @Test - public void runWhenDisabledShouldNotCreateIndicator() throws Exception { + public void runWhenDisabledShouldNotCreateIndicator() { this.contextRunner .withPropertyValues("management.health.influxdb.enabled:false").run( - (context) -> assertThat(context) - .doesNotHaveBean(InfluxDbHealthIndicator.class) - .hasSingleBean(ApplicationHealthIndicator.class)); + (context) -> assertThat(context) + .doesNotHaveBean(InfluxDbHealthIndicator.class) + .hasSingleBean(ApplicationHealthIndicator.class)); } @Configuration - @AutoConfigureBefore(InfluxDbHealthIndicatorAutoConfiguration.class) - protected static class InfluxDbConfiguration { + static class InfluxDbConfiguration { @Bean public InfluxDB influxdb() { diff --git a/spring-boot-project/spring-boot-actuator/src/main/java/org/springframework/boot/actuate/infux/InfluxDbHealthIndicator.java b/spring-boot-project/spring-boot-actuator/src/main/java/org/springframework/boot/actuate/infux/InfluxDbHealthIndicator.java index 3e58c4c405..777219afd1 100644 --- a/spring-boot-project/spring-boot-actuator/src/main/java/org/springframework/boot/actuate/infux/InfluxDbHealthIndicator.java +++ b/spring-boot-project/spring-boot-actuator/src/main/java/org/springframework/boot/actuate/infux/InfluxDbHealthIndicator.java @@ -17,6 +17,7 @@ package org.springframework.boot.actuate.infux; import org.influxdb.InfluxDB; +import org.influxdb.dto.Pong; import org.springframework.boot.actuate.health.AbstractHealthIndicator; import org.springframework.boot.actuate.health.Health; @@ -39,9 +40,9 @@ public class InfluxDbHealthIndicator extends AbstractHealthIndicator { } @Override - protected void doHealthCheck(Health.Builder builder) throws Exception { - String version = this.influxDb.version(); - builder.up().withDetail("version", version); + protected void doHealthCheck(Health.Builder builder) { + Pong pong = this.influxDb.ping(); + builder.up().withDetail("version", pong.getVersion()); } } diff --git a/spring-boot-project/spring-boot-actuator/src/test/java/org/springframework/boot/actuate/influx/InfluxDbHealthIndicatorTests.java b/spring-boot-project/spring-boot-actuator/src/test/java/org/springframework/boot/actuate/influx/InfluxDbHealthIndicatorTests.java index 156b8a7a30..ff4a24d968 100644 --- a/spring-boot-project/spring-boot-actuator/src/test/java/org/springframework/boot/actuate/influx/InfluxDbHealthIndicatorTests.java +++ b/spring-boot-project/spring-boot-actuator/src/test/java/org/springframework/boot/actuate/influx/InfluxDbHealthIndicatorTests.java @@ -20,6 +20,7 @@ import java.io.IOException; import org.influxdb.InfluxDB; import org.influxdb.InfluxDBException; +import org.influxdb.dto.Pong; import org.junit.Test; import org.springframework.boot.actuate.health.Health; @@ -39,26 +40,29 @@ import static org.mockito.Mockito.verify; public class InfluxDbHealthIndicatorTests { @Test - public void influxdbIsUp() { + public void influxDbIsUp() { + Pong pong = mock(Pong.class); + given(pong.getVersion()).willReturn("0.9"); InfluxDB influxDB = mock(InfluxDB.class); - given(influxDB.version()).willReturn("0.9"); + given(influxDB.ping()).willReturn(pong); InfluxDbHealthIndicator healthIndicator = new InfluxDbHealthIndicator(influxDB); Health health = healthIndicator.health(); assertThat(health.getStatus()).isEqualTo(Status.UP); assertThat(health.getDetails().get("version")).isEqualTo("0.9"); - verify(influxDB).version(); + verify(influxDB).ping(); } @Test - public void influxdbIsDown() { + public void influxDbIsDown() { InfluxDB influxDB = mock(InfluxDB.class); - given(influxDB.version()).willThrow( + given(influxDB.ping()).willThrow( new InfluxDBException(new IOException("Connection failed"))); InfluxDbHealthIndicator healthIndicator = new InfluxDbHealthIndicator(influxDB); Health health = healthIndicator.health(); assertThat(health.getStatus()).isEqualTo(Status.DOWN); assertThat((String) health.getDetails().get("error")) .contains("Connection failed"); - verify(influxDB).version(); + verify(influxDB).ping(); } + } diff --git a/spring-boot-project/spring-boot-docs/src/main/asciidoc/appendix-application-properties.adoc b/spring-boot-project/spring-boot-docs/src/main/asciidoc/appendix-application-properties.adoc index 3effa7411f..a4449b56d6 100644 --- a/spring-boot-project/spring-boot-docs/src/main/asciidoc/appendix-application-properties.adoc +++ b/spring-boot-project/spring-boot-docs/src/main/asciidoc/appendix-application-properties.adoc @@ -1224,6 +1224,7 @@ content into your application. Rather, pick only the properties that you need. management.health.elasticsearch.indices= # Comma-separated index names. management.health.elasticsearch.response-timeout=100ms # The time to wait for a response from the cluster. management.health.jms.enabled=true # Whether to enable JMS health check. + management.health.influxdb.enabled=true # Whether to enable InfluxDB health check. management.health.ldap.enabled=true # Whether to enable LDAP health check. management.health.mail.enabled=true # Whether to enable Mail health check. management.health.mongo.enabled=true # Whether to enable MongoDB health check. diff --git a/spring-boot-project/spring-boot-docs/src/main/asciidoc/production-ready-features.adoc b/spring-boot-project/spring-boot-docs/src/main/asciidoc/production-ready-features.adoc index 7e630b2db6..a87a822c79 100644 --- a/spring-boot-project/spring-boot-docs/src/main/asciidoc/production-ready-features.adoc +++ b/spring-boot-project/spring-boot-docs/src/main/asciidoc/production-ready-features.adoc @@ -368,6 +368,9 @@ The following `HealthIndicators` are auto-configured by Spring Boot when appropr |{sc-spring-boot-actuator}/elasticsearch/ElasticsearchHealthIndicator.{sc-ext}[`ElasticsearchHealthIndicator`] |Checks that an Elasticsearch cluster is up. +|{sc-spring-boot-actuator}/influx/InfluxDbHealthIndicator.{sc-ext}[`InfluxDbHealthIndicator`] +|Checks that an InfluxDB server is up. + |{sc-spring-boot-actuator}/jms/JmsHealthIndicator.{sc-ext}[`JmsHealthIndicator`] |Checks that a JMS broker is up.