source: class Slf4jReporterTest {
  
      private final Logger logger;
      private final Marker marker;
      private final MetricRegistry registry;
      private final Slf4jReporter infoReporter;
      private final Slf4jReporter errorReporter;
  
      @Test
      public void reportsTimerValuesAtError() throws Exception {
  
target:         final Timer timer = mock(Timer.class);
          when(timer.getCount()).thenReturn(1L);
  
          when(timer.getMeanRate()).thenReturn(2.0);
          when(timer.getOneMinuteRate()).thenReturn(3.0);
          when(timer.getFiveMinuteRate()).thenReturn(4.0);
          when(timer.getFifteenMinuteRate()).thenReturn(5.0);
  
          final Snapshot snapshot = mock(Snapshot.class);
          when(snapshot.getMax()).thenReturn(TimeUnit.MILLISECONDS.toNanos(100));
          when(snapshot.getMean()).thenReturn((double) TimeUnit.MILLISECONDS.toNanos(200));
          when(snapshot.getMin()).thenReturn(TimeUnit.MILLISECONDS.toNanos(300));
          when(snapshot.getStdDev()).thenReturn((double) TimeUnit.MILLISECONDS.toNanos(400));
          when(snapshot.getMedian()).thenReturn((double) TimeUnit.MILLISECONDS.toNanos(500));
          when(snapshot.get75thPercentile()).thenReturn((double) TimeUnit.MILLISECONDS.toNanos(600));
          when(snapshot.get95thPercentile()).thenReturn((double) TimeUnit.MILLISECONDS.toNanos(700));
          when(snapshot.get98thPercentile()).thenReturn((double) TimeUnit.MILLISECONDS.toNanos(800));
          when(snapshot.get99thPercentile()).thenReturn((double) TimeUnit.MILLISECONDS.toNanos(900));
          when(snapshot.get999thPercentile()).thenReturn((double) TimeUnit.MILLISECONDS
                  .toNanos(1000));
  
          when(timer.getSnapshot()).thenReturn(snapshot);
  
          when(logger.isErrorEnabled(marker)).thenReturn(true);
  
          errorReporter.report(this.<Gauge>map(),
                  this.<Counter>map(),
                  this.<Histogram>map(),
                  this.<Meter>map(),
                  map("test.another.timer", timer));
  
          verify(logger).error(marker,
                  "type={}, name={}, count={}, min={}, max={}, mean={}, stddev={}, median={}, p75={}, p95={}, p98={}, p99={}, p999={}, mean_rate={}, m1={}, m5={}, m15={}, rate_unit={}, duration_unit={}",
                  "TIMER",
                  "test.another.timer",
                  1L,
                  300.0,
                  100.0,
                  200.0,
                  400.0,
                  500.0,
                  600.0,
                  700.0,
                  800.0,
                  900.0,
                  1000.0,
                  2.0,
                  3.0,
                  4.0,
                  5.0,
                  "events/second",
                  "milliseconds");
      }
  
  }