diff options
author | Rajith Muditha Attapattu <rajith@apache.org> | 2011-05-27 15:44:23 +0000 |
---|---|---|
committer | Rajith Muditha Attapattu <rajith@apache.org> | 2011-05-27 15:44:23 +0000 |
commit | 66765100f4257159622cefe57bed50125a5ad017 (patch) | |
tree | a88ee23bb194eb91f0ebb2d9b23ff423e3ea8e37 /qpid/java/integrationtests/bin/interoptests.py | |
parent | 1aeaa7b16e5ce54f10c901d75c4d40f9f88b9db6 (diff) | |
parent | 88b98b2f4152ef59a671fad55a0d08338b6b78ca (diff) | |
download | qpid-python-rajith_jms_client.tar.gz |
Creating a branch for experimenting with some ideas for JMS client.rajith_jms_client
git-svn-id: https://svn.apache.org/repos/asf/qpid/branches/rajith_jms_client@1128369 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'qpid/java/integrationtests/bin/interoptests.py')
-rwxr-xr-x | qpid/java/integrationtests/bin/interoptests.py | 180 |
1 files changed, 180 insertions, 0 deletions
diff --git a/qpid/java/integrationtests/bin/interoptests.py b/qpid/java/integrationtests/bin/interoptests.py new file mode 100755 index 0000000000..a883a22a5f --- /dev/null +++ b/qpid/java/integrationtests/bin/interoptests.py @@ -0,0 +1,180 @@ +#!/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 glob, os, subprocess +from subprocess import Popen +from optparse import OptionParser + +interop_cases = ["InteropTestCase1DummyRun", "InteropTestCase2BasicP2P", "InteropTestCase3BasicPubSub", "InteropTestCase4P2PMessageSize", "InteropTestCase5PubSubMessageSize"] + +interop_command = "java -cp %s org.apache.qpid.test.framework.distributedtesting.Coordinator --xml -e interop -o . -n interop org.apache.qpid.interop.testcases.%s" + +# TODO: read this from the ant properties file +clientlibs = ["qpid-integrationtests-M4.jar", + "qpid-junit-toolkit-M4.jar", + "junit-3.8.1.jar", + "qpid-systests-M4.jar", + "qpid-junit-toolkit-M4.jar", + "geronimo-jms_1.1_spec-1.0.jar", + "log4j-1.2.12.jar"] + +def main(): + parser = OptionParser() + parser.add_option("-t", "--testlib", dest="testlib", action="store", + type="string", + help="The directory containing the test classes to run") + parser.add_option("-b", "--brokers", dest="brokers", action="store", + type="string", + help="The directory containing the unpacked brokers to test") + parser.add_option("-j", "--java", dest="java", action="store", + type="string", + help="The directory containing the java client to test") + parser.add_option("-d", "--dotnet", dest="dotnet", action="store", + type="string", + help="The directory containing the .Net client to test") + parser.add_option("-c", "--cpp", dest="cpp", action="store", + type="string", + help="The directory containing the C++ client to test") + (options, args) = parser.parse_args() + + # check available brokers + if (options.brokers == None or + not os.path.exists(options.brokers) or + not os.path.isdir(options.brokers)): + parser.error("Broker directory must be specified and must exist") + + # check available clients + if (options.java == None or + not os.path.exists(options.java) or + not os.path.isdir(options.java)): + parser.error("Java client directory must be specified and must exist") + + # check available tests + if (options.testlib == None or + not os.path.exists(options.testlib) or + not os.path.isdir(options.testlib)): + parser.error("Test directory must be specified and must exist") + + # check dotnet test client + if (options.dotnet == None or + not os.path.exists(options.dotnet) or + not os.path.exists(options.dotnet+"/TestClient.exe")): + parser.error(".Net test directory must be specified and must contain TestClient.exe") + + # check cpp test client + if (options.cpp == None or + not os.path.exists(options.cpp) or + not os.path.exists(options.cpp+"/src/tests/interop_runner")): + parser.error("C++ test directory must be specified and must contain test client") + + # Get list of available broker and client versions + brokers = glob.glob(options.brokers+"/qpid-[0-9].[0-9].[0-9].[0-9]") + java_clients = glob.glob(options.java+"/qpid-[0-9].[0-9].[0-9].[0-9]*") + + if (not len(brokers) > 0): + parser.error("Broker directory did not contain any brokers!") + + if (not len(java_clients) > 0): + parser.error("Broker directory did not contain any brokers!") + + for broker in brokers: + for client in java_clients: + test(options.testlib, broker, client, options.dotnet, + options.cpp) + +def start_dotnet(dotnetpath): + return Popen(["%s/TestClient.exe" % os.path.abspath(dotnetpath), + "-bamqp://guest:guest@clientid/?brokerlist=\'tcp://localhost:5672\'"], + stdin=subprocess.PIPE, stdout=subprocess.PIPE, + stderr=subprocess.STDOUT) + +def start_java(javapath): + # Setup classpath + classpath = "" + for lib in clientlibs: + classpath = classpath + testlibdir+"/"+lib+";" + + classpath = classpath + javapath+"/lib/qpid-all.jar" + + # Add qpid common since the tests need that, classpath hatefulness + classpath = classpath + ";"+testlibdir+"/qpid-common-M4.jar" + + return Popen(["java", "-cp","\""+classpath+"\"", + "org.apache.qpid.test.framework.distributedtesting.TestClient"], + stdin=subprocess.PIPE, stdout=subprocess.PIPE, + stderr=subprocess.STDOUT) + +def start_cpp(cpppath): + return Popen([cpppath+"tests/interop_runner"], + stdin=subprocess.PIPE, stdout=subprocess.PIPE, + stderr=subprocess.STDOUT) + +def run_tests(): + for testcase in interop_cases: + cmd = " ".join(["java", "-cp","\""+classpath+"\"", "org.apache.qpid.test.framework.distributedtesting.Coordinator", + "--xml", "-e", "interop", "-o", ".", "-n", "interop", ("org.apache.qpid.interop.testcases.%s" % testcase)]) + fd = os.popen(cmd, "r") + output = fd.read() + fd.close() + +def test(testlibdir, brokerpath, javapath, dotnetpath, cpppath): + print ("Testing broker in %s\nclient in %s" % (brokerpath, javapath)) + print ("Logging too %s" % ("/tmp/qpid-interop-tests/%s-%s" % + (os.path.basename(brokerpath), os.path.basename(javapath)))) + os.environ["QPID_HOME"] = brokerpath + os.environ["QPID_WORK"] = ("/tmp/qpid-interop-tests/%s-%s" % + (os.path.basename(brokerpath), os.path.basename(javapath))) + + brokerp, javacp, dotnetp, cppp, coordinatorp = (None, None, None, None, None) + + try: + # Start broker + brokerp = Popen(brokerpath+"/bin/qpid-server", + stdin=subprocess.PIPE, stdout=subprocess.PIPE, + stderr=subprocess.STDOUT) + print ("Started broker, pid %s" % brokerp.pid) + + cppp = start_cpp(cpppath) + print ("Started C++ client, pid %s" % cppp.pid) + + dotnetp = start_dotnet(dotnetpath) + print ("Started .Net client, pid %s" % dotnetp.pid) + + javacp = start_java(javapath) + print ("Started client, pid %s" % javacp.pid) + + run_tests() + + finally: + # Shutdown broker and clients + if javacp != None: + os.kill(javacp.pid, 9) + if dotnetp != None: + os.kill(dotnetp.pid, 9) + if coordinatorp != None: + os.kill(coordinatorp.pid, 9) + if brokerp != None: + os.kill(brokerp.pid, 9) + + # Start coordinator + + +if __name__ == "__main__": + main() |