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&uuml;lc&uuml;</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&uuml;lc&uuml;</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&uuml;lc&uuml;</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&uuml;lc&uuml;</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