You are viewing a plain text version of this content. The canonical link for it is here.
Posted to log4j-dev@logging.apache.org by ce...@apache.org on 2005/02/18 20:55:56 UTC
cvs commit: logging-log4j/tests build.xml
ceki 2005/02/18 11:55:56
Modified: src/java/org/apache/log4j WriterAppender.java
FileAppender.java
tests build.xml
Added: tests/src/java/org/apache/log4j WriterAppenderTest.java
FileAppenderTest.java ConsoleAppenderTest.java
AbstractAppenderTest.java
Log:
Various new tests for checking that various appender implementations honor the Appender interface contract.
Revision Changes Path
1.1 logging-log4j/tests/src/java/org/apache/log4j/WriterAppenderTest.java
Index: WriterAppenderTest.java
===================================================================
/*
* Copyright 1999,2004 The Apache Software Foundation.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.apache.log4j;
import java.io.CharArrayWriter;
/**
*
* Test if WriterAppender honors the Appender contract.
*
* @author <a href="http://www.qos.ch/log4j/">Ceki Gülcü</a>
*/
public class WriterAppenderTest extends AbstractAppenderTest {
protected Appender getAppender() {
return new WriterAppender();
}
Appender getConfiguredAppender() {
WriterAppender wa = new WriterAppender();
// set a bogus writer
wa.setWriter(new CharArrayWriter());
// set a bogus layout
wa.setLayout(new DummyLayout());
return wa;
}
public void testPartiallyConfiguredAppender() {
WriterAppender wa1 = new WriterAppender();
// set a bogus writer
wa1.setWriter(new CharArrayWriter());
assertFalse(wa1.isActive());
WriterAppender wa2 = new WriterAppender();
// set a bogus writer
wa2.setLayout(new DummyLayout());
assertFalse(wa2.isActive());
}
}
1.1 logging-log4j/tests/src/java/org/apache/log4j/FileAppenderTest.java
Index: FileAppenderTest.java
===================================================================
/*
* Copyright 1999,2004 The Apache Software Foundation.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.apache.log4j;
/**
*
* Test if WriterAppender honors the Appender contract.
*
* @author <a href="http://www.qos.ch/log4j/">Ceki Gülcü</a>
*/
public class FileAppenderTest extends AbstractAppenderTest {
protected Appender getAppender() {
return new FileAppender();
}
Appender getConfiguredAppender() {
FileAppender wa = new FileAppender();
wa.setFile("output/temp");
wa.setLayout(new DummyLayout());
return wa;
}
public void testPartiallyConfiguredAppender() {
FileAppender wa1 = new FileAppender();
wa1.setFile("output/temp");
assertFalse(wa1.isActive());
FileAppender wa2 = new FileAppender();
wa2.setLayout(new DummyLayout());
assertFalse(wa2.isActive());
}
}
1.1 logging-log4j/tests/src/java/org/apache/log4j/ConsoleAppenderTest.java
Index: ConsoleAppenderTest.java
===================================================================
/*
* Copyright 1999,2004 The Apache Software Foundation.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.apache.log4j;
/**
* Test if ConsoleAppender honors the Appender contract.
*
* @author <a href="http://www.qos.ch/log4j/">Ceki Gülcü</a>
*
*/
public class ConsoleAppenderTest extends AbstractAppenderTest {
protected Appender getAppender() {
return new ConsoleAppender();
}
Appender getConfiguredAppender() {
ConsoleAppender ca = new ConsoleAppender();
// set a bogus layout
ca.setLayout(new DummyLayout());
return ca;
}
public void testPartiallyConfiguredAppender() {
ConsoleAppender wa1 = new ConsoleAppender();
assertFalse(wa1.isActive());
}
}
1.1 logging-log4j/tests/src/java/org/apache/log4j/AbstractAppenderTest.java
Index: AbstractAppenderTest.java
===================================================================
/*
* Copyright 1999,2004 The Apache Software Foundation.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.apache.log4j;
import java.io.Writer;
import org.apache.log4j.spi.LoggingEvent;
import junit.framework.Test;
import junit.framework.TestCase;
import junit.framework.TestSuite;
/**
* An abstract test case which can be subclassed to derived to check the
* certain (limited) aspects of Appender implementations.
*
* @author <a href="http://www.qos.ch/log4j/">Ceki Gülcü</a>
*
*/
abstract public class AbstractAppenderTest extends TestCase {
abstract protected Appender getAppender();
abstract Appender getConfiguredAppender();
class DummyLayout extends Layout {
public void format(Writer output, LoggingEvent event) {}
public void activateOptions() {}
}
public void testNewAppender() {
// new appenders whould be inactive
Appender appender = getAppender();
assertFalse(appender.isActive());
assertFalse(appender.isClosed());
appender.close();
assertTrue(appender.isClosed());
}
public void testConfiguredAppender() {
Appender appender = getConfiguredAppender();
appender.activate();
assertTrue(appender.isActive());
assertFalse(appender.isClosed());
appender.close();
assertTrue(appender.isClosed());
}
public static Test suite() {
TestSuite suite = new TestSuite();
suite.addTestSuite(WriterAppenderTest.class);
suite.addTestSuite(ConsoleAppenderTest.class);
suite.addTestSuite(FileAppenderTest.class);
return suite;
}
}
1.31 +9 -1 logging-log4j/src/java/org/apache/log4j/WriterAppender.java
Index: WriterAppender.java
===================================================================
RCS file: /home/cvs/logging-log4j/src/java/org/apache/log4j/WriterAppender.java,v
retrieving revision 1.30
retrieving revision 1.31
diff -u -r1.30 -r1.31
--- WriterAppender.java 18 Feb 2005 17:23:44 -0000 1.30
+++ WriterAppender.java 18 Feb 2005 19:55:55 -0000 1.31
@@ -126,12 +126,20 @@
* activates this appender.
*/
public void activate() {
+ int errors = 0;
if (this.layout == null) {
getLogger().error(
"No layout set for the appender named [{}].", name);
+ errors++;
}
- if(this.writer != null) {
+ if(this.writer == null) {
+ getLogger().error("No writer set for the appender named [{}].", name);
+ errors++;
+ }
+
+ // only error free appenders should be activated
+ if(errors == 0) {
super.activate();
}
}
1.51 +7 -3 logging-log4j/src/java/org/apache/log4j/FileAppender.java
Index: FileAppender.java
===================================================================
RCS file: /home/cvs/logging-log4j/src/java/org/apache/log4j/FileAppender.java,v
retrieving revision 1.50
retrieving revision 1.51
diff -u -r1.50 -r1.51
--- FileAppender.java 18 Feb 2005 17:23:44 -0000 1.50
+++ FileAppender.java 18 Feb 2005 19:55:55 -0000 1.51
@@ -145,19 +145,23 @@
@since 0.8.1 */
public void activate() {
+ int errors = 0;
if (fileName != null) {
try {
setFile(fileName, fileAppend, bufferedIO, bufferSize);
} catch (java.io.IOException e) {
+ errors++;
getLogger().error(
"setFile(" + fileName + "," + fileAppend + ") call failed.", e);
}
} else {
- //LogLog.error("File option not set for appender ["+name+"].");
- getLogger().warn("File option not set for appender [{}].", name);
+ errors++;
+ getLogger().error("File option not set for appender [{}].", name);
getLogger().warn("Are you using FileAppender instead of ConsoleAppender?");
}
- super.activate();
+ if(errors == 0) {
+ super.activate();
+ }
}
/**
1.99 +11 -2 logging-log4j/tests/build.xml
Index: build.xml
===================================================================
RCS file: /home/cvs/logging-log4j/tests/build.xml,v
retrieving revision 1.98
retrieving revision 1.99
diff -u -r1.98 -r1.99
--- build.xml 18 Feb 2005 17:23:45 -0000 1.98
+++ build.xml 18 Feb 2005 19:55:56 -0000 1.99
@@ -167,7 +167,8 @@
<!-- created witness file. -->
<!-- ================================================================= -->
- <target name="regression" depends="Minimum, Logger, DOM, CustomLevel,
+ <target name="regression" depends="Minimum, Logger, AppenderContract,
+ DOM, CustomLevel,
CustomLogger, PatternLayout,
HierarchyThreshold, DefaultInit,
SocketServer,
@@ -265,7 +266,15 @@
<test name="org.apache.log4j.LoggerTest" />
</junit>
</target>
-
+
+ <target name="AppenderContract" depends="check, build, cleanOutputDir">
+ <junit printsummary="yes" fork="yes" haltonfailure="yes">
+ <classpath refid="tests.classpath"/>
+ <formatter type="plain" usefile="false"/>
+ <test name="org.apache.log4j.AbstractAppenderTest" />
+ </junit>
+ </target>
+
<target name="PatternLayout" depends="check, build, cleanOutputDir">
<junit printsummary="yes" fork="yes" haltonfailure="${haltonfailure}">
<classpath refid="tests.classpath"/>
---------------------------------------------------------------------
To unsubscribe, e-mail: log4j-dev-unsubscribe@logging.apache.org
For additional commands, e-mail: log4j-dev-help@logging.apache.org