@Test public void workerThreadFlushesOnStop() { int loopLen = 5; int maxRuntime = (loopLen + 1) * Math.max(1000, delayingListAppender.delay); ListAppender la = delayingListAppender; asyncAppenderBase.addAppender(la); asyncAppenderBase.setDiscardingThreshold(0); asyncAppenderBase.setMaxFlushTime(maxRuntime); asyncAppenderBase.start(); asyncAppenderBase.worker.suspend(); for (int i = 0; i < loopLen; i++) { asyncAppenderBase.doAppend(i); } assertEquals(loopLen, asyncAppenderBase.getNumberOfElementsInQueue()); assertEquals(0, la.list.size()); asyncAppenderBase.worker.resume(); asyncAppenderBase.stop(); assertEquals(0, asyncAppenderBase.getNumberOfElementsInQueue()); verify(la, loopLen); }
@Test public void testLevelFilter() throws JoranException { configure(ClassicTestConstants.JORAN_INPUT_PREFIX + "levelFilter.xml"); // StatusPrinter.print(loggerContext); logger.warn("hello"); logger.error("to be ignored"); @SuppressWarnings("unchecked") ListAppender<ILoggingEvent> listAppender = (ListAppender) root .getAppender("LIST"); assertNotNull(listAppender); assertEquals(1, listAppender.list.size()); ILoggingEvent back = listAppender.list.get(0); assertEquals(Level.WARN, back.getLevel()); assertEquals("hello", back.getMessage()); }
@Test public void testEvaluatorFilter() throws JoranException { configure(ClassicTestConstants.JORAN_INPUT_PREFIX + "evaluatorFilter.xml"); // StatusPrinter.print(loggerContext); logger.warn("hello"); logger.error("to be ignored"); @SuppressWarnings("unchecked") ListAppender<ILoggingEvent> listAppender = (ListAppender) root .getAppender("LIST"); assertNotNull(listAppender); assertEquals(1, listAppender.list.size()); ILoggingEvent back = listAppender.list.get(0); assertEquals(Level.WARN, back.getLevel()); assertEquals("hello", back.getMessage()); }
@Test public void testTurboDynamicThreshold() throws JoranException { configure(ClassicTestConstants.JORAN_INPUT_PREFIX + "turboDynamicThreshold.xml"); ListAppender listAppender = (ListAppender) root.getAppender("LIST"); assertEquals(0, listAppender.list.size()); // this one should be denied MDC.put("userId", "user1"); logger.debug("hello user1"); // this one should log MDC.put("userId", "user2"); logger.debug("hello user2"); assertEquals(1, listAppender.list.size()); ILoggingEvent le = (ILoggingEvent) listAppender.list.get(0); assertEquals("hello user2", le.getMessage()); }
@Test public void testTurboDynamicThreshold2() throws JoranException { configure(ClassicTestConstants.JORAN_INPUT_PREFIX + "turboDynamicThreshold2.xml"); ListAppender listAppender = (ListAppender) root.getAppender("LIST"); assertEquals(0, listAppender.list.size()); // this one should log MDC.put("userId", "user1"); logger.debug("hello user1"); // this one should log MDC.put("userId", "user2"); logger.debug("hello user2"); // this one should fail MDC.put("userId", "user3"); logger.debug("hello user3"); assertEquals(2, listAppender.list.size()); ILoggingEvent le = (ILoggingEvent) listAppender.list.get(0); assertEquals("hello user1", le.getMessage()); le = (ILoggingEvent) listAppender.list.get(1); assertEquals("hello user2", le.getMessage()); }
@SuppressWarnings("rawtypes") @Test public void conditionalConsoleApp_IF_THEN_ELSE() throws JoranException, IOException, InterruptedException { String configFileAsStr = ClassicTestConstants.JORAN_INPUT_PREFIX + "conditional/conditionalConsoleApp_ELSE.xml"; configure(configFileAsStr); FileAppender fileAppender = (FileAppender) root.getAppender("FILE"); assertNotNull(fileAppender); ConsoleAppender consoleAppender = (ConsoleAppender) root.getAppender("CON"); assertNull(consoleAppender); ListAppender listAppender = (ListAppender) root.getAppender("LIST"); assertNotNull(listAppender); // StatusPrinter.printIfErrorsOccured(context); StatusChecker checker = new StatusChecker(context); checker.assertIsErrorFree(); }
@Test public void testWholeCycle() throws JoranException { String mdcKey = "cycle"; configure(SIFT_FOLDER_PREFIX + "completeCycle.xml"); MDC.put(mdcKey, "a"); logger.debug("smoke"); long timestamp = System.currentTimeMillis(); SiftingAppender sa = (SiftingAppender) root.getAppender("SIFT"); ListAppender<ILoggingEvent> listAppender = (ListAppender<ILoggingEvent>) sa.getAppenderTracker().find("a"); assertNotNull(listAppender); List<ILoggingEvent> eventList = listAppender.list; assertEquals(1, listAppender.list.size()); assertEquals("smoke", eventList.get(0).getMessage()); MDC.remove(mdcKey); LoggingEvent le = new LoggingEvent("x", logger, Level.INFO, "hello", null, null); le.setTimeStamp(timestamp + ComponentTracker.DEFAULT_TIMEOUT + 1); sa.doAppend(le); assertFalse(listAppender.isStarted()); assertEquals(1, sa.getAppenderTracker().allKeys().size()); assertTrue(sa.getAppenderTracker().allKeys().contains("cycleDefault")); }
@Test public void getMappingForMethod_methodWithDeletionPolicyNeverWithoutParameterTypeAcknowledgment_warningMustBeLogged() throws Exception { // Arrange QueueMessageHandler queueMessageHandler = new QueueMessageHandler(); Method receiveMethod = SqsListenerDeletionPolicyNeverNoAcknowledgment.class.getMethod("receive", String.class); LoggerContext logContext = (LoggerContext) LoggerFactory.getILoggerFactory(); ListAppender<ILoggingEvent> appender = new ListAppender<>(); appender.start(); Logger log = logContext.getLogger(QueueMessageHandler.class); log.setLevel(Level.WARN); log.addAppender(appender); appender.setContext(log.getLoggerContext()); // Act queueMessageHandler.getMappingForMethod(receiveMethod, null); // Assert ILoggingEvent loggingEvent = appender.list.get(0); assertSame(Level.WARN, loggingEvent.getLevel()); assertTrue(loggingEvent.getMessage().contains("receive")); assertTrue(loggingEvent.getMessage().contains("org.springframework.cloud.aws.messaging.listener.QueueMessageHandlerTest$SqsListenerDeletionPolicyNeverNoAcknowledgment")); }
@SuppressWarnings("unchecked") public boolean matches(Object actual) { if (actual instanceof LogbackJUnitRule) { LogbackJUnitRule rule = (LogbackJUnitRule) actual; if (matches(rule.capture())) { return true; } } if (actual instanceof ListAppender) { ListAppender<ILoggingEvent> appender = (ListAppender<ILoggingEvent>) actual; if (matches(appender.list)) { return true; } } if (actual instanceof List) { return matches((List<ILoggingEvent>) actual); } if (actual instanceof ILoggingEvent) { return matches((ILoggingEvent) actual); } return false; }
@SuppressWarnings("unchecked") public boolean matches(Object actual) { if(!initalized) { init(); initalized = true; } if (actual instanceof LogbackJUnitRule) { LogbackJUnitRule rule = (LogbackJUnitRule) actual; if (matches(rule.capture())) { return true; } } if (actual instanceof ListAppender) { ListAppender<ILoggingEvent> appender = (ListAppender<ILoggingEvent>) actual; if (matches(appender.list)) { return true; } } if (actual instanceof List) { return matches((List<ILoggingEvent>) actual); } if (actual instanceof ILoggingEvent) { return matches((ILoggingEvent) actual); } return false; }
@SuppressWarnings("unchecked") public boolean matches(Object actual) { if(actual instanceof LogbackJUnitRule) { LogbackJUnitRule rule = (LogbackJUnitRule)actual; if(matches(rule.capture())) { return true; } } if(actual instanceof ListAppender) { ListAppender<ILoggingEvent> appender = (ListAppender<ILoggingEvent>)actual; if(matches(appender.list)) { return true; } } if(actual instanceof List) { return matches((List<ILoggingEvent>)actual); } if(actual instanceof ILoggingEvent) { return matches((ILoggingEvent)actual); } return false; }
@Test public void testConfigurationMissingFileLogsWarning() throws Exception { final Map<String, String> configProperties = new HashMap<String, String>(); configProperties.put(FileIdentityProvider.PROPERTY_EXPIRATION_PERIOD, FIVE_MINUTES); final String missingFilePath = "no/such/file"; configProperties.put(FileIdentityProvider.PROPERTY_CREDENTIALS_FILE, missingFilePath); final LoginIdentityProviderConfigurationContext configContext = new MockLoginIdentityProviderConfigurationContext(IDENTIFIER, configProperties); Logger fileIdentityProviderLogger = (Logger) LoggerFactory.getLogger(FileIdentityProvider.class); ListAppender<ILoggingEvent> testAppender = new ListAppender<>(); testAppender.setName("Test"); testAppender.start(); fileIdentityProviderLogger.addAppender(testAppender); final FileIdentityProvider provider = new FileIdentityProvider(); provider.onConfigured(configContext); boolean fileMessageFound = false; for (ILoggingEvent event : testAppender.list) { String message = event.getFormattedMessage(); if (message.contains(missingFilePath) && event.getLevel() == Level.WARN) { fileMessageFound = true; break; } } Assert.assertTrue(fileMessageFound); }
@Before public void setUp() { ch.qos.logback.classic.Logger root = (ch.qos.logback.classic.Logger) LoggerFactory.getLogger(Logger.ROOT_LOGGER_NAME); setListAppender(new ListAppender<>()); setFilter(new ThresholdFilter()); setLogThreshold(Level.WARN); getFilter().start(); getListAppender().addFilter(getFilter()); getListAppender().start(); root.addAppender(getListAppender()); }
@Test public void stopExitsWhenMaxRuntimeReached() throws InterruptedException { int maxRuntime = 1; //runtime of 0 means wait forever, so use 1 ms instead int loopLen = 10; ListAppender la = delayingListAppender; asyncAppenderBase.addAppender(la); asyncAppenderBase.setMaxFlushTime(maxRuntime); asyncAppenderBase.start(); for (int i = 0; i < loopLen; i++) { asyncAppenderBase.doAppend(i); } asyncAppenderBase.stop(); //suspend the thread so that we can make the following assertions without race conditions asyncAppenderBase.worker.suspend(); //confirms that stop exited when runtime reached statusChecker.assertContainsMatch("Max queue flush timeout \\(" + maxRuntime + " ms\\) exceeded."); //confirms that the number of events posted are the number of events removed from the queue assertEquals(la.list.size(), loopLen - asyncAppenderBase.getNumberOfElementsInQueue()); //resume the thread to let it finish processing asyncAppenderBase.worker.resume(); asyncAppenderBase.worker.join(); //confirms that all entries do end up being flushed if we wait long enough verify(la, loopLen); }
public Appender<Object> buildAppender(Context context, String discriminatingValue) throws JoranException { ListAppender<Object> la = new ListAppender<Object>(); la.setContext(context); la.setName(discriminatingValue); la.start(); return la; }
@Before public void setUp() { lc = new LoggerContext(); Logger logger = lc.getLogger(Logger.ROOT_LOGGER_NAME); listAppender = new ListAppender<ILoggingEvent>(); listAppender.setContext(lc); listAppender.start(); logger.addAppender(listAppender); }
@Test public void simpleList() throws JoranException { configure(ClassicTestConstants.JORAN_INPUT_PREFIX + "simpleList.xml"); Logger logger = loggerContext.getLogger(this.getClass().getName()); Logger root = loggerContext.getLogger(Logger.ROOT_LOGGER_NAME); ListAppender listAppender = (ListAppender) root.getAppender("LIST"); assertEquals(0, listAppender.list.size()); String msg = "hello world"; logger.debug(msg); assertEquals(1, listAppender.list.size()); ILoggingEvent le = (ILoggingEvent) listAppender.list.get(0); assertEquals(msg, le.getMessage()); }
@Test public void level() throws JoranException { configure(ClassicTestConstants.JORAN_INPUT_PREFIX + "simpleLevel.xml"); ListAppender listAppender = (ListAppender) root.getAppender("LIST"); assertEquals(0, listAppender.list.size()); String msg = "hello world"; logger.debug(msg); assertEquals(0, listAppender.list.size()); }
@Test public void rootLoggerLevelSettingBySystemProperty() throws JoranException { String propertyName = "logback.level"; System.setProperty(propertyName, "INFO"); configure(ClassicTestConstants.JORAN_INPUT_PREFIX + "rootLevelByProperty.xml"); // StatusPrinter.print(loggerContext); ListAppender listAppender = (ListAppender) root.getAppender("LIST"); assertEquals(0, listAppender.list.size()); String msg = "hello world"; logger.debug(msg); assertEquals(0, listAppender.list.size()); System.clearProperty(propertyName); }
@Test public void loggerLevelSettingBySystemProperty() throws JoranException { String propertyName = "logback.level"; System.setProperty(propertyName, "DEBUG"); configure(ClassicTestConstants.JORAN_INPUT_PREFIX + "loggerLevelByProperty.xml"); // StatusPrinter.print(loggerContext); ListAppender listAppender = (ListAppender) root.getAppender("LIST"); assertEquals(0, listAppender.list.size()); String msg = "hello world"; logger.debug(msg); assertEquals(1, listAppender.list.size()); System.clearProperty(propertyName); }
@Test public void appenderRefSettingBySystemProperty() throws JoranException { final String propertyName = "logback.appenderRef"; System.setProperty(propertyName, "A"); configure(ClassicTestConstants.JORAN_INPUT_PREFIX + "appenderRefByProperty.xml"); final Logger logger = loggerContext .getLogger("ch.qos.logback.classic.joran"); final ListAppender listAppender = (ListAppender) logger.getAppender("A"); assertEquals(0, listAppender.list.size()); final String msg = "hello world"; logger.info(msg); assertEquals(1, listAppender.list.size()); System.clearProperty(propertyName); }
@Test public void smoke() { Logger logger = (Logger) LoggerFactory.getLogger(this.getClass()); Logger root = (Logger) LoggerFactory.getLogger(Logger.ROOT_LOGGER_NAME); ListAppender la = (ListAppender) root.getAppender("LIST"); assertNotNull(la); }
@Test public void smoke() throws JoranException { configure(SIFT_FOLDER_PREFIX + "smoke.xml"); logger.debug("smoke"); Appender<ILoggingEvent> appender = getAppenderTracker().find("smokeDefault"); assertNotNull(appender); ListAppender<ILoggingEvent> listAppender = (ListAppender<ILoggingEvent>) appender; List<ILoggingEvent> eventList = listAppender.list; assertEquals(1, listAppender.list.size()); assertEquals("smoke", eventList.get(0).getMessage()); }
@Test public void smoke() { ListAppender<ILoggingEvent> listAppender = new ListAppender<ILoggingEvent>(); listAppender.start(); root.addAppender(listAppender); Logger logger = lc.getLogger(LoggerTest.class); assertEquals(0, listAppender.list.size()); logger.debug("hello"); assertEquals(1, listAppender.list.size()); }
@Test public void conditionalConsoleApp_ELSE() throws JoranException, IOException, InterruptedException { configure(TeztConstants.TEST_DIR_PREFIX + "input/joran/conditional/conditionalConsole_ELSE.xml"); ConsoleAppender consoleAppender = (ConsoleAppender) context.getAppender("CON"); assertNull(consoleAppender); ListAppender listAppender = (ListAppender) context.getAppender("LIST"); assertNotNull(listAppender); assertTrue(checker.isErrorFree(0)); }
@Test public void smoke() throws Exception { configure(TeztConstants.TEST_DIR_PREFIX + "input/joran/smoke.xml"); ListAppender<IAccessEvent> listAppender = (ListAppender<IAccessEvent>) context .getAppender("LIST"); IAccessEvent event = DummyAccessEventBuilder.buildNewAccessEvent(); listAppender.doAppend(event); assertEquals(1, listAppender.list.size()); assertEquals(1, listAppender.list.size()); IAccessEvent ae = listAppender.list.get(0); assertNotNull(ae); }
@Test public void testMutabilityAndImmutability() { final AttributeKey<Object> someAttr = AttributeKey.valueOf(RequestContextExportingAppenderTest.class, "SOME_ATTR"); final RequestContextExportingAppender a = new RequestContextExportingAppender(); // Ensure mutability before start. a.addBuiltIn(BuiltInProperty.ELAPSED_NANOS); assertThat(a.getBuiltIns()).containsExactly(BuiltInProperty.ELAPSED_NANOS); a.addAttribute("some-attr", someAttr); assertThat(a.getAttributes()).containsOnlyKeys("some-attr") .containsValue(someAttr); a.addHttpRequestHeader(HttpHeaderNames.USER_AGENT); assertThat(a.getHttpRequestHeaders()).containsExactly(HttpHeaderNames.USER_AGENT); a.addHttpResponseHeader(HttpHeaderNames.SET_COOKIE); assertThat(a.getHttpResponseHeaders()).containsExactly(HttpHeaderNames.SET_COOKIE); final ListAppender<ILoggingEvent> la = new ListAppender<>(); a.addAppender(la); a.start(); la.start(); // Ensure immutability after start. assertThatThrownBy(() -> a.addBuiltIn(BuiltInProperty.REQ_PATH)) .isExactlyInstanceOf(IllegalStateException.class); assertThatThrownBy(() -> a.addAttribute("my-attr", MY_ATTR)) .isExactlyInstanceOf(IllegalStateException.class); assertThatThrownBy(() -> a.addHttpRequestHeader(HttpHeaderNames.ACCEPT)) .isExactlyInstanceOf(IllegalStateException.class); assertThatThrownBy(() -> a.addHttpResponseHeader(HttpHeaderNames.DATE)) .isExactlyInstanceOf(IllegalStateException.class); }
@SafeVarargs private final List<ILoggingEvent> prepare(Consumer<RequestContextExportingAppender>... configurators) { final RequestContextExportingAppender a = new RequestContextExportingAppender(); for (Consumer<RequestContextExportingAppender> c : configurators) { c.accept(a); } final ListAppender<ILoggingEvent> la = new ListAppender<>(); a.addAppender(la); a.start(); la.start(); testLogger.addAppender(a); return la.list; }
@Before public void setUp() throws Exception { m_listAppender = new ListAppender<>(); m_listAppender.start(); Logger root = (Logger) LoggerFactory.getLogger(WildcardMap.class); root.addAppender(m_listAppender); map = new WildcardMap<>(); }
@Before public void setUp() throws Exception { Logger bulkLogger = (Logger) LoggerFactory.getLogger(ElasticsearchClient.BulkErrorReportingResponseHandler.class); testAppender = new ListAppender<ILoggingEvent>(); testAppender.start(); bulkLogger.addAppender(testAppender); }
public Entry(Logger logger, ListAppender<ILoggingEvent> appender) { this.logger = logger; this.appender = appender; }
private void verify(ListAppender la, int expectedSize) { assertFalse(la.isStarted()); assertEquals(expectedSize, la.list.size()); statusChecker.assertIsErrorFree(); statusChecker.assertContainsMatch("Worker thread will flush remaining events before exiting."); }
private void check(SiftingAppender siftingAppender, String key, int expectedCount) { ListAppender<IAccessEvent> listAppender = (ListAppender<IAccessEvent>) siftingAppender .getAppenderTracker().find(key); assertEquals(expectedCount, listAppender.list.size()); }
public LogbackJUnitRule add(String name) { ListAppender<ILoggingEvent> appender = new com.github.skjolber.log.domain.test.ListAppender(); appender.setName(name); Logger logger = (Logger) LoggerFactory.getLogger(name); logger.addAppender(appender); entries.add(new Entry(logger, appender)); appender.start(); return this; }