Browse Source

Merge pull request #12762 from jkschneider

* pr/12762:
  Polish "Apply MeterRegistryCustomizer to composites"
  Apply MeterRegistryCustomizer to composites
pull/12767/merge
Phillip Webb 8 years ago
parent
commit
dfb9dc2d26
  1. 3
      spring-boot-project/spring-boot-actuator-autoconfigure/src/main/java/org/springframework/boot/actuate/autoconfigure/metrics/MeterRegistryConfigurer.java
  2. 50
      spring-boot-project/spring-boot-actuator-autoconfigure/src/test/java/org/springframework/boot/actuate/autoconfigure/metrics/MeterRegistryConfigurerIntegrationTests.java
  3. 9
      spring-boot-project/spring-boot-actuator-autoconfigure/src/test/java/org/springframework/boot/actuate/autoconfigure/metrics/MeterRegistryConfigurerTests.java
  4. 39
      spring-boot-project/spring-boot-actuator-autoconfigure/src/test/java/org/springframework/boot/actuate/autoconfigure/metrics/MeterRegistryCustomizerTests.java

3
spring-boot-project/spring-boot-actuator-autoconfigure/src/main/java/org/springframework/boot/actuate/autoconfigure/metrics/MeterRegistryConfigurer.java

@ -59,9 +59,6 @@ class MeterRegistryConfigurer { @@ -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);

50
spring-boot-project/spring-boot-actuator-autoconfigure/src/test/java/org/springframework/boot/actuate/autoconfigure/metrics/MeterRegistryConfigurerIntegrationTests.java

@ -0,0 +1,50 @@ @@ -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());
});
}
}

9
spring-boot-project/spring-boot-actuator-autoconfigure/src/test/java/org/springframework/boot/actuate/autoconfigure/metrics/MeterRegistryConfigurerTests.java

@ -35,7 +35,6 @@ import static org.assertj.core.api.Assertions.assertThat; @@ -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 { @@ -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

39
spring-boot-project/spring-boot-actuator-autoconfigure/src/test/java/org/springframework/boot/actuate/autoconfigure/metrics/MeterRegistryCustomizerTests.java

@ -16,10 +16,13 @@ @@ -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; @@ -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 { @@ -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 { @@ -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 { @@ -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

Loading…
Cancel
Save