@Test
public void reportsHistogramValuesAtError() throws Exception {

    final Histogram histogram = mock(Histogram.class);
    when(histogram.getCount()).thenReturn(1L);
    final Snapshot snapshot = mock(Snapshot.class);
    when(snapshot.getMax()).thenReturn(2L);
    when(snapshot.getMean()).thenReturn(3.0);
    when(snapshot.getMin()).thenReturn(4L);
    when(snapshot.getStdDev()).thenReturn(5.0);
    when(snapshot.getMedian()).thenReturn(6.0);
    when(snapshot.get75thPercentile()).thenReturn(7.0);
    when(snapshot.get95thPercentile()).thenReturn(8.0);
    when(snapshot.get98thPercentile()).thenReturn(9.0);
    when(snapshot.get99thPercentile()).thenReturn(10.0);
    when(snapshot.get999thPercentile()).thenReturn(11.0);
    when(histogram.getSnapshot()).thenReturn(snapshot);
    when(logger.isErrorEnabled(marker)).thenReturn(true);
    errorReporter.report(this.<Gauge>map(),
            this.<Counter>map(),
            map("test.histogram", histogram),
            this.<Meter>map(),
            this.<Timer>map());
    verify(logger).error(marker,
            "type={}, name={}, count={}, min={}, max={}, mean={}, stddev={}, median={}, p75={}, p95={}, p98={}, p99={}, p999={}",
            "HISTOGRAM",
            "test.histogram",
            1L,
            4L,
            2L,
            3.0,
            5.0,
            6.0,
            7.0,
            8.0,
            9.0,
            10.0,
            11.0);
}