Polish ReservoirFactory support
Polish Dropwizrd reservoir support including a refactor of `ReservoirFactory` to allow reservoirs to be created based on a metric name. See gh-5199 See gh-7105
This commit is contained in:
@@ -18,7 +18,6 @@ package org.springframework.boot.actuate.autoconfigure;
|
||||
|
||||
import com.codahale.metrics.Reservoir;
|
||||
import com.codahale.metrics.UniformReservoir;
|
||||
|
||||
import org.junit.After;
|
||||
import org.junit.Test;
|
||||
|
||||
@@ -27,7 +26,6 @@ import org.springframework.boot.actuate.metrics.dropwizard.ReservoirFactory;
|
||||
import org.springframework.context.annotation.AnnotationConfigApplicationContext;
|
||||
import org.springframework.context.annotation.Bean;
|
||||
import org.springframework.context.annotation.Configuration;
|
||||
|
||||
import org.springframework.test.util.ReflectionTestUtils;
|
||||
|
||||
import static org.assertj.core.api.Assertions.assertThat;
|
||||
@@ -52,24 +50,23 @@ public class MetricsDropwizardAutoConfigurationTests {
|
||||
public void dropwizardWithoutCustomReservoirConfigured() {
|
||||
this.context = new AnnotationConfigApplicationContext(
|
||||
MetricsDropwizardAutoConfiguration.class);
|
||||
|
||||
DropwizardMetricServices dropwizardMetricServices = this.context
|
||||
.getBean(DropwizardMetricServices.class);
|
||||
|
||||
assertThat(ReflectionTestUtils.getField(dropwizardMetricServices, "reservoirFactory"))
|
||||
.isNull();
|
||||
ReservoirFactory reservoirFactory = (ReservoirFactory) ReflectionTestUtils
|
||||
.getField(dropwizardMetricServices, "reservoirFactory");
|
||||
assertThat(reservoirFactory.getReservoir("test")).isNull();
|
||||
}
|
||||
|
||||
@Test
|
||||
public void dropwizardWithCustomReservoirConfigured() {
|
||||
this.context = new AnnotationConfigApplicationContext(
|
||||
MetricsDropwizardAutoConfiguration.class, Config.class);
|
||||
|
||||
DropwizardMetricServices dropwizardMetricServices = this.context
|
||||
.getBean(DropwizardMetricServices.class);
|
||||
|
||||
assertThat(ReflectionTestUtils.getField(dropwizardMetricServices, "reservoirFactory"))
|
||||
.isNotNull();
|
||||
ReservoirFactory reservoirFactory = (ReservoirFactory) ReflectionTestUtils
|
||||
.getField(dropwizardMetricServices, "reservoirFactory");
|
||||
assertThat(reservoirFactory.getReservoir("test"))
|
||||
.isInstanceOf(UniformReservoir.class);
|
||||
}
|
||||
|
||||
@Configuration
|
||||
@@ -77,13 +74,18 @@ public class MetricsDropwizardAutoConfigurationTests {
|
||||
|
||||
@Bean
|
||||
public ReservoirFactory reservoirFactory() {
|
||||
return new ReservoirFactory() {
|
||||
@Override
|
||||
protected Reservoir defaultReservoir() {
|
||||
return new UniformReservoir();
|
||||
}
|
||||
};
|
||||
return new UniformReservoirFactory();
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
private static class UniformReservoirFactory implements ReservoirFactory {
|
||||
|
||||
@Override
|
||||
public Reservoir getReservoir(String name) {
|
||||
return new UniformReservoir();
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -22,14 +22,18 @@ import java.util.List;
|
||||
import com.codahale.metrics.Gauge;
|
||||
import com.codahale.metrics.Histogram;
|
||||
import com.codahale.metrics.MetricRegistry;
|
||||
import com.codahale.metrics.Reservoir;
|
||||
import com.codahale.metrics.Timer;
|
||||
import com.codahale.metrics.UniformReservoir;
|
||||
import org.junit.Before;
|
||||
import org.junit.Test;
|
||||
import org.mockito.Mock;
|
||||
import org.mockito.MockitoAnnotations;
|
||||
|
||||
import org.springframework.test.util.ReflectionTestUtils;
|
||||
|
||||
import static org.assertj.core.api.Assertions.assertThat;
|
||||
import static org.mockito.BDDMockito.given;
|
||||
import static org.mockito.Matchers.anyString;
|
||||
|
||||
/**
|
||||
* Tests for {@link DropwizardMetricServices}.
|
||||
@@ -39,10 +43,18 @@ import static org.assertj.core.api.Assertions.assertThat;
|
||||
*/
|
||||
public class DropwizardMetricServicesTests {
|
||||
|
||||
private final MetricRegistry registry = new MetricRegistry();
|
||||
private MetricRegistry registry = new MetricRegistry();
|
||||
|
||||
private final DropwizardMetricServices writer = new DropwizardMetricServices(
|
||||
this.registry);
|
||||
@Mock
|
||||
private ReservoirFactory reservoirFactory;
|
||||
|
||||
private DropwizardMetricServices writer;
|
||||
|
||||
@Before
|
||||
public void setup() {
|
||||
MockitoAnnotations.initMocks(this);
|
||||
this.writer = new DropwizardMetricServices(this.registry, this.reservoirFactory);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void incrementCounter() {
|
||||
@@ -87,20 +99,14 @@ public class DropwizardMetricServicesTests {
|
||||
|
||||
@Test
|
||||
public void setCustomReservoirTimer() {
|
||||
this.writer.setReservoirFactory(new ReservoirFactory() {
|
||||
@Override
|
||||
protected Reservoir defaultReservoir() {
|
||||
return new UniformReservoir();
|
||||
}
|
||||
});
|
||||
|
||||
given(this.reservoirFactory.getReservoir(anyString()))
|
||||
.willReturn(new UniformReservoir());
|
||||
this.writer.submit("timer.foo", 200);
|
||||
this.writer.submit("timer.foo", 300);
|
||||
assertThat(this.registry.timer("timer.foo").getCount()).isEqualTo(2);
|
||||
|
||||
Timer timer = (Timer) this.registry.getMetrics().get("timer.foo");
|
||||
Histogram histogram = (Histogram) ReflectionTestUtils
|
||||
.getField(timer, "histogram");
|
||||
Histogram histogram = (Histogram) ReflectionTestUtils.getField(timer,
|
||||
"histogram");
|
||||
assertThat(ReflectionTestUtils.getField(histogram, "reservoir").getClass()
|
||||
.equals(UniformReservoir.class)).isTrue();
|
||||
}
|
||||
@@ -114,13 +120,8 @@ public class DropwizardMetricServicesTests {
|
||||
|
||||
@Test
|
||||
public void setCustomReservoirHistogram() {
|
||||
this.writer.setReservoirFactory(new ReservoirFactory() {
|
||||
@Override
|
||||
protected Reservoir defaultReservoir() {
|
||||
return new UniformReservoir();
|
||||
}
|
||||
});
|
||||
|
||||
given(this.reservoirFactory.getReservoir(anyString()))
|
||||
.willReturn(new UniformReservoir());
|
||||
this.writer.submit("histogram.foo", 2.1);
|
||||
this.writer.submit("histogram.foo", 2.3);
|
||||
assertThat(this.registry.histogram("histogram.foo").getCount()).isEqualTo(2);
|
||||
|
||||
Reference in New Issue
Block a user