From b577edcbb54e4f8bc3342ba574059364fe809d9d Mon Sep 17 00:00:00 2001 From: Aidan Skinner Date: Thu, 23 Apr 2009 16:05:34 +0000 Subject: QPID-1826: Ensure that server-wide configuration variables in virtualhosts.xml are honored. Add sample-flattened parse tree from M4 and test to ensure that values are parsed appropriately. git-svn-id: https://svn.apache.org/repos/asf/qpid/trunk@767951 13f79535-47bb-0310-9956-ffa450edef68 --- .../broker/etc/persistent_config-config-test.xml | 93 +++++++++++++++ qpid/java/broker/etc/sample-parsed-config.xml | 76 +++++++++++++ qpid/java/broker/etc/virtualhosts-config-test.xml | 40 +++++++ .../server/configuration/ServerConfiguration.java | 125 ++++++++++++--------- .../configuration/ServerConfigurationTest.java | 18 +++ 5 files changed, 298 insertions(+), 54 deletions(-) create mode 100644 qpid/java/broker/etc/persistent_config-config-test.xml create mode 100644 qpid/java/broker/etc/sample-parsed-config.xml create mode 100644 qpid/java/broker/etc/virtualhosts-config-test.xml (limited to 'qpid/java') diff --git a/qpid/java/broker/etc/persistent_config-config-test.xml b/qpid/java/broker/etc/persistent_config-config-test.xml new file mode 100644 index 0000000000..258f54397d --- /dev/null +++ b/qpid/java/broker/etc/persistent_config-config-test.xml @@ -0,0 +1,93 @@ + + + + + ${QPID_WORK} + ${QPID_HOME}/etc + ${conf} + + nio + 5672 + 32768 + 32768 + + + false + 8999 + + + + false + false + 65535 + false + + + + + + passwordfile + org.apache.qpid.server.security.auth.database.PlainPasswordFilePrincipalDatabase + + + passwordFile + ${passwordDir}/passwd + + + + + + + org.apache.qpid.server.security.access.plugins.AllowAll + + + ${passwordDir}/jmxremote.access + passwordfile + + + + + + dev-only + + + org.apache.qpid.server.store.MemoryMessageStore + ${work}/bdbstore/dev-only-store + + + + + + 0 + 2.0 + + + true + + + ${conf}/virtualhosts-config-test.xml + + + diff --git a/qpid/java/broker/etc/sample-parsed-config.xml b/qpid/java/broker/etc/sample-parsed-config.xml new file mode 100644 index 0000000000..6c4366a84a --- /dev/null +++ b/qpid/java/broker/etc/sample-parsed-config.xml @@ -0,0 +1,76 @@ + + +${QPID_WORK} +${QPID_HOME}/etc +${conf} + +nio +5672 +32768 +32768 + + +false +8999 + + + +false +false +65535 +false + + + + +passwordfile +org.apache.qpid.server.security.auth.database.PlainPasswordFilePrincipalDatabase + + +passwordFile +${passwordDir}/passwd + + + + + +org.apache.qpid.server.security.access.plugins.AllowAll + + +${passwordDir}/jmxremote.access +passwordfile + + +${conf}/virtualhosts-config-test.xml +dev-only + + +org.apache.qpid.server.store.MemoryMessageStore +${work}/bdbstore/dev-only-store + + + + + +0 +2.0 + + +true + +dev-only + +dev-only + + +amq.direct +102400 +20480 +60000 + +dev-queue + + + + + diff --git a/qpid/java/broker/etc/virtualhosts-config-test.xml b/qpid/java/broker/etc/virtualhosts-config-test.xml new file mode 100644 index 0000000000..168aa074da --- /dev/null +++ b/qpid/java/broker/etc/virtualhosts-config-test.xml @@ -0,0 +1,40 @@ + + + + dev-only + + dev-only + + + amq.direct + + 102400 + 20480 + 60000 + + + dev-queue + + + + + diff --git a/qpid/java/broker/src/main/java/org/apache/qpid/server/configuration/ServerConfiguration.java b/qpid/java/broker/src/main/java/org/apache/qpid/server/configuration/ServerConfiguration.java index 24add696b3..9d7936f0c6 100644 --- a/qpid/java/broker/src/main/java/org/apache/qpid/server/configuration/ServerConfiguration.java +++ b/qpid/java/broker/src/main/java/org/apache/qpid/server/configuration/ServerConfiguration.java @@ -47,7 +47,7 @@ import sun.misc.SignalHandler; public class ServerConfiguration implements SignalHandler { - private static Configuration _config; + private Configuration _config; private static final int DEFAULT_FRAME_SIZE = 65536; private static final int DEFAULT_BUFFER_READ_LIMIT_SIZE = 262144; @@ -113,11 +113,11 @@ public class ServerConfiguration implements SignalHandler public ServerConfiguration(Configuration conf) throws ConfigurationException { - _config = conf; + setConfig(conf); substituteEnvironmentVariables(); - _jmxPort = _config.getInt("management.jmxport", 8999); + _jmxPort = getConfig().getInt("management.jmxport", 8999); _securityConfiguration = new SecurityConfiguration(conf.subset("security")); setupVirtualHosts(conf); @@ -150,6 +150,13 @@ public class ServerConfiguration implements SignalHandler VirtualHostConfiguration vhostConfig = new VirtualHostConfiguration(name, conf.subset("virtualhosts.virtualhost."+name)); _virtualHosts.put(vhostConfig.getName(), vhostConfig); } + // Grab things other than the virtualhosts themselves + Iterator keys = vhostConfiguration.getKeys(); + while (keys.hasNext()) + { + String key = (String) keys.next(); + conf.setProperty(key, vhostConfiguration.getProperty(key)); + } } } } @@ -161,7 +168,7 @@ public class ServerConfiguration implements SignalHandler String val = System.getenv(var.getKey()); if (val != null) { - _config.setProperty(var.getValue(), val); + getConfig().setProperty(var.getValue(), val); } } } @@ -246,6 +253,16 @@ public class ServerConfiguration implements SignalHandler } } + public void setConfig(Configuration _config) + { + this._config = _config; + } + + public Configuration getConfig() + { + return _config; + } + public String getQpidWork() { return System.getProperty("QPID_WORK", System.getProperty("java.io.tmpdir")); @@ -263,7 +280,7 @@ public class ServerConfiguration implements SignalHandler public boolean getPlatformMbeanserver() { - return _config.getBoolean("management.platform-mbeanserver", true); + return getConfig().getBoolean("management.platform-mbeanserver", true); } public String[] getVirtualHosts() @@ -273,7 +290,7 @@ public class ServerConfiguration implements SignalHandler public String getPluginDirectory() { - return _config.getString("plugin-directory"); + return getConfig().getString("plugin-directory"); } public VirtualHostConfiguration getVirtualHostConfig(String name) @@ -283,84 +300,84 @@ public class ServerConfiguration implements SignalHandler public List getPrincipalDatabaseNames() { - return _config.getList("security.principal-databases.principal-database.name"); + return getConfig().getList("security.principal-databases.principal-database.name"); } public List getPrincipalDatabaseClass() { - return _config.getList("security.principal-databases.principal-database.class"); + return getConfig().getList("security.principal-databases.principal-database.class"); } public List getPrincipalDatabaseAttributeNames(int index) { String name = "security.principal-databases.principal-database(" + index + ")." + "attributes.attribute.name"; - return _config.getList(name); + return getConfig().getList(name); } public List getPrincipalDatabaseAttributeValues(int index) { String name = "security.principal-databases.principal-database(" + index + ")." + "attributes.attribute.value"; - return _config.getList(name); + return getConfig().getList(name); } public List getManagementPrincipalDBs() { - return _config.getList("security.jmx.principal-database"); + return getConfig().getList("security.jmx.principal-database"); } public List getManagementAccessList() { - return _config.getList("security.jmx.access"); + return getConfig().getList("security.jmx.access"); } public int getFrameSize() { - return _config.getInt("advanced.framesize", DEFAULT_FRAME_SIZE); + return getConfig().getInt("advanced.framesize", DEFAULT_FRAME_SIZE); } public boolean getProtectIOEnabled() { - return _config.getBoolean("broker.connector.protectio.enabled", false); + return getConfig().getBoolean("broker.connector.protectio.enabled", false); } public int getBufferReadLimit() { - return _config.getInt("broker.connector.protectio.readBufferLimitSize", DEFAULT_BUFFER_READ_LIMIT_SIZE); + return getConfig().getInt("broker.connector.protectio.readBufferLimitSize", DEFAULT_BUFFER_READ_LIMIT_SIZE); } public int getBufferWriteLimit() { - return _config.getInt("broker.connector.protectio.writeBufferLimitSize", DEFAULT_BUFFER_WRITE_LIMIT_SIZE); + return getConfig().getInt("broker.connector.protectio.writeBufferLimitSize", DEFAULT_BUFFER_WRITE_LIMIT_SIZE); } public boolean getSynchedClocks() { - return _config.getBoolean("advanced.synced-clocks", false); + return getConfig().getBoolean("advanced.synced-clocks", false); } public boolean getMsgAuth() { - return _config.getBoolean("security.msg-auth", false); + return getConfig().getBoolean("security.msg-auth", false); } public String getJMXPrincipalDatabase() { - return _config.getString("security.jmx.principal-database"); + return getConfig().getString("security.jmx.principal-database"); } public String getManagementKeyStorePath() { - return _config.getString("management.ssl.keyStorePath", null); + return getConfig().getString("management.ssl.keyStorePath", null); } public boolean getManagementSSLEnabled() { - return _config.getBoolean("management.ssl.enabled", true); + return getConfig().getBoolean("management.ssl.enabled", true); } public String getManagementKeyStorePassword() { - return _config.getString("management.ssl.keyStorePassword"); + return getConfig().getString("management.ssl.keyStorePassword"); } public SecurityConfiguration getSecurityConfiguration() @@ -370,158 +387,158 @@ public class ServerConfiguration implements SignalHandler public boolean getQueueAutoRegister() { - return _config.getBoolean("queue.auto_register", true); + return getConfig().getBoolean("queue.auto_register", true); } public boolean getManagementEnabled() { - return _config.getBoolean("management.enabled", true); + return getConfig().getBoolean("management.enabled", true); } public void setManagementEnabled(boolean enabled) { - _config.setProperty("management.enabled", enabled); + getConfig().setProperty("management.enabled", enabled); } public int getHeartBeatDelay() { - return _config.getInt("heartbeat.delay", 5); + return getConfig().getInt("heartbeat.delay", 5); } public double getHeartBeatTimeout() { - return _config.getDouble("heartbeat.timeoutFactor", 2.0); + return getConfig().getDouble("heartbeat.timeoutFactor", 2.0); } public int getDeliveryPoolSize() { - return _config.getInt("delivery.poolsize", 0); + return getConfig().getInt("delivery.poolsize", 0); } public long getMaximumMessageAge() { - return _config.getLong("maximumMessageAge", 0); + return getConfig().getLong("maximumMessageAge", 0); } public long getMaximumMessageCount() { - return _config.getLong("maximumMessageCount", 0); + return getConfig().getLong("maximumMessageCount", 0); } public long getMaximumQueueDepth() { - return _config.getLong("maximumQueueDepth", 0); + return getConfig().getLong("maximumQueueDepth", 0); } public long getMaximumMessageSize() { - return _config.getLong("maximumMessageSize", 0); + return getConfig().getLong("maximumMessageSize", 0); } public long getMinimumAlertRepeatGap() { - return _config.getLong("minimumAlertRepeatGap", 0); + return getConfig().getLong("minimumAlertRepeatGap", 0); } public int getProcessors() { - return _config.getInt("connector.processors", 4); + return getConfig().getInt("connector.processors", 4); } public int getPort() { - return _config.getInt("connector.port", DEFAULT_PORT); + return getConfig().getInt("connector.port", DEFAULT_PORT); } public String getBind() { - return _config.getString("connector.bind", "wildcard"); + return getConfig().getString("connector.bind", "wildcard"); } public int getReceiveBufferSize() { - return _config.getInt("connector.socketReceiveBuffer", 32767); + return getConfig().getInt("connector.socketReceiveBuffer", 32767); } public int getWriteBufferSize() { - return _config.getInt("connector.socketWriteBuffer", 32767); + return getConfig().getInt("connector.socketWriteBuffer", 32767); } public boolean getTcpNoDelay() { - return _config.getBoolean("connector.tcpNoDelay", true); + return getConfig().getBoolean("connector.tcpNoDelay", true); } public boolean getEnableExecutorPool() { - return _config.getBoolean("advanced.filterchain[@enableExecutorPool]", false); + return getConfig().getBoolean("advanced.filterchain[@enableExecutorPool]", false); } public boolean getEnablePooledAllocator() { - return _config.getBoolean("advanced.enablePooledAllocator", false); + return getConfig().getBoolean("advanced.enablePooledAllocator", false); } public boolean getEnableDirectBuffers() { - return _config.getBoolean("advanced.enableDirectBuffers", false); + return getConfig().getBoolean("advanced.enableDirectBuffers", false); } public boolean getEnableSSL() { - return _config.getBoolean("connector.ssl.enabled", false); + return getConfig().getBoolean("connector.ssl.enabled", false); } public boolean getSSLOnly() { - return _config.getBoolean("connector.ssl.sslOnly", true); + return getConfig().getBoolean("connector.ssl.sslOnly", true); } public int getSSLPort() { - return _config.getInt("connector.ssl.port", DEFAUL_SSL_PORT); + return getConfig().getInt("connector.ssl.port", DEFAUL_SSL_PORT); } public String getKeystorePath() { - return _config.getString("connector.ssl.keystorePath", "none"); + return getConfig().getString("connector.ssl.keystorePath", "none"); } public String getKeystorePassword() { - return _config.getString("connector.ssl.keystorePassword", "none"); + return getConfig().getString("connector.ssl.keystorePassword", "none"); } public String getCertType() { - return _config.getString("connector.ssl.certType", "SunX509"); + return getConfig().getString("connector.ssl.certType", "SunX509"); } public boolean getQpidNIO() { - return _config.getBoolean("connector.qpidnio", false); + return getConfig().getBoolean("connector.qpidnio", false); } public boolean getUseBiasedWrites() { - return _config.getBoolean("advanced.useWriteBiasedPool", false); + return getConfig().getBoolean("advanced.useWriteBiasedPool", false); } public String getDefaultVirtualHost() { - return _config.getString("virtualhosts.default"); + return getConfig().getString("virtualhosts.default"); } public void setHousekeepingExpiredMessageCheckPeriod(long value) { - _config.setProperty("housekeeping.expiredMessageCheckPeriod", value); + getConfig().setProperty("housekeeping.expiredMessageCheckPeriod", value); } public long getHousekeepingCheckPeriod() { - return _config.getLong("housekeeping.checkPeriod", - _config.getLong("housekeeping.expiredMessageCheckPeriod", + return getConfig().getLong("housekeeping.checkPeriod", + getConfig().getLong("housekeeping.expiredMessageCheckPeriod", DEFAULT_HOUSEKEEPING_PERIOD)); } } diff --git a/qpid/java/broker/src/test/java/org/apache/qpid/server/configuration/ServerConfigurationTest.java b/qpid/java/broker/src/test/java/org/apache/qpid/server/configuration/ServerConfigurationTest.java index 0152fc5122..fabd4ce923 100644 --- a/qpid/java/broker/src/test/java/org/apache/qpid/server/configuration/ServerConfigurationTest.java +++ b/qpid/java/broker/src/test/java/org/apache/qpid/server/configuration/ServerConfigurationTest.java @@ -24,8 +24,10 @@ import java.io.File; import java.io.FileWriter; import java.io.IOException; import java.io.RandomAccessFile; +import java.util.Iterator; import java.util.List; +import org.apache.commons.configuration.Configuration; import org.apache.commons.configuration.ConfigurationException; import org.apache.commons.configuration.PropertiesConfiguration; import org.apache.commons.configuration.SystemConfiguration; @@ -924,4 +926,20 @@ public class ServerConfigurationTest extends TestCase assertFalse(reg.getAccessManager().authoriseConnect(session, virtualHost)); } + public void testnewParserOutputVsOldParserOutput() throws ConfigurationException + { + String configDir = System.getProperty("QPID_HOME")+"/etc"; + + XMLConfiguration oldConfig = new XMLConfiguration(configDir +"/sample-parsed-config.xml"); + Configuration newConfig = new ServerConfiguration(new File(configDir+"/persistent_config-config-test.xml")).getConfig(); + + Iterator xmlKeys = oldConfig.getKeys(); + while (xmlKeys.hasNext()) + { + String key = (String) xmlKeys.next(); + assertEquals("Incorrect value for "+key, oldConfig.getProperty(key), newConfig.getProperty(key)); + } + } + + } -- cgit v1.2.1