package com.vladmihalcea.flexypool.metric.dropwizard; import com.vladmihalcea.flexypool.common.ConfigurationProperties; import com.vladmihalcea.flexypool.metric.Histogram; import com.vladmihalcea.flexypool.metric.Metrics; import com.vladmihalcea.flexypool.metric.Timer; import com.vladmihalcea.flexypool.util.ReflectionUtils; import io.dropwizard.metrics.MetricRegistry; import io.dropwizard.metrics.Reservoir; import org.junit.Before; import org.junit.Test; import org.mockito.Mock; import org.mockito.MockitoAnnotations; import static org.junit.Assert.assertNotNull; import static org.junit.Assert.assertSame; import static org.mockito.Mockito.*; /** * DropwizardMetricsTest - DropwizardMetrics Test * * @author Vlad Mihalcea */ public class DropwizardMetricsTest { @Mock private ConfigurationProperties configurationProperties; @Mock private MetricRegistry metricRegistry; @Mock private ReservoirFactory reservoirFactory; @Mock private Reservoir reservoir; @Before public void before() { MockitoAnnotations.initMocks(this); } @Test public void testMetricRegistry() { DropwizardMetrics dropwizardMetrics = new DropwizardMetrics(configurationProperties, metricRegistry, reservoirFactory); assertSame(metricRegistry, ReflectionUtils.getFieldValue(dropwizardMetrics, "metricRegistry")); } @Test public void testHistogram() { DropwizardMetrics dropwizardMetrics = new DropwizardMetrics(configurationProperties, reservoirFactory); assertSame(configurationProperties, dropwizardMetrics.getConfigurationProperties()); when(reservoirFactory.newInstance(io.dropwizard.metrics.Histogram.class, "histo")).thenReturn(reservoir); Histogram histogram = dropwizardMetrics.histogram("histo"); verify(reservoirFactory, times(1)).newInstance(io.dropwizard.metrics.Histogram.class, "histo"); assertNotNull(histogram); } @Test public void testTimer() { DropwizardMetrics dropwizardMetrics = new DropwizardMetrics(configurationProperties, reservoirFactory); when(reservoirFactory.newInstance(io.dropwizard.metrics.Timer.class, "timer")).thenReturn(reservoir); Timer timer = dropwizardMetrics.timer("timer"); verify(reservoirFactory, times(1)).newInstance(io.dropwizard.metrics.Timer.class, "timer"); assertNotNull(timer); } @Test public void testStartStopUsingDefaultConfiguration() { when(configurationProperties.isJmxEnabled()).thenReturn(true); when(configurationProperties.getMetricLogReporterMillis()).thenReturn(5L); testStartStop(configurationProperties); } @Test public void testStartStopUsingNoJmx() { when(configurationProperties.isJmxEnabled()).thenReturn(false); when(configurationProperties.getMetricLogReporterMillis()).thenReturn(5L); testStartStop(configurationProperties); } public void testStartStop(ConfigurationProperties currentConfiguration) { Metrics codahaleMetrics = DropwizardMetrics.FACTORY.newInstance(currentConfiguration); codahaleMetrics.histogram("histo"); codahaleMetrics.timer("timer"); codahaleMetrics.start(); codahaleMetrics.stop(); } }