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]