@Test public void recursiveLogbackInitialization() { Logger logger = LoggerFactory.getLogger("RecursiveInitializationTest" + diff); logger.info("RecursiveInitializationTest"); LoggerContext loggerContext = (LoggerContext) LoggerFactory .getILoggerFactory(); StatusPrinter.printInCaseOfErrorsOrWarnings(loggerContext); StatusChecker statusChecker = new StatusChecker(loggerContext); assertEquals("Was expecting no errors", Status.WARN, statusChecker.getHighestLevel(0)); }
private void checkResetCount(int expected) { StatusChecker checker = new StatusChecker(loggerContext); checker.assertIsErrorFree(); int effectiveResets = checker.matchCount(CoreConstants.RESET_MSG_PREFIX); assertEquals(expected, effectiveResets); // String failMsg = "effective=" + effectiveResets + ", expected=" + expected; // // there might be more effective resets than the expected amount // since the harness may be sleeping while a reset occurs //assertTrue(failMsg, expected <= effectiveResets && (expected + 2) >= effectiveResets); }
private void verify(int expected) { StatusChecker checker = new StatusChecker(loggerContext); //StatusPrinter.print(loggerContext); checker.assertIsErrorFree(); int effectiveResets = checker .matchCount(CoreConstants.RESET_MSG_PREFIX); String failMsg = "effective=" + effectiveResets + ", expected=" + expected; // there might be more effective resets than the expected amount // since the harness may be sleeping while a reset occurs assertTrue(failMsg, expected <= effectiveResets && (expected + 2) >= effectiveResets); }
@SuppressWarnings("deprecation") @Test public void encoderCharset() throws JoranException, IOException, InterruptedException { String configFileAsStr = ClassicTestConstants.JORAN_INPUT_PREFIX + "encoderCharset.xml"; configure(configFileAsStr); ConsoleAppender<ILoggingEvent> consoleAppender = (ConsoleAppender<ILoggingEvent>) root.getAppender("CONSOLE"); assertNotNull(consoleAppender); LayoutWrappingEncoder<ILoggingEvent> encoder = (LayoutWrappingEncoder<ILoggingEvent>) consoleAppender.getEncoder(); assertEquals("UTF-8", encoder.getCharset().displayName()); StatusChecker checker = new StatusChecker(loggerContext); checker.assertIsErrorFree(); }
@Test public void charset() { setter.setProperty("charset", "UTF-8"); assertEquals(Charset.forName("UTF-8"), house.getCharset()); house.setCharset(null); setter.setProperty("charset", "UTF"); assertNull(house.getCharset()); StatusChecker checker = new StatusChecker(context); checker.containsException(UnsupportedCharsetException.class); } }
@Test public void test2() throws Exception { Compressor compressor = new Compressor(CompressionMode.GZ); compressor.setContext(context); compressor.compress(CoreTestConstants.TEST_DIR_PREFIX + "input/compress2.txt", CoreTestConstants.OUTPUT_DIR_PREFIX + "compress2.txt", null); StatusChecker checker = new StatusChecker(context); assertTrue(checker.isErrorFree(0)); assertTrue(Compare.gzCompare(CoreTestConstants.OUTPUT_DIR_PREFIX + "compress2.txt.gz", CoreTestConstants.TEST_DIR_PREFIX + "witness/compress2.txt.gz")); }
@Test public void test1() throws Exception { Compressor compressor = new Compressor(CompressionMode.GZ); compressor.setContext(context); compressor.compress(CoreTestConstants.TEST_DIR_PREFIX + "input/compress1.txt", CoreTestConstants.OUTPUT_DIR_PREFIX + "compress1.txt.gz", null); StatusChecker checker = new StatusChecker(context); assertTrue(checker.isErrorFree(0)); assertTrue(Compare.gzCompare(CoreTestConstants.OUTPUT_DIR_PREFIX + "compress1.txt.gz", CoreTestConstants.TEST_DIR_PREFIX + "witness/compress1.txt.gz")); }
@Test public void layoutInsteadOfEncoer() throws JoranException { jc.doConfigure(ClassicTestConstants.JORAN_INPUT_PREFIX + "compatibility/layoutInsteadOfEncoder.xml"); StatusPrinter.print(loggerContext); StatusChecker checker = new StatusChecker(loggerContext); checker.assertContainsMatch(Status.WARN, "This appender no longer admits a layout as a sub-component"); checker.assertContainsMatch(Status.WARN, "See also "+CODES_URL+"#layoutInsteadOfEncoder for details"); ch.qos.logback.classic.Logger root = (ch.qos.logback.classic.Logger) loggerContext.getLogger(Logger.ROOT_LOGGER_NAME); FileAppender<ILoggingEvent> fileAppender = (FileAppender<ILoggingEvent>) root.getAppender("LIOE"); assertTrue(fileAppender.isStarted()); assertTrue(fileAppender.getEncoder() instanceof LayoutWrappingEncoder); }
@Test(timeout = 1000) public void concurrentReset() throws InterruptedException { LoggerContext loggerContext = new LoggerContext(); CyclicBarrier cyclicBarrier = new CyclicBarrier(CONCURRENT_RESET_THREAD_COUNT); StatusChecker statusChecker = new StatusChecker(loggerContext); int desiredResetCount = 100; RunnableWithCounterAndDone[] runnableArray = buildRunnableArray(loggerContext, cyclicBarrier); Harness harness = new Harness((Resetter) runnableArray[0], desiredResetCount); harness.execute(runnableArray); statusChecker.assertIsErrorFree(); }
private void executeHarness(int duration, boolean withDelay) throws InterruptedException { MultiThreadedHarness multiThreadedHarness = new MultiThreadedHarness( duration); this.runnableArray = buildRunnableArray(withDelay); multiThreadedHarness.execute(runnableArray); StatusChecker checker = new StatusChecker(context.getStatusManager()); if (!checker.isErrorFree(0)) { StatusPrinter.print(context); fail("errors reported"); } }
public void immediateFlushInEncoder(Boolean immediateFlush) throws JoranException { loggerContext.putProperty("immediateFlush", immediateFlush.toString()); jc.doConfigure(ClassicTestConstants.JORAN_INPUT_PREFIX + "compatibility/immediateFlushInEncoder.xml"); StatusPrinter.print(loggerContext); StatusChecker checker = new StatusChecker(loggerContext); checker.assertContainsMatch(Status.WARN, "As of version 1.2.0 \"immediateFlush\" property should be set within the enclosing Appender."); checker.assertContainsMatch(Status.WARN, "Please move \"immediateFlush\" property into the enclosing appender."); checker.assertContainsMatch(Status.WARN, "Setting the \"immediateFlush\" property of the enclosing appender to " + immediateFlush); ch.qos.logback.classic.Logger root = (ch.qos.logback.classic.Logger) loggerContext.getLogger(Logger.ROOT_LOGGER_NAME); FileAppender<ILoggingEvent> fileAppender = (FileAppender<ILoggingEvent>) root.getAppender("LIOE"); assertTrue(fileAppender.isStarted()); assertEquals(immediateFlush.booleanValue(), fileAppender.isImmediateFlush()); } }
@Test public void testPrudentModeLogicalImplicationsOnCompression() { rfa.setContext(context); rfa.setAppend(false); rfa.setPrudent(true); tbrp.setFileNamePattern(CoreTestConstants.OUTPUT_DIR_PREFIX + "toto-%d.log.zip"); tbrp.start(); rfa.setRollingPolicy(tbrp); rfa.start(); StatusChecker checker = new StatusChecker(context); assertFalse(rfa.isStarted()); assertEquals(Status.ERROR, checker.getHighestLevel(0)); }
@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 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 checkDateCollision() { String stem = "toto.log"; String testId = "checkDateCollision"; String compressionSuffix = "gz"; String file = (stem != null) ? randomOutputDir + stem : null; initRollingFileAppender(rfa1, file); sizeThreshold = 300; initPolicies(rfa1, tbrp1, randomOutputDir + testId + "-%d{EE, GMT}.txt" + compressionSuffix, sizeThreshold, currentTime); //StatusPrinter.print(context); assertFalse(rfa1.isStarted()); StatusChecker checker = new StatusChecker(context); checker.assertContainsMatch("The date format in FileNamePattern"); }
@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 conditionalConsoleApp_IF_THEN_False() throws JoranException, IOException, InterruptedException { context.putProperty("aHost", null); configure(AccessTestConstants.TEST_DIR_PREFIX + "input/joran/conditional/conditionalConsole.xml"); ConsoleAppender consoleAppender = (ConsoleAppender) context.getAppender("CON"); assertNull(consoleAppender); StatusChecker checker = new StatusChecker(context); assertTrue(checker.isErrorFree(0)); }
@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\\]."); } }