package io.prometheus.client.logback;
import static io.prometheus.client.logback.InstrumentedAppender.COUNTER_NAME;
import static org.junit.Assert.assertEquals;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.when;
import ch.qos.logback.classic.Level;
import ch.qos.logback.classic.spi.ILoggingEvent;
import io.prometheus.client.CollectorRegistry;
import org.junit.Before;
import org.junit.Test;
public class InstrumentedAppenderTest {
private InstrumentedAppender appender;
private ILoggingEvent event;
@Before
public void setUp() throws Exception {
appender = new InstrumentedAppender();
appender.start();
event = mock(ILoggingEvent.class);
}
@Test
public void metersTraceEvents() throws Exception {
when(event.getLevel()).thenReturn(Level.TRACE);
appender.doAppend(event);
assertEquals(1, getLogLevelCount("trace"));
}
@Test
public void metersDebugEvents() throws Exception {
when(event.getLevel()).thenReturn(Level.DEBUG);
appender.doAppend(event);
assertEquals(1, getLogLevelCount("debug"));
}
@Test
public void metersInfoEvents() throws Exception {
when(event.getLevel()).thenReturn(Level.INFO);
appender.doAppend(event);
assertEquals(1, getLogLevelCount("info"));
}
@Test
public void metersWarnEvents() throws Exception {
when(event.getLevel()).thenReturn(Level.WARN);
appender.doAppend(event);
assertEquals(1, getLogLevelCount("warn"));
}
@Test
public void metersErrorEvents() throws Exception {
when(event.getLevel()).thenReturn(Level.ERROR);
appender.doAppend(event);
assertEquals(1, getLogLevelCount("error"));
}
private int getLogLevelCount(String level) {
return CollectorRegistry.defaultRegistry.getSampleValue(COUNTER_NAME,
new String[]{"level"}, new String[]{level}).intValue();
}
}