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 2009/01/09 19:42:01 UTC

svn commit: r733108 - in /qpid/trunk/qpid/cpp/src/tests: Makefile.am cli_tests.py run_cli_tests

Author: tross
Date: Fri Jan  9 10:42:01 2009
New Revision: 733108

URL: http://svn.apache.org/viewvc?rev=733108&view=rev
Log:
Added test coverage for the CLI utilities

Added:
    qpid/trunk/qpid/cpp/src/tests/cli_tests.py   (with props)
    qpid/trunk/qpid/cpp/src/tests/run_cli_tests   (with props)
Modified:
    qpid/trunk/qpid/cpp/src/tests/Makefile.am

Modified: qpid/trunk/qpid/cpp/src/tests/Makefile.am
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/cpp/src/tests/Makefile.am?rev=733108&r1=733107&r2=733108&view=diff
==============================================================================
--- qpid/trunk/qpid/cpp/src/tests/Makefile.am (original)
+++ qpid/trunk/qpid/cpp/src/tests/Makefile.am Fri Jan  9 10:42:01 2009
@@ -198,7 +198,7 @@
 TESTS_ENVIRONMENT = VALGRIND=$(VALGRIND) srcdir=$(srcdir) QPID_DATA_DIR= BOOST_TEST_SHOW_PROGRESS=yes $(srcdir)/run_test 
 
 system_tests = client_test quick_perftest quick_topictest run_header_test quick_txtest
-TESTS += start_broker $(system_tests) python_tests stop_broker run_federation_tests run_acl_tests 
+TESTS += start_broker $(system_tests) python_tests stop_broker run_federation_tests run_acl_tests run_cli_tests
 
 EXTRA_DIST +=								\
   run_test vg_check							\
@@ -213,6 +213,7 @@
   config.null								\
   ais_check								\
   run_federation_tests							\
+  run_cli_tests								\
   run_acl_tests								\
   .valgrind.supp							\
   MessageUtils.h							\

Added: qpid/trunk/qpid/cpp/src/tests/cli_tests.py
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/cpp/src/tests/cli_tests.py?rev=733108&view=auto
==============================================================================
--- qpid/trunk/qpid/cpp/src/tests/cli_tests.py (added)
+++ qpid/trunk/qpid/cpp/src/tests/cli_tests.py Fri Jan  9 10:42:01 2009
@@ -0,0 +1,152 @@
+#!/usr/bin/env python
+#
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements.  See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership.  The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License.  You may obtain a copy of the License at
+# 
+#   http://www.apache.org/licenses/LICENSE-2.0
+# 
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied.  See the License for the
+# specific language governing permissions and limitations
+# under the License.
+#
+
+import sys
+import os
+from qpid.testlib import TestBase010, testrunner
+from qpid.datatypes import Message
+from qpid.queue import Empty
+from time import sleep
+
+def add_module(args=sys.argv[1:]):
+    for a in args:
+        if a.startswith("cli"):
+            return False
+    return True
+
+def scan_args(name, default=None, args=sys.argv[1:]):
+    if (name in args):
+        pos = args.index(name)
+        return args[pos + 1]
+    elif default:
+        return default
+    else:
+        print "Please specify extra argument: %s" % name
+        sys.exit(2)
+
+def extract_args(name, args):
+    if (name in args):
+        pos = args.index(name)
+        del args[pos:pos+2]
+    else:
+        return None
+
+def remote_host():
+    return scan_args("--remote-host", "localhost")
+
+def remote_port():
+    return int(scan_args("--remote-port"))
+
+def cli_dir():
+    return scan_args("--cli-dir")
+
+class CliTests(TestBase010):
+
+    def test_qpid_config(self):
+        self.startQmf();
+        qmf = self.qmf
+        qname = "test_qpid_config"
+
+        ret = os.system(self.command(" add queue " + qname))
+        self.assertEqual(ret, 0)
+        queues = qmf.getObjects(_class="queue")
+        found = False
+        for queue in queues:
+            if queue.name == qname:
+                self.assertEqual(queue.durable, False)
+                found = True
+        self.assertEqual(found, True)
+
+        ret = os.system(self.command(" del queue " + qname))
+        self.assertEqual(ret, 0)
+        queues = qmf.getObjects(_class="queue")
+        found = False
+        for queue in queues:
+            if queue.name == qname:
+                found = True
+        self.assertEqual(found, False)
+
+    def test_qpid_config_durable(self):
+        self.startQmf();
+        qmf = self.qmf
+        qname = "test_qpid_config"
+
+        ret = os.system(self.command(" add queue --durable " + qname))
+        self.assertEqual(ret, 0)
+        queues = qmf.getObjects(_class="queue")
+        found = False
+        for queue in queues:
+            if queue.name == qname:
+                self.assertEqual(queue.durable, True)
+                found = True
+        self.assertEqual(found, True)
+
+        ret = os.system(self.command(" del queue " + qname))
+        self.assertEqual(ret, 0)
+        queues = qmf.getObjects(_class="queue")
+        found = False
+        for queue in queues:
+            if queue.name == qname:
+                found = True
+        self.assertEqual(found, False)
+
+    def test_qpid_route(self):
+        self.startQmf();
+        qmf = self.qmf
+
+        command = cli_dir() + "/qpid-route dynamic add localhost:%d %s:%d amq.topic" %\
+            (testrunner.port, remote_host(), remote_port())
+        ret = os.system(command)
+        self.assertEqual(ret, 0)
+
+        links = qmf.getObjects(_class="link")
+        found = False
+        for link in links:
+            if link.port == remote_port():
+                found = True
+        self.assertEqual(found, True)
+
+    def getProperty(self, msg, name):
+        for h in msg.headers:
+            if hasattr(h, name): return getattr(h, name)
+        return None            
+
+    def getAppHeader(self, msg, name):
+        headers = self.getProperty(msg, "application_headers")
+        if headers:
+            return headers[name]
+        return None
+
+    def command(self, arg = ""):
+        return cli_dir() + "/qpid-config -a localhost:%d" % testrunner.port + " " + arg
+
+
+if __name__ == '__main__':
+    args = sys.argv[1:]
+    #need to remove the extra options from args as test runner doesn't recognise them
+    extract_args("--remote-port", args)
+    extract_args("--remote-host", args)
+    extract_args("--cli-dir", args)
+
+    if add_module():
+        #add module(s) to run to testrunners args
+        args.append("cli_tests") 
+    
+    if not testrunner.run(args): sys.exit(1)

Propchange: qpid/trunk/qpid/cpp/src/tests/cli_tests.py
------------------------------------------------------------------------------
    svn:executable = *

Added: qpid/trunk/qpid/cpp/src/tests/run_cli_tests
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/cpp/src/tests/run_cli_tests?rev=733108&view=auto
==============================================================================
--- qpid/trunk/qpid/cpp/src/tests/run_cli_tests (added)
+++ qpid/trunk/qpid/cpp/src/tests/run_cli_tests Fri Jan  9 10:42:01 2009
@@ -0,0 +1,53 @@
+#!/bin/sh
+
+#
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements.  See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership.  The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License.  You may obtain a copy of the License at
+# 
+#   http://www.apache.org/licenses/LICENSE-2.0
+# 
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied.  See the License for the
+# specific language governing permissions and limitations
+# under the License.
+#
+
+# Run the cli-utility tests.
+MY_DIR=`dirname \`which $0\``
+PYTHON_DIR=${MY_DIR}/../../../python
+CLI_DIR=${PYTHON_DIR}/commands
+
+trap stop_brokers INT TERM QUIT
+
+start_brokers() {
+    ../qpidd --daemon --port 0 --no-data-dir --no-module-dir --auth no > qpidd.port
+    LOCAL_PORT=`cat qpidd.port`
+    ../qpidd --daemon --port 0 --no-data-dir --no-module-dir --auth no > qpidd.port
+    REMOTE_PORT=`cat qpidd.port`
+}
+
+stop_brokers() {
+        ../qpidd -q --port $LOCAL_PORT
+        ../qpidd -q --port $REMOTE_PORT
+}
+
+if test -d ${PYTHON_DIR} ;  then
+    start_brokers
+    echo "Running CLI tests using brokers on ports $LOCAL_PORT $REMOTE_PORT"
+    PYTHONPATH=${PYTHON_DIR}
+    export PYTHONPATH
+    ${MY_DIR}/cli_tests.py -v -s ${MY_DIR}/../../../specs/amqp.0-10-qpid-errata.xml -b localhost:$LOCAL_PORT --remote-port $REMOTE_PORT --cli-dir $CLI_DIR $@
+    RETCODE=$?
+    stop_brokers
+    if test x$RETCODE != x0; then 
+        echo "FAIL CLI tests"; exit 1;
+    fi
+fi
+

Propchange: qpid/trunk/qpid/cpp/src/tests/run_cli_tests
------------------------------------------------------------------------------
    svn:executable = *