diff options
author | Ted Ross <tross@apache.org> | 2010-01-07 20:32:09 +0000 |
---|---|---|
committer | Ted Ross <tross@apache.org> | 2010-01-07 20:32:09 +0000 |
commit | a13c01c46e0d0c414e425e83261f74ddbd86dde6 (patch) | |
tree | f01a1bb1def2739f4b35a83654e37839fc2e4f0c /cpp/src | |
parent | 6aa2e3bfcf4cd8354a9d3315b70fd1de0d8767b4 (diff) | |
download | qpid-python-a13c01c46e0d0c414e425e83261f74ddbd86dde6.tar.gz |
QPID-2327 - Enhance qpid-config to deal with xml and headers brokers
Committed patch from John Dunning
git-svn-id: https://svn.apache.org/repos/asf/qpid/trunk/qpid@897007 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'cpp/src')
-rwxr-xr-x | cpp/src/tests/cli_tests.py | 110 | ||||
-rwxr-xr-x | cpp/src/tests/run_cli_tests | 35 | ||||
-rw-r--r-- | cpp/src/tests/test.xquery | 6 |
3 files changed, 148 insertions, 3 deletions
diff --git a/cpp/src/tests/cli_tests.py b/cpp/src/tests/cli_tests.py index a65097d431..4df9169cc4 100755 --- a/cpp/src/tests/cli_tests.py +++ b/cpp/src/tests/cli_tests.py @@ -99,6 +99,116 @@ class CliTests(TestBase010): found = True self.assertEqual(found, False) + # helpers for some of the test methods + def helper_find_exchange(self, xchgname, typ, expected=True): + xchgs = self.qmf.getObjects(_class = "exchange") + found = False + for xchg in xchgs: + if xchg.name == xchgname: + if typ: + self.assertEqual(xchg.type, typ) + found = True + self.assertEqual(found, expected) + + def helper_create_exchange(self, xchgname, typ="direct", opts=""): + foo = self.command(opts + " add exchange " + typ + " " + xchgname) + # print foo + ret = os.system(foo) + self.assertEqual(ret, 0) + self.helper_find_exchange(xchgname, typ, True) + + def helper_destroy_exchange(self, xchgname): + foo = self.command(" del exchange " + xchgname) + # print foo + ret = os.system(foo) + self.assertEqual(ret, 0) + self.helper_find_exchange(xchgname, False, expected=False) + + def helper_find_queue(self, qname, expected=True): + queues = self.qmf.getObjects(_class="queue") + found = False + for queue in queues: + if queue.name == qname: + self.assertEqual(queue.durable, False) + found = True + self.assertEqual(found, expected) + + def helper_create_queue(self, qname): + foo = self.command(" add queue " + qname) + # print foo + ret = os.system(foo) + self.assertEqual(ret, 0) + self.helper_find_queue(qname, True) + + def helper_destroy_queue(self, qname): + foo = self.command(" del queue " + qname) + # print foo + ret = os.system(foo) + self.assertEqual(ret, 0) + self.helper_find_queue(qname, False) + + + # test the bind-queue-to-header-exchange functionality + def test_qpid_config_headers(self): + self.startQmf(); + qmf = self.qmf + qname = "test_qpid_config" + xchgname = "test_xchg" + + # first create a header xchg + self.helper_create_exchange(xchgname, typ="headers") + + # create the queue + self.helper_create_queue(qname) + + # now bind the queue to the xchg + foo = self.command(" bind " + xchgname + " " + qname + + " key all foo=bar baz=quux") + # print foo + ret = os.system(foo) + self.assertEqual(ret, 0) + + # he likes it, mikey. Ok, now tear it all down. first the binding + ret = os.system(self.command(" unbind " + xchgname + " " + qname + + " key")) + self.assertEqual(ret, 0) + + # then the queue + self.helper_destroy_queue(qname) + + # then the exchange + self.helper_destroy_exchange(xchgname) + + # test the bind-queue-xml-filter functionality + def test_qpid_config_xml(self): + self.startQmf(); + qmf = self.qmf + qname = "test_qpid_config" + xchgname = "test_xchg" + + # first create a header xchg + self.helper_create_exchange(xchgname, typ="xml") + + # create the queue + self.helper_create_queue(qname) + + # now bind the queue to the xchg + foo = self.command("-f test.xquery bind " + xchgname + " " + qname) + # print foo + ret = os.system(foo) + self.assertEqual(ret, 0) + + # he likes it, mikey. Ok, now tear it all down. first the binding + ret = os.system(self.command(" unbind " + xchgname + " " + qname + + " key")) + self.assertEqual(ret, 0) + + # then the queue + self.helper_destroy_queue(qname) + + # then the exchange + self.helper_destroy_exchange(xchgname) + def test_qpid_config_durable(self): self.startQmf(); qmf = self.qmf diff --git a/cpp/src/tests/run_cli_tests b/cpp/src/tests/run_cli_tests index 34ce3c4f1a..f3cdea0d4f 100755 --- a/cpp/src/tests/run_cli_tests +++ b/cpp/src/tests/run_cli_tests @@ -26,10 +26,39 @@ CLI_DIR=$PYTHON_COMMANDS trap stop_brokers INT TERM QUIT +# helper function to create test.xquery in the current directory, so +# that the python test program can find it. yes, it leaves a turd. +create_test_xquery() { + cat <<EOF > ./test.xquery + let \$w := ./weather + return \$w/station = 'Raleigh-Durham International Airport (KRDU)' + and \$w/temperature_f > 50 + and \$w/temperature_f - \$w/dewpoint > 5 + and \$w/wind_speed_mph > 7 + and \$w/wind_speed_mph < 20 +EOF +} + start_brokers() { - ../qpidd --daemon --port 0 --no-data-dir --no-module-dir --auth no > qpidd.port + # if the xml lib is present, use it. if not, disable any tests which + # look like they're xml related. + # if we start supporting xml on windows, it will need something similar + # here + if [ -f ../.libs/xml.so ] ; then + xargs="--load-module ../.libs/xml.so" + if [ ! -f test.xquery ] ; then + create_test_xquery + fi + targs="" + else + echo "Ignoring XML tests" + xargs="" + targs="--ignore=*xml*" + fi + + ../qpidd --daemon --port 0 --no-data-dir --no-module-dir --auth no $xargs > qpidd.port LOCAL_PORT=`cat qpidd.port` - ../qpidd --daemon --port 0 --no-data-dir --no-module-dir --auth no > qpidd.port + ../qpidd --daemon --port 0 --no-data-dir --no-module-dir --auth no $xargs > qpidd.port REMOTE_PORT=`cat qpidd.port` } @@ -41,7 +70,7 @@ stop_brokers() { if test -d ${PYTHON_DIR} ; then start_brokers echo "Running CLI tests using brokers on ports $LOCAL_PORT $REMOTE_PORT" - $PYTHON_COMMANDS/qpid-python-test -m cli_tests -b localhost:$LOCAL_PORT -Dremote-port=$REMOTE_PORT -Dcli-dir=$CLI_DIR $@ + $PYTHON_COMMANDS/qpid-python-test -m cli_tests -b localhost:$LOCAL_PORT -Dremote-port=$REMOTE_PORT -Dcli-dir=$CLI_DIR $targs $@ RETCODE=$? stop_brokers if test x$RETCODE != x0; then diff --git a/cpp/src/tests/test.xquery b/cpp/src/tests/test.xquery new file mode 100644 index 0000000000..4cfe3af02d --- /dev/null +++ b/cpp/src/tests/test.xquery @@ -0,0 +1,6 @@ + let $w := ./weather + return $w/station = 'Raleigh-Durham International Airport (KRDU)' + and $w/temperature_f > 50 + and $w/temperature_f - $w/dewpoint > 5 + and $w/wind_speed_mph > 7 + and $w/wind_speed_mph < 20 |