You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@qpid.apache.org by ri...@apache.org on 2009/07/22 19:06:52 UTC

svn commit: r796796 - in /qpid/trunk/qpid/java: broker/etc/ broker/src/main/java/org/apache/qpid/server/configuration/ broker/src/test/java/org/apache/qpid/server/configuration/ systests/src/main/java/org/apache/qpid/server/configuration/

Author: ritchiem
Date: Wed Jul 22 17:06:52 2009
New Revision: 796796

URL: http://svn.apache.org/viewvc?rev=796796&view=rev
Log:
QPID-1980 : Update to ServerConfiguration provided by Keith Chow, Updated ServerconfigurationTest
Added ServerConfigurationFileTest that verifies the string value is loadable from the systest config file.

Added:
    qpid/trunk/qpid/java/systests/src/main/java/org/apache/qpid/server/configuration/
    qpid/trunk/qpid/java/systests/src/main/java/org/apache/qpid/server/configuration/ServerConfigurationFileTest.java
Modified:
    qpid/trunk/qpid/java/broker/etc/config-systests.xml
    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

Modified: qpid/trunk/qpid/java/broker/etc/config-systests.xml
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/java/broker/etc/config-systests.xml?rev=796796&r1=796795&r2=796796&view=diff
==============================================================================
--- qpid/trunk/qpid/java/broker/etc/config-systests.xml (original)
+++ qpid/trunk/qpid/java/broker/etc/config-systests.xml Wed Jul 22 17:06:52 2009
@@ -35,6 +35,8 @@
         <qpidnio>false</qpidnio>
         <protectio>
             <enabled>false</enabled>
+            <readBufferLimitSize>262144</readBufferLimitSize>
+            <writeBufferLimitSize>262144</writeBufferLimitSize>
         </protectio>
         <transport>nio</transport>
         <port>5672</port>

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=796796&r1=796795&r2=796796&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 Wed Jul 22 17:06:52 2009
@@ -25,6 +25,7 @@
 import java.util.Iterator;
 import java.util.List;
 import java.util.Map;
+import java.util.Locale;
 import java.util.Map.Entry;
 
 import org.apache.commons.configuration.CompositeConfiguration;
@@ -37,7 +38,6 @@
 import org.apache.qpid.server.registry.ApplicationRegistry;
 import org.apache.qpid.server.virtualhost.VirtualHost;
 import org.apache.qpid.server.virtualhost.VirtualHostRegistry;
-import org.apache.qpid.tools.messagestore.MessageStoreTool;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
@@ -49,9 +49,13 @@
 
     private Configuration _config;
 
+    // Default Configuration values
+    //todo make these all public, to make validation of configuration easier.
+    public static final int DEFAULT_BUFFER_READ_LIMIT_SIZE = 262144;
+    public static final int DEFAULT_BUFFER_WRITE_LIMIT_SIZE = 262144;
+    public static final boolean DEFAULT_BROKER_CONNECTOR_PROTECTIO_ENABLED = false;
+
     private static final int DEFAULT_FRAME_SIZE = 65536;
-    private static final int DEFAULT_BUFFER_READ_LIMIT_SIZE = 262144;
-    private static final int DEFAULT_BUFFER_WRITE_LIMIT_SIZE = 262144;
     private static final int DEFAULT_PORT = 5672;
     private static final int DEFAUL_SSL_PORT = 8672;
     private static final long DEFAULT_HOUSEKEEPING_PERIOD = 30000L;
@@ -63,15 +67,21 @@
     private SecurityConfiguration _securityConfiguration = null;
 
     private File _configFile;
-    
+
     private Logger _log = LoggerFactory.getLogger(this.getClass());
 
     private ConfigurationManagementMBean _mbean;
-    
+
 
     // Map of environment variables to config items
     private static final Map<String, String> envVarMap = new HashMap<String, String>();
-    
+
+    // Configuration values to be read from the configuration file
+    //todo Move all properties to static values to ensure system testing can be performed.
+    public static final String CONNECTOR_PROTECTIO_ENABLED = "connector.protectio.enabled";
+    public static final String CONNECTOR_PROTECTIO_READ_BUFFER_LIMIT_SIZE = "connector.protectio.readBufferLimitSize";
+    public static final String CONNECTOR_PROTECTIO_WRITE_BUFFER_LIMIT_SIZE = "connector.protectio.writeBufferLimitSize";
+
     {
         envVarMap.put("QPID_PORT", "connector.port");
         envVarMap.put("QPID_ENABLEDIRECTBUFFERS", "advanced.enableDirectBuffers");
@@ -96,16 +106,16 @@
         envVarMap.put("QPID_ENABLEPOOLEDALLOCATOR", "advanced.enablePooledAllocator");
         envVarMap.put("QPID_STATUS-UPDATES", "status-updates");
     }
-    
+
     public ServerConfiguration(File configurationURL) throws ConfigurationException
     {
         this(parseConfig(configurationURL));
         _configFile = configurationURL;
-        try 
+        try
         {
             Signal sig = new sun.misc.Signal("HUP");
             sun.misc.Signal.handle(sig, this);
-        } 
+        }
         catch (IllegalArgumentException e)
         {
             // We're on something that doesn't handle SIGHUP, how sad, Windows. 
@@ -115,16 +125,16 @@
     public ServerConfiguration(Configuration conf) throws ConfigurationException
     {
         setConfig(conf);
-        
+
         substituteEnvironmentVariables();
-        
+
         _jmxPort = getConfig().getInt("management.jmxport", 8999);
         _securityConfiguration = new SecurityConfiguration(conf.subset("security"));
 
         setupVirtualHosts(conf);
-        
+
     }
-    
+
     private void setupVirtualHosts(Configuration conf) throws ConfigurationException
     {
         List vhosts = conf.getList("virtualhosts");
@@ -140,7 +150,7 @@
                 {
                     String name = (String) hosts.get(j);
                     // Add the keys of the virtual host to the main config then bail out
-                    
+
                     Configuration myConf = vhostConfiguration.subset("virtualhost." + name);
                     Iterator k = myConf.getKeys();
                     while (k.hasNext())
@@ -169,13 +179,13 @@
             String val = System.getenv(var.getKey());
             if (val != null)
             {
-                getConfig().setProperty(var.getValue(), val); 
+                getConfig().setProperty(var.getValue(), val);
             }
         }
     }
 
     private final static Configuration parseConfig(File file) throws ConfigurationException
-    {      
+    {
         ConfigurationFactory factory = new ConfigurationFactory();
         factory.setConfigurationFileName(file.getAbsolutePath());
         Configuration conf = factory.getConfiguration();
@@ -202,7 +212,7 @@
             return super.interpolate(obj);
         }
     }
-    
+
     private final static Configuration flatConfig(File file) throws ConfigurationException
     {
         // We have to override the interpolate methods so that
@@ -238,7 +248,7 @@
         catch (ConfigurationException e)
         {
              _log.error("Could not reload configuration file", e);
-        }        
+        }
     }
 
     public void reparseConfigFile() throws ConfigurationException
@@ -248,7 +258,7 @@
             Configuration newConfig = parseConfig(_configFile);
             _securityConfiguration = new SecurityConfiguration(newConfig.subset("security"));
             ApplicationRegistry.getInstance().getAccessManager().configurePlugins(_securityConfiguration);
-            
+
             VirtualHostRegistry vhostRegistry = ApplicationRegistry.getInstance().getVirtualHostRegistry();
             for (String hostname : _virtualHosts.keySet())
             {
@@ -343,17 +353,17 @@
 
     public boolean getProtectIOEnabled()
     {
-        return getConfig().getBoolean("broker.connector.protectio.enabled", false);
+        return getConfig().getBoolean(CONNECTOR_PROTECTIO_ENABLED, DEFAULT_BROKER_CONNECTOR_PROTECTIO_ENABLED);
     }
 
     public int getBufferReadLimit()
     {
-        return getConfig().getInt("broker.connector.protectio.readBufferLimitSize", DEFAULT_BUFFER_READ_LIMIT_SIZE);
+        return getConfig().getInt(CONNECTOR_PROTECTIO_READ_BUFFER_LIMIT_SIZE, DEFAULT_BUFFER_READ_LIMIT_SIZE);
     }
 
     public int getBufferWriteLimit()
     {
-        return getConfig().getInt("broker.connector.protectio.writeBufferLimitSize", DEFAULT_BUFFER_WRITE_LIMIT_SIZE);
+        return getConfig().getInt(CONNECTOR_PROTECTIO_WRITE_BUFFER_LIMIT_SIZE, DEFAULT_BUFFER_WRITE_LIMIT_SIZE);
     }
 
     public boolean getSynchedClocks()
@@ -543,8 +553,8 @@
 
     public long getHousekeepingCheckPeriod()
     {
-        return getConfig().getLong("housekeeping.checkPeriod", 
-                   getConfig().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=796796&r1=796795&r2=796796&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 Wed Jul 22 17:06:52 2009
@@ -20,31 +20,25 @@
  */
 package org.apache.qpid.server.configuration;
 
-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 junit.framework.TestCase;
 import org.apache.commons.configuration.Configuration;
 import org.apache.commons.configuration.ConfigurationException;
-import org.apache.commons.configuration.PropertiesConfiguration;
-import org.apache.commons.configuration.SystemConfiguration;
 import org.apache.commons.configuration.XMLConfiguration;
-import org.apache.qpid.AMQException;
 import org.apache.qpid.codec.AMQCodecFactory;
 import org.apache.qpid.server.protocol.AMQMinaProtocolSession;
 import org.apache.qpid.server.protocol.AMQProtocolSession;
 import org.apache.qpid.server.protocol.TestIoSession;
-import org.apache.qpid.server.queue.MockProtocolSession;
 import org.apache.qpid.server.registry.ApplicationRegistry;
 import org.apache.qpid.server.registry.ConfigurationFileApplicationRegistry;
-import org.apache.qpid.server.security.access.ACLManager;
 import org.apache.qpid.server.virtualhost.VirtualHost;
 import org.apache.qpid.server.virtualhost.VirtualHostRegistry;
 
-import junit.framework.TestCase;
+import java.io.File;
+import java.io.FileWriter;
+import java.io.IOException;
+import java.io.RandomAccessFile;
+import java.util.Iterator;
+import java.util.List;
 
 public class ServerConfigurationTest extends TestCase
 {
@@ -200,7 +194,7 @@
         assertEquals(false, serverConfig.getProtectIOEnabled());
 
         // Check value we set
-        _config.setProperty("broker.connector.protectio.enabled", true);
+        _config.setProperty(ServerConfiguration.CONNECTOR_PROTECTIO_ENABLED, true);
         serverConfig = new ServerConfiguration(_config);
         assertEquals(true, serverConfig.getProtectIOEnabled());
     }
@@ -212,7 +206,7 @@
         assertEquals(262144, serverConfig.getBufferReadLimit());
 
         // Check value we set
-        _config.setProperty("broker.connector.protectio.readBufferLimitSize", 23);
+        _config.setProperty(ServerConfiguration.CONNECTOR_PROTECTIO_READ_BUFFER_LIMIT_SIZE, 23);
         serverConfig = new ServerConfiguration(_config);
         assertEquals(23, serverConfig.getBufferReadLimit());
     }
@@ -224,7 +218,7 @@
         assertEquals(262144, serverConfig.getBufferWriteLimit());
 
         // Check value we set
-        _config.setProperty("broker.connector.protectio.writeBufferLimitSize", 23);
+        _config.setProperty(ServerConfiguration.CONNECTOR_PROTECTIO_WRITE_BUFFER_LIMIT_SIZE, 23);
         serverConfig = new ServerConfiguration(_config);
         assertEquals(23, serverConfig.getBufferWriteLimit());
     }

Added: qpid/trunk/qpid/java/systests/src/main/java/org/apache/qpid/server/configuration/ServerConfigurationFileTest.java
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/java/systests/src/main/java/org/apache/qpid/server/configuration/ServerConfigurationFileTest.java?rev=796796&view=auto
==============================================================================
--- qpid/trunk/qpid/java/systests/src/main/java/org/apache/qpid/server/configuration/ServerConfigurationFileTest.java (added)
+++ qpid/trunk/qpid/java/systests/src/main/java/org/apache/qpid/server/configuration/ServerConfigurationFileTest.java Wed Jul 22 17:06:52 2009
@@ -0,0 +1,75 @@
+/*
+ *
+ * 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.
+ *
+ */
+package org.apache.qpid.server.configuration;
+
+import org.apache.commons.configuration.ConfigurationException;
+import org.apache.qpid.test.utils.QpidTestCase;
+
+/**
+ * This system test ensures that when loading our default system-test
+ * configuration file the configuration is correctly loaded.
+ *
+ * All configuration values should be set in the systest config file so that
+ * the ability to load them can be validated.
+ *
+ */
+public class ServerConfigurationFileTest extends QpidTestCase
+{
+    ServerConfiguration _serverConfig;
+
+    public void setUp() throws ConfigurationException
+    {
+        if (!_configFile.exists())
+        {
+            fail("Unable to test without config file:" + _configFile);
+        }
+        _serverConfig = new ServerConfiguration(_configFile);
+    }
+
+    /**
+     * This helper method ensures that when we attempt to read a value that is
+     * set in the configuration file we do actualy read a value and not
+     * simply get a defaulted value from the ServerConfiguration.get*() methods.
+     *
+     * @param property the propert to test
+     */
+    private void validatePropertyDefinedInFile(String property)
+    {
+        //Verify that we are not just picking up the the default value from the getBoolean
+        assertNotNull("The value set in the configuration file is not being read for property:" + property,
+                      _serverConfig.getConfig().getProperty(property));
+    }
+
+    public void testProtectIOEnabled() throws ConfigurationException
+    {
+        validatePropertyDefinedInFile(ServerConfiguration.CONNECTOR_PROTECTIO_ENABLED);
+    }
+
+    public void testProtectIOReadBufferLimitSize() throws ConfigurationException
+    {
+        validatePropertyDefinedInFile(ServerConfiguration.CONNECTOR_PROTECTIO_READ_BUFFER_LIMIT_SIZE);
+    }
+
+    public void testProtectIOWriteBufferLimitSize() throws ConfigurationException
+    {
+        validatePropertyDefinedInFile(ServerConfiguration.CONNECTOR_PROTECTIO_WRITE_BUFFER_LIMIT_SIZE);
+    }
+}



---------------------------------------------------------------------
Apache Qpid - AMQP Messaging Implementation
Project:      http://qpid.apache.org
Use/Interact: mailto:commits-subscribe@qpid.apache.org