mwomack 2002/12/10 23:32:19 Added: tests/src/java/org/apache/log4j/plugins PluginTestCase.java Log: Added PluginTestCase. Revision Changes Path 1.1 jakarta-log4j/tests/src/java/org/apache/log4j/plugins/PluginTestCase.java Index: PluginTestCase.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.plugins; import java.io.File; import java.io.IOException; import junit.framework.TestCase; import junit.framework.TestSuite; import junit.framework.Test; import org.apache.log4j.util.Compare; import org.apache.log4j.FileAppender; import org.apache.log4j.Logger; import org.apache.log4j.Hierarchy; import org.apache.log4j.Level; import org.apache.log4j.SimpleLayout; import org.apache.log4j.PatternLayout; import org.apache.log4j.spi.LoggerRepository; import org.apache.log4j.spi.RootCategory; public class PluginTestCase extends TestCase { static String FILE = "output/plugins.PluginTestCase"; static String WITNESS = "witness/plugins.PluginTestCase"; public PluginTestCase(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 String getOutputFile(String caseName) { return FILE + "." + caseName + ".txt"; } private String getWitnessFile(String caseName) { return WITNESS + "." + caseName + ".txt"; } private void setupAppender(String caseName) throws IOException { Logger root = Logger.getRootLogger(); root.removeAllAppenders(); // set up appender FileAppender appender = new FileAppender(new SimpleLayout(), getOutputFile(caseName), false); //FileAppender appender = new FileAppender(new PatternLayout("%c{1}: %m%n"), // getOutputFile(caseName), false); root.addAppender(appender); root.setLevel(Level.DEBUG); } // basic test of plugin in standalone mode public void test1() throws Exception { String testName = "test1"; Logger logger = Logger.getLogger(testName); setupAppender(testName); PluginTester plugin1 = new PluginTester1("plugin1", 1); PluginTester plugin2 = new PluginTester1("plugin1", 2); PluginTester plugin3 = new PluginTester2("plugin1", 3); PluginTester plugin4 = new PluginTester2("plugin2", 4); PluginTester retPlugin; // test basic starting/stopping logger.info("test 1.1 - basic starting/stopping"); logger.info("starting " + plugin1.getIdentifier()); PluginRegistry.startPlugin(plugin1); logger.info("stopping " + plugin1.getIdentifier()); PluginRegistry.stopPlugin(plugin1); // test restarting and starting when already started logger.info("test 1.2 - restarting and starting when already started"); logger.info("restarting " + plugin1.getIdentifier()); PluginRegistry.startPlugin(plugin1); logger.info("restarting " + plugin1.getIdentifier() + " again"); PluginRegistry.startPlugin(plugin1); // test stopping and stopping when already stopped logger.info("test 1.3- stopping and stopping when already stopped"); logger.info("stopping " + plugin1.getIdentifier()); PluginRegistry.stopPlugin(plugin1); logger.info("stopping " + plugin1.getIdentifier() + " again"); PluginRegistry.stopPlugin(plugin1); // test starting of an "equal" plugin logger.info("test 1.4 - starting of an \"equal\" plugin"); logger.info("starting " + plugin1.getIdentifier()); retPlugin = (PluginTester)PluginRegistry.startPlugin(plugin1); logger.info("returned plugin is " + retPlugin.getIdentifier()); logger.info("starting " + plugin2.getIdentifier()); retPlugin = (PluginTester)PluginRegistry.startPlugin(plugin2); logger.info("returned plugin is " + retPlugin.getIdentifier()); logger.info("stopping " + plugin1.getIdentifier()); PluginRegistry.stopPlugin(plugin1); // test starting an "equal" plugin after original stopped logger.info("test 1.5 - starting an \"equal\" plugin after original stopped"); logger.info("starting " + plugin2.getIdentifier()); PluginRegistry.startPlugin(plugin2); logger.info("stopping " + plugin2.getIdentifier()); PluginRegistry.stopPlugin(plugin2); // test starting of an "unequal" plugin with same name logger.info("test 1.6 - starting of an \"unequal\" plugin with same name"); logger.info("starting " + plugin1.getIdentifier()); retPlugin = (PluginTester)PluginRegistry.startPlugin(plugin1); logger.info("returned plugin is " + retPlugin.getIdentifier()); logger.info("starting " + plugin3.getIdentifier()); retPlugin = (PluginTester)PluginRegistry.startPlugin(plugin3); logger.info("returned plugin is " + retPlugin.getIdentifier()); logger.info("stopping " + plugin3.getIdentifier()); PluginRegistry.stopPlugin(plugin3); // test starting of multiple plugins and stopAll logger.info("test 1.7 - starting of multiple plugins and stopAll"); logger.info("starting " + plugin1.getIdentifier()); retPlugin = (PluginTester)PluginRegistry.startPlugin(plugin1); logger.info("starting " + plugin4.getIdentifier()); retPlugin = (PluginTester)PluginRegistry.startPlugin(plugin4); logger.info("stopping all plugins"); PluginRegistry.stopAllPlugins(); logger.info("stopping all plugins again"); PluginRegistry.stopAllPlugins(); assertTrue(Compare.compare(getOutputFile(testName), getWitnessFile(testName))); } /* System.out.println("creating the sink repository"); LoggerRepository repo1 = new Hierarchy(new RootCategory(Level.DEBUG)); System.out.println("configuring the sink repository"); configurator.doConfigure("input/sink.xml",repo1); System.out.println("creating the source repository"); LoggerRepository repo2 = new Hierarchy(new RootCategory(Level.DEBUG)); System.out.println("configuring the source repository"); configurator.doConfigure("input/source.xml",repo2); System.out.println("sending messages via source loggers"); Logger logger = repo2.getLogger("repo2.logger"); logger.debug("Message 1"); logger.debug("Message 2"); logger = repo2.getLogger("repo2.logger2"); logger.debug("Message 3"); logger.debug("Message 4"); System.out.println("sending messages via sink loggers"); logger = repo1.getLogger("repo1.logger"); logger.debug("Message 5"); logger.debug("Message 6"); logger = repo1.getLogger("repo1.logger2"); logger.debug("Message 7"); logger.debug("Message 8"); Thread.currentThread().sleep(5000); repo2.shutdown(); repo1.shutdown(); */ public static Test suite() { TestSuite suite = new TestSuite(); suite.addTest(new PluginTestCase("test1")); return suite; } /** Class to test the Plugin and PluginRegistry functionality. */ private static class PluginTester extends PluginSkeleton { protected Logger logger; private boolean active = false; public int id; // test to see if the given obj "equals" this object // considered equal if same class, same name and same // repository public boolean equals(Object obj) { if (!(obj.getClass() == this.getClass())) return false; Plugin plugin = (PluginTester)obj; if (!this.getName().equals(plugin.getName())) return false; if (!this.getLoggerRepository().equals(plugin.getLoggerRepository())) return false; return true; } public synchronized boolean isActive() { logger.debug("plugin " + this.getIdentifier() + " is " + (active ? "active" : "inactive")); return active; } private synchronized boolean setActive(boolean _active) { if (active != _active) { active = _active; return true; } else { return false; } } public String getIdentifier() { return this.getName() + "-id" + id; } public void activateOptions() { if (setActive(true)) { logger.debug("plugin " + this.getIdentifier() + " activated"); } else { logger.debug("plugin " + this.getIdentifier() + " already activated"); } } public void shutdown() { if (setActive(false)) { logger.debug("plugin " + this.getIdentifier() + " shutdown"); } else { logger.debug("plugin " + this.getIdentifier() + " already shutdown"); } } } /** Class to test the Plugin and PluginRegistry functionality. */ private static class PluginTester1 extends PluginTester { public PluginTester1(String _name, int _id) { logger = Logger.getLogger(this.getClass()); setName(_name); id = _id; } } /** Class to test the Plugin and PluginRegistry functionality. */ private static class PluginTester2 extends PluginTester { public PluginTester2(String _name, int _id) { logger = Logger.getLogger(this.getClass()); setName(_name); id = _id; } } }
-- To unsubscribe, e-mail: <mailto:[EMAIL PROTECTED]> For additional commands, e-mail: <mailto:[EMAIL PROTECTED]>