From 3c57e4b18865b717404ea41efbd4b80516a92a33 Mon Sep 17 00:00:00 2001 From: Marnie McCormack Date: Mon, 5 Jul 2010 20:00:54 +0000 Subject: QPID-2700 Patch for ability to remove bindings from exchanges and additional tests for direct and topic exchange add/remove logic from Andrew Kennedy git-svn-id: https://svn.apache.org/repos/asf/qpid/trunk/qpid@960678 13f79535-47bb-0310-9956-ffa450edef68 --- .../qpid/server/exchange/ExchangeMBeanTest.java | 79 ++++++++++++++++++++++ 1 file changed, 79 insertions(+) (limited to 'java/broker/src/test') diff --git a/java/broker/src/test/java/org/apache/qpid/server/exchange/ExchangeMBeanTest.java b/java/broker/src/test/java/org/apache/qpid/server/exchange/ExchangeMBeanTest.java index e3e736509e..b51c88680e 100644 --- a/java/broker/src/test/java/org/apache/qpid/server/exchange/ExchangeMBeanTest.java +++ b/java/broker/src/test/java/org/apache/qpid/server/exchange/ExchangeMBeanTest.java @@ -36,6 +36,7 @@ import org.apache.qpid.framing.AMQShortString; import javax.management.openmbean.TabularData; import java.util.ArrayList; +import java.util.Collections; /** * Unit test class for testing different Exchange MBean operations @@ -126,6 +127,84 @@ public class ExchangeMBeanTest extends InternalBrokerBaseCase assertTrue(!mbean.isDurable()); assertTrue(mbean.isAutoDelete()); } + + /** + * Test adding bindings and removing them from the topic exchange via JMX. + *

+ * QPID-2700 + */ + public void testTopicBindings() throws Exception + { + int bindings = _queue.getBindingCount(); + + Exchange exchange = _queue.getVirtualHost().getExchangeRegistry().getExchange(new AMQShortString("amq.topic")); + ManagedExchange mbean = (ManagedExchange) ((AbstractExchange) exchange).getManagedObject(); + + mbean.createNewBinding(_queue.getName(), "robot.#"); + mbean.createNewBinding(_queue.getName(), "#.kitten"); + + assertEquals("Should have added two bindings", bindings + 2, _queue.getBindingCount()); + + mbean.removeBinding(_queue.getName(), "robot.#"); + + assertEquals("Should have one extra binding", bindings + 1, _queue.getBindingCount()); + + mbean.removeBinding(_queue.getName(), "#.kitten"); + + assertEquals("Should have original number of binding", bindings, _queue.getBindingCount()); + } + + /** + * Test adding bindings and removing them from the default exchange via JMX. + *

+ * QPID-2700 + */ + public void testDefaultBindings() throws Exception + { + int bindings = _queue.getBindingCount(); + + Exchange exchange = _queue.getVirtualHost().getExchangeRegistry().getDefaultExchange(); + ManagedExchange mbean = (ManagedExchange) ((AbstractExchange) exchange).getManagedObject(); + + mbean.createNewBinding(_queue.getName(), "robot"); + mbean.createNewBinding(_queue.getName(), "kitten"); + + assertEquals("Should have added two bindings", bindings + 2, _queue.getBindingCount()); + + mbean.removeBinding(_queue.getName(), "robot"); + + assertEquals("Should have one extra binding", bindings + 1, _queue.getBindingCount()); + + mbean.removeBinding(_queue.getName(), "kitten"); + + assertEquals("Should have original number of binding", bindings, _queue.getBindingCount()); + } + + /** + * Test adding bindings and removing them from the topic exchange via JMX. + *

+ * QPID-2700 + */ + public void testTopicBindings() throws Exception + { + int bindings = _queue.getBindingCount(); + + Exchange exchange = _queue.getVirtualHost().getExchangeRegistry().getExchange(new AMQShortString("amq.topic")); + ManagedExchange mbean = (ManagedExchange) ((AbstractExchange) exchange).getManagedObject(); + + mbean.createNewBinding(_queue.getName(), "robot.#"); + mbean.createNewBinding(_queue.getName(), "#.kitten"); + + assertEquals("Should have added two bindings", bindings + 2, _queue.getBindingCount()); + + mbean.removeBinding(_queue.getName(), "robot.#"); + + assertEquals("Should have one extra binding", bindings + 1, _queue.getBindingCount()); + + mbean.removeBinding(_queue.getName(), "#.kitten"); + + assertEquals("Should have original number of binding", bindings, _queue.getBindingCount()); + } @Override public void setUp() throws Exception -- cgit v1.2.1