package de.is24.util.monitoring.statsd;
import org.junit.Before;
import org.junit.Test;
import static org.mockito.Matchers.anyDouble;
import static org.mockito.Matchers.anyInt;
import static org.mockito.Matchers.anyString;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.never;
import static org.mockito.Mockito.times;
import static org.mockito.Mockito.verify;
public class StatsdPluginTest {
private StatsdClient client;
private StatsdPlugin target;
@Before
public void setUp() throws Exception {
client = mock(StatsdClient.class);
target = new StatsdPlugin(client, "StatdsClientMock", 1.0);
}
@Test
public void sanitizeColon() {
target.incrementCounter("test:Increment", 23);
verify(client, times(1)).increment("test_Increment", 23, 1.0);
}
@Test
public void shouldDelegateIncrementMethod() {
target.incrementCounter("testIncrement", 23);
verify(client, times(1)).increment("testIncrement", 23, 1.0);
}
@Test
public void useHighRateSamplerateOnHighRateCounters() throws Exception {
target.incrementHighRateCounter("testIncrement", 23);
verify(client, times(1)).increment("testIncrement", 23, 0.1);
}
@Test
public void shouldDelegateTimingMethod() {
target.addTimerMeasurement("testTiming", 42);
verify(client, times(1)).timing("testTiming", 42, 1.0);
}
@Test
public void shouldNotDelegateSingleEventTimingMethod() throws Exception {
target.addSingleEventTimerMeasurement("testSingleEventTiming", 1000);
verify(client, never()).timing(anyString(), anyInt());
verify(client, never()).timing(anyString(), anyInt(), anyDouble());
}
@Test
public void useHighRateSamplerateOnHighRateTimingEvent() throws Exception {
target.addHighRateTimerMeasurement("testHighRateTiming", 42);
verify(client, times(1)).timing("testHighRateTiming", 42, 0.1);
}
}