package com.airbnb.metrics; import com.timgroup.statsd.StatsDClient; import com.yammer.metrics.core.Clock; import org.apache.kafka.common.Metric; import org.apache.kafka.common.MetricName; import org.junit.Before; import org.junit.Test; import org.mockito.Matchers; import org.mockito.Mock; import org.mockito.MockitoAnnotations; import static org.mockito.Mockito.verify; public class KafkaStatsDReporterTest { @Mock private Clock clock; @Mock private StatsDClient statsD; private KafkaStatsDReporter reporter; private StatsDMetricsRegistry registry; @Before public void init() throws Exception { MockitoAnnotations.initMocks(this); registry = new StatsDMetricsRegistry(); reporter = new KafkaStatsDReporter( statsD, registry ); } protected void addMetricAndRunReporter( String metricName, Metric metric, String tag ) throws Exception { try { registry.register(metricName, metric, tag); reporter.run(); } finally { reporter.shutdown(); } } @Test public final void sendDoubleGauge() throws Exception { final double value = 10.11; Metric metric = new Metric() { @Override public MetricName metricName() { return new MetricName("test-metric", "group"); } @Override public double value() { return value; } }; addMetricAndRunReporter("foo", metric, "bar"); verify(statsD).gauge(Matchers.eq("foo"), Matchers.eq(value), Matchers.eq("bar")); } }