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 mw...@apache.org on 2005/01/30 07:41:16 UTC

cvs commit: logging-log4j/tests/src/java/org/apache/log4j/watchdog FileWatchdogTestCase.java

mwomack     2005/01/29 22:41:16

  Modified:    tests    build.xml
  Added:       tests/input/watchdog watchdog.FileWatchdog.test1_1.xml
                        watchdog.FileWatchdog.test1_2.xml
               tests/src/java/org/apache/log4j/watchdog
                        FileWatchdogTestCase.java
  Log:
  Added test case for FileWatchdog.
  
  Revision  Changes    Path
  1.96      +8 -0      logging-log4j/tests/build.xml
  
  Index: build.xml
  ===================================================================
  RCS file: /home/cvs/logging-log4j/tests/build.xml,v
  retrieving revision 1.95
  retrieving revision 1.96
  diff -u -r1.95 -r1.96
  --- build.xml	27 Jan 2005 19:25:08 -0000	1.95
  +++ build.xml	30 Jan 2005 06:41:16 -0000	1.96
  @@ -487,6 +487,14 @@
       </junit>
     </target>
   
  +  <target name="FileWatchdog" 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.watchdog.FileWatchdogTestCase" />
  +    </junit>
  +  </target>
  +
     <target name="FileNamePattern" depends="check, build, cleanOutputDir">
       <junit printsummary="yes" fork="yes" haltonfailure="yes">
         <classpath refid="tests.classpath"/>
  
  
  
  1.1                  logging-log4j/tests/input/watchdog/watchdog.FileWatchdog.test1_1.xml
  
  Index: watchdog.FileWatchdog.test1_1.xml
  ===================================================================
  <?xml version="1.0" encoding="UTF-8" ?>
  <!DOCTYPE log4j:configuration >
  
  <log4j:configuration xmlns:log4j="http://logging.apache.org/">
  
    <appender name="A1" class="org.apache.log4j.FileAppender">
    
      <param name="Append" value="true" />
      <param name="File"   value="output/watchdog.FileWatchdog.test1.txt" />
      
      <layout class="org.apache.log4j.PatternLayout">
        <param name="ConversionPattern" value="%p - %m\n"/>
      </layout>
    </appender>
    
    <logger name="org.apache.log4j.watchdog.FileWatchdogTestCase">
      <level value="debug"/>
    </logger>
    
    <root>
      <appender-ref ref="A1" />	       
      <level value="warn" />
    </root>
    
  </log4j:configuration>
  
  
  
  1.1                  logging-log4j/tests/input/watchdog/watchdog.FileWatchdog.test1_2.xml
  
  Index: watchdog.FileWatchdog.test1_2.xml
  ===================================================================
  <?xml version="1.0" encoding="UTF-8" ?>
  <!DOCTYPE log4j:configuration >
  
  <log4j:configuration xmlns:log4j="http://logging.apache.org/">
  
    <appender name="A1" class="org.apache.log4j.FileAppender">
    
      <param name="Append" value="true" />
      <param name="File"   value="output/watchdog.FileWatchdog.test1.txt" />
      
      <layout class="org.apache.log4j.PatternLayout">
        <param name="ConversionPattern" value="%p - %m\n"/>
      </layout>
    </appender>
    
    <logger name="org.apache.log4j.watchdog.FileWatchdogTestCase">
      <level value="info"/>
    </logger>
    
    <root>
      <appender-ref ref="A1" />	       
      <level value="warn" />
    </root>
    
  </log4j:configuration>
  
  
  
  1.1                  logging-log4j/tests/src/java/org/apache/log4j/watchdog/FileWatchdogTestCase.java
  
  Index: FileWatchdogTestCase.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.watchdog;
  
  import java.io.File;
  import java.io.FileInputStream;
  import java.io.FileOutputStream;
  import java.net.URL;
  
  import junit.framework.Test;
  import junit.framework.TestCase;
  import junit.framework.TestSuite;
  
  import org.apache.log4j.LogManager;
  import org.apache.log4j.Logger;
  import org.apache.log4j.spi.Configurator;
  import org.apache.log4j.joran.JoranConfigurator;
  import org.apache.log4j.util.Compare;
  
  public class FileWatchdogTestCase extends TestCase {
  
      private Logger logger = Logger.getLogger(FileWatchdogTestCase.class);
      
      static String SOURCE_CONFIG = "input/watchdog/watchdog.FileWatchdog";
      static String FILE = "output/watchdog.FileWatchdog";
      static String WITNESS = "witness/watchdog.FileWatchdog";
  
      public FileWatchdogTestCase(String name) {
          super(name);
      }
  
      public void setUp() {
          // delete the output file if they happen to exist
          File file = new File(getOutputFile("test1"));
          file.delete();
      }
  
      private void copyFile(File src, File dst) throws Exception {
        FileInputStream in = in = new FileInputStream(src);
        FileOutputStream out = new FileOutputStream(dst);
        byte[] buffer = new byte[1024];
        int size = 0;
        do {
          size = in.read(buffer);
          if (size > 0) out.write(buffer,0,size);
        } while (size > 0);
        
        try {
          in.close();
        } catch (Exception e) {
          // don't care
        }
        
        try {
          out.close();
        } catch (Exception e) {
          // don't care
        }
      }
      
      private String getSourceConfigFile(String caseName) {
  
          return SOURCE_CONFIG + "." + caseName + ".xml";
      }
  
      private String getSourceConfigFile(String caseName, int index) {
  
          return SOURCE_CONFIG + "." + caseName + "_" + index + ".xml";
      }
  
      private String getConfigFile(String caseName) {
        
        return FILE + "." + caseName + ".xml";
      }
      
      private String getOutputFile(String caseName) {
  
        return FILE + "." + caseName + ".txt";
      }
  
      private String getWitnessFile(String caseName) {
  
        return WITNESS + "." + caseName + ".txt";
      }
      
      // basic test of plugin in standalone mode
      public void test1() throws Exception {
        
        // set up the needed file references
        File sourceFile1 = new File(getSourceConfigFile("test1", 1));
        File sourceFile2 = new File(getSourceConfigFile("test1", 2));
        assertTrue(sourceFile1.exists());
        assertTrue(sourceFile2.exists());
        
        File configFile = new File(getConfigFile("test1"));
        
        // move the first config file into place
        copyFile(sourceFile1, configFile);
        assertTrue(configFile.exists());
        
        URL configURL = new URL("file:"+configFile.getAbsolutePath());
        
        // configure environment to first config file
        Configurator configurator = new JoranConfigurator();
        configurator.doConfigure(configURL,
          LogManager.getLoggerRepository());
        
        // now watch the file for changes
        FileWatchdog watchdog = new FileWatchdog();
        watchdog.setURL(configURL);
        watchdog.setInterval(2000);
        watchdog.setConfigurator(JoranConfigurator.class.getName());
        LogManager.getLoggerRepository().getPluginRegistry().addPlugin(watchdog);
        watchdog.activateOptions();
  
        // output some test messages
        logger.debug("debug message");
        logger.info("info message");
        logger.warn("warn message");
        logger.error("error message");
        logger.fatal("fatal message");
  
        // copy over a new version of the config file
        copyFile(sourceFile2, configFile);
        
        // wait a few seconds for the watchdog to react
        Thread.currentThread().sleep(4000);
        
        // output some test messages
        logger.debug("debug message");
        logger.info("info message");
        logger.warn("warn message");
        logger.error("error message");
        logger.fatal("fatal message");
        
        /*
        assertTrue(Compare.compare(getOutputFile("test1"), 
          getWitnessFile("test1")));
        */
      }
  
      public static Test suite() {
  
          TestSuite suite = new TestSuite();
          suite.addTest(new FileWatchdogTestCase("test1"));
  
          return suite;
      }
  }
  
  
  

---------------------------------------------------------------------
To unsubscribe, e-mail: log4j-dev-unsubscribe@logging.apache.org
For additional commands, e-mail: log4j-dev-help@logging.apache.org