From a51fcd071e71527036d55a66a9add932b32fd8d8 Mon Sep 17 00:00:00 2001 From: Tommy Ludwig Date: Tue, 13 Feb 2018 18:34:50 +0900 Subject: [PATCH] Auto-configure FileDescriptorMetrics See gh-12022 --- .../metrics/MetricsAutoConfiguration.java | 8 +++++ .../MetricsAutoConfigurationTests.java | 33 +++++++++++++++++++ 2 files changed, 41 insertions(+) diff --git a/spring-boot-project/spring-boot-actuator-autoconfigure/src/main/java/org/springframework/boot/actuate/autoconfigure/metrics/MetricsAutoConfiguration.java b/spring-boot-project/spring-boot-actuator-autoconfigure/src/main/java/org/springframework/boot/actuate/autoconfigure/metrics/MetricsAutoConfiguration.java index 644d4425c4..2493e741c7 100644 --- a/spring-boot-project/spring-boot-actuator-autoconfigure/src/main/java/org/springframework/boot/actuate/autoconfigure/metrics/MetricsAutoConfiguration.java +++ b/spring-boot-project/spring-boot-actuator-autoconfigure/src/main/java/org/springframework/boot/actuate/autoconfigure/metrics/MetricsAutoConfiguration.java @@ -23,6 +23,7 @@ import io.micrometer.core.instrument.binder.jvm.JvmGcMetrics; import io.micrometer.core.instrument.binder.jvm.JvmMemoryMetrics; import io.micrometer.core.instrument.binder.jvm.JvmThreadMetrics; import io.micrometer.core.instrument.binder.logging.LogbackMetrics; +import io.micrometer.core.instrument.binder.system.FileDescriptorMetrics; import io.micrometer.core.instrument.binder.system.ProcessorMetrics; import io.micrometer.core.instrument.binder.system.UptimeMetrics; @@ -126,6 +127,13 @@ public class MetricsAutoConfiguration { return new ProcessorMetrics(); } + @Bean + @ConditionalOnProperty(name = "management.metrics.binders.fds.enabled", matchIfMissing = true) + @ConditionalOnMissingBean + public FileDescriptorMetrics fileDescriptorMetrics() { + return new FileDescriptorMetrics(); + } + } } diff --git a/spring-boot-project/spring-boot-actuator-autoconfigure/src/test/java/org/springframework/boot/actuate/autoconfigure/metrics/MetricsAutoConfigurationTests.java b/spring-boot-project/spring-boot-actuator-autoconfigure/src/test/java/org/springframework/boot/actuate/autoconfigure/metrics/MetricsAutoConfigurationTests.java index 5c0b8b8f67..4d886713fd 100644 --- a/spring-boot-project/spring-boot-actuator-autoconfigure/src/test/java/org/springframework/boot/actuate/autoconfigure/metrics/MetricsAutoConfigurationTests.java +++ b/spring-boot-project/spring-boot-actuator-autoconfigure/src/test/java/org/springframework/boot/actuate/autoconfigure/metrics/MetricsAutoConfigurationTests.java @@ -26,6 +26,7 @@ import io.micrometer.core.instrument.binder.jvm.JvmGcMetrics; import io.micrometer.core.instrument.binder.jvm.JvmMemoryMetrics; import io.micrometer.core.instrument.binder.jvm.JvmThreadMetrics; import io.micrometer.core.instrument.binder.logging.LogbackMetrics; +import io.micrometer.core.instrument.binder.system.FileDescriptorMetrics; import io.micrometer.core.instrument.binder.system.ProcessorMetrics; import io.micrometer.core.instrument.binder.system.UptimeMetrics; import io.micrometer.core.instrument.composite.CompositeMeterRegistry; @@ -210,6 +211,28 @@ public class MetricsAutoConfigurationTests { .hasBean("customProcessorMetrics")); } + @Test + public void autoConfiguresFileDescriptorMetrics() { + this.runner.run( + (context) -> assertThat(context) + .hasSingleBean(FileDescriptorMetrics.class)); + } + + @Test + public void allowsFileDescriptorMetricsToBeDisabled() { + this.runner.withPropertyValues("management.metrics.binders.fds.enabled=false") + .run((context) -> assertThat(context) + .doesNotHaveBean(FileDescriptorMetrics.class)); + } + + @Test + public void allowsCustomFileDescriptorToBeUsed() { + this.runner.withUserConfiguration(CustomFileDescriptorMetricsConfiguration.class) + .run((context) -> assertThat(context) + .hasSingleBean(FileDescriptorMetrics.class) + .hasBean("customFileDescriptorMetrics")); + } + @Configuration static class CustomClockConfiguration { @@ -312,4 +335,14 @@ public class MetricsAutoConfigurationTests { } + @Configuration + static class CustomFileDescriptorMetricsConfiguration { + + @Bean + FileDescriptorMetrics customFileDescriptorMetrics() { + return new FileDescriptorMetrics(); + } + + } + }