ceki 02/02/18 13:43:32 Modified: src/java/org/apache/log4j DailyRollingFileAppender.java src/java/org/apache/log4j/spi LoggingEvent.java src/java/org/apache/log4j/test runAll src/java/org/apache/log4j/test/xml domTest11.xml domTest12.xml tests build.xml tests/src/java/org/apache/log4j/xml DOMTestCase.java Added: tests/resources L7D_en_US.properties L7D_fr.properties L7D_fr_CH.properties tests/src/java/org/apache/log4j DRFATestCase.java LoggerTestCase.java tests/src/java/org/apache/log4j/helpers CyclicBufferTestCase.java tests/src/java/org/apache/log4j/or ORTestCase.java tests/src/java/org/apache/log4j/util AbsoluteTDFFilter.java Removed: src/java/org/apache/log4j/test Min.java UnitTestCyclicBuffer.java UnitTestDRFA.java UnitTestLogger.java UnitTestOR.java minreg unitTest src/java/org/apache/log4j/test/witness simple.minreg ttcc.minreg Log: More of the same, that is more test cases. Also moving UnitTests from src/java/org/apache/log4j/test/ to tests/src/java/org/apache/log4j/**. Revision Changes Path 1.18 +13 -6 jakarta-log4j/src/java/org/apache/log4j/DailyRollingFileAppender.java Index: DailyRollingFileAppender.java =================================================================== RCS file: /home/cvs/jakarta-log4j/src/java/org/apache/log4j/DailyRollingFileAppender.java,v retrieving revision 1.17 retrieving revision 1.18 diff -u -r1.17 -r1.18 --- DailyRollingFileAppender.java 14 Aug 2001 21:00:34 -0000 1.17 +++ DailyRollingFileAppender.java 18 Feb 2002 21:43:31 -0000 1.18 @@ -250,17 +250,24 @@ } + // This method computes the roll over period by looping over the + // periods, starting with the shortest, and stopping when the r0 is + // different from from r1, where r0 is the epoch formatted according + // the datePattern and r1 is the epoch+nextMillis(i) formatted + // according to the datePattern. + int computeCheckPeriod() { - RollingCalendar c = new RollingCalendar(); + RollingCalendar rollingCalendar = new RollingCalendar(); // set sate to 1970-01-01 00:00:00 GMT Date epoch = new Date(0); if(datePattern != null) { for(int i = TOP_OF_MINUTE; i <= TOP_OF_MONTH; i++) { - String r0 = sdf.format(epoch); - c.setType(i); - Date next = new Date(c.getNextCheckMillis(epoch)); - String r1 = sdf.format(next); - //LogLog.debug("Type = "+i+", r0 = "+r0+", r1 = "+r1); + SimpleDateFormat simpleDateFormat = new SimpleDateFormat(datePattern); + String r0 = simpleDateFormat.format(epoch); + rollingCalendar.setType(i); + Date next = new Date(rollingCalendar.getNextCheckMillis(epoch)); + String r1 = simpleDateFormat.format(next); + //System.out.println("Type = "+i+", r0 = "+r0+", r1 = "+r1); if(r0 != null && r1 != null && !r0.equals(r1)) { return i; } 1.25 +27 -1 jakarta-log4j/src/java/org/apache/log4j/spi/LoggingEvent.java Index: LoggingEvent.java =================================================================== RCS file: /home/cvs/jakarta-log4j/src/java/org/apache/log4j/spi/LoggingEvent.java,v retrieving revision 1.24 retrieving revision 1.25 diff -u -r1.24 -r1.25 --- LoggingEvent.java 21 Jan 2002 23:07:12 -0000 1.24 +++ LoggingEvent.java 18 Feb 2002 21:43:31 -0000 1.25 @@ -128,9 +128,35 @@ if(throwable != null) { this.throwableInfo = new ThrowableInformation(throwable); } - timeStamp = System.currentTimeMillis(); } + + /** + Instantiate a LoggingEvent from the supplied parameters. + + <p>Except {@link #timeStamp} all the other fields of + <code>LoggingEvent</code> are filled when actually needed. + <p> + @param category The category of this event. + @param timeStamp the timestamp of this logging event + @param level The level of this event. + @param message The message of this event. + @param throwable The throwable of this event. */ + public LoggingEvent(String fqnOfCategoryClass, Category logger, + long timeStamp, Priority priority, Object message, + Throwable throwable) { + this.fqnOfCategoryClass = fqnOfCategoryClass; + this.logger = logger; + this.categoryName = logger.getName(); + this.level = priority; + this.message = message; + if(throwable != null) { + this.throwableInfo = new ThrowableInformation(throwable); + } + + this.timeStamp = timeStamp; + } + /** 1.13 +1 -5 jakarta-log4j/src/java/org/apache/log4j/test/runAll Index: runAll =================================================================== RCS file: /home/cvs/jakarta-log4j/src/java/org/apache/log4j/test/runAll,v retrieving revision 1.12 retrieving revision 1.13 diff -u -r1.12 -r1.13 --- runAll 4 Oct 2001 21:07:04 -0000 1.12 +++ runAll 18 Feb 2002 21:43:31 -0000 1.13 @@ -5,8 +5,6 @@ deleteFile log4j.properties -./minreg simple || die "minreg simple FAILED."; -./minreg ttcc || die "minreg ttcc FAILED."; ./shallow || die "shallow test FAILED." ./defaultInit || die "defaultInit test FAILED." ./propConfig || die "propConfig test FAILED." @@ -20,6 +18,4 @@ ./mycat || die "mycat test FAILED." ./l7d || die "L7D test FAILED." ./fqcn || die "FQCN test FAILED." -./extSupport || die "Extension support test FAILED." - -./unitTest || die "unit test FAILED." +#./extSupport || die "Extension support test FAILED." 1.2 +21 -19 jakarta-log4j/src/java/org/apache/log4j/test/xml/domTest11.xml Index: domTest11.xml =================================================================== RCS file: /home/cvs/jakarta-log4j/src/java/org/apache/log4j/test/xml/domTest11.xml,v retrieving revision 1.1 retrieving revision 1.2 diff -u -r1.1 -r1.2 --- domTest11.xml 4 Oct 2001 20:57:57 -0000 1.1 +++ domTest11.xml 18 Feb 2002 21:43:31 -0000 1.2 @@ -4,23 +4,25 @@ <log4j:configuration xmlns:log4j='http://jakarta.apache.org/log4j/' configDebug="true"> - <appender name="TEMP" class="org.apache.log4j.FileAppender"> - <param name="Append" value="false" /> - <param name="File" value="temp" /> - <layout class="org.apache.log4j.PatternLayout"> - <param name="ConversionPattern" - value="%-5p %c{2} - %m\n"/> - </layout> - - <filter class="org.apache.log4j.varia.PriorityMatchFilter"> - <param name="PriorityToMatch" value="WARN" /> - <param name="AcceptOnMatch" value="true" /> - </filter> - - - </appender> - - <root> - <appender-ref ref="TEMP" /> - </root> + <appender name="TEMP" class="org.apache.log4j.FileAppender"> + <param name="Append" value="false" /> + <param name="File" value="temp" /> + <layout class="org.apache.log4j.PatternLayout"> + <param name="ConversionPattern" + value="%-5p %c{2} - %m\n"/> + </layout> + + <filter class="org.apache.log4j.varia.LevelMatchFilter"> + <param name="LevelToMatch" value="WARN" /> + <param name="AcceptOnMatch" value="true" /> + </filter> + + + <filter class="org.apache.log4j.varia.DenyAllFilter"/> + + </appender> + + <root> + <appender-ref ref="TEMP" /> + </root> </log4j:configuration> 1.2 +17 -18 jakarta-log4j/src/java/org/apache/log4j/test/xml/domTest12.xml Index: domTest12.xml =================================================================== RCS file: /home/cvs/jakarta-log4j/src/java/org/apache/log4j/test/xml/domTest12.xml,v retrieving revision 1.1 retrieving revision 1.2 diff -u -r1.1 -r1.2 --- domTest12.xml 4 Oct 2001 20:57:57 -0000 1.1 +++ domTest12.xml 18 Feb 2002 21:43:31 -0000 1.2 @@ -4,22 +4,21 @@ <log4j:configuration xmlns:log4j='http://jakarta.apache.org/log4j/' configDebug="true"> - <appender name="TEMP" class="org.apache.log4j.FileAppender"> - <param name="Append" value="false" /> - <param name="File" value="temp" /> - <layout class="org.apache.log4j.PatternLayout"> - <param name="ConversionPattern" - value="%-5p %c{2} - %m\n"/> - </layout> - <filter class="org.apache.log4j.varia.PriorityMatchFilter"> - <param name="PriorityToMatch" value="WARN" /> - <param name="AcceptOnMatch" value="false" /> - </filter> - - - </appender> - - <root> - <appender-ref ref="TEMP" /> - </root> + <appender name="TEMP" class="org.apache.log4j.FileAppender"> + <param name="Append" value="false" /> + <param name="File" value="temp" /> + <layout class="org.apache.log4j.PatternLayout"> + <param name="ConversionPattern" + value="%-5p %c{2} - %m\n"/> + </layout> + <filter class="org.apache.log4j.varia.LevelMatchFilter"> + <param name="LevelToMatch" value="WARN" /> + <param name="AcceptOnMatch" value="false" /> + </filter> + + </appender> + + <root> + <appender-ref ref="TEMP" /> + </root> </log4j:configuration> 1.4 +39 -7 jakarta-log4j/tests/build.xml Index: build.xml =================================================================== RCS file: /home/cvs/jakarta-log4j/tests/build.xml,v retrieving revision 1.3 retrieving revision 1.4 diff -u -r1.3 -r1.4 --- build.xml 18 Feb 2002 19:16:52 -0000 1.3 +++ build.xml 18 Feb 2002 21:43:31 -0000 1.4 @@ -31,6 +31,7 @@ <pathelement location="${project.classes.home}"/> <pathelement location="${tests.source.home}"/> <pathelement location="./classes"/> + <pathelement location="./resources"/> <pathelement location="${jakarta.oro.jar}"/> </path> @@ -82,22 +83,29 @@ </target> - <target name="run" depends="Minimum, OptionConverter, BoundedFIFO, - DOM, CustomLevel"/> + <target name="run" depends="Minimum, Logger, OptionConverter, BoundedFIFO, + DOM, CustomLevel, CyclicBuffer, OR, DRFA"/> <target name="Minimum" depends="build"> <junit printsummary="yes" fork="yes" haltonfailure="yes"> <classpath refid="tests.classpath"/> - <formatter type="plain" /> + <formatter type="plain" usefile="false" /> <test name="org.apache.log4j.MinimumTestCase" /> </junit> </target> + <target name="Logger" depends="build"> + <junit printsummary="yes" fork="yes" haltonfailure="yes"> + <classpath refid="tests.classpath"/> + <formatter type="plain" usefile="false"/> + <test name="org.apache.log4j.LoggerTestCase" /> + </junit> + </target> <target name="DOM" depends="build"> <junit printsummary="yes" fork="yes" haltonfailure="yes"> <classpath refid="tests.classpath"/> - <formatter type="plain" /> + <formatter type="plain" usefile="false"/> <test name="org.apache.log4j.xml.DOMTestCase" /> </junit> </target> @@ -105,7 +113,7 @@ <target name="CustomLevel" depends="build"> <junit printsummary="yes" fork="yes" haltonfailure="yes"> <classpath refid="tests.classpath"/> - <formatter type="plain" /> + <formatter type="plain" usefile="false" /> <test name="org.apache.log4j.xml.CustomLevelTestCase" /> </junit> </target> @@ -113,7 +121,7 @@ <target name="OptionConverter" depends="build"> <junit printsummary="yes" fork="yes" haltonfailure="yes"> <classpath refid="tests.classpath"/> - <formatter type="plain" /> + <formatter type="plain" usefile="false"/> <test name="org.apache.log4j.helpers.OptionConverterTestCase" /> </junit> </target> @@ -121,8 +129,32 @@ <target name="BoundedFIFO" depends="build"> <junit printsummary="yes" fork="yes" haltonfailure="yes"> <classpath refid="tests.classpath"/> - <formatter type="plain" /> + <formatter type="plain" usefile="false"/> <test name="org.apache.log4j.helpers.BoundedFIFOTestCase" /> + </junit> + </target> + + <target name="CyclicBuffer" depends="build"> + <junit printsummary="yes" fork="yes" haltonfailure="yes"> + <classpath refid="tests.classpath"/> + <formatter type="plain" usefile="false"/> + <test name="org.apache.log4j.helpers.CyclicBufferTestCase" /> + </junit> + </target> + + <target name="DRFA" depends="build"> + <junit printsummary="yes" fork="yes" haltonfailure="yes"> + <classpath refid="tests.classpath"/> + <formatter type="plain" usefile="false"/> + <test name="org.apache.log4j.DRFATestCase" /> + </junit> + </target> + + <target name="OR" depends="build"> + <junit printsummary="yes" fork="yes" haltonfailure="yes"> + <classpath refid="tests.classpath"/> + <formatter type="plain" usefile="false"/> + <test name="org.apache.log4j.or.ORTestCase" /> </junit> </target> 1.1 jakarta-log4j/tests/resources/L7D_en_US.properties Index: L7D_en_US.properties =================================================================== test=This is the English, US test. hello_world=Hello world. msg1=This is test number {0} with string argument {1}. 1.1 jakarta-log4j/tests/resources/L7D_fr.properties Index: L7D_fr.properties =================================================================== test=Ceci est le test en francais pour la France. hello_world=Bonjour la France. msg1=Ceci est le test numero {0} contenant l''argument {1}. 1.1 jakarta-log4j/tests/resources/L7D_fr_CH.properties Index: L7D_fr_CH.properties =================================================================== test=Ceci est le test en francais pour la p'tite Suisse. hello world=Salut le monde. 1.1 jakarta-log4j/tests/src/java/org/apache/log4j/DRFATestCase.java Index: DRFATestCase.java =================================================================== /* * Copyright (C) The Apache Software Foundation. All rights reserved. * * This software is published under the terms of the Apache Software * License version 1.1, a copy of which has been included with this * distribution in the LICENSE.APL file. */ // Altough located under org/apache/log4j/test, org.apache.log4j is // the correct package. package org.apache.log4j; import java.util.Calendar; import java.util.Date; import java.util.TimeZone; import junit.framework.TestCase; import junit.framework.TestSuite; import junit.framework.TestFailure; import junit.framework.Test; import org.apache.log4j.*; public class DRFATestCase extends TestCase { public DRFATestCase(String name) { super(name); } public void testComputeCheckPeriod() { DailyRollingFileAppender drfa = new DailyRollingFileAppender(); drfa.setName("testComputeCheckPeriod"); drfa.setDatePattern("yyyy-MM-dd.'log'"); drfa.activateOptions(); int x = drfa.computeCheckPeriod(); int y = DailyRollingFileAppender.TOP_OF_DAY; assertEquals(drfa.computeCheckPeriod(), DailyRollingFileAppender.TOP_OF_DAY); drfa.setDatePattern("yyyy-MM-dd mm.'log'"); assertEquals(drfa.computeCheckPeriod(), DailyRollingFileAppender.TOP_OF_MINUTE); drfa.setDatePattern("yyyy-MM-dd a.'log'"); assertEquals(drfa.computeCheckPeriod(), DailyRollingFileAppender.HALF_DAY); drfa.setDatePattern("yyyy-MM-dd HH.'log'"); assertEquals(drfa.computeCheckPeriod(), DailyRollingFileAppender.TOP_OF_HOUR); drfa.setDatePattern("yyyy-MM.'log'"); assertEquals(drfa.computeCheckPeriod(), DailyRollingFileAppender.TOP_OF_MONTH); drfa.setDatePattern("'log'HH'log'"); assertEquals(drfa.computeCheckPeriod(), DailyRollingFileAppender.TOP_OF_HOUR); } public void testRC1() { RollingCalendar rc = new RollingCalendar(); rc.setType(DailyRollingFileAppender.TOP_OF_DAY); Calendar c = Calendar.getInstance(); // jan, mar, may, july, aug, oct, dec have 31 days int [] M31 = {0,2,4,6,7,9,11}; for(int i = 0; i < M31.length; i ++) { for(int d = 1; d <=31; d++) { for(int h = 0; h < 23; h++) { c.clear(); c.set(Calendar.YEAR, 20); c.set(Calendar.MONTH, Calendar.JANUARY + M31[i]); c.set(Calendar.DAY_OF_MONTH, d); c.set(Calendar.HOUR_OF_DAY, h); c.set(Calendar.MINUTE, 10); c.set(Calendar.SECOND, 10); c.set(Calendar.MILLISECOND, 88); c.setTime(rc.getNextCheckDate(c.getTime())); if(d == 31) { assertEquals(c.get(Calendar.MONTH),(Calendar.JANUARY+M31[i]+1)%12); assertEquals(c.get(Calendar.DAY_OF_MONTH), 1); } else { assertEquals(c.get(Calendar.MONTH), Calendar.JANUARY+M31[i]); assertEquals(c.get(Calendar.DAY_OF_MONTH), d+1); } assertEquals(c.get(Calendar.HOUR_OF_DAY), 0); assertEquals(c.get(Calendar.MINUTE), 0); assertEquals(c.get(Calendar.SECOND), 0); assertEquals(c.get(Calendar.MILLISECOND), 0); } } } } public void testRC2() { RollingCalendar rc = new RollingCalendar(); rc.setType(DailyRollingFileAppender.TOP_OF_HOUR); Calendar c = Calendar.getInstance(); TimeZone tz = c.getTimeZone(); // jan, mar, may, july, aug, oct, dec have 31 days int [] M31 = {0,2,4,6,7,9,11}; for(int i = 0; i < M31.length; i ++) { System.out.println("Month = "+(M31[i]+1)); for(int d = 1; d <= 31; d++) { for(int h = 0; h < 23; h++) { for(int m = 0; m <= 59; m++) { c.clear(); c.set(Calendar.YEAR, 20); c.set(Calendar.MONTH, Calendar.JANUARY + M31[i]); c.set(Calendar.DAY_OF_MONTH, d); c.set(Calendar.HOUR_OF_DAY, h); c.set(Calendar.MINUTE, m); c.set(Calendar.SECOND, 12); c.set(Calendar.MILLISECOND, 88); boolean dltState0 = c.getTimeZone().inDaylightTime(c.getTime()); c.setTime(rc.getNextCheckDate(c.getTime())); boolean dltState1 = c.getTimeZone().inDaylightTime(c.getTime()); assertEquals(c.get(Calendar.MILLISECOND), 0); assertEquals(c.get(Calendar.SECOND), 0); assertEquals(c.get(Calendar.MINUTE), 0); if(dltState0 == dltState1) { assertEquals(c.get(Calendar.HOUR_OF_DAY), (h+1)%24); } else { // returning to standard time if(dltState0) { assertEquals(c.get(Calendar.HOUR_OF_DAY), h); } else { // switching to day light saving time //System.err.println("m="+m+", h="+h+", d="+d+", i="+i); //if(h==2) { // System.err.println(c); //} //assertEquals(c.get(Calendar.HOUR_OF_DAY), (h+2)%24); } } if(h == 23) { assertEquals(c.get(Calendar.DAY_OF_MONTH), (d+1)%32); if(d == 31) { assertEquals(c.get(Calendar.MONTH), (Calendar.JANUARY+M31[i]+1)%12); } else { assertEquals(c.get(Calendar.MONTH), Calendar.JANUARY+M31[i]); } } else { assertEquals(c.get(Calendar.DAY_OF_MONTH), d); assertEquals(c.get(Calendar.MONTH), Calendar.JANUARY+M31[i]); } } } } } } public void testRC3() { RollingCalendar rc = new RollingCalendar(); rc.setType(DailyRollingFileAppender.TOP_OF_MINUTE); int[] S = {0, 1, 5, 10, 21, 30, 59}; int[] M = {0, 1, 5, 10, 21, 30, 59}; Calendar c = Calendar.getInstance(); // jan, mar, may, july, aug, oct, dec have 31 days int [] M31 = {2,9,0,4,6,7,11}; for(int i = 0; i < M31.length; i ++) { System.out.println("Month = "+(M31[i]+1)); for(int d = 1; d <= 31; d++) { for(int h = 0; h < 23; h++) { for(int m = 0; m < M.length; m++) { for(int s = 0; s < S.length; s++) { c.clear(); c.set(Calendar.YEAR, 20); c.set(Calendar.MONTH, Calendar.JANUARY + M31[i]); c.set(Calendar.DAY_OF_MONTH, d); c.set(Calendar.HOUR_OF_DAY, h); c.set(Calendar.MINUTE, M[m]); c.set(Calendar.SECOND, S[s]); c.set(Calendar.MILLISECOND, 88); c.add(Calendar.MILLISECOND, 1); boolean dltState0 = c.getTimeZone().inDaylightTime(c.getTime()); c.setTime(rc.getNextCheckDate(c.getTime())); c.add(Calendar.MILLISECOND, 0); boolean dltState1 = c.getTimeZone().inDaylightTime(c.getTime()); assertEquals(c.get(Calendar.MILLISECOND), 0); assertEquals(c.get(Calendar.SECOND), 0); assertEquals(c.get(Calendar.MINUTE), (M[m]+1)%60); if(M[m] == 59) { if(dltState0 == dltState1) { assertEquals(c.get(Calendar.HOUR_OF_DAY), (h+1)%24); } if(h == 23) { assertEquals(c.get(Calendar.DAY_OF_MONTH), (d+1)%32); if(d == 31) { assertEquals(c.get(Calendar.MONTH), (Calendar.JANUARY+M31[i]+1)%12); } else { assertEquals(c.get(Calendar.MONTH), Calendar.JANUARY+M31[i]); } } else { assertEquals(c.get(Calendar.DAY_OF_MONTH), d); } } else { // allow discrepancies only if we are switching from std to dls time if(c.get(Calendar.HOUR_OF_DAY) != h) { c.add(Calendar.HOUR_OF_DAY, +1); boolean dltState2 = c.getTimeZone().inDaylightTime(c.getTime()); if(dltState1 == dltState2) { fail("No switch"); } } assertEquals(c.get(Calendar.DAY_OF_MONTH), d); assertEquals(c.get(Calendar.MONTH), Calendar.JANUARY+M31[i]); } } } } } } } public static Test suite() { TestSuite suite = new TestSuite(); suite.addTest(new DRFATestCase("testComputeCheckPeriod")); suite.addTest(new DRFATestCase("testRC1")); suite.addTest(new DRFATestCase("testRC2")); suite.addTest(new DRFATestCase("testRC3")); return suite; } } 1.1 jakarta-log4j/tests/src/java/org/apache/log4j/LoggerTestCase.java Index: LoggerTestCase.java =================================================================== /* * Copyright (C) The Apache Software Foundation. All rights reserved. * * This software is published under the terms of the Apache Software * License version 1.1, a copy of which has been included with this * distribution in the LICENSE.txt file. */ package org.apache.log4j; import org.apache.log4j.*; import org.apache.log4j.spi.*; import junit.framework.TestCase; import junit.framework.TestSuite; import junit.framework.Test; import java.util.Enumeration; import java.util.ResourceBundle; import java.util.Locale; /** Used for internal unit testing the Logger class. @author Ceki Gülcü */ public class LoggerTestCase extends TestCase { Logger logger; Appender a1; Appender a2; ResourceBundle rbUS; ResourceBundle rbFR; ResourceBundle rbCH; // A short message. static String MSG = "M"; public LoggerTestCase(String name) { super(name); } public void setUp() { rbUS = ResourceBundle.getBundle("L7D", new Locale("en", "US")); assertNotNull(rbUS); rbFR = ResourceBundle.getBundle("L7D", new Locale("fr", "FR")); assertNotNull("Got a null resource bundle.", rbFR); rbCH = ResourceBundle.getBundle("L7D", new Locale("fr", "CH")); assertNotNull("Got a null resource bundle.", rbCH); } public void tearDown() { // Regular users should not use the clear method lightly! //Logger.getDefaultHierarchy().clear(); BasicConfigurator.resetConfiguration(); a1 = null; a2 = null; } /** Add an appender and see if it can be retrieved. */ public void testAppender1() { logger = Logger.getLogger("test"); a1 = new FileAppender(); a1.setName("testAppender1"); logger.addAppender(a1); Enumeration enum = logger.getAllAppenders(); Appender aHat = (Appender) enum.nextElement(); assertEquals(a1, aHat); } /** Add an appender X, Y, remove X and check if Y is the only remaining appender. */ public void testAppender2() { a1 = new FileAppender(); a1.setName("testAppender2.1"); a2 = new FileAppender(); a2.setName("testAppender2.2"); logger = Logger.getLogger("test"); logger.addAppender(a1); logger.addAppender(a2); logger.removeAppender("testAppender2.1"); Enumeration enum = logger.getAllAppenders(); Appender aHat = (Appender) enum.nextElement(); assertEquals(a2, aHat); assert(!enum.hasMoreElements()); } /** Test if logger a.b inherits its appender from a. */ public void testAdditivity1() { Logger a = Logger.getLogger("a"); Logger ab = Logger.getLogger("a.b"); CountingAppender ca = new CountingAppender(); a.addAppender(ca); assertEquals(ca.counter, 0); ab.debug(MSG); assertEquals(ca.counter, 1); ab.info(MSG); assertEquals(ca.counter, 2); ab.warn(MSG); assertEquals(ca.counter, 3); ab.error(MSG); assertEquals(ca.counter, 4); } /** Test multiple additivity. */ public void testAdditivity2() { Logger a = Logger.getLogger("a"); Logger ab = Logger.getLogger("a.b"); Logger abc = Logger.getLogger("a.b.c"); Logger x = Logger.getLogger("x"); CountingAppender ca1 = new CountingAppender(); CountingAppender ca2 = new CountingAppender(); a.addAppender(ca1); abc.addAppender(ca2); assertEquals(ca1.counter, 0); assertEquals(ca2.counter, 0); ab.debug(MSG); assertEquals(ca1.counter, 1); assertEquals(ca2.counter, 0); abc.debug(MSG); assertEquals(ca1.counter, 2); assertEquals(ca2.counter, 1); x.debug(MSG); assertEquals(ca1.counter, 2); assertEquals(ca2.counter, 1); } /** Test additivity flag. */ public void testAdditivity3() { Logger root = Logger.getRootLogger(); Logger a = Logger.getLogger("a"); Logger ab = Logger.getLogger("a.b"); Logger abc = Logger.getLogger("a.b.c"); Logger x = Logger.getLogger("x"); CountingAppender caRoot = new CountingAppender(); CountingAppender caA = new CountingAppender(); CountingAppender caABC = new CountingAppender(); root.addAppender(caRoot); a.addAppender(caA); abc.addAppender(caABC); assertEquals(caRoot.counter, 0); assertEquals(caA.counter, 0); assertEquals(caABC.counter, 0); ab.setAdditivity(false); a.debug(MSG); assertEquals(caRoot.counter, 1); assertEquals(caA.counter, 1); assertEquals(caABC.counter, 0); ab.debug(MSG); assertEquals(caRoot.counter, 1); assertEquals(caA.counter, 1); assertEquals(caABC.counter, 0); abc.debug(MSG); assertEquals(caRoot.counter, 1); assertEquals(caA.counter, 1); assertEquals(caABC.counter, 1); } public void testDisable1() { CountingAppender caRoot = new CountingAppender(); Logger root = Logger.getRootLogger(); root.addAppender(caRoot); LoggerRepository h = Category.getDefaultHierarchy(); //h.disableDebug(); h.setThreshold((Level) Level.INFO); assertEquals(caRoot.counter, 0); root.debug(MSG); assertEquals(caRoot.counter, 0); root.info(MSG); assertEquals(caRoot.counter, 1); root.log(Level.WARN, MSG); assertEquals(caRoot.counter, 2); root.warn(MSG); assertEquals(caRoot.counter, 3); //h.disableInfo(); h.setThreshold((Level) Level.WARN); root.debug(MSG); assertEquals(caRoot.counter, 3); root.info(MSG); assertEquals(caRoot.counter, 3); root.log(Level.WARN, MSG); assertEquals(caRoot.counter, 4); root.error(MSG); assertEquals(caRoot.counter, 5); root.log(Level.ERROR, MSG); assertEquals(caRoot.counter, 6); //h.disableAll(); h.setThreshold(Level.OFF); root.debug(MSG); assertEquals(caRoot.counter, 6); root.info(MSG); assertEquals(caRoot.counter, 6); root.log(Level.WARN, MSG); assertEquals(caRoot.counter, 6); root.error(MSG); assertEquals(caRoot.counter, 6); root.log(Level.FATAL, MSG); assertEquals(caRoot.counter, 6); root.log(Level.FATAL, MSG); assertEquals(caRoot.counter, 6); //h.disable(Level.FATAL); h.setThreshold(Level.OFF); root.debug(MSG); assertEquals(caRoot.counter, 6); root.info(MSG); assertEquals(caRoot.counter, 6); root.log(Level.WARN, MSG); assertEquals(caRoot.counter, 6); root.error(MSG); assertEquals(caRoot.counter, 6); root.log(Level.ERROR, MSG); assertEquals(caRoot.counter, 6); root.log(Level.FATAL, MSG); assertEquals(caRoot.counter, 6); } public void testRB1() { Logger root = Logger.getRootLogger(); root.setResourceBundle(rbUS); ResourceBundle t = root.getResourceBundle(); assertSame(t, rbUS); Logger x = Logger.getLogger("x"); Logger x_y = Logger.getLogger("x.y"); Logger x_y_z = Logger.getLogger("x.y.z"); t = x.getResourceBundle(); assertSame(t, rbUS); t = x_y.getResourceBundle(); assertSame(t, rbUS); t = x_y_z.getResourceBundle(); assertSame(t, rbUS); } public void testRB2() { Logger root = Logger.getRootLogger(); root.setResourceBundle(rbUS); ResourceBundle t = root.getResourceBundle(); assertSame(t, rbUS); Logger x = Logger.getLogger("x"); Logger x_y = Logger.getLogger("x.y"); Logger x_y_z = Logger.getLogger("x.y.z"); x_y.setResourceBundle(rbFR); t = x.getResourceBundle(); assertSame(t, rbUS); t = x_y.getResourceBundle(); assertSame(t, rbFR); t = x_y_z.getResourceBundle(); assertSame(t, rbFR); } public void testRB3() { Logger root = Logger.getRootLogger(); root.setResourceBundle(rbUS); ResourceBundle t = root.getResourceBundle(); assertSame(t, rbUS); Logger x = Logger.getLogger("x"); Logger x_y = Logger.getLogger("x.y"); Logger x_y_z = Logger.getLogger("x.y.z"); x_y.setResourceBundle(rbFR); x_y_z.setResourceBundle(rbCH); t = x.getResourceBundle(); assertSame(t, rbUS); t = x_y.getResourceBundle(); assertSame(t, rbFR); t = x_y_z.getResourceBundle(); assertSame(t, rbCH); } public void testExists() { Logger a = Logger.getLogger("a"); Logger a_b = Logger.getLogger("a.b"); Logger a_b_c = Logger.getLogger("a.b.c"); Logger t; t = Logger.exists("xx"); assertNull(t); t = Logger.exists("a"); assertSame(a, t); t = Logger.exists("a.b"); assertSame(a_b, t); t = Logger.exists("a.b.c"); assertSame(a_b_c, t); } public void testHierarchy1() { Hierarchy h = new Hierarchy(new RootCategory((Level) Level.ERROR)); Logger a0 = h.getLogger("a"); assertEquals("a", a0.getName()); assertNull(a0.getLevel()); assertSame(Level.ERROR, a0.getChainedLevel()); Logger a1 = h.getLogger("a"); assertSame(a0, a1); } public static Test suite() { TestSuite suite = new TestSuite(); suite.addTest(new LoggerTestCase("testAppender1")); suite.addTest(new LoggerTestCase("testAppender2")); suite.addTest(new LoggerTestCase("testAdditivity1")); suite.addTest(new LoggerTestCase("testAdditivity2")); suite.addTest(new LoggerTestCase("testAdditivity3")); suite.addTest(new LoggerTestCase("testDisable1")); suite.addTest(new LoggerTestCase("testRB1")); suite.addTest(new LoggerTestCase("testRB2")); suite.addTest(new LoggerTestCase("testRB3")); suite.addTest(new LoggerTestCase("testExists")); suite.addTest(new LoggerTestCase("testHierarchy1")); return suite; } static private class CountingAppender extends AppenderSkeleton { int counter; CountingAppender() { counter = 0; } public void close() { } public void append(LoggingEvent event) { counter++; } public boolean requiresLayout() { return true; } } } 1.1 jakarta-log4j/tests/src/java/org/apache/log4j/helpers/CyclicBufferTestCase.java Index: CyclicBufferTestCase.java =================================================================== /* * Copyright (C) The Apache Software Foundation. All rights reserved. * * This software is published under the terms of the Apache Software * License version 1.1, a copy of which has been included with this * distribution in the LICENSE.txt file. */ // // Log4j uses the JUnit framework for internal unit testing. JUnit // available from // // http://www.junit.org package org.apache.log4j.helpers; import org.apache.log4j.spi.LoggingEvent; import org.apache.log4j.Category; import org.apache.log4j.Priority; import org.apache.log4j.helpers.CyclicBuffer; import junit.framework.TestCase; import junit.framework.TestSuite; import junit.framework.TestFailure; import junit.framework.Test; /** Unit test the {@link CyclicBuffer}. @author Ceki Gülcü */ public class CyclicBufferTestCase extends TestCase { static Category cat = Category.getInstance("x"); static int MAX = 1000; static LoggingEvent[] e = new LoggingEvent[MAX]; { for (int i = 0; i < MAX; i++) { e[i] = new LoggingEvent("", cat, Priority.DEBUG, "e"+i, null); } } public CyclicBufferTestCase(String name) { super(name); } public void setUp() { } public void test0() { int size = 2; CyclicBuffer cb = new CyclicBuffer(size); assertEquals(cb.getMaxSize(), size); cb.add(e[0]); assertEquals(cb.length(), 1); assertEquals(cb.get(), e[0]); assertEquals(cb.length(), 0); assertNull(cb.get()); assertEquals(cb.length(), 0); cb = new CyclicBuffer(size); cb.add(e[0]); cb.add(e[1]); assertEquals(cb.length(), 2); assertEquals(cb.get(), e[0]); assertEquals(cb.length(), 1); assertEquals(cb.get(), e[1]); assertEquals(cb.length(), 0); assertNull(cb.get()); assertEquals(cb.length(), 0); } /** Test a buffer of size 1,2,4,8,..,128 */ public void test1() { for(int bufSize = 1; bufSize <= 128; bufSize *=2) doTest1(bufSize); } void doTest1(int size) { //System.out.println("Doing test with size = "+size); CyclicBuffer cb = new CyclicBuffer(size); assertEquals(cb.getMaxSize(), size); for(int i = -(size+10); i < (size+10); i++) { assertNull(cb.get(i)); } for(int i = 0; i < MAX; i++) { cb.add(e[i]); int limit = i < size-1 ? i : size-1; //System.out.println("\nLimit is " + limit + ", i="+i); for(int j = limit; j >= 0; j--) { //System.out.println("i= "+i+", j="+j); assertEquals(cb.get(j), e[i-(limit-j)]); } assertNull(cb.get(-1)); assertNull(cb.get(limit+1)); } } public void testResize() { for(int isize = 1; isize <= 128; isize *=2) { doTestResize(isize, isize/2+1, isize/2+1); doTestResize(isize, isize/2+1, isize+10); doTestResize(isize, isize+10, isize/2+1); doTestResize(isize, isize+10, isize+10); } } void doTestResize(int initialSize, int numberOfAdds, int newSize) { //System.out.println("initialSize = "+initialSize+", numberOfAdds=" // +numberOfAdds+", newSize="+newSize); CyclicBuffer cb = new CyclicBuffer(initialSize); for(int i = 0; i < numberOfAdds; i++) { cb.add(e[i]); } cb.resize(newSize); int offset = numberOfAdds - initialSize; if(offset< 0) offset = 0; int len = newSize < numberOfAdds ? newSize : numberOfAdds; len = len < initialSize ? len : initialSize; //System.out.println("Len = "+len+", offset="+offset); for(int j = 0; j < len; j++) { assertEquals(cb.get(j), e[offset+j]); } } public static Test suite() { TestSuite suite = new TestSuite(); suite.addTest(new CyclicBufferTestCase("test0")); suite.addTest(new CyclicBufferTestCase("test1")); suite.addTest(new CyclicBufferTestCase("testResize")); return suite; } } 1.1 jakarta-log4j/tests/src/java/org/apache/log4j/or/ORTestCase.java Index: ORTestCase.java =================================================================== /* * Copyright (C) The Apache Software Foundation. All rights reserved. * * This software is published under the terms of the Apache Software * License version 1.1, a copy of which has been included with this * distribution in the LICENSE.txt file. */ // // Log4j uses the JUnit framework for internal unit testing. JUnit // available from // // http://www.junit.org package org.apache.log4j.or; import org.apache.log4j.spi.LoggingEvent; import org.apache.log4j.Category; import org.apache.log4j.Priority; import org.apache.log4j.or.ObjectRenderer; import org.apache.log4j.or.RendererMap; import junit.framework.TestCase; import junit.framework.TestSuite; import junit.framework.TestFailure; import junit.framework.Test; import java.io.Serializable; /** Unit test the {@link ObjectRenderer}. @author Ceki Gülcü @since 1.0 */ public class ORTestCase extends TestCase { static UTObjectRenderer aor; static UTObjectRenderer bor; static UTObjectRenderer xor; static UTObjectRenderer yor; static UTObjectRenderer oor; static UTObjectRenderer nor; static UTObjectRenderer ior; static UTObjectRenderer cor; static UTObjectRenderer sor; public ORTestCase(String name) { super(name); } public void setUp() { aor = new UTObjectRenderer("A"); bor = new UTObjectRenderer("B"); xor = new UTObjectRenderer("X"); yor = new UTObjectRenderer("Y"); oor = new UTObjectRenderer("Object"); nor = new UTObjectRenderer("Number"); ior = new UTObjectRenderer("Integer"); cor = new UTObjectRenderer("Comparable"); sor = new UTObjectRenderer("Serializable"); } // Add: no renderer // Expect: defaultRenderer public void test1() { RendererMap map = new RendererMap(); ObjectRenderer dr = map.getDefaultRenderer(); ObjectRenderer r = map.get(Integer.class); assertEquals(r, dr); } // Add: Integer renderer // Expect: Integer renderer public void test2() { RendererMap map = new RendererMap(); map.put(Integer.class, ior); ObjectRenderer r = map.get(Integer.class); assertEquals(r, ior); } // Add: Number renderer // Expect: Number public void test3() { RendererMap map = new RendererMap(); map.put(Number.class, ior); ObjectRenderer r = map.get(Integer.class); assertEquals(r, ior); } // Add: Object renderer // Result: Object public void test4() { RendererMap map = new RendererMap(); map.put(Object.class, oor); ObjectRenderer r = map.get(Integer.class); assertEquals(r, oor); } // Add: Object, Number, Integer // Expect: Integer public void test5() { RendererMap map = new RendererMap(); map.put(Object.class, oor); map.put(Number.class, nor); map.put(Integer.class, ior); ObjectRenderer r = map.get(Integer.class); assertEquals(r, ior); } // Add: Object, Number // Expect: Number public void test6() { RendererMap map = new RendererMap(); map.put(Object.class, oor); map.put(Number.class, nor); ObjectRenderer r = map.get(Integer.class); assertEquals(r, nor); } // Add: Comparable // Expect: Comparable public void test7() { RendererMap map = new RendererMap(); map.put(Comparable.class, cor); ObjectRenderer r = map.get(Integer.class); assertEquals(r, cor); } // Add: Serializable // Expect: Serializablee public void test8() { RendererMap map = new RendererMap(); map.put(Serializable.class, sor); ObjectRenderer r = map.get(Integer.class); assertEquals(r, sor); } // Add: Y // Expect: Y public void test9() { RendererMap map = new RendererMap(); map.put(Y.class, yor); ObjectRenderer r = map.get(B.class); assertEquals(r, yor); } // Add: X // Expect: X public void test10() { RendererMap map = new RendererMap(); map.put(X.class, xor); ObjectRenderer r = map.get(B.class); assertEquals(r, xor); } public static Test suite() { TestSuite suite = new TestSuite(); suite.addTest(new ORTestCase("test1")); suite.addTest(new ORTestCase("test2")); suite.addTest(new ORTestCase("test3")); suite.addTest(new ORTestCase("test4")); suite.addTest(new ORTestCase("test5")); suite.addTest(new ORTestCase("test6")); suite.addTest(new ORTestCase("test7")); suite.addTest(new ORTestCase("test8")); suite.addTest(new ORTestCase("test9")); suite.addTest(new ORTestCase("test10")); return suite; } } class UTObjectRenderer implements ObjectRenderer { String name; UTObjectRenderer(String name) { this.name = name; } public String doRender(Object o) { return name; } public String toString() { return("UTObjectRenderer: "+name); } } interface X { } interface Y extends X { } class A implements Y { } class B extends A { } 1.1 jakarta-log4j/tests/src/java/org/apache/log4j/util/AbsoluteTDFFilter.java Index: AbsoluteTDFFilter.java =================================================================== package org.apache.log4j.util; import java.io.*; import org.apache.oro.text.perl.Perl5Util; public class AbsoluteTDFFilter implements Filter { Perl5Util util = new Perl5Util(); String datePat; // 18 fevr. 2002 20:05:36,222 static public final String ADAT_PAT = "^\\d{1,2} .{2,6} 200\\d \\d{2}:\\d{2}:\\d{2},\\d{3}"; public AbsoluteTDFFilter(String datePat) { this.datePat = datePat; } public String filter(String in) { String pat = "/"+datePat+"/"; if(util.match(pat, in)) { return util.substitute("s/"+datePat+"//", in); } else { return in; } } } 1.2 +0 -2 jakarta-log4j/tests/src/java/org/apache/log4j/xml/DOMTestCase.java Index: DOMTestCase.java =================================================================== RCS file: /home/cvs/jakarta-log4j/tests/src/java/org/apache/log4j/xml/DOMTestCase.java,v retrieving revision 1.1 retrieving revision 1.2 diff -u -r1.1 -r1.2 --- DOMTestCase.java 18 Feb 2002 15:17:23 -0000 1.1 +++ DOMTestCase.java 18 Feb 2002 21:43:32 -0000 1.2 @@ -44,10 +44,8 @@ } public void setUp() { - System.out.println("===================SETUP======================"); root = Logger.getRootLogger(); logger = Logger.getLogger(DOMTestCase.class); - } public void test1() throws Exception {
-- To unsubscribe, e-mail: <mailto:[EMAIL PROTECTED]> For additional commands, e-mail: <mailto:[EMAIL PROTECTED]>