diff options
author | Alex Rudyy <orudyy@apache.org> | 2013-06-06 19:38:38 +0000 |
---|---|---|
committer | Alex Rudyy <orudyy@apache.org> | 2013-06-06 19:38:38 +0000 |
commit | 5b6536d0ed4183e4a221e4e927df476b05609a3f (patch) | |
tree | c45aa604a105744e5060984ce77eb07c9f902895 | |
parent | 21595f68ca9cf31e2c03ef638873ebffa0f526ef (diff) | |
download | qpid-python-5b6536d0ed4183e4a221e4e927df476b05609a3f.tar.gz |
QPID-4911: Add unit test for setting of queue binding arguments in XML config file
git-svn-id: https://svn.apache.org/repos/asf/qpid/trunk/qpid@1490404 13f79535-47bb-0310-9956-ffa450edef68
-rw-r--r-- | java/broker/src/test/java/org/apache/qpid/server/virtualhost/VirtualHostImplTest.java | 65 |
1 files changed, 64 insertions, 1 deletions
diff --git a/java/broker/src/test/java/org/apache/qpid/server/virtualhost/VirtualHostImplTest.java b/java/broker/src/test/java/org/apache/qpid/server/virtualhost/VirtualHostImplTest.java index 739efecd90..3ae269ff20 100644 --- a/java/broker/src/test/java/org/apache/qpid/server/virtualhost/VirtualHostImplTest.java +++ b/java/broker/src/test/java/org/apache/qpid/server/virtualhost/VirtualHostImplTest.java @@ -26,6 +26,7 @@ import org.apache.commons.configuration.Configuration; import org.apache.commons.configuration.ConfigurationException; import org.apache.commons.configuration.PropertiesConfiguration; +import org.apache.qpid.server.binding.Binding; import org.apache.qpid.server.configuration.VirtualHostConfiguration; import org.apache.qpid.server.exchange.Exchange; @@ -41,6 +42,9 @@ import java.io.BufferedWriter; import java.io.File; import java.io.FileWriter; import java.io.IOException; +import java.util.Collection; +import java.util.HashMap; +import java.util.Map; public class VirtualHostImplTest extends QpidTestCase { @@ -194,6 +198,50 @@ public class VirtualHostImplTest extends QpidTestCase } } + public void testBindingArguments() throws Exception + { + String exchangeName = getName() +".direct"; + String vhostName = getName(); + String queueName = getName(); + + Map<String, String[]> bindingArguments = new HashMap<String, String[]>(); + bindingArguments.put("ping", new String[]{"x-filter-jms-selector=select=1", "x-qpid-no-local"}); + bindingArguments.put("pong", new String[]{"x-filter-jms-selector=select='pong'"}); + File config = writeConfigFile(vhostName, queueName, exchangeName, false, new String[]{"ping","pong"}, bindingArguments); + VirtualHost vhost = createVirtualHost(vhostName, config); + + Exchange exch = vhost.getExchangeRegistry().getExchange(getName() +".direct"); + Collection<Binding> bindings = exch.getBindings(); + assertNotNull("Bindings cannot be null", bindings); + assertEquals("Unexpected number of bindings", 3, bindings.size()); + + boolean foundPong = false; + boolean foundPing = false; + for (Binding binding : bindings) + { + String qn = binding.getQueue().getName(); + assertEquals("Unexpected queue name", getName(), qn); + Map<String, Object> arguments = binding.getArguments(); + + if ("ping".equals(binding.getBindingKey())) + { + foundPing = true; + assertEquals("Unexpected number of binding arguments for ping", 2, arguments.size()); + assertEquals("Unexpected x-filter-jms-selector for ping", "select=1", arguments.get("x-filter-jms-selector")); + assertTrue("Unexpected x-qpid-no-local for ping", arguments.containsKey("x-qpid-no-local")); + } + else if ("pong".equals(binding.getBindingKey())) + { + foundPong = true; + assertEquals("Unexpected number of binding arguments for pong", 1, arguments.size()); + assertEquals("Unexpected x-filter-jms-selector for pong", "select='pong'", arguments.get("x-filter-jms-selector")); + } + } + + assertTrue("Pong binding is not found", foundPong); + assertTrue("Ping binding is not found", foundPing); + } + private void customBindingTestImpl(final String[] routingKeys) throws Exception { String exchangeName = getName() +".direct"; @@ -244,6 +292,11 @@ public class VirtualHostImplTest extends QpidTestCase */ private File writeConfigFile(String vhostName, String queueName, String exchangeName, boolean dontDeclare, String[] routingKeys) { + return writeConfigFile(vhostName, queueName, exchangeName, dontDeclare, routingKeys, null); + } + + private File writeConfigFile(String vhostName, String queueName, String exchangeName, boolean dontDeclare, String[] routingKeys, Map<String, String[]> bindingArguments) + { File tmpFile = null; try { @@ -282,7 +335,17 @@ public class VirtualHostImplTest extends QpidTestCase } for(String routingKey: routingKeys) { - writer.write(" <routingKey>" + routingKey + "</routingKey>"); + writer.write(" <routingKey>" + routingKey + "</routingKey>\n"); + if (bindingArguments!= null && bindingArguments.containsKey(routingKey)) + { + writer.write(" <" + routingKey + ">\n"); + String[] arguments = (String[])bindingArguments.get(routingKey); + for (String argument : arguments) + { + writer.write(" <bindingArgument>" + argument + "</bindingArgument>\n"); + } + writer.write(" </" + routingKey + ">\n"); + } } writer.write(" </" + queueName + ">"); writer.write(" </queue>"); |