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

Author: ceki Date: Fri Jul 31 21:30:53 2009 New Revision: 2402 Added: logback/trunk/logback-classic/src/test/input/joran/rolling/timeAndSize.xml Modified: logback/trunk/logback-classic/src/test/java/ch/qos/logback/classic/rolling/TimeBasedRollingWithConfigFileTest.java logback/trunk/logback-core/src/main/java/ch/qos/logback/core/rolling/SizeAndTimeBasedFileNamingAndTriggeringPolicy.java logback/trunk/logback-core/src/test/java/ch/qos/logback/core/rolling/ScaffoldingForRollingTests.java logback/trunk/logback-core/src/test/java/ch/qos/logback/core/rolling/SizeAndTimeBasedFileNamingAndTriggeringPolicyTest.java Log: on going testing Added: logback/trunk/logback-classic/src/test/input/joran/rolling/timeAndSize.xml ============================================================================== --- (empty file) +++ logback/trunk/logback-classic/src/test/input/joran/rolling/timeAndSize.xml Fri Jul 31 21:30:53 2009 @@ -0,0 +1,26 @@ +<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}.%i + </FileNamePattern> + <TimeBasedFileNamingAndTriggeringPolicy + class="ch.qos.logback.core.rolling.SizeAndTimeBasedFileNamingAndTriggeringPolicy"> + <MaxFileSize>20</MaxFileSize> + </TimeBasedFileNamingAndTriggeringPolicy> + </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/rolling/TimeBasedRollingWithConfigFileTest.java ============================================================================== --- logback/trunk/logback-classic/src/test/java/ch/qos/logback/classic/rolling/TimeBasedRollingWithConfigFileTest.java (original) +++ logback/trunk/logback-classic/src/test/java/ch/qos/logback/classic/rolling/TimeBasedRollingWithConfigFileTest.java Fri Jul 31 21:30:53 2009 @@ -1,5 +1,9 @@ package ch.qos.logback.classic.rolling; +import static org.junit.Assert.assertTrue; + +import java.util.Date; + import org.junit.After; import org.junit.Before; import org.junit.Test; @@ -14,13 +18,18 @@ import ch.qos.logback.core.rolling.ScaffoldingForRollingTests; import ch.qos.logback.core.rolling.TimeBasedFileNamingAndTriggeringPolicy; import ch.qos.logback.core.rolling.TimeBasedRollingPolicy; +import ch.qos.logback.core.status.StatusChecker; +import ch.qos.logback.core.util.StatusPrinter; public class TimeBasedRollingWithConfigFileTest extends ScaffoldingForRollingTests { LoggerContext lc = new LoggerContext(); Logger logger = lc.getLogger(this.getClass()); - + int fileSize = 0; + int fileIndexCounter = 0; + int sizeThreshold; + @Before @Override public void setUp() { @@ -45,7 +54,10 @@ public void basic() throws Exception { String testId = "basic"; lc.putProperty("testId", testId); - loadConfig(ClassicTestConstants.JORAN_INPUT_PREFIX + "/rolling/basic.xml"); + loadConfig(ClassicTestConstants.JORAN_INPUT_PREFIX + "/rolling/"+testId+".xml"); + StatusChecker sc = new StatusChecker(lc); + assertTrue(sc.isErrorFree()); + Logger root = lc.getLogger(Logger.ROOT_LOGGER_NAME); expectedFilenameList.add(randomOutputDir+"z"+testId); @@ -56,7 +68,9 @@ TimeBasedRollingPolicy tprp = (TimeBasedRollingPolicy<ILoggingEvent>) rfa .getTriggeringPolicy(); TimeBasedFileNamingAndTriggeringPolicy tbnatp = tprp.getTimeBasedFileNamingAndTriggeringPolicy(); - + + + String prefix = "Hello---"; int runLength = 4; for (int i = 0; i < runLength; i++) { @@ -70,6 +84,79 @@ sortedContentCheck(randomOutputDir, runLength, prefix); } + @Test + public void timeAndSize() throws Exception { + String testId = "timeAndSize"; + 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"); + + StatusPrinter.print(lc); + StatusChecker sc = new StatusChecker(lc); + assertTrue(sc.isErrorFree()); + + + TimeBasedRollingPolicy tprp = (TimeBasedRollingPolicy<ILoggingEvent>) rfa + .getTriggeringPolicy(); + TimeBasedFileNamingAndTriggeringPolicy tbnatp = tprp.getTimeBasedFileNamingAndTriggeringPolicy(); + + + + String prefix = "Hello---"; + int runLength = 4; + for (int i = 0; i < runLength; i++) { + String msg = prefix + i; + logger.debug(msg); + addExpectedFileNamedIfItsTime(testId, msg, false); + incCurrentTime(500); + tbnatp.setCurrentTime(currentTime); + } + + System.out.println(expectedFilenameList); + existenceCheck(expectedFilenameList); + sortedContentCheck(randomOutputDir, runLength, prefix); + } + + + void addExpectedFileNamedIfItsTime(String testId, String msg, + boolean gzExtension) { + fileSize += msg.getBytes().length; + + if (passThresholdTime(nextRolloverThreshold)) { + fileIndexCounter = 0; + fileSize = 0; + addExpectedFileName(testId, getDateOfCurrentPeriodsStart(), + fileIndexCounter, gzExtension); + recomputeRolloverThreshold(currentTime); + return; + } + + // windows can delay file size changes, so we only allow for + // fileIndexCounter 0 and 1 + if ((fileIndexCounter < 1) && fileSize > sizeThreshold) { + addExpectedFileName(testId, getDateOfCurrentPeriodsStart(), + ++fileIndexCounter, gzExtension); + fileSize = 0; + return; + } + } + + void addExpectedFileName(String testId, Date date, int fileIndexCounter, + boolean gzExtension) { + + String fn = randomOutputDir + testId + "-" + SDF.format(date) + "-" + + fileIndexCounter; + if (gzExtension) { + fn += ".gz"; + } + expectedFilenameList.add(fn); + } + @Override protected void addExpectedFileNamedIfItsTime_ByDate(String testId, boolean gzExtension) { if (passThresholdTime(nextRolloverThreshold)) { Modified: logback/trunk/logback-core/src/main/java/ch/qos/logback/core/rolling/SizeAndTimeBasedFileNamingAndTriggeringPolicy.java ============================================================================== --- logback/trunk/logback-core/src/main/java/ch/qos/logback/core/rolling/SizeAndTimeBasedFileNamingAndTriggeringPolicy.java (original) +++ logback/trunk/logback-core/src/main/java/ch/qos/logback/core/rolling/SizeAndTimeBasedFileNamingAndTriggeringPolicy.java Fri Jul 31 21:30:53 2009 @@ -12,8 +12,10 @@ import java.io.File; import java.util.Date; +import ch.qos.logback.core.joran.spi.NoAutoStart; import ch.qos.logback.core.util.FileSize; +@NoAutoStart public class SizeAndTimeBasedFileNamingAndTriggeringPolicy<E> extends TimeBasedFileNamingAndTriggeringPolicyBase<E> { Modified: logback/trunk/logback-core/src/test/java/ch/qos/logback/core/rolling/ScaffoldingForRollingTests.java ============================================================================== --- logback/trunk/logback-core/src/test/java/ch/qos/logback/core/rolling/ScaffoldingForRollingTests.java (original) +++ logback/trunk/logback-core/src/test/java/ch/qos/logback/core/rolling/ScaffoldingForRollingTests.java Fri Jul 31 21:30:53 2009 @@ -130,7 +130,7 @@ currentTime += increment; } - Date getDateOfCurrentPeriodsStart() { + protected Date getDateOfCurrentPeriodsStart() { long delta = currentTime % 1000; return new Date(currentTime - delta); } Modified: logback/trunk/logback-core/src/test/java/ch/qos/logback/core/rolling/SizeAndTimeBasedFileNamingAndTriggeringPolicyTest.java ============================================================================== --- logback/trunk/logback-core/src/test/java/ch/qos/logback/core/rolling/SizeAndTimeBasedFileNamingAndTriggeringPolicyTest.java (original) +++ logback/trunk/logback-core/src/test/java/ch/qos/logback/core/rolling/SizeAndTimeBasedFileNamingAndTriggeringPolicyTest.java Fri Jul 31 21:30:53 2009 @@ -146,7 +146,6 @@ fileSize = 0; return; } - } void addExpectedFileName(String testId, Date date, int fileIndexCounter,
participants (1)
-
noreply.ceki@qos.ch