Merge pull request #12762 from jkschneider
* pr/12762: Polish "Apply MeterRegistryCustomizer to composites" Apply MeterRegistryCustomizer to composites
This commit is contained in:
@@ -59,9 +59,6 @@ class MeterRegistryConfigurer {
|
||||
}
|
||||
|
||||
void configure(MeterRegistry registry) {
|
||||
if (registry instanceof CompositeMeterRegistry) {
|
||||
return;
|
||||
}
|
||||
// Customizers must be applied before binders, as they may add custom
|
||||
// tags or alter timer or summary configuration.
|
||||
customize(registry);
|
||||
|
||||
@@ -0,0 +1,50 @@
|
||||
/*
|
||||
* Copyright 2012-2018 the original author or authors.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
package org.springframework.boot.actuate.autoconfigure.metrics;
|
||||
|
||||
import io.micrometer.core.instrument.MeterRegistry;
|
||||
import io.micrometer.core.instrument.composite.CompositeMeterRegistry;
|
||||
import org.junit.Test;
|
||||
|
||||
import org.springframework.boot.actuate.autoconfigure.metrics.export.atlas.AtlasMetricsExportAutoConfiguration;
|
||||
import org.springframework.boot.actuate.autoconfigure.metrics.export.prometheus.PrometheusMetricsExportAutoConfiguration;
|
||||
import org.springframework.boot.actuate.autoconfigure.metrics.test.MetricsRun;
|
||||
import org.springframework.boot.test.context.runner.ApplicationContextRunner;
|
||||
|
||||
/**
|
||||
* Integration tests for {@link MeterRegistryConfigurer}.
|
||||
*
|
||||
* @author Jon Schneider
|
||||
*/
|
||||
public class MeterRegistryConfigurerIntegrationTests {
|
||||
|
||||
private ApplicationContextRunner contextRunner = new ApplicationContextRunner()
|
||||
.with(MetricsRun.limitedTo(AtlasMetricsExportAutoConfiguration.class,
|
||||
PrometheusMetricsExportAutoConfiguration.class));
|
||||
|
||||
@Test
|
||||
public void binderMetricsAreSearchableFromTheComposite() {
|
||||
this.contextRunner.run((context) -> {
|
||||
CompositeMeterRegistry composite = context
|
||||
.getBean(CompositeMeterRegistry.class);
|
||||
composite.get("jvm.memory.used").gauge();
|
||||
context.getBeansOfType(MeterRegistry.class)
|
||||
.forEach((name, registry) -> registry.get("jvm.memory.used").gauge());
|
||||
});
|
||||
}
|
||||
|
||||
}
|
||||
@@ -35,7 +35,6 @@ import static org.assertj.core.api.Assertions.assertThat;
|
||||
import static org.mockito.BDDMockito.given;
|
||||
import static org.mockito.Mockito.inOrder;
|
||||
import static org.mockito.Mockito.verify;
|
||||
import static org.mockito.Mockito.verifyZeroInteractions;
|
||||
|
||||
/**
|
||||
* Tests for {@link MeterRegistryConfigurer}.
|
||||
@@ -73,13 +72,13 @@ public class MeterRegistryConfigurerTests {
|
||||
}
|
||||
|
||||
@Test
|
||||
public void configureWhenCompositeShouldSkip() {
|
||||
this.binders.add(this.mockBinder);
|
||||
public void configureWhenCompositeShouldApplyCustomizer() {
|
||||
this.customizers.add(this.mockCustomizer);
|
||||
MeterRegistryConfigurer configurer = new MeterRegistryConfigurer(this.binders,
|
||||
this.filters, this.customizers, false);
|
||||
configurer.configure(new CompositeMeterRegistry());
|
||||
verifyZeroInteractions(this.mockBinder, this.mockCustomizer);
|
||||
CompositeMeterRegistry composite = new CompositeMeterRegistry();
|
||||
configurer.configure(composite);
|
||||
verify(this.mockCustomizer).customize(composite);
|
||||
}
|
||||
|
||||
@Test
|
||||
|
||||
@@ -16,10 +16,13 @@
|
||||
|
||||
package org.springframework.boot.actuate.autoconfigure.metrics;
|
||||
|
||||
import io.micrometer.atlas.AtlasMeterRegistry;
|
||||
import io.micrometer.core.instrument.MeterRegistry;
|
||||
import io.micrometer.core.instrument.MeterRegistry.Config;
|
||||
import io.micrometer.prometheus.PrometheusMeterRegistry;
|
||||
import org.junit.Test;
|
||||
|
||||
import org.springframework.boot.actuate.autoconfigure.metrics.export.atlas.AtlasMetricsExportAutoConfiguration;
|
||||
import org.springframework.boot.actuate.autoconfigure.metrics.export.prometheus.PrometheusMetricsExportAutoConfiguration;
|
||||
import org.springframework.boot.actuate.autoconfigure.metrics.test.MetricsRun;
|
||||
import org.springframework.boot.test.context.runner.ApplicationContextRunner;
|
||||
import org.springframework.context.annotation.Bean;
|
||||
@@ -36,7 +39,8 @@ import static org.assertj.core.api.Assertions.assertThat;
|
||||
public class MeterRegistryCustomizerTests {
|
||||
|
||||
private ApplicationContextRunner contextRunner = new ApplicationContextRunner()
|
||||
.with(MetricsRun.simple());
|
||||
.with(MetricsRun.limitedTo(AtlasMetricsExportAutoConfiguration.class,
|
||||
PrometheusMetricsExportAutoConfiguration.class));
|
||||
|
||||
@Test
|
||||
public void commonTagsAreAppliedToAutoConfiguredBinders() {
|
||||
@@ -44,8 +48,7 @@ public class MeterRegistryCustomizerTests {
|
||||
.withUserConfiguration(MeterRegistryCustomizerConfiguration.class)
|
||||
.run((context) -> {
|
||||
MeterRegistry registry = context.getBean(MeterRegistry.class);
|
||||
assertThat(registry.get("jvm.memory.used").tags("region", "us-east-1")
|
||||
.gauge()).isNotNull();
|
||||
registry.get("jvm.memory.used").tags("region", "us-east-1").gauge();
|
||||
});
|
||||
}
|
||||
|
||||
@@ -55,9 +58,21 @@ public class MeterRegistryCustomizerTests {
|
||||
.withUserConfiguration(MeterRegistryCustomizerConfiguration.class)
|
||||
.run((context) -> {
|
||||
MeterRegistry registry = context.getBean(MeterRegistry.class);
|
||||
assertThat(
|
||||
registry.get("my.thing").tags("region", "us-east-1").gauge())
|
||||
.isNotNull();
|
||||
registry.get("my.thing").tags("region", "us-east-1").gauge();
|
||||
});
|
||||
}
|
||||
|
||||
@Test
|
||||
public void customizersCanBeAppliedToSpecificRegistryTypes() {
|
||||
this.contextRunner
|
||||
.withUserConfiguration(MeterRegistryCustomizerConfiguration.class)
|
||||
.run((context) -> {
|
||||
MeterRegistry prometheus = context
|
||||
.getBean(PrometheusMeterRegistry.class);
|
||||
prometheus.get("jvm.memory.used").tags("job", "myjob").gauge();
|
||||
MeterRegistry atlas = context.getBean(AtlasMeterRegistry.class);
|
||||
assertThat(atlas.find("jvm.memory.used").tags("job", "myjob").gauge())
|
||||
.isNull();
|
||||
});
|
||||
}
|
||||
|
||||
@@ -66,10 +81,12 @@ public class MeterRegistryCustomizerTests {
|
||||
|
||||
@Bean
|
||||
public MeterRegistryCustomizer<MeterRegistry> commonTags() {
|
||||
return (registry) -> {
|
||||
Config config = registry.config();
|
||||
config.commonTags("region", "us-east-1");
|
||||
};
|
||||
return (registry) -> registry.config().commonTags("region", "us-east-1");
|
||||
}
|
||||
|
||||
@Bean
|
||||
public MeterRegistryCustomizer<PrometheusMeterRegistry> prometehusOnlyCommonTags() {
|
||||
return (registry) -> registry.config().commonTags("job", "myjob");
|
||||
}
|
||||
|
||||
@Bean
|
||||
|
||||
Reference in New Issue
Block a user