svn commit: r2400 - in logback/trunk/logback-classic/src/test: input/joran/rolling java/ch/qos/logback/classic java/ch/qos/logback/classic/rolling

Author: ceki Date: Fri Jul 31 21:11:23 2009 New Revision: 2400 Added: logback/trunk/logback-classic/src/test/input/joran/rolling/basic.xml logback/trunk/logback-classic/src/test/java/ch/qos/logback/classic/rolling/PackageTest.java logback/trunk/logback-classic/src/test/java/ch/qos/logback/classic/rolling/TimeBasedRollingWithConfigFileTest.java Modified: logback/trunk/logback-classic/src/test/java/ch/qos/logback/classic/AllClassicTest.java Log: Testing configuration file driven TimeBasedRolling Added: logback/trunk/logback-classic/src/test/input/joran/rolling/basic.xml ============================================================================== --- (empty file) +++ logback/trunk/logback-classic/src/test/input/joran/rolling/basic.xml Fri Jul 31 21:11:23 2009 @@ -0,0 +1,22 @@ +<configuration> + + <appender name="ROLLING" + class="ch.qos.logback.core.rolling.RollingFileAppender"> + <File>${randomOutputDir}z${testId}</File> + <rollingPolicy + class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> + <FileNamePattern> + ${randomOutputDir}${testId}-%d{yyyy-MM-dd_HH_mm_ss} + </FileNamePattern> + </rollingPolicy> + <layout> + <Pattern>%msg%n</Pattern> + </layout> + </appender> + + + <root level="debug"> + <appender-ref ref="ROLLING" /> + </root> + +</configuration> Modified: logback/trunk/logback-classic/src/test/java/ch/qos/logback/classic/AllClassicTest.java ============================================================================== --- logback/trunk/logback-classic/src/test/java/ch/qos/logback/classic/AllClassicTest.java (original) +++ logback/trunk/logback-classic/src/test/java/ch/qos/logback/classic/AllClassicTest.java Fri Jul 31 21:11:23 2009 @@ -19,6 +19,7 @@ ch.qos.logback.classic.util.PackageTest.class, ch.qos.logback.classic.control.PackageTest.class, ch.qos.logback.classic.joran.PackageTest.class, + ch.qos.logback.classic.rolling.PackageTest.class, ch.qos.logback.classic.jmx.PackageTest.class, ch.qos.logback.classic.boolex.PackageTest.class, ch.qos.logback.classic.selector.PackageTest.class, Added: logback/trunk/logback-classic/src/test/java/ch/qos/logback/classic/rolling/PackageTest.java ============================================================================== --- (empty file) +++ logback/trunk/logback-classic/src/test/java/ch/qos/logback/classic/rolling/PackageTest.java Fri Jul 31 21:11:23 2009 @@ -0,0 +1,20 @@ +/** + * Logback: the generic, reliable, fast and flexible logging framework. + * + * Copyright (C) 2000-2008, QOS.ch + * + * This library is free software, you can redistribute it and/or modify it under + * the terms of the GNU Lesser General Public License as published by the Free + * Software Foundation. + */ +package ch.qos.logback.classic.rolling; + +import org.junit.runner.RunWith; +import org.junit.runners.Suite; +import org.junit.runners.Suite.SuiteClasses; + + +@RunWith(Suite.class) +@SuiteClasses( { TimeBasedRollingWithConfigFileTest.class}) +public class PackageTest { +} \ No newline at end of file Added: logback/trunk/logback-classic/src/test/java/ch/qos/logback/classic/rolling/TimeBasedRollingWithConfigFileTest.java ============================================================================== --- (empty file) +++ logback/trunk/logback-classic/src/test/java/ch/qos/logback/classic/rolling/TimeBasedRollingWithConfigFileTest.java Fri Jul 31 21:11:23 2009 @@ -0,0 +1,81 @@ +package ch.qos.logback.classic.rolling; + +import org.junit.After; +import org.junit.Before; +import org.junit.Test; + +import ch.qos.logback.classic.ClassicTestConstants; +import ch.qos.logback.classic.Logger; +import ch.qos.logback.classic.LoggerContext; +import ch.qos.logback.classic.joran.JoranConfigurator; +import ch.qos.logback.classic.spi.ILoggingEvent; +import ch.qos.logback.core.joran.spi.JoranException; +import ch.qos.logback.core.rolling.RollingFileAppender; +import ch.qos.logback.core.rolling.ScaffoldingForRollingTests; +import ch.qos.logback.core.rolling.TimeBasedFileNamingAndTriggeringPolicy; +import ch.qos.logback.core.rolling.TimeBasedRollingPolicy; + +public class TimeBasedRollingWithConfigFileTest extends + ScaffoldingForRollingTests { + + LoggerContext lc = new LoggerContext(); + Logger logger = lc.getLogger(this.getClass()); + + @Before + @Override + public void setUp() { + lc.setName("test"); + super.setUp(); + lc.putProperty("randomOutputDir", randomOutputDir); + } + + @After + public void tearDown() throws Exception { + } + + void loadConfig(String confifFile) throws JoranException { + JoranConfigurator jc = new JoranConfigurator(); + jc.setContext(lc); + jc.doConfigure(confifFile); + currentTime = System.currentTimeMillis(); + recomputeRolloverThreshold(currentTime); + } + + @Test + public void basic() throws Exception { + String testId = "basic"; + lc.putProperty("testId", testId); + loadConfig(ClassicTestConstants.JORAN_INPUT_PREFIX + "/rolling/basic.xml"); + Logger root = lc.getLogger(Logger.ROOT_LOGGER_NAME); + + expectedFilenameList.add(randomOutputDir+"z"+testId); + + RollingFileAppender<ILoggingEvent> rfa = (RollingFileAppender<ILoggingEvent>) root + .getAppender("ROLLING"); + + TimeBasedRollingPolicy tprp = (TimeBasedRollingPolicy<ILoggingEvent>) rfa + .getTriggeringPolicy(); + TimeBasedFileNamingAndTriggeringPolicy tbnatp = tprp.getTimeBasedFileNamingAndTriggeringPolicy(); + + String prefix = "Hello---"; + int runLength = 4; + for (int i = 0; i < runLength; i++) { + logger.debug(prefix + i); + addExpectedFileNamedIfItsTime_ByDate(testId, false); + incCurrentTime(500); + tbnatp.setCurrentTime(currentTime); + } + + existenceCheck(expectedFilenameList); + sortedContentCheck(randomOutputDir, runLength, prefix); + } + + @Override + protected void addExpectedFileNamedIfItsTime_ByDate(String testId, boolean gzExtension) { + if (passThresholdTime(nextRolloverThreshold)) { + addExpectedFileName_ByDate(testId, getDateOfPreviousPeriodsStart(), + gzExtension); + recomputeRolloverThreshold(currentTime); + } + } +}
participants (1)
-
noreply.ceki@qos.ch