Skip to content

Commit 750096b

Browse files
committed
Polish "Allow custom ExemplarSampler to be used"
See gh-35619
1 parent 94b17ec commit 750096b

File tree

1 file changed

+12
-32
lines changed

1 file changed

+12
-32
lines changed

spring-boot-project/spring-boot-actuator-autoconfigure/src/test/java/org/springframework/boot/actuate/autoconfigure/metrics/export/prometheus/PrometheusMetricsExportAutoConfigurationTests.java

Lines changed: 12 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -20,8 +20,6 @@
2020
import io.micrometer.prometheus.PrometheusConfig;
2121
import io.micrometer.prometheus.PrometheusMeterRegistry;
2222
import io.prometheus.client.CollectorRegistry;
23-
import io.prometheus.client.exemplars.DefaultExemplarSampler;
24-
import io.prometheus.client.exemplars.Exemplar;
2523
import io.prometheus.client.exemplars.ExemplarSampler;
2624
import io.prometheus.client.exemplars.tracer.common.SpanContextSupplier;
2725
import io.prometheus.client.exporter.BasicAuthHttpConnectionFactory;
@@ -47,6 +45,7 @@
4745
import org.springframework.test.util.ReflectionTestUtils;
4846

4947
import static org.assertj.core.api.Assertions.assertThat;
48+
import static org.mockito.Mockito.mock;
5049

5150
/**
5251
* Tests for {@link PrometheusMetricsExportAutoConfiguration}.
@@ -66,12 +65,6 @@ void backsOffWithoutAClock() {
6665
this.contextRunner.run((context) -> assertThat(context).doesNotHaveBean(PrometheusMeterRegistry.class));
6766
}
6867

69-
@Test
70-
void backsOfWhenExemplarSamplerIsPresent() {
71-
this.contextRunner.withUserConfiguration(CustomExemplarSamplerConfiguration.class)
72-
.run((context) -> assertThat(context).doesNotHaveBean(DefaultExemplarSampler.class));
73-
}
74-
7568
@Test
7669
void autoConfiguresItsConfigCollectorRegistryAndMeterRegistry() {
7770
this.contextRunner.withUserConfiguration(BaseConfiguration.class)
@@ -127,12 +120,21 @@ void allowsCustomCollectorRegistryToBeUsed() {
127120

128121
@Test
129122
void autoConfiguresExemplarSamplerIfSpanContextSupplierIsPresent() {
130-
this.contextRunner.withUserConfiguration(DefaultExemplarSamplerConfiguration.class)
123+
this.contextRunner.withUserConfiguration(ExemplarsConfiguration.class)
131124
.run((context) -> assertThat(context).hasSingleBean(SpanContextSupplier.class)
132125
.hasSingleBean(ExemplarSampler.class)
133126
.hasSingleBean(PrometheusMeterRegistry.class));
134127
}
135128

129+
@Test
130+
void allowsCustomExemplarSamplerToBeUsed() {
131+
this.contextRunner.withUserConfiguration(ExemplarsConfiguration.class)
132+
.withBean("customExemplarSampler", ExemplarSampler.class, () -> mock(ExemplarSampler.class))
133+
.run((context) -> assertThat(context).hasSingleBean(ExemplarSampler.class)
134+
.getBean(ExemplarSampler.class)
135+
.isSameAs(context.getBean("customExemplarSampler")));
136+
}
137+
136138
@Test
137139
void exemplarSamplerIsNotAutoConfiguredIfSpanContextSupplierIsMissing() {
138140
this.contextRunner.withUserConfiguration(BaseConfiguration.class)
@@ -295,7 +297,7 @@ PrometheusScrapeEndpoint customEndpoint(CollectorRegistry collectorRegistry) {
295297

296298
@Configuration(proxyBeanMethods = false)
297299
@Import(BaseConfiguration.class)
298-
static class DefaultExemplarSamplerConfiguration {
300+
static class ExemplarsConfiguration {
299301

300302
@Bean
301303
SpanContextSupplier spanContextSupplier() {
@@ -321,26 +323,4 @@ public boolean isSampled() {
321323

322324
}
323325

324-
@Configuration(proxyBeanMethods = false)
325-
@Import(BaseConfiguration.class)
326-
static class CustomExemplarSamplerConfiguration {
327-
328-
@Bean
329-
ExemplarSampler exemplarSampler() {
330-
return new ExemplarSampler() {
331-
332-
@Override
333-
public Exemplar sample(double value, double bucketFrom, double bucketTo, Exemplar previous) {
334-
return null;
335-
}
336-
337-
@Override
338-
public Exemplar sample(double increment, Exemplar previous) {
339-
return null;
340-
}
341-
};
342-
}
343-
344-
}
345-
346326
}

0 commit comments

Comments
 (0)