From f07fd1156bae4bbbb25aa220e0f69a2b299a6bdf Mon Sep 17 00:00:00 2001 From: Martin Ritchie Date: Thu, 1 Oct 2009 11:07:07 +0000 Subject: QPID-2121 : Noticed that the logging level for the test VM was being set directly. This will result in all subsequent tests having WARN logging. Added new setLoggerLevel method to QTC to allow the setting of a Log4j logger level for a given test run. Reverting the changes when the test is complete git-svn-id: https://svn.apache.org/repos/asf/qpid/trunk@820606 13f79535-47bb-0310-9956-ffa450edef68 --- .../org/apache/qpid/server/BrokerStartupTest.java | 15 +++++---- .../org/apache/qpid/test/utils/QpidTestCase.java | 38 ++++++++++++++++++++++ 2 files changed, 46 insertions(+), 7 deletions(-) (limited to 'qpid') diff --git a/qpid/java/systests/src/main/java/org/apache/qpid/server/BrokerStartupTest.java b/qpid/java/systests/src/main/java/org/apache/qpid/server/BrokerStartupTest.java index 323bc33f61..e7975f8d24 100644 --- a/qpid/java/systests/src/main/java/org/apache/qpid/server/BrokerStartupTest.java +++ b/qpid/java/systests/src/main/java/org/apache/qpid/server/BrokerStartupTest.java @@ -78,15 +78,16 @@ public class BrokerStartupTest extends AbstractTestLogging // Add an invalid value _broker += " -l invalid"; - // The release-bin build of the broker uses this log4j configuration - // so set up the broker environment to use it for this test. - // Also include -Dlog4j.debug so we can validate that it picked up this config - setBrokerEnvironment("QPID_OPTS", "-Dlog4j.debug -Dlog4j.configuration=file:" + System.getProperty(QPID_HOME) + "/../broker/src/main/java/log4j.properties"); + // The broker has a built in default log4j configuration set up + // so if the the broker cannot load the -l value it will use default + // use this default. Test that this is correctly loaded, by + // including -Dlog4j.debug so we can validate. + setBrokerEnvironment("QPID_OPTS", "-Dlog4j.debug"); // Disable all client logging so we can test for broker DEBUG only. - Logger.getRootLogger().setLevel(Level.WARN); - Logger.getLogger("qpid.protocol").setLevel(Level.WARN); - Logger.getLogger("org.apache.qpid").setLevel(Level.WARN); + setLoggerLevel(Logger.getRootLogger(), Level.WARN); + setLoggerLevel(Logger.getLogger("qpid.protocol"), Level.WARN); + setLoggerLevel(Logger.getLogger("org.apache.qpid"), Level.WARN); // Set the broker to use info level logging, which is the qpid-server // default. Rather than debug which is the test default. diff --git a/qpid/java/systests/src/main/java/org/apache/qpid/test/utils/QpidTestCase.java b/qpid/java/systests/src/main/java/org/apache/qpid/test/utils/QpidTestCase.java index 0f2a6cdca0..666c97c9de 100644 --- a/qpid/java/systests/src/main/java/org/apache/qpid/test/utils/QpidTestCase.java +++ b/qpid/java/systests/src/main/java/org/apache/qpid/test/utils/QpidTestCase.java @@ -32,6 +32,7 @@ import org.apache.qpid.server.registry.ApplicationRegistry; import org.apache.qpid.server.registry.ConfigurationFileApplicationRegistry; import org.apache.qpid.server.store.DerbyMessageStore; import org.apache.qpid.url.URLSyntaxException; +import org.apache.log4j.Level; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -76,6 +77,7 @@ public class QpidTestCase extends TestCase private Map _propertiesSetForTestOnly = new HashMap(); private Map _propertiesSetForBroker = new HashMap(); + private Map _loggerLevelSetForTest = new HashMap(); private XMLConfiguration _testConfiguration = new XMLConfiguration(); @@ -192,6 +194,7 @@ public class QpidTestCase extends TestCase /** Map to hold test defined environment properties */ private Map _env; protected static final String INDEX = "index"; + ; public QpidTestCase(String name) { @@ -817,6 +820,40 @@ public class QpidTestCase extends TestCase _env.put(property, value); } + /** + * Adjust the VMs Log4j Settings just for this test run + * + * @param logger the logger to change + * @param level the level to set + */ + protected void setLoggerLevel(org.apache.log4j.Logger logger, Level level) + { + assertNotNull("Cannot set level of null logger", logger); + assertNotNull("Cannot set Logger("+logger.getName()+") to null level.",level); + + if (!_loggerLevelSetForTest.containsKey(logger)) + { + // Record the current value so we can revert it later. + _loggerLevelSetForTest.put(logger, logger.getLevel()); + } + + logger.setLevel(level); + } + + /** + * Restore the logging levels defined by this test. + */ + protected void revertLoggingLevels() + { + for (org.apache.log4j.Logger logger : _loggerLevelSetForTest.keySet()) + { + logger.setLevel(_loggerLevelSetForTest.get(logger)); + } + + _loggerLevelSetForTest.clear(); + + } + /** * Check whether the broker is an 0.8 * @@ -991,6 +1028,7 @@ public class QpidTestCase extends TestCase } revertSystemProperties(); + revertLoggingLevels(); } /** -- cgit v1.2.1