Author: aconway
Date: Fri Jun  6 00:31:09 2014
New Revision: 1600796

URL: http://svn.apache.org/r1600796
Log:
NO-JIRA: Modify system_tests_one_router to use sytem_test framework.

Captures log output from the router under system_test.dir.
Runs a lot faster on python 2.6, doesn't start a router for every test.

Modified:
    qpid/dispatch/trunk/tests/config_build.sh.in
    qpid/dispatch/trunk/tests/system_test.py
    qpid/dispatch/trunk/tests/system_tests_broker.py
    qpid/dispatch/trunk/tests/system_tests_one_router.py

Modified: qpid/dispatch/trunk/tests/config_build.sh.in
URL: 
http://svn.apache.org/viewvc/qpid/dispatch/trunk/tests/config_build.sh.in?rev=1600796&r1=1600795&r2=1600796&view=diff
==============================================================================
--- qpid/dispatch/trunk/tests/config_build.sh.in (original)
+++ qpid/dispatch/trunk/tests/config_build.sh.in Fri Jun  6 00:31:09 2014
@@ -20,6 +20,7 @@
 # Configuration for running tests directly against the build in src (no need 
to install)
 export SOURCE_DIR=${CMAKE_SOURCE_DIR}
 export BUILD_DIR=${CMAKE_BINARY_DIR}
+export QPID_DISPATCH_HOME=${CMAKE_SOURCE_DIR} # to pick up python system tests.
 
 export PYTHONPATH=$SOURCE_DIR/python:$SOURCE_DIR/tests:$PYTHONPATH
 export PATH=$BUILD_DIR:$BUILD_DIR/router:$BUILD_DIR/tools:$SOURCE_DIR/bin:$PATH

Modified: qpid/dispatch/trunk/tests/system_test.py
URL: 
http://svn.apache.org/viewvc/qpid/dispatch/trunk/tests/system_test.py?rev=1600796&r1=1600795&r2=1600796&view=diff
==============================================================================
--- qpid/dispatch/trunk/tests/system_test.py (original)
+++ qpid/dispatch/trunk/tests/system_test.py Fri Jun  6 00:31:09 2014
@@ -52,7 +52,7 @@ export PYTHONPATH="$PYTHONPATH:/usr/loca
 export LD_LIBRARY_PATH="$LD_LIBRARY_PATH:/usr/local/lib64"
 """
 
-import os, time, socket, random, subprocess, shutil, unittest
+import os, time, socket, random, subprocess, shutil, unittest, inspect
 from copy import copy
 import proton
 from proton import Message
@@ -429,7 +429,7 @@ class Messenger(proton.Messenger): # pyl
 
     def flush(self):
         """Call work() till there is no work left."""
-        while self.work(0.01):
+        while self.work(0.1):
             pass
 
     @flush_arg
@@ -539,13 +539,18 @@ class TestCase(unittest.TestCase, Tester
 
     @classmethod
     def setUpClass(cls):
+        # Don't delete cwd out from under ourselves.
+        # cwd can be a subdir of base_dir if we were called by 
test_0000_setup_class
+        if os.path.commonprefix([os.getcwd(), cls.base_dir()]) == 
cls.base_dir():
+            os.chdir(os.path.dirname(cls.base_dir()))
         shutil.rmtree(cls.base_dir(), ignore_errors=True) # Clear old test 
tree.
         cls.tester = Tester()
         cls.tester.setup(os.path.join(cls.base_dir(), 'setup_class'))
 
     @classmethod
     def tearDownClass(cls):
-        cls.tester.teardown()
+        if inspect.isclass(cls):
+            cls.tester.teardown()
 
     def setUp(self):
         # self.id() is normally the fully qualified method name
@@ -568,10 +573,10 @@ class TestCase(unittest.TestCase, Tester
     if not hasattr(unittest.TestCase, 'setUpClass'):
         def test_0000_setup_class(self):
             """Fake test to call setUpClass"""
-            self.__class__.setUpClass()
+            self.setUpClass()
         def test_zzzz_teardown_class(self):
             """Fake test to call tearDownClass"""
-            self.__class__.tearDownClass()
+            self.tearDownClass()
 
     def assert_fair(self, seq):
         avg = sum(seq)/len(seq)

Modified: qpid/dispatch/trunk/tests/system_tests_broker.py
URL: 
http://svn.apache.org/viewvc/qpid/dispatch/trunk/tests/system_tests_broker.py?rev=1600796&r1=1600795&r2=1600796&view=diff
==============================================================================
--- qpid/dispatch/trunk/tests/system_tests_broker.py (original)
+++ qpid/dispatch/trunk/tests/system_tests_broker.py Fri Jun  6 00:31:09 2014
@@ -28,10 +28,6 @@ from itertools import cycle
 class DistributedQueueTest(system_test.TestCase): # pylint: 
disable=too-many-public-methods
     """System tests involving routers and qpidd brokers"""
 
-    # Hack for python 2.6 which does not support setupClass.
-    # We set setup_ok = true in setupClass, and skip all tests if it's not 
true.
-    setup_ok = False
-
     @classmethod
     def setUpClass(cls):
         """Start 3 qpidd brokers, wait for them to be ready."""
@@ -40,13 +36,10 @@ class DistributedQueueTest(system_test.T
                     for i in xrange(3)]
         for q in cls.qpidd:
             wait_port(q.port)
-        cls.setup_ok = True
 
     @classmethod
     def tearDownClass(cls):
-        if cls.setup_ok:
-            cls.setup_ok = False
-            super(DistributedQueueTest, cls).tearDownClass()
+        super(DistributedQueueTest, cls).tearDownClass()
 
     def setUp(self):
         super(DistributedQueueTest, self).setUp()
@@ -89,8 +82,6 @@ class DistributedQueueTest(system_test.T
     def test_distrbuted_queue(self):
         """Create a distributed queue with N routers and N brokers.
         Each router is connected to all the brokers."""
-        if not self.setup_ok:
-            return self.skipTest("setUpClass failed")
         for q in self.qpidd:
             q.agent.addQueue(self.testq)
 

Modified: qpid/dispatch/trunk/tests/system_tests_one_router.py
URL: 
http://svn.apache.org/viewvc/qpid/dispatch/trunk/tests/system_tests_one_router.py?rev=1600796&r1=1600795&r2=1600796&view=diff
==============================================================================
--- qpid/dispatch/trunk/tests/system_tests_one_router.py (original)
+++ qpid/dispatch/trunk/tests/system_tests_one_router.py Fri Jun  6 00:31:09 
2014
@@ -22,52 +22,34 @@ import os
 import time
 import unittest
 import subprocess
-from proton import Messenger, Message, PENDING, ACCEPTED, REJECTED, RELEASED
+from proton import Message, PENDING, ACCEPTED, REJECTED, RELEASED
+from system_test import TestCase, message, Messenger, Qdrouterd
 
-def startRouter(obj):
-    default_home = os.path.normpath('/usr/lib/qpid-dispatch')
-    home = os.environ.get('QPID_DISPATCH_HOME', default_home)
-    config_file = '%s/tests/config-1/A.conf' % home
-
-    obj.router = subprocess.Popen(['qdrouterd', '-c', config_file],
-                                  stderr=subprocess.PIPE,
-                                  stdout=subprocess.PIPE)
-    time.sleep(1)
-
-def stopRouter(obj):
-    obj.router.terminate()
-    obj.router.communicate()
-
-
-class RouterTest(unittest.TestCase):
-
-    if (sys.version_info[0] == 2) and (sys.version_info[1] < 7):
-        def setUp(self):
-            startRouter(self)
-
-        def tearDown(self):
-            stopRouter(self)
-    else:
-        @classmethod
-        def setUpClass(cls):
-            startRouter(cls)
-
-        @classmethod
-        def tearDownClass(cls):
-            stopRouter(cls)
-
-    def flush(self, messenger):
-        while messenger.work(0.1):
-            pass
-
-    def subscribe(self, messenger, address):
-        sub = messenger.subscribe(address)
-        self.flush(messenger)
-        return sub
+class RouterTest(TestCase):
+    """System tests involving a single router"""
+
+    @classmethod
+    def setUpClass(cls):
+        """Start a router and a messenger"""
+        super(RouterTest, cls).setUpClass()
+        name = "test-router"
+        config = Qdrouterd.Config([
+            ('log', {'module':'DEFAULT', 'level':'info', 
'output':name+".log"}),
+            ('container', {'worker-threads': 4, 'container-name': 
'Qpid.Dispatch.Router.A'}),
+            ('router', {'mode': 'standalone', 'router-id': 'QDR'}),
+            ('listener', {'port': cls.tester.get_port()}),
+            ('fixed-address', {'prefix': '/closest/', 'fanout': 'single', 
'bias': 'closest'}),
+            ('fixed-address', {'prefix': '/spread/', 'fanout': 'single', 
'bias': 'spread'}),
+            ('fixed-address', {'prefix': '/multicast/', 'fanout': 'multiple'}),
+            ('fixed-address', {'prefix': '/', 'fanout': 'multiple'})
+        ])
+        cls.router = cls.tester.qdrouterd(name, config)
+        cls.router.wait_ready()
+        cls.address = cls.router.addresses[0]
 
 
     def test_00_discard(self):
-        addr = "amqp://0.0.0.0:20000/discard/1"
+        addr = self.address+"/discard/1"
         M1 = Messenger()
         M1.timeout = 1.0
         M1.start()
@@ -81,7 +63,7 @@ class RouterTest(unittest.TestCase):
 
 
     def test_01_pre_settled(self):
-        addr = "amqp://0.0.0.0:20000/pre_settled/1"
+        addr = self.address+"/pre_settled/1"
         M1 = Messenger()
         M2 = Messenger()
 
@@ -90,7 +72,7 @@ class RouterTest(unittest.TestCase):
 
         M1.start()
         M2.start()
-        self.subscribe(M2, addr)
+        M2.subscribe(addr, flush=True)
 
         tm = Message()
         rm = Message()
@@ -111,7 +93,7 @@ class RouterTest(unittest.TestCase):
 
 
     def test_02_multicast(self):
-        addr = "amqp://0.0.0.0:20000/pre_settled/multicast/1"
+        addr = self.address+"/pre_settled/multicast/1"
         M1 = Messenger()
         M2 = Messenger()
         M3 = Messenger()
@@ -127,9 +109,9 @@ class RouterTest(unittest.TestCase):
         M3.start()
         M4.start()
 
-        self.subscribe(M2, addr)
-        self.subscribe(M3, addr)
-        self.subscribe(M4, addr)
+        M2.subscribe(addr, flush=True)
+        M3.subscribe(addr, flush=True)
+        M4.subscribe(addr, flush=True)
 
         tm = Message()
         rm = Message()
@@ -160,7 +142,7 @@ class RouterTest(unittest.TestCase):
 
 
     def test_02a_multicast_unsettled(self):
-        addr = "amqp://0.0.0.0:20000/pre_settled/multicast/1"
+        addr = self.address+"/pre_settled/multicast/1"
         M1 = Messenger()
         M2 = Messenger()
         M3 = Messenger()
@@ -181,9 +163,9 @@ class RouterTest(unittest.TestCase):
         M3.start()
         M4.start()
 
-        self.subscribe(M2, addr)
-        self.subscribe(M3, addr)
-        self.subscribe(M4, addr)
+        M2.subscribe(addr, flush=True)
+        M3.subscribe(addr, flush=True)
+        M4.subscribe(addr, flush=True)
 
         tm = Message()
         rm = Message()
@@ -220,7 +202,7 @@ class RouterTest(unittest.TestCase):
 
 
     def test_02b_disp_to_closed_connection(self):
-        addr = "amqp://0.0.0.0:20000/pre_settled/multicast/1"
+        addr = self.address+"/pre_settled/multicast/1"
         M1 = Messenger()
         M2 = Messenger()
 
@@ -232,7 +214,7 @@ class RouterTest(unittest.TestCase):
 
         M1.start()
         M2.start()
-        self.subscribe(M2, addr)
+        M2.subscribe(addr, flush=True)
 
         tm = Message()
         rm = Message()
@@ -255,7 +237,7 @@ class RouterTest(unittest.TestCase):
 
 
     def test_02c_sender_settles_first(self):
-        addr = "amqp://0.0.0.0:20000/settled/senderfirst/1"
+        addr = self.address+"/settled/senderfirst/1"
         M1 = Messenger()
         M2 = Messenger()
 
@@ -267,7 +249,7 @@ class RouterTest(unittest.TestCase):
 
         M1.start()
         M2.start()
-        self.subscribe(M2, addr)
+        M2.subscribe(addr, flush=True)
 
         tm = Message()
         rm = Message()
@@ -278,8 +260,8 @@ class RouterTest(unittest.TestCase):
         M1.send(0)
 
         M1.settle(ttrk)
-        self.flush(M1)
-        self.flush(M2)
+        M1.flush()
+        M2.flush()
 
         M2.recv(1)
         rtrk = M2.get(rm)
@@ -287,15 +269,15 @@ class RouterTest(unittest.TestCase):
         M2.settle(rtrk)
         self.assertEqual(0, rm.body['number'])
 
-        self.flush(M1)
-        self.flush(M2)
+        M1.flush()
+        M2.flush()
 
         M1.stop()
         M2.stop()
 
 
     def test_03_propagated_disposition(self):
-        addr = "amqp://0.0.0.0:20000/unsettled/1"
+        addr = self.address+"/unsettled/1"
         M1 = Messenger()
         M2 = Messenger()
 
@@ -306,7 +288,7 @@ class RouterTest(unittest.TestCase):
 
         M1.start()
         M2.start()
-        self.subscribe(M2, addr)
+        M2.subscribe(addr, flush=True)
 
         tm = Message()
         rm = Message()
@@ -327,8 +309,8 @@ class RouterTest(unittest.TestCase):
         M2.accept(rx_tracker)
         M2.settle(rx_tracker)
 
-        self.flush(M2)
-        self.flush(M1)
+        M2.flush()
+        M1.flush()
 
         self.assertEqual(ACCEPTED, M1.status(tx_tracker))
 
@@ -345,8 +327,8 @@ class RouterTest(unittest.TestCase):
         M2.reject(rx_tracker)
         M2.settle(rx_tracker)
 
-        self.flush(M2)
-        self.flush(M1)
+        M2.flush()
+        M1.flush()
 
         self.assertEqual(REJECTED, M1.status(tx_tracker))
 
@@ -355,7 +337,7 @@ class RouterTest(unittest.TestCase):
 
 
     def test_04_unsettled_undeliverable(self):
-        addr = "amqp://0.0.0.0:20000/unsettled_undeliverable/1"
+        addr = self.address+"/unsettled_undeliverable/1"
         M1 = Messenger()
 
         M1.timeout = 1.0
@@ -368,14 +350,14 @@ class RouterTest(unittest.TestCase):
 
         tx_tracker = M1.put(tm)
         M1.send(0)
-        self.flush(M1)
+        M1.flush()
         self.assertEqual(RELEASED, M1.status(tx_tracker))
 
         M1.stop()
 
 
     def test_05_three_ack(self):
-        addr = "amqp://0.0.0.0:20000/three_ack/1"
+        addr = self.address+"/three_ack/1"
         M1 = Messenger()
         M2 = Messenger()
 
@@ -386,7 +368,7 @@ class RouterTest(unittest.TestCase):
 
         M1.start()
         M2.start()
-        self.subscribe(M2, addr)
+        M2.subscribe(addr, flush=True)
 
         tm = Message()
         rm = Message()
@@ -403,15 +385,15 @@ class RouterTest(unittest.TestCase):
 
         M2.accept(rx_tracker)
 
-        self.flush(M2)
-        self.flush(M1)
+        M2.flush()
+        M1.flush()
 
         self.assertEqual(ACCEPTED, M1.status(tx_tracker))
 
         M1.settle(tx_tracker)
 
-        self.flush(M1)
-        self.flush(M2)
+        M1.flush()
+        M2.flush()
 
         ##
         ## We need a way to verify on M2 (receiver) that the tracker has been
@@ -420,22 +402,22 @@ class RouterTest(unittest.TestCase):
 
         M2.settle(rx_tracker)
 
-        self.flush(M2)
-        self.flush(M1)
+        M2.flush()
+        M1.flush()
 
         M1.stop()
         M2.stop()
 
 
 #    def test_06_link_route_sender(self):
-#        pass 
+#        pass
 
 #    def test_07_link_route_receiver(self):
-#        pass 
+#        pass
 
 
     def test_08_message_annotations(self):
-        addr = "amqp://0.0.0.0:20000/ma/1"
+        addr = self.address+"/ma/1"
         M1 = Messenger()
         M2 = Messenger()
 
@@ -444,7 +426,7 @@ class RouterTest(unittest.TestCase):
 
         M1.start()
         M2.start()
-        self.subscribe(M2, addr)
+        M2.subscribe(addr, flush=True)
 
         tm = Message()
         rm = Message()
@@ -551,8 +533,8 @@ class RouterTest(unittest.TestCase):
         M = Messenger()
         M.timeout = 2.0
         M.start()
-        M.route("amqp:/*", "amqp://0.0.0.0:20000/$1")
-        sub = self.subscribe(M, "amqp:/#")
+        M.route("amqp:/*", self.address+"/$1")
+        sub = M.subscribe("amqp:/#", flush=True)
         reply = sub.address
 
         request  = Message()
@@ -606,8 +588,8 @@ class RouterTest(unittest.TestCase):
         M = Messenger()
         M.timeout = 2.0
         M.start()
-        M.route("amqp:/*", "amqp://0.0.0.0:20000/$1")
-        sub = self.subscribe(M, "amqp:/#")
+        M.route("amqp:/*", self.address+"/$1")
+        sub = M.subscribe("amqp:/#", flush=True)
         reply = sub.address
 
         request  = Message()
@@ -688,8 +670,8 @@ class RouterTest(unittest.TestCase):
         M = Messenger()
         M.timeout = 2.0
         M.start()
-        M.route("amqp:/*", "amqp://0.0.0.0:20000/$1")
-        sub = self.subscribe(M, "amqp:/#")
+        M.route("amqp:/*", self.address+"/$1")
+        sub = M.subscribe("amqp:/#", flush=True)
         reply = sub.address
 
         request  = Message()
@@ -757,8 +739,8 @@ class RouterTest(unittest.TestCase):
         M = Messenger()
         M.timeout = 2.0
         M.start()
-        M.route("amqp:/*", "amqp://0.0.0.0:20000/$1")
-        sub = self.subscribe(M, "amqp:/#")
+        M.route("amqp:/*", self.address+"/$1")
+        sub = M.subscribe("amqp:/#", flush=True)
         reply = sub.address
 
         request  = Message()
@@ -791,8 +773,8 @@ class RouterTest(unittest.TestCase):
         M = Messenger()
         M.timeout = 2.0
         M.start()
-        M.route("amqp:/*", "amqp://0.0.0.0:20000/$1")
-        sub = self.subscribe(M, "amqp:/#")
+        M.route("amqp:/*", self.address+"/$1")
+        sub = M.subscribe("amqp:/#", flush=True)
         reply = sub.address
 
         request  = Message()
@@ -816,7 +798,7 @@ class RouterTest(unittest.TestCase):
 
 
     def test_10_semantics_multicast(self):
-        addr = "amqp://0.0.0.0:20000/multicast/1"
+        addr = self.address+"/multicast/1"
         M1 = Messenger()
         M2 = Messenger()
         M3 = Messenger()
@@ -832,9 +814,9 @@ class RouterTest(unittest.TestCase):
         M3.start()
         M4.start()
 
-        self.subscribe(M2, addr)
-        self.subscribe(M3, addr)
-        self.subscribe(M4, addr)
+        M2.subscribe(addr, flush=True)
+        M3.subscribe(addr, flush=True)
+        M4.subscribe(addr, flush=True)
 
         tm = Message()
         rm = Message()
@@ -864,7 +846,7 @@ class RouterTest(unittest.TestCase):
         M4.stop()
 
     def test_11_semantics_closest(self):
-        addr = "amqp://0.0.0.0:20000/closest/1"
+        addr = self.address+"/closest/1"
         M1 = Messenger()
         M2 = Messenger()
         M3 = Messenger()
@@ -880,9 +862,9 @@ class RouterTest(unittest.TestCase):
         M3.start()
         M4.start()
 
-        self.subscribe(M2, addr)
-        self.subscribe(M3, addr)
-        self.subscribe(M4, addr)
+        M2.subscribe(addr, flush=True)
+        M3.subscribe(addr, flush=True)
+        M4.subscribe(addr, flush=True)
 
         tm = Message()
         rm = Message()
@@ -919,7 +901,7 @@ class RouterTest(unittest.TestCase):
         M4.stop()
 
     def test_12_semantics_spread(self):
-        addr = "amqp://0.0.0.0:20000/spread/1"
+        addr = self.address+"/spread/1"
         M1 = Messenger()
         M2 = Messenger()
         M3 = Messenger()
@@ -935,9 +917,9 @@ class RouterTest(unittest.TestCase):
         M3.start()
         M4.start()
 
-        self.subscribe(M2, addr)
-        self.subscribe(M3, addr)
-        self.subscribe(M4, addr)
+        M2.subscribe(addr, flush=True)
+        M3.subscribe(addr, flush=True)
+        M4.subscribe(addr, flush=True)
 
         tm = Message()
         rm = Message()
@@ -975,7 +957,7 @@ class RouterTest(unittest.TestCase):
 
 
     def test_13_to_override(self):
-        addr = "amqp://0.0.0.0:20000/toov/1"
+        addr = self.address+"/toov/1"
         M1 = Messenger()
         M2 = Messenger()
 
@@ -984,7 +966,7 @@ class RouterTest(unittest.TestCase):
 
         M1.start()
         M2.start()
-        self.subscribe(M2, addr)
+        M2.subscribe(addr, flush=True)
 
         tm = Message()
         rm = Message()



---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to