[rhmessaging-commits] rhmessaging commits: r2316 - mgmt/trunk/cumin/python/cumin.

rhmessaging-commits at lists.jboss.org rhmessaging-commits at lists.jboss.org
Fri Aug 15 15:17:19 EDT 2008


Author: eallen
Date: 2008-08-15 15:17:19 -0400 (Fri, 15 Aug 2008)
New Revision: 2316

Modified:
   mgmt/trunk/cumin/python/cumin/test.py
Log:
Added tests for:
 - Create new Broker Link
  - Create Route
  - Remove Route
 - Remove Broker Link
 - Binding to Direct exchange
 - Binding to Topic exchange
 - Binding to Fanout exchange
 - Binding to Headers exchange
 - Remove queue binding

Modified: mgmt/trunk/cumin/python/cumin/test.py
===================================================================
--- mgmt/trunk/cumin/python/cumin/test.py	2008-08-15 14:48:59 UTC (rev 2315)
+++ mgmt/trunk/cumin/python/cumin/test.py	2008-08-15 19:17:19 UTC (rev 2316)
@@ -13,7 +13,6 @@
 from util import *
 import time
 
-
 class TestBroker(Thread):
     def __init__(self, path, port):
         super(TestBroker, self).__init__()
@@ -251,6 +250,136 @@
         BrokerGroupTest(env, self)
         BrokerRegistrationTest(env, self)
 
+class BrokerLinkTest(Test):
+    def __init__(self, env, parent):
+        super(BrokerLinkTest, self).__init__(env, parent)
+        
+        RouteTest(env, self)
+        self.LinkRemove(env, self)
+
+    def do_run(self, session):
+        p, s = self.env.page_and_session()
+
+        reg = self.env.broker_registration
+        form = p.show_main(s).show_broker(s, reg).show_broker_link_add(s)
+        
+        host = dict()
+        host["name"] = "localhost"
+        host["port"] = "9991"
+        host["password"] = ""
+        host["username"] = ""
+        form.host.set(s, host)
+        form.durable.set(s, "transient")
+
+        form.submit(s)
+        p.process(s)
+
+        self.env.check_redirect(p, s)
+
+        vhost = self.env.vhost
+
+        def predicate():
+            for item in Link.selectBy(vhost=vhost, host="localhost", port=9991):
+                return True
+
+        wait(predicate)
+
+        try:
+            self.env.link = Link.selectBy(vhost=vhost, host="localhost", port=9991)[0]
+        except IndexError:
+            raise Exception("Link not created")
+
+        self.run_children(session)
+
+    class LinkRemove(Test):
+        def do_run(self, session):
+            p, s = self.env.page_and_session()
+
+            reg = self.env.broker_registration
+            form = p.show_main(s).show_broker(s, reg).show_broker_links_close(s)
+
+            ids = [self.env.link.id]
+            form.ids.set(s, ids)
+            
+            form.submit(s)
+            p.process(s)
+
+            self.env.check_redirect(p, s)
+            
+            def predicate():
+                return self.env.link.deletionTime
+
+            wait(predicate)
+
+            # if it timed out, raise an exception
+            if not self.env.link.deletionTime:
+                raise Exception("Link not removed")
+
+class RouteTest(Test):
+    def __init__(self, env, parent):
+        super(RouteTest, self).__init__(env, parent)
+        
+        self.Add(env, self)
+        self.Remove(env, self)
+
+    def do_run(self, session):
+        self.run_children(session)
+
+    class Add(Test):
+        def do_run(self, session):
+            p, s = self.env.page_and_session()
+    
+            reg = self.env.broker_registration
+            form = p.show_main(s).show_broker(s, reg).show_peer(s, self.env.link).show_bridge_add(s)
+            
+            vhost = self.env.vhost
+            exchange = Exchange.selectBy(vhost=vhost, name=self.env.broker_exchange.name)[0]
+            form.exchange.set(s, str(exchange.id))
+
+            form.key.set(s, "cumin.key")
+            form.tag.set(s, "cumin.tag")
+            form.excludes.set(s, "cumin.tag")
+    
+            form.submit(s)
+            p.process(s)
+    
+            self.env.check_redirect(p, s)
+    
+            def predicate():
+                for item in Bridge.selectBy(link=self.env.link, dest=self.env.broker_exchange.name, key="cumin.key"):
+                    return True
+    
+            wait(predicate)
+    
+            try:
+                self.env.bridge = Bridge.selectBy(link=self.env.link, dest=self.env.broker_exchange.name, key="cumin.key")[0]
+            except IndexError:
+                raise Exception("Route not created")
+    
+    class Remove(Test):
+        def do_run(self, session):
+            p, s = self.env.page_and_session()
+
+            reg = self.env.broker_registration
+            form = p.show_main(s).show_broker(s, reg).show_peer(s, self.env.link).show_routes_close(s)
+
+            ids = [self.env.bridge.id]
+            form.ids.set(s, ids)
+            
+            form.submit(s)
+            p.process(s)
+
+            self.env.check_redirect(p, s)
+            
+            def predicate():
+                return self.env.bridge.deletionTime
+
+            wait(predicate)
+
+            # if it timed out, raise an exception
+            if not self.env.bridge.deletionTime:
+                raise Exception("Route not removed")
+
 class BrokerRegistrationTest(Test):
     def __init__(self, env, parent):
         super(BrokerRegistrationTest, self).__init__(env, parent)
@@ -381,6 +510,7 @@
         QueueTest(env, self)
         ExchangeTest(env, self)
         ConnectionTest(env, self)
+        BrokerLinkTest(env, self)
 
     def do_run(self, session):
         def predicate():
@@ -397,113 +527,249 @@
 
         self.run_children(session)
 
-class QueueTest(Test):
+class BindQueueTest(Test):
     def __init__(self, env, parent):
-        super(QueueTest, self).__init__(env, parent)
+        super(BindQueueTest, self).__init__(env, parent)
 
-        self.Add(env, self)
-        self.Bind(env, self)
-        self.Remove(env, self)
-        
-        self.queue = None
+        self.BindDirect(env, self)
+        self.BindTopic(env, self)
+        self.BindFanout(env, self)
+        self.BindHeaders(env, self)
+        self.RemoveBindDirect(env, self)
 
-    def set_queue(self, queue):
-        self.queue = queue
+    def do_run(self, session):
+        self.run_children(session)
         
-    def get_queue(self):
-        return self.queue
-    
-    def do_run(self, session):
-        vhost = self.env.vhost
-        name = self.env.broker_queue.name
+    class BindDirect(Test):
+        def do_run(self, session):
+            p, s = self.env.page_and_session()
 
-        def predicate():
-            for item in Queue.selectBy(vhost=vhost, name=name):
-                return True
+            reg = self.env.broker_registration
+            form = p.show_main(s).show_broker(s, reg)
+            form = form.show_queue(s, self.env.queue)
+            form = form.show_queue_binding_add(s)
+            binding = dict()
+            binding["test"] = {}
+            direct = binding["test"]
+            direct["name"] = "amq.direct"
+            direct["type"] = "direct"
+            form.bindings.dict_param.set(s, binding)
+            
+            form.submit(s)
+            p.process(s)
 
-        wait(predicate)
+            self.env.check_redirect(p, s)
 
-        try:
-            self.env.queue = Queue.selectBy(vhost=vhost, name=name)[0]
-        except IndexError:
-            raise Exception("Queue not found")
+            def predicate():
+                for item in Binding.selectBy(queue=self.env.queue, bindingKey=self.env.queue.name):
+                    return True
 
-        self.run_children(session)
+            wait(predicate)
 
-    class Add(Test):
+            # if it timed out, raise an exception
+            try:
+                self.env.binding_direct = Binding.selectBy(queue=self.env.queue, bindingKey=self.env.queue.name)[0]
+            except IndexError:
+                raise Exception("Direct Binding not added")
+
+    class BindTopic(Test):
         def do_run(self, session):
-            name = "cumin.queue.%s" % session.id
             p, s = self.env.page_and_session()
 
             reg = self.env.broker_registration
-            form = p.show_main(s).show_broker(s, reg).show_queue_add(s)
-            form.namef.set(s, name)
-            form.durable.set(s, "durable")
-            form.autodelete.set(s, "preserve")
-
+            form = p.show_main(s).show_broker(s, reg)
+            form = form.show_queue(s, self.env.queue)
+            form = form.show_queue_binding_add(s)
+            binding = dict()
+            binding["test"] = {}
+            direct = binding["test"]
+            direct["name"] = "amq.topic"
+            direct["type"] = "topic"
+            direct["key"] = "topic.key"
+            form.bindings.dict_param.set(s, binding)
+            
             form.submit(s)
             p.process(s)
 
             self.env.check_redirect(p, s)
 
-            vhost = self.env.vhost
-    
-            # wait for newly created queue to show up
             def predicate():
-                for item in Queue.selectBy(vhost=vhost, name=name):
+                for item in Binding.selectBy(queue=self.env.queue, bindingKey="topic.key"):
                     return True
 
             wait(predicate)
 
             # if it timed out, raise an exception
             try:
-                queue = Queue.selectBy(vhost=vhost, name=name)[0]
-                self.parent.set_queue(queue)
+                Binding.selectBy(queue=self.env.queue, bindingKey="topic.key")[0]
             except IndexError:
-                raise Exception("Queue %s not added" % name)
-                self.parent.set_queue(None)
+                raise Exception("Topic Binding not added")
 
-    class Bind(Test):
+    class BindFanout(Test):
         def do_run(self, session):
-            name = "cumin.queue.%s" % session.id
-            queue = self.parent.get_queue()
-            if not queue:
-                raise Exception("Bind skipped because Queue %s not added" % name)
+            p, s = self.env.page_and_session()
 
-            # try to bind to it
+            reg = self.env.broker_registration
+            form = p.show_main(s).show_broker(s, reg)
+            form = form.show_queue(s, self.env.queue)
+            form = form.show_queue_binding_add(s)
+            binding = dict()
+            binding["test"] = {}
+            direct = binding["test"]
+            direct["name"] = "amq.fanout"
+            direct["type"] = "fanout"
+            form.bindings.dict_param.set(s, binding)
+            
+            form.submit(s)
+            p.process(s)
+
+            self.env.check_redirect(p, s)
+
+            def predicate():
+                for item in Binding.selectBy(queue=self.env.queue):
+                    if item.exchange.name == "amq.fanout":
+                        return True
+
+            wait(predicate)
+
+            for item in Binding.selectBy(queue=self.env.queue):
+                if item.exchange.name == "amq.fanout":
+                    return
+
+            raise Exception("Fanout Binding not added")
+
+    class BindHeaders(Test):
+        def do_run(self, session):
             p, s = self.env.page_and_session()
 
             reg = self.env.broker_registration
             form = p.show_main(s).show_broker(s, reg)
-            form = form.show_queue(s, queue)
+            form = form.show_queue(s, self.env.queue)
             form = form.show_queue_binding_add(s)
             binding = dict()
             binding["test"] = {}
             direct = binding["test"]
-            direct["name"] = "amq.direct"
-            direct["type"] = "direct"
+            direct["name"] = "amq.match"
+            direct["type"] = "headers"
+            direct["key"] = "headers.key"
+            direct["x-match"] = "all"
+            direct["mkey.1"] = "key1"
+            direct["mkey.1.nv"] = "name.value.1"
             form.bindings.dict_param.set(s, binding)
             
             form.submit(s)
+            p.process(s)
 
+            self.env.check_redirect(p, s)
+
+            def predicate():
+                for item in Binding.selectBy(queue=self.env.queue, bindingKey="headers.key"):
+                    return True
+
+            wait(predicate)
+
+            # if it timed out, raise an exception
+            try:
+                Binding.selectBy(queue=self.env.queue, bindingKey="headers.key")[0]
+            except IndexError:
+                raise Exception("Headers Binding not added")
+
+    class RemoveBindDirect(Test):
+        def do_run(self, session):
+            p, s = self.env.page_and_session()
+
+            reg = self.env.broker_registration
+            form = p.show_main(s).show_broker(s, reg)
+            form = form.show_queue_bindings_remove(s, self.env.queue)
+
+            ids = [self.env.binding_direct.id]
+            form.ids.set(s, ids)
+
+            form.submit(s)
             p.process(s)
 
             self.env.check_redirect(p, s)
 
+            def predicate():
+                return self.env.binding_direct.deletionTime
+
+            wait(predicate)
+
+            # if it timed out, raise an exception
+            if not self.env.binding_direct.deletionTime:
+                raise Exception("Direct Binding not removed")
+
+class AddQueueTest(Test):
+    def __init__(self, env, parent):
+        super(AddQueueTest, self).__init__(env, parent)
+
+        BindQueueTest(env, self)
+
+    def do_run(self, session):
+        name = "cumin.queue.%s" % session.id
+        p, s = self.env.page_and_session()
+
+        reg = self.env.broker_registration
+        form = p.show_main(s).show_broker(s, reg).show_queue_add(s)
+        form.namef.set(s, name)
+        form.durable.set(s, "durable")
+        form.autodelete.set(s, "preserve")
+
+        form.submit(s)
+        p.process(s)
+
+        self.env.check_redirect(p, s)
+
+        vhost = self.env.vhost
+
+        # wait for newly created queue to show up
+        def predicate():
+            for item in Queue.selectBy(vhost=vhost, name=name):
+                return True
+
+        wait(predicate)
+
+        # if it timed out, raise an exception
+        try:
+            self.env.queue = Queue.selectBy(vhost=vhost, name=name)[0]
+        except IndexError:
+            raise Exception("Queue %s not added" % name)
+
+        self.run_children(session)
+
+
+class QueueTest(Test):
+    def __init__(self, env, parent):
+        super(QueueTest, self).__init__(env, parent)
+
+        AddQueueTest(env, self)
+        self.Remove(env, self)
+        
+    def do_run(self, session):
+        vhost = self.env.vhost
+        name = self.env.broker_queue.name
+
+        def predicate():
+            for item in Queue.selectBy(vhost=vhost, name=name):
+                return True
+
+        wait(predicate)
+
+        try:
+            self.env.broker_queue = Queue.selectBy(vhost=vhost, name=name)[0]
+        except IndexError:
+            raise Exception("Queue not found")
+
+        self.run_children(session)
+
     class Remove(Test):
         def do_run(self, session):
-            name = "cumin.queue.%s" % session.id
-            queue = self.parent.get_queue()
-            if not queue:
-                raise Exception("Remove skipped because Queue %s not added" % name)
-
-            # try to delete it
             p, s = self.env.page_and_session()
 
             reg = self.env.broker_registration
             form = p.show_main(s).show_broker(s, reg).show_queues_remove(s)
 
-            ids = [queue.id]
+            ids = [self.env.queue.id]
             form.ids.set(s, ids)
             
             form.submit(s)
@@ -513,22 +779,20 @@
 
             # wait for newly created queue to get marked as deleted
             def predicate():
-                return queue.deletionTime
+                return self.env.queue.deletionTime
 
             wait(predicate)
 
             # if it timed out, raise an exception
-            if not queue.deletionTime:
-                raise Exception("Queue %s not removed" % name)
+            if not self.env.queue.deletionTime:
+                raise Exception("Queue not removed")
 
 class ExchangeTest(Test):
     def __init__(self, env, parent):
         super(ExchangeTest, self).__init__(env, parent)
 
         self.Add(env, self)
-        self.Added(env, self)
         self.Remove(env, self)
-        self.Removed(env, self)
 
     def do_run(self, session):
         vhost = self.env.vhost
@@ -556,11 +820,7 @@
 
             self.env.check_redirect(p, s)
 
-    class Added(Test):
-        def do_run(self, session):
             vhost = self.env.vhost
-            name = "cumin.exchange.%s" % session.id
-    
             # wait for newly created exchange to show up
             def predicate():
                 for item in Exchange.selectBy(vhost=vhost, name=name):
@@ -590,8 +850,6 @@
 
             self.env.check_redirect(p, s)
 
-    class Removed(Test):
-        def do_run(self, session):
             name = "cumin.exchange.%s" % session.id
         
             # wait for newly created exchange to get marked as deleted
@@ -603,7 +861,6 @@
             if not self.env.added_exchange.deletionTime:
                 raise Exception("Exchange %s not removed" % name)
         
-
 class ConnectionTest(Test):
     def do_run(self, session):
         raise Exception("Not implemented")




More information about the rhmessaging-commits mailing list