@Test public void lbcore193() throws JoranException { String configFileAsStr = ClassicTestConstants.ISSUES_PREFIX + "lbcore193.xml"; configure(configFileAsStr); checker.asssertContainsException(ScanException.class); checker.assertContainsMatch(Status.ERROR, "Expecting RIGHT_PARENTHESIS token but got null"); checker.assertContainsMatch(Status.ERROR, "See also " + Parser.MISSING_RIGHT_PARENTHESIS); }
@Test public void noClass() throws JoranException { simpleConfigurator.doConfigure(DEFINE_INPUT_DIR + NOCLASS_XML); String inContextFoo = context.getProperty("foo"); assertNull(inContextFoo); checker.assertContainsMatch(Status.ERROR, "Missing class name for property definer. Near \\[define\\] line 1"); }
@Test public void testBadClass() throws JoranException { simpleConfigurator.doConfigure(DEFINE_INPUT_DIR + BADCLASS_XML); // get from context String inContextFoo = context.getProperty("foo"); assertNull(inContextFoo); // check context errors checker.assertContainsMatch(Status.ERROR, "Could not create an PropertyDefiner of type"); }
@Test public void noName() throws JoranException { simpleConfigurator.doConfigure(DEFINE_INPUT_DIR + NONAME_XML); // get from context String inContextFoo = context.getProperty("foo"); assertNull(inContextFoo); // check context errors checker.assertContainsMatch(Status.ERROR, "Missing property name for property definer. Near \\[define\\] line 1"); }
private void verify(ListAppender<Integer> la, int atLeast) { assertFalse(la.isStarted()); assertTrue(atLeast+ " <= "+la.list.size(), atLeast <= la.list.size()); statusChecker.assertIsErrorFree(); statusChecker.assertContainsMatch("Worker thread will flush remaining events before exiting."); }
@Test public void depratedSizeAndTimeBasedFNATPWarning() throws Exception { String testId = "depratedSizeAndTimeBasedFNATPWarning"; lc.putProperty("testId", testId); loadConfig(ClassicTestConstants.JORAN_INPUT_PREFIX + "rolling/" + testId + ".xml"); statusChecker.assertContainsMatch(Status.WARN, CoreConstants.SIZE_AND_TIME_BASED_FNATP_IS_DEPRECATED); }
@Test public void timeAndSizeWithoutIntegerToken() throws Exception { String testId = "timeAndSizeWithoutIntegerToken"; loadConfig(ClassicTestConstants.JORAN_INPUT_PREFIX + "rolling/" + testId + ".xml"); Logger root = lc.getLogger(Logger.ROOT_LOGGER_NAME); expectedFilenameList.add(randomOutputDir + "z" + testId); RollingFileAppender<ILoggingEvent> rfa = (RollingFileAppender<ILoggingEvent>) root.getAppender("ROLLING"); // StatusPrinter.print(lc); statusChecker.assertContainsMatch("Missing integer token"); assertFalse(rfa.isStarted()); }
@Test public void nonExistingConfigFileShouldResultInWarning() throws LifecycleException { final String resourceName = "logback-test2-config.xml"; setupValve(resourceName); valve.start(); checker.assertContainsMatch(Status.WARN, "Failed to find valid"); }
@Test public void totalSizeCapSmallerThanMaxFileSize() throws Exception { String testId = "totalSizeCapSmallerThanMaxFileSize"; lc.putProperty("testId", testId); loadConfig(ClassicTestConstants.JORAN_INPUT_PREFIX + "rolling/" + testId + ".xml"); Logger root = lc.getLogger(Logger.ROOT_LOGGER_NAME); //expectedFilenameList.add(randomOutputDir + "z" + testId); RollingFileAppender<ILoggingEvent> rfa = (RollingFileAppender<ILoggingEvent>) root.getAppender("ROLLING"); statusChecker.assertContainsMatch("totalSizeCap of \\[\\d* \\w*\\] is smaller than maxFileSize \\[\\d* \\w*\\] which is non-sensical"); assertFalse(rfa.isStarted()); }
@Test public void collisionWithTwoFileAppenders() { String suffix = "collisionWithToFileAppenders"; FileAppender<String> fileAppender1 = buildFileAppender("FA1", suffix); fileAppender1.start(); FileAppender<String> fileAppender2 = buildFileAppender("FA2", suffix); fileAppender2.start(); statusChecker.assertContainsMatch(Status.ERROR, "'File' option has the same value"); //StatusPrinter.print(context); }
@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 extraIntegerTokenInFileNamePatternShouldBeDetected() { String pattern = "test-%d{yyyy-MM-dd'T'HH}-%i.log.zip"; tbrp.setFileNamePattern(pattern); tbrp.start(); assertFalse(tbrp.isStarted()); StatusChecker statusChecker = new StatusChecker(context); statusChecker.assertContainsMatch(Status.ERROR, "Filename pattern .{37} contains an integer token converter"); } }
@Test public void collisionWith_FA_RFA() { String suffix = "collisionWith_FA_RFA"; FileAppender<String> fileAppender1 = buildFileAppender("FA", suffix); fileAppender1.start(); RollingFileAppender<String> rollingfileAppender = buildRollingFileAppender("RFA", suffix, "bla-%d.log"); rollingfileAppender.start(); StatusPrinter.print(context); statusChecker.assertContainsMatch(Status.ERROR, "'File' option has the same value"); }
@Test public void collisionWith_2RFA() { String suffix = "collisionWith_2RFA"; RollingFileAppender<String> rollingfileAppender1 = buildRollingFileAppender("RFA1", suffix, "bla-%d.log"); rollingfileAppender1.start(); RollingFileAppender<String> rollingfileAppender2 = buildRollingFileAppender("RFA1", suffix, "bla-%d.log"); rollingfileAppender2.start(); StatusPrinter.print(context); statusChecker.assertContainsMatch(Status.ERROR, "'FileNamePattern' option has the same value"); }
@Test public void checkMissingIntToken() { String stem = "toto.log"; String testId = "checkMissingIntToken"; String compressionSuffix = "gz"; String file = (stem != null) ? randomOutputDir + stem : null; initRollingFileAppender(rfa1, file); sizeThreshold = 300; initPolicies(rfa1, tbrp1, randomOutputDir + testId + "-%d{" + DATE_PATTERN_WITH_SECONDS + ", GMT}.txt" + compressionSuffix, sizeThreshold, currentTime); //StatusPrinter.print(context); assertFalse(rfa1.isStarted()); StatusChecker checker = new StatusChecker(context); checker.assertContainsMatch("Missing integer token"); }
@Test public void testFilePropertyAfterRollingPolicy() { rfa.setContext(context); rfa.setRollingPolicy(tbrp); rfa.setFile("x"); StatusPrinter.print(context); StatusChecker statusChecker = new StatusChecker(context.getStatusManager()); statusChecker.assertContainsMatch(Status.ERROR, "File property must be set before any triggeringPolicy "); }
@Test public void testUnknownWord() throws Exception { Parser<Object> p = new Parser<Object>("%unknown"); p.setContext(context); Node t = p.parse(); p.compile(t, converterMap); StatusChecker checker = new StatusChecker(context.getStatusManager()); checker .assertContainsMatch("\\[unknown] is not a valid conversion word"); }
@Test public void testFilePropertyAfterTriggeringPolicy() { rfa.setContext(context); rfa.setTriggeringPolicy(new SizeBasedTriggeringPolicy<Object>()); rfa.setFile("x"); StatusChecker statusChecker = new StatusChecker(context.getStatusManager()); statusChecker.assertContainsMatch(Status.ERROR, "File property must be set before any triggeringPolicy "); }
@Test public void testNoStart() { Appender<E> appender = getAppender(); appender.setContext(context); appender.setName("doh"); // is null OK? appender.doAppend(null); StatusChecker checker = new StatusChecker(context.getStatusManager()); StatusPrinter.print(context); checker.assertContainsMatch("Attempted to append to non started appender \\[doh\\]."); } }
@Test public void invalidQueueCapacityShouldResultInNonStartedAppender() { asyncAppenderBase.addAppender(new NOPAppender<Integer>()); asyncAppenderBase.setQueueSize(0); assertEquals(0, asyncAppenderBase.getQueueSize()); asyncAppenderBase.start(); assertFalse(asyncAppenderBase.isStarted()); statusChecker.assertContainsMatch("Invalid queue size"); }