@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 fileAppenderCollision() throws JoranException, InterruptedException { loggerContext.putProperty("DIR_PREFIX", randomOutputDir); String key = "collision"; configure(SIFT_FOLDER_PREFIX + "fileAppender.xml"); SiftingAppender sa = (SiftingAppender) root.getAppender("SIFT"); long timestamp = System.currentTimeMillis(); MDC.put(key, "A-" + diff); logNewEventViaSiftingAppender(sa, timestamp); FileAppender<ILoggingEvent> fileAppenderA = (FileAppender<ILoggingEvent>) sa.getAppenderTracker().find("A-" + diff); assertNotNull(fileAppenderA); assertTrue(fileAppenderA.isStarted()); timestamp += ComponentTracker.DEFAULT_TIMEOUT + 1; MDC.put(key, "B-" + diff); logNewEventViaSiftingAppender(sa, timestamp); assertFalse(fileAppenderA.isStarted()); MDC.put(key, "A-" + diff); timestamp += 1; logNewEventViaSiftingAppender(sa, timestamp); FileAppender<ILoggingEvent> fileAppenderA_2 = (FileAppender<ILoggingEvent>) sa.getAppenderTracker().find("A-" + diff); assertTrue(fileAppenderA_2.isStarted()); }
@Test public void defaultLayoutRule() throws JoranException { configure(SIFT_FOLDER_PREFIX + "defaultLayoutRule.xml"); logger.debug("hello"); SiftingAppender ha = (SiftingAppender) root.getAppender("SIFT"); StringListAppender<ILoggingEvent> listAppender = (StringListAppender<ILoggingEvent>) ha .getAppenderTracker().find("default"); assertNotNull(listAppender); List<String> strList = listAppender.strList; assertEquals(1, strList.size()); assertEquals("DEBUG hello", strList.get(0)); }
@Test public void propertyDefinedWithinSiftElementShouldBeVisible() throws JoranException { String mdcKey = "propertyDefinedWithinSift"; String mdcVal = "" + diff; String msg = "propertyDefinedWithinSiftElementShouldBeVisible"; String prefix = "Y"; configure(SIFT_FOLDER_PREFIX + "propertyDefinedInSiftElement.xml"); MDC.put(mdcKey, mdcVal); logger.debug(msg); SiftingAppender sa = (SiftingAppender) root.getAppender("SIFT"); StringListAppender<ILoggingEvent> listAppender = (StringListAppender<ILoggingEvent>) sa .getAppenderTracker().find(mdcVal); assertNotNull(listAppender); List<String> strList = listAppender.strList; assertEquals(1, listAppender.strList.size()); assertEquals(prefix + msg, strList.get(0)); }
@Test public void multipleNesting() throws JoranException { configure(SIFT_FOLDER_PREFIX + "multipleNesting.xml"); logger.debug("hello"); logger.debug("hello"); logger.debug("hello"); Appender<ILoggingEvent> listAppender = getAppenderTracker().find("multipleDefault"); StatusPrinter.printInCaseOfErrorsOrWarnings(loggerContext); assertNotNull(listAppender); statusChecker.assertContainsMatch(ErrorStatus.ERROR, "Only and only one appender can be nested"); }
@Test public void localPropertiesShouldBeVisible() throws JoranException { String mdcKey = "localProperty"; String mdcVal = "" + diff; String msg = "localPropertiesShouldBeVisible"; String prefix = "Y"; configure(SIFT_FOLDER_PREFIX + "propertyPropagation.xml"); MDC.put(mdcKey, mdcVal); logger.debug(msg); SiftingAppender sa = (SiftingAppender) root.getAppender("SIFT"); StringListAppender<ILoggingEvent> listAppender = (StringListAppender<ILoggingEvent>) sa .getAppenderTracker().find(mdcVal); assertNotNull(listAppender); List<String> strList = listAppender.strList; assertEquals(1, listAppender.strList.size()); assertEquals(prefix + msg, strList.get(0)); }
@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); logNewEventViaSiftingAppender(sa, timestamp); assertFalse(listAppender.isStarted()); assertEquals(1, sa.getAppenderTracker().allKeys().size()); assertTrue(sa.getAppenderTracker().allKeys().contains("cycleDefault")); }
@Test public void zeroNesting() throws JoranException { configure(SIFT_FOLDER_PREFIX + "zeroNesting.xml"); logger.debug("hello"); logger.debug("hello"); logger.debug("hello"); logger.debug("hello"); logger.debug("hello"); Appender<ILoggingEvent> nopa = getAppenderTracker().find("zeroDefault"); assertNotNull(nopa); assertThat(nopa, is(instanceOf(NOPAppender.class))); StatusPrinter.printInCaseOfErrorsOrWarnings(loggerContext); statusChecker.assertContainsMatch(ErrorStatus.ERROR, "No nested appenders found"); }
@Test public void compositePropertyShouldCombineWithinAndWithoutSiftElement() throws JoranException { String mdcKey = "compositeProperty"; String mdcVal = "" + diff; String msg = "compositePropertyShouldCombineWithinAndWithoutSiftElement"; String prefix = "composite"; configure(SIFT_FOLDER_PREFIX + "compositeProperty.xml"); MDC.put(mdcKey, mdcVal); logger.debug(msg); SiftingAppender sa = (SiftingAppender) root.getAppender("SIFT"); StringListAppender<ILoggingEvent> listAppender = (StringListAppender<ILoggingEvent>) sa .getAppenderTracker().find(mdcVal); assertNotNull(listAppender); List<String> strList = listAppender.strList; assertEquals(1, listAppender.strList.size()); assertEquals(prefix + msg, strList.get(0)); }
@Test public void unsetDefaultValueProperty() throws JoranException { configure(SIFT_FOLDER_PREFIX + "unsetDefaultValueProperty.xml"); logger.debug("hello"); SiftingAppender sa = (SiftingAppender) root.getAppender("SIFT"); assertFalse(sa.isStarted()); }
@Test public void sessionFinalizationShouldCauseLingering() throws JoranException { String mdcKey = "linger"; String mdcVal = "session" + diff; configure(SIFT_FOLDER_PREFIX + "lingering.xml"); MDC.put(mdcKey, mdcVal); logger.debug("linger 1"); logger.debug(ClassicConstants.FINALIZE_SESSION_MARKER, "linger 2"); long now = System.currentTimeMillis(); SiftingAppender sa = (SiftingAppender) root.getAppender("SIFT"); AppenderTracker<ILoggingEvent> tracker = sa.getAppenderTracker(); assertEquals(1, tracker.allKeys().size()); Appender<ILoggingEvent> appender = tracker.find(mdcVal); assertTrue(appender.isStarted()); tracker.removeStaleComponents(now + AppenderTracker.LINGERING_TIMEOUT + 1); // previously lingering appenders should be closed upon timeout assertFalse(appender.isStarted()); // and they should be gone assertEquals(0, tracker.allKeys().size()); }
@Test public void maxAppendersCountPropertyShouldBeHonored() throws JoranException { configure(SIFT_FOLDER_PREFIX + "maxAppenderCount.xml"); int max = 5; SiftingAppender sa = (SiftingAppender) root.getAppender("SIFT"); String mdcKey = "max"; for(int i = 0; i <= max; i++) { MDC.put(mdcKey, "" + (diff + i)); LoggingEvent event = new LoggingEvent("", logger, Level.DEBUG, "max"+i, null, null); event.setTimeStamp(now); sa.doAppend(event); now += AbstractComponentTracker.WAIT_BETWEEN_SUCCESSIVE_REMOVAL_ITERATIONS; } AppenderTracker<ILoggingEvent> tracker = sa.getAppenderTracker(); assertEquals(max, tracker.allKeys().size()); assertNull(tracker.find("" + (diff + 0))); for(int i = 1; i <= max; i++) { assertNotNull(tracker.find("" + (diff + i))); } }
@Test public void timeoutPropertyShouldBeHonored() throws JoranException, InterruptedException { configure(SIFT_FOLDER_PREFIX + "timeout.xml"); long timeout = 30*1000; SiftingAppender sa = (SiftingAppender) root.getAppender("SIFT"); LoggingEvent event = new LoggingEvent("", logger, Level.DEBUG, "timeout", null, null); event.setTimeStamp(now); sa.doAppend(event); AppenderTracker<ILoggingEvent> tracker = sa.getAppenderTracker(); assertEquals(1, tracker.getComponentCount()); now += timeout+1; tracker.removeStaleComponents(now); assertEquals(0, tracker.getComponentCount()); statusChecker.assertIsErrorFree(); }