package com.getsentry.raven.logback; import ch.qos.logback.classic.Level; import ch.qos.logback.core.Context; import mockit.Injectable; import mockit.Tested; import mockit.Verifications; import com.getsentry.raven.Raven; import com.getsentry.raven.event.Event; import org.testng.annotations.BeforeMethod; import org.testng.annotations.DataProvider; import org.testng.annotations.Test; /** * @author Felipe G Almeida */ public class SentryAppenderEventLevelFilterTest { @Tested private SentryAppender sentryAppender = null; @Injectable private Raven mockRaven = null; @Injectable private Context mockContext = null; @BeforeMethod public void setUp() throws Exception { new MockUpStatusPrinter(); sentryAppender = new SentryAppender(mockRaven); sentryAppender.setContext(mockContext); } @DataProvider(name = "levels") private Object[][] levelConversions() { return new Object[][]{ {"ALL", 5}, {"TRACE", 5}, {"DEBUG", 4}, {"INFO", 3}, {"WARN", 2}, {"ERROR", 1}, {"error", 1}, {"xxx", 4}, // invalid level will be coerced to DEBUG {null, 5}}; } @Test(dataProvider = "levels") public void testLevelFilter(final String minLevel, final Integer expectedEvents) throws Exception { sentryAppender.setMinLevel(minLevel); sentryAppender.append(new MockUpLoggingEvent(null, null, Level.TRACE, null, null, null).getMockInstance()); sentryAppender.append(new MockUpLoggingEvent(null, null, Level.DEBUG, null, null, null).getMockInstance()); sentryAppender.append(new MockUpLoggingEvent(null, null, Level.INFO, null, null, null).getMockInstance()); sentryAppender.append(new MockUpLoggingEvent(null, null, Level.WARN, null, null, null).getMockInstance()); sentryAppender.append(new MockUpLoggingEvent(null, null, Level.ERROR, null, null, null).getMockInstance()); new Verifications() {{ mockRaven.sendEvent((Event) any); minTimes = expectedEvents; maxTimes = expectedEvents; }}; } @Test public void testDefaultLevelFilter() throws Exception { sentryAppender.append(new MockUpLoggingEvent(null, null, Level.TRACE, null, null, null).getMockInstance()); sentryAppender.append(new MockUpLoggingEvent(null, null, Level.DEBUG, null, null, null).getMockInstance()); sentryAppender.append(new MockUpLoggingEvent(null, null, Level.INFO, null, null, null).getMockInstance()); sentryAppender.append(new MockUpLoggingEvent(null, null, Level.WARN, null, null, null).getMockInstance()); sentryAppender.append(new MockUpLoggingEvent(null, null, Level.ERROR, null, null, null).getMockInstance()); new Verifications() {{ mockRaven.sendEvent((Event) any); minTimes = 5; maxTimes = 5; }}; } }