summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMartin Ritchie <ritchiem@apache.org>2009-09-30 15:59:27 +0000
committerMartin Ritchie <ritchiem@apache.org>2009-09-30 15:59:27 +0000
commit2e40e19674a122a7072aeaee618fc0d9a3b798e9 (patch)
treea9b4d3e06810b57dc93884c1df7dead40a2baf87
parent1a35336924f83669ec07248f20bd359b927f414d (diff)
downloadqpid-python-2e40e19674a122a7072aeaee618fc0d9a3b798e9.tar.gz
QPID-2121 : Update to QTC to allow the setting of System Properties for just the Test run or the External Broker or both.
renamed _setProperties as it was confusing. Now two maps are used _propertiesSetForTestOnly and _propertiesSetForBroker calls to setSystemProperty puts the value in to both maps so test VM and the external VM will have a system property defined to have that value. If a test is configured to run against an external broker then two new methods help control how each vm is setup. setTestClientSystemProperty is used to set a value in the TestVM that is not copied to any external VM. setBrokerOnlySystemProperty can now be used to set a System property value in the external broker VM only. As before all values are reverted at the end of the test run. git-svn-id: https://svn.apache.org/repos/asf/qpid/trunk/qpid@820323 13f79535-47bb-0310-9956-ffa450edef68
-rw-r--r--java/systests/src/main/java/org/apache/qpid/server/BrokerStartupTest.java6
-rw-r--r--java/systests/src/main/java/org/apache/qpid/server/logging/BrokerLoggingTest.java2
-rw-r--r--java/systests/src/main/java/org/apache/qpid/test/utils/QpidTestCase.java91
3 files changed, 84 insertions, 15 deletions
diff --git a/java/systests/src/main/java/org/apache/qpid/server/BrokerStartupTest.java b/java/systests/src/main/java/org/apache/qpid/server/BrokerStartupTest.java
index adb24ac9d0..323bc33f61 100644
--- a/java/systests/src/main/java/org/apache/qpid/server/BrokerStartupTest.java
+++ b/java/systests/src/main/java/org/apache/qpid/server/BrokerStartupTest.java
@@ -90,10 +90,10 @@ public class BrokerStartupTest extends AbstractTestLogging
// Set the broker to use info level logging, which is the qpid-server
// default. Rather than debug which is the test default.
- setSystemProperty("amqj.server.logging.level","info");
+ setBrokerOnlySystemProperty("amqj.server.logging.level", "info");
// Set the logging defaults to info for this test.
- setSystemProperty("amqj.logging.level","info");
- setSystemProperty("root.logging.level","info");
+ setBrokerOnlySystemProperty("amqj.logging.level", "info");
+ setBrokerOnlySystemProperty("root.logging.level", "info");
startBroker();
diff --git a/java/systests/src/main/java/org/apache/qpid/server/logging/BrokerLoggingTest.java b/java/systests/src/main/java/org/apache/qpid/server/logging/BrokerLoggingTest.java
index 4f50aba61d..b00a71315e 100644
--- a/java/systests/src/main/java/org/apache/qpid/server/logging/BrokerLoggingTest.java
+++ b/java/systests/src/main/java/org/apache/qpid/server/logging/BrokerLoggingTest.java
@@ -160,7 +160,7 @@ public class BrokerLoggingTest extends AbstractTestLogging
// Set the broker.ready string to check for the _log4j default that
// is still present on standard out.
- System.setProperty(BROKER_READY, "Qpid Broker Ready");
+ setTestClientSystemProperty(BROKER_READY, "Qpid Broker Ready");
startBroker();
diff --git a/java/systests/src/main/java/org/apache/qpid/test/utils/QpidTestCase.java b/java/systests/src/main/java/org/apache/qpid/test/utils/QpidTestCase.java
index 78c34f3f5e..4ca00cbdcc 100644
--- a/java/systests/src/main/java/org/apache/qpid/test/utils/QpidTestCase.java
+++ b/java/systests/src/main/java/org/apache/qpid/test/utils/QpidTestCase.java
@@ -74,7 +74,9 @@ public class QpidTestCase extends TestCase
protected long RECEIVE_TIMEOUT = 1000l;
- private Map<String, String> _setProperties = new HashMap<String, String>();
+ private Map<String, String> _propertiesSetForTestOnly = new HashMap<String, String>();
+ private Map<String, String> _propertiesSetForBroker = new HashMap<String, String>();
+
private XMLConfiguration _testConfiguration = new XMLConfiguration();
/**
@@ -487,21 +489,23 @@ public class QpidTestCase extends TestCase
// Add default test logging levels that are used by the log4j-test
+ // Use the convenience methods to push the current logging setting
+ // in to the external broker's QPID_OPTS string.
if (System.getProperty("amqj.protocol.logging.level") != null)
{
- setSystemProperty("amqj.protocol.logging.level", System.getProperty("amqj.protocol.logging.level"));
+ setSystemProperty("amqj.protocol.logging.level");
}
if (System.getProperty("root.logging.level") != null)
{
- setSystemProperty("root.logging.level", System.getProperty("root.logging.level"));
+ setSystemProperty("root.logging.level");
}
String QPID_OPTS = " ";
// Add all the specified system properties to QPID_OPTS
- if (!_setProperties.isEmpty())
+ if (!_propertiesSetForBroker.isEmpty())
{
- for (String key : _setProperties.keySet())
+ for (String key : _propertiesSetForBroker.keySet())
{
QPID_OPTS += "-D" + key + "=" + System.getProperty(key) + " ";
}
@@ -526,7 +530,7 @@ public class QpidTestCase extends TestCase
if (!p.await(30, TimeUnit.SECONDS))
{
- _logger.info("broker failed to become ready:" + p.getStopLine());
+ _logger.info("broker failed to become ready (" + p.ready + "):" + p.getStopLine());
//Ensure broker has stopped
process.destroy();
cleanBroker();
@@ -704,28 +708,87 @@ public class QpidTestCase extends TestCase
}
/**
+ * Set a System property that is to be applied only to the external test
+ * broker.
+ *
+ * This is a convenience method to enable the setting of a -Dproperty=value
+ * entry in QPID_OPTS
+ *
+ * This is only useful for the External Java Broker tests.
+ *
+ * @param property the property name
+ * @param value the value to set the property to
+ */
+ protected void setBrokerOnlySystemProperty(String property, String value)
+ {
+ if (!_propertiesSetForBroker.containsKey(property))
+ {
+ _propertiesSetForBroker.put(property, value);
+ }
+
+ }
+
+ /**
+ * Set a System (-D) property for this test run.
+ *
+ * This convenience method copies the current VMs System Property
+ * for the external VM Broker.
+ *
+ * @param property the System property to set
+ */
+ protected void setSystemProperty(String property)
+ {
+ setSystemProperty(property, System.getProperty(property));
+ }
+
+ /**
* Set a System property for the duration of this test.
*
* When the test run is complete the value will be reverted.
*
+ * The values set using this method will also be propogated to the external
+ * Java Broker via a -D value defined in QPID_OPTS.
+ *
+ * If the value should not be set on the broker then use
+ * setTestClientSystemProperty().
+ *
* @param property the property to set
* @param value the new value to use
*/
protected void setSystemProperty(String property, String value)
{
- if (!_setProperties.containsKey(property))
+ // Record the value for the external broker
+ _propertiesSetForBroker.put(property, value);
+
+ //Set the value for the test client vm aswell.
+ setTestClientSystemProperty(property, value);
+ }
+
+ /**
+ * Set a System (-D) property for the external Broker of this test.
+ *
+ * @param property The property to set
+ * @param value the value to set it to.
+ */
+ protected void setTestClientSystemProperty(String property, String value)
+ {
+ if (!_propertiesSetForTestOnly.containsKey(property))
{
- _setProperties.put(property, System.getProperty(property));
- }
+ // Record the current value so we can revert it later.
+ _propertiesSetForTestOnly.put(property, System.getProperty(property));
+ }
System.setProperty(property, value);
}
+ /**
+ * Restore the System property values that were set before this test run.
+ */
protected void revertSystemProperties()
{
- for (String key : _setProperties.keySet())
+ for (String key : _propertiesSetForTestOnly.keySet())
{
- String value = _setProperties.get(key);
+ String value = _propertiesSetForTestOnly.get(key);
if (value != null)
{
System.setProperty(key, value);
@@ -735,6 +798,12 @@ public class QpidTestCase extends TestCase
System.clearProperty(key);
}
}
+
+ _propertiesSetForTestOnly.clear();
+
+ // We don't change the current VMs settings for Broker only properties
+ // so we can just clear this map
+ _propertiesSetForBroker.clear();
}
/**