2121import io .micrometer .core .instrument .Clock ;
2222import io .micrometer .core .instrument .MeterRegistry ;
2323import io .micrometer .core .instrument .binder .MeterBinder ;
24+ import io .micrometer .core .instrument .binder .jvm .ClassLoaderMetrics ;
2425import io .micrometer .core .instrument .binder .jvm .JvmGcMetrics ;
2526import io .micrometer .core .instrument .binder .jvm .JvmMemoryMetrics ;
2627import io .micrometer .core .instrument .binder .jvm .JvmThreadMetrics ;
@@ -94,15 +95,17 @@ public void configuresMeterRegistries() {
9495 public void autoConfiguresJvmMetrics () {
9596 this .runner .run ((context ) -> assertThat (context ).hasSingleBean (JvmGcMetrics .class )
9697 .hasSingleBean (JvmMemoryMetrics .class )
97- .hasSingleBean (JvmThreadMetrics .class ));
98+ .hasSingleBean (JvmThreadMetrics .class )
99+ .hasSingleBean (ClassLoaderMetrics .class ));
98100 }
99101
100102 @ Test
101103 public void allowsJvmMetricsToBeDisabled () {
102104 this .runner .withPropertyValues ("management.metrics.binders.jvm.enabled=false" )
103105 .run ((context ) -> assertThat (context ).doesNotHaveBean (JvmGcMetrics .class )
104106 .doesNotHaveBean (JvmMemoryMetrics .class )
105- .doesNotHaveBean (JvmThreadMetrics .class ));
107+ .doesNotHaveBean (JvmThreadMetrics .class )
108+ .doesNotHaveBean (ClassLoaderMetrics .class ));
106109 }
107110
108111 @ Test
@@ -111,7 +114,8 @@ public void allowsCustomJvmGcMetricsToBeUsed() {
111114 .run ((context ) -> assertThat (context ).hasSingleBean (JvmGcMetrics .class )
112115 .hasBean ("customJvmGcMetrics" )
113116 .hasSingleBean (JvmMemoryMetrics .class )
114- .hasSingleBean (JvmThreadMetrics .class ));
117+ .hasSingleBean (JvmThreadMetrics .class )
118+ .hasSingleBean (ClassLoaderMetrics .class ));
115119 }
116120
117121 @ Test
@@ -120,7 +124,8 @@ public void allowsCustomJvmMemoryMetricsToBeUsed() {
120124 .run ((context ) -> assertThat (context ).hasSingleBean (JvmGcMetrics .class )
121125 .hasSingleBean (JvmMemoryMetrics .class )
122126 .hasBean ("customJvmMemoryMetrics" )
123- .hasSingleBean (JvmThreadMetrics .class ));
127+ .hasSingleBean (JvmThreadMetrics .class )
128+ .hasSingleBean (ClassLoaderMetrics .class ));
124129 }
125130
126131 @ Test
@@ -129,9 +134,20 @@ public void allowsCustomJvmThreadMetricsToBeUsed() {
129134 .run ((context ) -> assertThat (context ).hasSingleBean (JvmGcMetrics .class )
130135 .hasSingleBean (JvmMemoryMetrics .class )
131136 .hasSingleBean (JvmThreadMetrics .class )
137+ .hasSingleBean (ClassLoaderMetrics .class )
132138 .hasBean ("customJvmThreadMetrics" ));
133139 }
134140
141+ @ Test
142+ public void allowsCustomClassLoaderMetricsToBeUsed () {
143+ this .runner .withUserConfiguration (CustomClassLoaderMetricsConfiguration .class )
144+ .run ((context ) -> assertThat (context ).hasSingleBean (JvmGcMetrics .class )
145+ .hasSingleBean (JvmMemoryMetrics .class )
146+ .hasSingleBean (JvmThreadMetrics .class )
147+ .hasSingleBean (ClassLoaderMetrics .class )
148+ .hasBean ("customClassLoaderMetrics" ));
149+ }
150+
135151 @ Test
136152 public void autoConfiguresLogbackMetrics () {
137153 this .runner .run (
@@ -256,6 +272,16 @@ JvmThreadMetrics customJvmThreadMetrics() {
256272
257273 }
258274
275+ @ Configuration
276+ static class CustomClassLoaderMetricsConfiguration {
277+
278+ @ Bean
279+ ClassLoaderMetrics customClassLoaderMetrics () {
280+ return new ClassLoaderMetrics ();
281+ }
282+
283+ }
284+
259285 @ Configuration
260286 static class CustomLogbackMetricsConfiguration {
261287
0 commit comments