Merge pull request #31151 from izeye

* gh-31151:
  Polish "Auto-configure JvmCompilationMetrics"
  Auto-configure JvmCompilationMetrics

Closes gh-31151
This commit is contained in:
Andy Wilkinson
2022-05-27 10:23:40 +01:00
3 changed files with 26 additions and 1 deletions

View File

@@ -18,6 +18,7 @@ package org.springframework.boot.actuate.autoconfigure.metrics;
import io.micrometer.core.instrument.MeterRegistry;
import io.micrometer.core.instrument.binder.jvm.ClassLoaderMetrics;
import io.micrometer.core.instrument.binder.jvm.JvmCompilationMetrics;
import io.micrometer.core.instrument.binder.jvm.JvmGcMetrics;
import io.micrometer.core.instrument.binder.jvm.JvmHeapPressureMetrics;
import io.micrometer.core.instrument.binder.jvm.JvmInfoMetrics;
@@ -79,4 +80,10 @@ public class JvmMetricsAutoConfiguration {
return new JvmInfoMetrics();
}
@Bean
@ConditionalOnMissingBean
public JvmCompilationMetrics jvmCompilationMetrics() {
return new JvmCompilationMetrics();
}
}

View File

@@ -17,6 +17,7 @@
package org.springframework.boot.actuate.autoconfigure.metrics;
import io.micrometer.core.instrument.binder.jvm.ClassLoaderMetrics;
import io.micrometer.core.instrument.binder.jvm.JvmCompilationMetrics;
import io.micrometer.core.instrument.binder.jvm.JvmGcMetrics;
import io.micrometer.core.instrument.binder.jvm.JvmHeapPressureMetrics;
import io.micrometer.core.instrument.binder.jvm.JvmInfoMetrics;
@@ -87,11 +88,17 @@ class JvmMetricsAutoConfigurationTests {
.run(assertMetricsBeans().andThen((context) -> assertThat(context).hasBean("customJvmInfoMetrics")));
}
@Test
void allowsCustomJvmCompilationMetricsToBeUsed() {
this.contextRunner.withUserConfiguration(CustomJvmCompilationMetricsConfiguration.class).run(
assertMetricsBeans().andThen((context) -> assertThat(context).hasBean("customJvmCompilationMetrics")));
}
private ContextConsumer<AssertableApplicationContext> assertMetricsBeans() {
return (context) -> assertThat(context).hasSingleBean(JvmGcMetrics.class)
.hasSingleBean(JvmHeapPressureMetrics.class).hasSingleBean(JvmMemoryMetrics.class)
.hasSingleBean(JvmThreadMetrics.class).hasSingleBean(ClassLoaderMetrics.class)
.hasSingleBean(JvmInfoMetrics.class);
.hasSingleBean(JvmInfoMetrics.class).hasSingleBean(JvmCompilationMetrics.class);
}
@Configuration(proxyBeanMethods = false)
@@ -154,4 +161,14 @@ class JvmMetricsAutoConfigurationTests {
}
@Configuration(proxyBeanMethods = false)
static class CustomJvmCompilationMetricsConfiguration {
@Bean
JvmCompilationMetrics customJvmCompilationMetrics() {
return new JvmCompilationMetrics();
}
}
}

View File

@@ -676,6 +676,7 @@ The following JVM metrics are provided:
* Thread utilization
* The number of classes loaded and unloaded
* JVM version information
* JIT compilation time