summaryrefslogtreecommitdiff
path: root/qpid/java/broker/src/test/java/org/apache/qpid/server/configuration/plugins/ConfigurationPluginTest.java
diff options
context:
space:
mode:
Diffstat (limited to 'qpid/java/broker/src/test/java/org/apache/qpid/server/configuration/plugins/ConfigurationPluginTest.java')
-rw-r--r--qpid/java/broker/src/test/java/org/apache/qpid/server/configuration/plugins/ConfigurationPluginTest.java210
1 files changed, 210 insertions, 0 deletions
diff --git a/qpid/java/broker/src/test/java/org/apache/qpid/server/configuration/plugins/ConfigurationPluginTest.java b/qpid/java/broker/src/test/java/org/apache/qpid/server/configuration/plugins/ConfigurationPluginTest.java
new file mode 100644
index 0000000000..ee2f77f16b
--- /dev/null
+++ b/qpid/java/broker/src/test/java/org/apache/qpid/server/configuration/plugins/ConfigurationPluginTest.java
@@ -0,0 +1,210 @@
+/*
+ *
+ * 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.plugins;
+
+import junit.framework.TestCase;
+import org.apache.commons.configuration.CompositeConfiguration;
+import org.apache.commons.configuration.ConfigurationException;
+import org.apache.commons.configuration.XMLConfiguration;
+import org.apache.qpid.server.util.InternalBrokerBaseCase;
+
+import java.util.List;
+
+/**
+ * Test that verifies that given a Configuration a ConfigurationPlugin can
+ * process and validate that data.
+ */
+public class ConfigurationPluginTest extends InternalBrokerBaseCase
+{
+ private static final double DOUBLE = 3.14;
+ private static final long POSITIVE_LONG = 1000;
+ private static final long NEGATIVE_LONG = -1000;
+ private static final int LIST_SIZE = 3;
+
+ class ConfigPlugin extends ConfigurationPlugin
+ {
+ @Override
+ public String[] getElementsProcessed()
+ {
+ return new String[]{"[@property]", "name",
+ "positiveLong", "negativeLong",
+ "true", "list", "double"};
+ }
+
+ @Override
+ public void validateConfiguration() throws ConfigurationException
+ {
+ // no validation requried
+ }
+
+ public String getName()
+ {
+ return getStringValue("name");
+ }
+
+ public String getProperty()
+ {
+ return getStringValue("[@property]");
+ }
+
+
+ }
+
+ ConfigPlugin _plugin;
+
+ @Override
+ public void setUp() throws Exception
+ {
+ // Test does not directly use the AppRegistry but the configured broker
+ // is required for the correct ConfigurationPlugin processing
+ super.setUp();
+ XMLConfiguration xmlconfig = new XMLConfiguration();
+ xmlconfig.addProperty("base.element[@property]", "property");
+ xmlconfig.addProperty("base.element.name", "name");
+ // We make these strings as that is how they will be read from the file.
+ xmlconfig.addProperty("base.element.positiveLong", String.valueOf(POSITIVE_LONG));
+ xmlconfig.addProperty("base.element.negativeLong", String.valueOf(NEGATIVE_LONG));
+ xmlconfig.addProperty("base.element.boolean", String.valueOf(true));
+ xmlconfig.addProperty("base.element.double", String.valueOf(DOUBLE));
+ for (int i = 0; i < LIST_SIZE; i++)
+ {
+ xmlconfig.addProperty("base.element.list", i);
+ }
+
+ //Use a composite configuration as this is what our broker code uses.
+ CompositeConfiguration composite = new CompositeConfiguration();
+ composite.addConfiguration(xmlconfig);
+
+ _plugin = new ConfigPlugin();
+
+ try
+ {
+ _plugin.setConfiguration("base.element", composite.subset("base.element"));
+ }
+ catch (ConfigurationException e)
+ {
+ e.printStackTrace();
+ fail(e.toString());
+ }
+
+ }
+
+ public void testHasConfiguration()
+ {
+ assertTrue("Plugin has no configuration ", _plugin.hasConfiguration());
+ _plugin = new ConfigPlugin();
+ assertFalse("Plugins has configuration", _plugin.hasConfiguration());
+ }
+
+ public void testValuesRetreived()
+ {
+ assertEquals("Name not correct", "name", _plugin.getName());
+ assertEquals("Property not correct", "property", _plugin.getProperty());
+ }
+
+ public void testContainsPositiveLong()
+ {
+ assertTrue("positiveLong is not positive", _plugin.containsPositiveLong("positiveLong"));
+ assertFalse("NonExistentValue was found", _plugin.containsPositiveLong("NonExistentValue"));
+
+ try
+ {
+ _plugin.validatePositiveLong("positiveLong");
+ }
+ catch (ConfigurationException e)
+ {
+ fail(e.getMessage());
+ }
+
+ try
+ {
+ _plugin.validatePositiveLong("negativeLong");
+ fail("negativeLong should not be positive");
+ }
+ catch (ConfigurationException e)
+ {
+ assertEquals("negativeLong should not be reported as positive",
+ "ConfigPlugin: unable to configure invalid negativeLong:" + NEGATIVE_LONG, e.getMessage());
+ }
+
+ }
+
+ public void testDouble()
+ {
+ assertEquals("Double value not returned", DOUBLE, _plugin.getDoubleValue("double"));
+ assertEquals("default Double value not returned", 0.0, _plugin.getDoubleValue("NonExistent"));
+ assertEquals("set default Double value not returned", DOUBLE, _plugin.getDoubleValue("NonExistent", DOUBLE));
+ }
+
+ public void testLong()
+ {
+ assertTrue("Long value not returned", _plugin.containsLong("positiveLong"));
+ assertFalse("Long value returned", _plugin.containsLong("NonExistent"));
+ assertEquals("Long value not returned", POSITIVE_LONG, _plugin.getLongValue("positiveLong"));
+ assertEquals("default Long value not returned", 0, _plugin.getLongValue("NonExistent"));
+ assertEquals("set default Long value not returned", NEGATIVE_LONG, _plugin.getLongValue("NonExistent", NEGATIVE_LONG));
+ }
+
+ public void testInt()
+ {
+ assertTrue("Int value not returned", _plugin.containsInt("positiveLong"));
+ assertFalse("Int value returned", _plugin.containsInt("NonExistent"));
+ assertEquals("Int value not returned", (int) POSITIVE_LONG, _plugin.getIntValue("positiveLong"));
+ assertEquals("default Int value not returned", 0, _plugin.getIntValue("NonExistent"));
+ assertEquals("set default Int value not returned", (int) NEGATIVE_LONG, _plugin.getIntValue("NonExistent", (int) NEGATIVE_LONG));
+ }
+
+ public void testString()
+ {
+ assertEquals("String value not returned", "name", _plugin.getStringValue("name"));
+ assertNull("Null default String value not returned", _plugin.getStringValue("NonExistent", null));
+ assertNull("default String value not returned", _plugin.getStringValue("NonExistent"));
+ assertEquals("default String value not returned", "Default", _plugin.getStringValue("NonExistent", "Default"));
+ }
+
+ public void testBoolean()
+ {
+ assertTrue("Boolean value not returned", _plugin.containsBoolean("boolean"));
+ assertFalse("Boolean value not returned", _plugin.containsBoolean("NonExistent"));
+ assertTrue("Boolean value not returned", _plugin.getBooleanValue("boolean"));
+ assertFalse("default String value not returned", _plugin.getBooleanValue("NonExistent"));
+ assertTrue("set default String value not returned", _plugin.getBooleanValue("NonExistent", true));
+ }
+
+ public void testList()
+ {
+ assertTrue("list not found in plugin", _plugin.contains("list"));
+ List list = _plugin.getListValue("list");
+ assertNotNull("Returned list should not be null", list);
+ assertEquals("List should not be empty", LIST_SIZE, list.size());
+
+ list = _plugin.getListValue("NonExistent");
+ assertNotNull("Returned list should not be null", list);
+ assertEquals("List is not empty", 0, list.size());
+ }
+
+ public void testContains()
+ {
+ assertTrue("list not found in plugin", _plugin.contains("list"));
+ assertFalse("NonExistent found in plugin", _plugin.contains("NonExistent"));
+ }
+
+}