You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@qpid.apache.org by tr...@apache.org on 2008/09/24 19:26:59 UTC

svn commit: r698662 - in /incubator/qpid/trunk/qpid/python: qpid/testlib.py tests_0-10/management.py

Author: tross
Date: Wed Sep 24 10:26:59 2008
New Revision: 698662

URL: http://svn.apache.org/viewvc?rev=698662&view=rev
Log:
QPID-1291 - William Henry's python test (plus some test harness updates)

Modified:
    incubator/qpid/trunk/qpid/python/qpid/testlib.py
    incubator/qpid/trunk/qpid/python/tests_0-10/management.py

Modified: incubator/qpid/trunk/qpid/python/qpid/testlib.py
URL: http://svn.apache.org/viewvc/incubator/qpid/trunk/qpid/python/qpid/testlib.py?rev=698662&r1=698661&r2=698662&view=diff
==============================================================================
--- incubator/qpid/trunk/qpid/python/qpid/testlib.py (original)
+++ incubator/qpid/trunk/qpid/python/qpid/testlib.py Wed Sep 24 10:26:59 2008
@@ -22,7 +22,7 @@
 #
 
 import sys, re, unittest, os, random, logging, traceback
-import qpid.client, qpid.spec
+import qpid.client, qpid.spec, qpid.qmfconsole
 import Queue
 from fnmatch import fnmatch
 from getopt import getopt, GetoptError
@@ -357,6 +357,11 @@
                                username=testrunner.user, password=testrunner.password)
         self.conn.start(timeout=10)        
         self.session = self.conn.session("test-session", timeout=10)
+        self.qmf = None
+
+    def startQmf(self):
+        self.qmf = qpid.qmfconsole.Session()
+        self.qmf_broker = self.qmf.addBroker("%s:%d" % (testrunner.host, testrunner.port))
 
     def connect(self, host=None, port=None):
         spec = testrunner.spec
@@ -367,6 +372,8 @@
     def tearDown(self):
         if not self.session.error(): self.session.close(timeout=10)
         self.conn.close(timeout=10)
+        if self.qmf:
+            self.qmf.delBroker(self.qmf_broker)
 
     def subscribe(self, session=None, **keys):
         session = session or self.session

Modified: incubator/qpid/trunk/qpid/python/tests_0-10/management.py
URL: http://svn.apache.org/viewvc/incubator/qpid/trunk/qpid/python/tests_0-10/management.py?rev=698662&r1=698661&r2=698662&view=diff
==============================================================================
--- incubator/qpid/trunk/qpid/python/tests_0-10/management.py (original)
+++ incubator/qpid/trunk/qpid/python/tests_0-10/management.py Wed Sep 24 10:26:59 2008
@@ -20,13 +20,14 @@
 from qpid.datatypes import Message, RangedSet
 from qpid.testlib import TestBase010
 from qpid.management import managementChannel, managementClient
+from qpid import qmfconsole
 
 class ManagementTest (TestBase010):
     """
     Tests for the management hooks
     """
 
-    def test_broker_connectivity (self):
+    def test_broker_connectivity_oldAPI (self):
         """
         Call the "echo" method on the broker to verify it is alive and talking.
         """
@@ -52,6 +53,25 @@
             self.assertEqual (res.body,       body)
         mc.removeChannel (mch)
 
+    def test_broker_connectivity (self):
+        """
+        Call the "echo" method on the broker to verify it is alive and talking.
+        """
+        session = self.session
+        self.startQmf()
+ 
+        brokers = self.qmf.getObjects(name="broker")
+        self.assertEqual (len(brokers), 1)
+        broker = brokers[0]
+
+        body = "Echo Message Body"
+        for seq in range (1, 10):
+            res = broker.echo(seq, body)
+            self.assertEqual (res.status,   0)
+            self.assertEqual (res.text,     "OK")
+            self.assertEqual (res.sequence, seq)
+            self.assertEqual (res.body,     body)
+
     def test_system_object (self):
         session = self.session
  
@@ -105,3 +125,80 @@
             if exchange.name == name:
                 return exchange
         return None
+
+    def test_move_queued_messages(self):
+        """
+        Test ability to move messages from the head of one queue to another.
+        Need to test moveing all and N messages.
+        """
+        self.startQmf()
+        session = self.session
+        "Set up source queue"
+        session.queue_declare(queue="src-queue", exclusive=True, auto_delete=True)
+        session.exchange_bind(queue="src-queue", exchange="amq.direct", binding_key="routing_key")
+        move_part = "Move Messages "
+        twenty = range(1,21)
+        props = session.delivery_properties(routing_key="routing_key")
+        for count in twenty:
+            body = move_part + 'count'
+            src_msg = Message(props, body)
+            session.message_transfer(destination="amq.direct", message=src_msg)
+
+        "Set up destination queue"
+        session.queue_declare(queue="dest-queue", exclusive=True, auto_delete=True)
+        session.exchange_bind(queue="dest-queue", exchange="amq.direct")
+
+        "Get a management agent session interface"
+        #qmf_sess = qmfconsole.Session()
+        #broker = qmf_sess.addBroker("%s:%d" % (testrunner.host, testrunner.port))
+        queues = self.qmf.getObjects(name="queue")
+
+        "Move 10 messages from src-queue to dest-queue"
+        result = self.qmf.getObjects(name="broker")[0].queueMoveMessages("src-queue", "dest-queue", 10)
+        self.assertEqual (result.status, 0) 
+
+        queues = self.qmf.getObjects(name="queue")
+        for q in queues:
+            if q.name == "src-queue":
+               sq = q 
+            elif q.name == "dest-queue":
+               dq = q 
+
+        self.assertEqual (sq.msgDepth,10)
+        self.assertEqual (dq.msgDepth,10)
+
+        "Move all remaining messages to destination"
+        result = self.qmf.getObjects(name="broker")[0].queueMoveMessages("src-queue", "dest-queue", 0)
+        self.assertEqual (result.status,0)
+
+        queues = self.qmf.getObjects(name="queue")
+        for q in queues:
+            if q.name == "src-queue":
+               sq = q 
+            elif q.name == "dest-queue":
+               dq = q 
+        self.assertEqual (sq.msgDepth,0)
+        self.assertEqual (dq.msgDepth,20)
+
+        "Use a bad source queue name"
+        result = self.qmf.getObjects(name="broker")[0].queueMoveMessages("bad-src-queue", "dest-queue", 0)
+        self.assertEqual (result.status,4)
+
+        "Use a bad destination queue name"
+        result = self.qmf.getObjects(name="broker")[0].queueMoveMessages("src-queue", "bad-dest-queue", 0)
+        self.assertEqual (result.status,4)
+
+        " Use a large qty (40) to move from dest-queue back to "
+        " src-queue- should move all "
+        result = self.qmf.getObjects(name="broker")[0].queueMoveMessages("dest-queue", "src-queue", 40)
+        self.assertEqual (result.status,0)
+
+        queues = self.qmf.getObjects(name="queue")
+        for q in queues:
+            if q.name == "src-queue":
+               sq = q 
+            elif q.name == "dest-queue":
+               dq = q 
+        self.assertEqual (sq.msgDepth,20)
+        self.assertEqual (dq.msgDepth,0)
+