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