You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@qpid.apache.org by ai...@apache.org on 2009/04/23 18:05:34 UTC
svn commit: r767951 - in /qpid/trunk/qpid/java/broker: etc/
src/main/java/org/apache/qpid/server/configuration/
src/test/java/org/apache/qpid/server/configuration/
Author: aidan
Date: Thu Apr 23 16:05:34 2009
New Revision: 767951
URL: http://svn.apache.org/viewvc?rev=767951&view=rev
Log:
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.
Added:
qpid/trunk/qpid/java/broker/etc/persistent_config-config-test.xml
qpid/trunk/qpid/java/broker/etc/sample-parsed-config.xml
qpid/trunk/qpid/java/broker/etc/virtualhosts-config-test.xml
Modified:
qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/configuration/ServerConfiguration.java
qpid/trunk/qpid/java/broker/src/test/java/org/apache/qpid/server/configuration/ServerConfigurationTest.java
Added: qpid/trunk/qpid/java/broker/etc/persistent_config-config-test.xml
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/java/broker/etc/persistent_config-config-test.xml?rev=767951&view=auto
==============================================================================
--- qpid/trunk/qpid/java/broker/etc/persistent_config-config-test.xml (added)
+++ qpid/trunk/qpid/java/broker/etc/persistent_config-config-test.xml Thu Apr 23 16:05:34 2009
@@ -0,0 +1,93 @@
+<?xml version="1.0" encoding="ISO-8859-1"?>
+<!--
+ -
+ - Licensed to the Apache Software Foundation (ASF) under one
+ - or more contributor license agreements. See the NOTICE file
+ - distributed with this work for additional information
+ - regarding copyright ownership. The ASF licenses this file
+ - to you 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.
+ -
+
+ This is an example config using the BDBMessageStore available from
+ the Red Hat Messaging project at etp.108.redhat.com and distributed under GPL.
+ -->
+
+<broker>
+ <work>${QPID_WORK}</work>
+ <conf>${QPID_HOME}/etc</conf>
+ <passwordDir>${conf}</passwordDir>
+ <connector>
+ <transport>nio</transport>
+ <port>5672</port>
+ <socketReceiveBuffer>32768</socketReceiveBuffer>
+ <socketSendBuffer>32768</socketSendBuffer>
+ </connector>
+ <management>
+ <enabled>false</enabled>
+ <jmxport>8999</jmxport>
+ </management>
+ <advanced>
+ <filterchain enableExecutorPool="true"/>
+ <enablePooledAllocator>false</enablePooledAllocator>
+ <enableDirectBuffers>false</enableDirectBuffers>
+ <framesize>65535</framesize>
+ <compressBufferOnQueue>false</compressBufferOnQueue>
+ </advanced>
+
+ <security>
+ <principal-databases>
+ <principal-database>
+ <name>passwordfile</name>
+ <class>org.apache.qpid.server.security.auth.database.PlainPasswordFilePrincipalDatabase</class>
+ <attributes>
+ <attribute>
+ <name>passwordFile</name>
+ <value>${passwordDir}/passwd</value>
+ </attribute>
+ </attributes>
+ </principal-database>
+ </principal-databases>
+
+ <access>
+ <class>org.apache.qpid.server.security.access.plugins.AllowAll</class>
+ </access>
+ <jmx>
+ <access>${passwordDir}/jmxremote.access</access>
+ <principal-database>passwordfile</principal-database>
+ </jmx>
+ </security>
+
+ <virtualhosts>
+ <virtualhost>
+ <name>dev-only</name>
+ <dev-only>
+ <store>
+ <class>org.apache.qpid.server.store.MemoryMessageStore</class>
+ <environment-path>${work}/bdbstore/dev-only-store</environment-path>
+ </store>
+ </dev-only>
+ </virtualhost>
+ </virtualhosts>
+ <heartbeat>
+ <delay>0</delay>
+ <timeoutFactor>2.0</timeoutFactor>
+ </heartbeat>
+ <queue>
+ <auto_register>true</auto_register>
+ </queue>
+
+ <virtualhosts>${conf}/virtualhosts-config-test.xml</virtualhosts>
+</broker>
+
+
Added: qpid/trunk/qpid/java/broker/etc/sample-parsed-config.xml
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/java/broker/etc/sample-parsed-config.xml?rev=767951&view=auto
==============================================================================
--- qpid/trunk/qpid/java/broker/etc/sample-parsed-config.xml (added)
+++ qpid/trunk/qpid/java/broker/etc/sample-parsed-config.xml Thu Apr 23 16:05:34 2009
@@ -0,0 +1,76 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<configuration>
+<work>${QPID_WORK}</work>
+<conf>${QPID_HOME}/etc</conf>
+<passwordDir>${conf}</passwordDir>
+<connector>
+<transport>nio</transport>
+<port>5672</port>
+<socketReceiveBuffer>32768</socketReceiveBuffer>
+<socketSendBuffer>32768</socketSendBuffer>
+</connector>
+<management>
+<enabled>false</enabled>
+<jmxport>8999</jmxport>
+</management>
+<advanced>
+<filterchain enableExecutorPool="true"/>
+<enablePooledAllocator>false</enablePooledAllocator>
+<enableDirectBuffers>false</enableDirectBuffers>
+<framesize>65535</framesize>
+<compressBufferOnQueue>false</compressBufferOnQueue>
+</advanced>
+<security>
+<principal-databases>
+<principal-database>
+<name>passwordfile</name>
+<class>org.apache.qpid.server.security.auth.database.PlainPasswordFilePrincipalDatabase</class>
+<attributes>
+<attribute>
+<name>passwordFile</name>
+<value>${passwordDir}/passwd</value>
+</attribute>
+</attributes>
+</principal-database>
+</principal-databases>
+<access>
+<class>org.apache.qpid.server.security.access.plugins.AllowAll</class>
+</access>
+<jmx>
+<access>${passwordDir}/jmxremote.access</access>
+<principal-database>passwordfile</principal-database>
+</jmx>
+</security>
+<virtualhosts>${conf}/virtualhosts-config-test.xml<virtualhost>
+<name>dev-only</name>
+<dev-only>
+<store>
+<class>org.apache.qpid.server.store.MemoryMessageStore</class>
+<environment-path>${work}/bdbstore/dev-only-store</environment-path>
+</store>
+</dev-only>
+</virtualhost>
+</virtualhosts>
+<heartbeat>
+<delay>0</delay>
+<timeoutFactor>2.0</timeoutFactor>
+</heartbeat>
+<queue>
+<auto_register>true</auto_register>
+</queue>
+<default>dev-only</default>
+<virtualhost>
+<name>dev-only</name>
+<dev-only>
+<queues>
+<exchange>amq.direct</exchange>
+<maximumQueueDepth>102400</maximumQueueDepth>
+<maximumMessageSize>20480</maximumMessageSize>
+<maximumMessageAge>60000</maximumMessageAge>
+<queue>
+<name>dev-queue</name>
+</queue>
+</queues>
+</dev-only>
+</virtualhost>
+</configuration>
Added: qpid/trunk/qpid/java/broker/etc/virtualhosts-config-test.xml
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/java/broker/etc/virtualhosts-config-test.xml?rev=767951&view=auto
==============================================================================
--- qpid/trunk/qpid/java/broker/etc/virtualhosts-config-test.xml (added)
+++ qpid/trunk/qpid/java/broker/etc/virtualhosts-config-test.xml Thu Apr 23 16:05:34 2009
@@ -0,0 +1,40 @@
+<?xml version="1.0" encoding="ISO-8859-1"?>
+<!--
+ -
+ - Licensed to the Apache Software Foundation (ASF) under one
+ - or more contributor license agreements. See the NOTICE file
+ - distributed with this work for additional information
+ - regarding copyright ownership. The ASF licenses this file
+ - to you 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.
+ -
+ -->
+<virtualhosts>
+ <default>dev-only</default>
+ <virtualhost>
+ <name>dev-only</name>
+ <dev-only>
+ <queues>
+ <exchange>amq.direct</exchange>
+ <!-- Small defaults for development -->
+ <maximumQueueDepth>102400</maximumQueueDepth> <!-- 100k -->
+ <maximumMessageSize>20480</maximumMessageSize> <!-- 20kb -->
+ <maximumMessageAge>60000</maximumMessageAge> <!-- 1 mins -->
+
+ <queue>
+ <name>dev-queue</name>
+ </queue>
+ </queues>
+ </dev-only>
+ </virtualhost>
+</virtualhosts>
Modified: qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/configuration/ServerConfiguration.java
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/configuration/ServerConfiguration.java?rev=767951&r1=767950&r2=767951&view=diff
==============================================================================
--- qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/configuration/ServerConfiguration.java (original)
+++ qpid/trunk/qpid/java/broker/src/main/java/org/apache/qpid/server/configuration/ServerConfiguration.java Thu Apr 23 16:05:34 2009
@@ -47,7 +47,7 @@
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 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 @@
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 @@
String val = System.getenv(var.getKey());
if (val != null)
{
- _config.setProperty(var.getValue(), val);
+ getConfig().setProperty(var.getValue(), val);
}
}
}
@@ -246,6 +253,16 @@
}
}
+ 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 boolean getPlatformMbeanserver()
{
- return _config.getBoolean("management.platform-mbeanserver", true);
+ return getConfig().getBoolean("management.platform-mbeanserver", true);
}
public String[] getVirtualHosts()
@@ -273,7 +290,7 @@
public String getPluginDirectory()
{
- return _config.getString("plugin-directory");
+ return getConfig().getString("plugin-directory");
}
public VirtualHostConfiguration getVirtualHostConfig(String name)
@@ -283,84 +300,84 @@
public List<String> getPrincipalDatabaseNames()
{
- return _config.getList("security.principal-databases.principal-database.name");
+ return getConfig().getList("security.principal-databases.principal-database.name");
}
public List<String> getPrincipalDatabaseClass()
{
- return _config.getList("security.principal-databases.principal-database.class");
+ return getConfig().getList("security.principal-databases.principal-database.class");
}
public List<String> getPrincipalDatabaseAttributeNames(int index)
{
String name = "security.principal-databases.principal-database(" + index + ")." + "attributes.attribute.name";
- return _config.getList(name);
+ return getConfig().getList(name);
}
public List<String> getPrincipalDatabaseAttributeValues(int index)
{
String name = "security.principal-databases.principal-database(" + index + ")." + "attributes.attribute.value";
- return _config.getList(name);
+ return getConfig().getList(name);
}
public List<String> getManagementPrincipalDBs()
{
- return _config.getList("security.jmx.principal-database");
+ return getConfig().getList("security.jmx.principal-database");
}
public List<String> 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 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));
}
}
Modified: qpid/trunk/qpid/java/broker/src/test/java/org/apache/qpid/server/configuration/ServerConfigurationTest.java
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/java/broker/src/test/java/org/apache/qpid/server/configuration/ServerConfigurationTest.java?rev=767951&r1=767950&r2=767951&view=diff
==============================================================================
--- qpid/trunk/qpid/java/broker/src/test/java/org/apache/qpid/server/configuration/ServerConfigurationTest.java (original)
+++ qpid/trunk/qpid/java/broker/src/test/java/org/apache/qpid/server/configuration/ServerConfigurationTest.java Thu Apr 23 16:05:34 2009
@@ -24,8 +24,10 @@
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 @@
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));
+ }
+ }
+
+
}
---------------------------------------------------------------------
Apache Qpid - AMQP Messaging Implementation
Project: http://qpid.apache.org
Use/Interact: mailto:commits-subscribe@qpid.apache.org