You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@qpid.apache.org by gs...@apache.org on 2014/07/24 15:48:30 UTC

svn commit: r1613130 - in /qpid/trunk/qpid: python/qpid/messaging/driver.py tests/src/py/qpid_tests/broker_0_10/new_api.py

Author: gsim
Date: Thu Jul 24 13:48:30 2014
New Revision: 1613130

URL: http://svn.apache.org/r1613130
Log:
QPID-5923: check requested node type when handling delete

Modified:
    qpid/trunk/qpid/python/qpid/messaging/driver.py
    qpid/trunk/qpid/tests/src/py/qpid_tests/broker_0_10/new_api.py

Modified: qpid/trunk/qpid/python/qpid/messaging/driver.py
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/python/qpid/messaging/driver.py?rev=1613130&r1=1613129&r2=1613130&view=diff
==============================================================================
--- qpid/trunk/qpid/python/qpid/messaging/driver.py (original)
+++ qpid/trunk/qpid/python/qpid/messaging/driver.py Thu Jul 24 13:48:30 2014
@@ -936,7 +936,8 @@ class Engine:
           lnk.closed = True
         if _lnk.options.get("delete") in ("always", dir.DIR_NAME):
           dir.do_unlink(sst, lnk, _lnk)
-          self.delete(sst, _lnk.name, unlinked)
+          requested_type = _lnk.options.get("node", {}).get("type")
+          self.delete(sst, _lnk.name, unlinked, node_type=requested_type)
         else:
           dir.do_unlink(sst, lnk, _lnk, unlinked)
         _lnk.closing = True
@@ -1078,7 +1079,7 @@ class Engine:
 
     sst.write_cmds(cmds, declared)
 
-  def delete(self, sst, name, action):
+  def delete(self, sst, name, action, node_type=None):
     def deleted():
       del self.address_cache[name]
       action()
@@ -1092,7 +1093,7 @@ class Engine:
         action()
       else:
         raise ValueError(type)
-    self.resolve(sst, name, do_delete, force=True)
+    self.resolve(sst, name, do_delete, force=True, node_type=node_type)
 
   def process(self, ssn):
     if ssn.closed or ssn.closing: return

Modified: qpid/trunk/qpid/tests/src/py/qpid_tests/broker_0_10/new_api.py
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/tests/src/py/qpid_tests/broker_0_10/new_api.py?rev=1613130&r1=1613129&r2=1613130&view=diff
==============================================================================
--- qpid/trunk/qpid/tests/src/py/qpid_tests/broker_0_10/new_api.py (original)
+++ qpid/trunk/qpid/tests/src/py/qpid_tests/broker_0_10/new_api.py Thu Jul 24 13:48:30 2014
@@ -197,7 +197,7 @@ class GeneralTests(Base):
     def test_node_disambiguation(self):
         agent = BrokerAgent(self.conn)
         agent.addExchange("fanout", "ambiguous")
-        queue = agent.addQueue("ambiguous")
+        agent.addQueue("ambiguous")
         try:
             r1 = self.ssn.receiver("ambiguous; {node:{type:topic}}")
             r2 = self.ssn.receiver("ambiguous; {node:{type:queue}}")
@@ -236,6 +236,35 @@ class GeneralTests(Base):
             if exchange: agent.delExchange("ambiguous")
             if queue: agent.delQueue("ambiguous", False, False)
 
+    def test_ambiguous_delete_1(self):
+        agent = BrokerAgent(self.conn)
+        agent.addExchange("fanout", "ambiguous")
+        agent.addQueue("ambiguous")
+        self.ssn.receiver("ambiguous; {delete:receiver, node:{type:topic}}").close()
+        exchange = agent.getExchange("ambiguous")
+        queue = agent.getQueue("ambiguous")
+        try:
+            assert(not exchange)
+            assert(queue)
+        finally:
+            if exchange: agent.delExchange("ambiguous")
+            if queue: agent.delQueue("ambiguous", False, False)
+
+    def test_ambiguous_delete_2(self):
+        agent = BrokerAgent(self.conn)
+        agent.addExchange("fanout", "ambiguous")
+        agent.addQueue("ambiguous")
+        self.ssn.receiver("ambiguous; {delete:receiver, node:{type:queue}}").close()
+        exchange = agent.getExchange("ambiguous")
+        queue = agent.getQueue("ambiguous")
+        try:
+            assert(exchange)
+            assert(not queue)
+        finally:
+            if exchange: agent.delExchange("ambiguous")
+            if queue: agent.delQueue("ambiguous", False, False)
+
+
 class SequenceNumberTests(Base):
     """
     Tests of ring queue sequence number



---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@qpid.apache.org
For additional commands, e-mail: commits-help@qpid.apache.org