You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@qpid.apache.org by kp...@apache.org on 2016/11/23 17:53:15 UTC
[1/2] qpid-interop-test git commit: QPIDIT-52: Make qpid-interop-test
installable. Now the test is installable via the use of cmake / make from the
top level directory.
Repository: qpid-interop-test
Updated Branches:
refs/heads/master 238015950 -> 0e153797b
http://git-wip-us.apache.org/repos/asf/qpid-interop-test/blob/0e153797/src/python/qpid_interop_test/jms_large_content_test.py
----------------------------------------------------------------------
diff --git a/src/python/qpid_interop_test/jms_large_content_test.py b/src/python/qpid_interop_test/jms_large_content_test.py
deleted file mode 100755
index 6387060..0000000
--- a/src/python/qpid_interop_test/jms_large_content_test.py
+++ /dev/null
@@ -1,144 +0,0 @@
-#!/usr/bin/env python
-
-"""
-Module to test JMS messages containing large content (either message bodies or properties) across different JMS clients
-"""
-
-#
-# 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 argparse
-import sys
-import unittest
-
-#from itertools import product
-#from json import dumps
-from os import getenv, path
-
-from proton import symbol
-#import qpid_interop_test.broker_properties
-import qpid_interop_test.shims
-#from qpid_interop_test.test_type_map import TestTypeMap
-
-
-# TODO: propose a sensible default when installation details are worked out
-QPID_INTEROP_TEST_HOME = getenv('QPID_INTEROP_TEST_HOME')
-if QPID_INTEROP_TEST_HOME is None:
- print 'ERROR: Environment variable QPID_INTEROP_TEST_HOME is not set'
- sys.exit(1)
-MAVEN_REPO_PATH = getenv('MAVEN_REPO_PATH', path.join(getenv('HOME'), '.m2', 'repository'))
-
-
-
-class JmsLargeContentTypeTestCase(unittest.TestCase):
- """
- Abstract base class for JMS large content test cases
- """
-
- def run_test(self, broker_addr, jms_message_type, test_values, send_shim, receive_shim):
- """
- Run this test by invoking the shim send method to send the test values, followed by the shim receive method
- to receive the values. Finally, compare the sent values with the received values.
- """
- pass
-
-
-PROTON_CPP_RECEIVER_SHIM = path.join(QPID_INTEROP_TEST_HOME, 'shims', 'qpid-proton-cpp', 'build',
- 'jms_large_content_test', 'Receiver')
-PROTON_CPP_SENDER_SHIM = path.join(QPID_INTEROP_TEST_HOME, 'shims', 'qpid-proton-cpp', 'build',
- 'jms_large_content_test', 'Sender')
-PROTON_PYTHON_RECEIVER_SHIM = path.join(QPID_INTEROP_TEST_HOME, 'shims', 'qpid-proton-python', 'src',
- 'jms_large_content_test', 'Receiver.py')
-PROTON_PYTHON_SENDER_SHIM = path.join(QPID_INTEROP_TEST_HOME, 'shims', 'qpid-proton-python', 'src',
- 'jms_large_content_test', 'Sender.py')
-QIT_JMS_CLASSPATH_FILE = path.join(QPID_INTEROP_TEST_HOME, 'shims', 'qpid-jms', 'cp.txt')
-with open(QIT_JMS_CLASSPATH_FILE, 'r') as classpath_file:
- QIT_JMS_CLASSPATH = classpath_file.read()
-QPID_JMS_RECEIVER_SHIM = 'org.apache.qpid.interop_test.jms_large_content_test.Receiver'
-QPID_JMS_SENDER_SHIM = 'org.apache.qpid.interop_test.jms_large_content_test.Sender'
-
-# SHIM_MAP contains an instance of each client language shim that is to be tested as a part of this test. For
-# every shim in this list, a test is dynamically constructed which tests it against itself as well as every
-# other shim in the list.
-#
-# As new shims are added, add them into this map to have them included in the test cases.
-SHIM_MAP = {qpid_interop_test.shims.ProtonCppShim.NAME: \
- qpid_interop_test.shims.ProtonCppShim(PROTON_CPP_SENDER_SHIM, PROTON_CPP_RECEIVER_SHIM),
- qpid_interop_test.shims.ProtonPythonShim.NAME: \
- qpid_interop_test.shims.ProtonPythonShim(PROTON_PYTHON_SENDER_SHIM, PROTON_PYTHON_RECEIVER_SHIM),
- qpid_interop_test.shims.QpidJmsShim.NAME: \
- qpid_interop_test.shims.QpidJmsShim(QIT_JMS_CLASSPATH, QPID_JMS_SENDER_SHIM, QPID_JMS_RECEIVER_SHIM),
- }
-
-# TODO: Complete the test options to give fine control over running tests
-class TestOptions(object):
- """
- Class controlling command-line arguments used to control the test.
- """
- def __init__(self,):
- parser = argparse.ArgumentParser(description='Qpid-interop AMQP client interoparability test suite '
- 'for JMS messages containing large content')
- parser.add_argument('--broker', action='store', default='localhost:5672', metavar='BROKER:PORT',
- help='Broker against which to run test suite.')
- parser.add_argument('--exclude-shim', action='append', metavar='SHIM-NAME',
- help='Name of shim to exclude. Supported shims:\n%s' % sorted(SHIM_MAP.keys()))
- self.args = parser.parse_args()
-
-
-#--- Main program start ---
-
-if __name__ == '__main__':
-
- ARGS = TestOptions().args
- #print 'ARGS:', ARGS # debug
-
- # Connect to broker to find broker type
- CONNECTION_PROPS = qpid_interop_test.broker_properties.get_broker_properties(ARGS.broker)
- if CONNECTION_PROPS is None:
- print 'WARNING: Unable to get connection properties - unknown broker'
- BROKER = 'unknown'
- else:
- BROKER = CONNECTION_PROPS[symbol(u'product')] if symbol(u'product') in CONNECTION_PROPS \
- else '<product not found>'
- BROKER_VERSION = CONNECTION_PROPS[symbol(u'version')] if symbol(u'version') in CONNECTION_PROPS \
- else '<version not found>'
- BROKER_PLATFORM = CONNECTION_PROPS[symbol(u'platform')] if symbol(u'platform') in CONNECTION_PROPS \
- else '<platform not found>'
- print 'Test Broker: %s v.%s on %s' % (BROKER, BROKER_VERSION, BROKER_PLATFORM)
- print
- sys.stdout.flush()
-
- # TEST_CASE_CLASSES is a list that collects all the test classes that are constructed. One class is constructed
- # per AMQP type used as the key in map JmsMessageTypes.TYPE_MAP.
- TEST_CASE_CLASSES = []
-
- # TEST_SUITE is the final suite of tests that will be run and which contains all the dynamically created
- # type classes, each of which contains a test for the combinations of client shims
- TEST_SUITE = unittest.TestSuite()
-
- # Remove shims excluded from the command-line
- if ARGS.exclude_shim is not None:
- for shim in ARGS.exclude_shim:
- SHIM_MAP.pop(shim)
- # Create test classes dynamically
-
- # Finally, run all the dynamically created tests
- RES = unittest.TextTestRunner(verbosity=2).run(TEST_SUITE)
- if not RES.wasSuccessful():
- sys.exit(1)
http://git-wip-us.apache.org/repos/asf/qpid-interop-test/blob/0e153797/src/python/qpid_interop_test/jms_messages_test.py
----------------------------------------------------------------------
diff --git a/src/python/qpid_interop_test/jms_messages_test.py b/src/python/qpid_interop_test/jms_messages_test.py
index 553e847..fb35fc6 100755
--- a/src/python/qpid_interop_test/jms_messages_test.py
+++ b/src/python/qpid_interop_test/jms_messages_test.py
@@ -297,14 +297,10 @@ def create_testcase_class(jms_message_type, shim_product):
return new_class
-PROTON_CPP_RECEIVER_SHIM = path.join(QPID_INTEROP_TEST_HOME, 'shims', 'qpid-proton-cpp', 'build', 'jms_messages_test',
- 'Receiver')
-PROTON_CPP_SENDER_SHIM = path.join(QPID_INTEROP_TEST_HOME, 'shims', 'qpid-proton-cpp', 'build', 'jms_messages_test',
- 'Sender')
-PROTON_PYTHON_RECEIVER_SHIM = path.join(QPID_INTEROP_TEST_HOME, 'shims', 'qpid-proton-python', 'src',
- 'jms_messages_test', 'Receiver.py')
-PROTON_PYTHON_SENDER_SHIM = path.join(QPID_INTEROP_TEST_HOME, 'shims', 'qpid-proton-python', 'src',
- 'jms_messages_test', 'Sender.py')
+PROTON_CPP_RECEIVER_SHIM = path.join(QPID_INTEROP_TEST_HOME, 'shims', 'qpid-proton-cpp', 'jms_messages_test', 'Receiver')
+PROTON_CPP_SENDER_SHIM = path.join(QPID_INTEROP_TEST_HOME, 'shims', 'qpid-proton-cpp', 'jms_messages_test', 'Sender')
+PROTON_PYTHON_RECEIVER_SHIM = path.join(QPID_INTEROP_TEST_HOME, 'shims', 'qpid-proton-python', 'jms_messages_test', 'Receiver.py')
+PROTON_PYTHON_SENDER_SHIM = path.join(QPID_INTEROP_TEST_HOME, 'shims', 'qpid-proton-python', 'jms_messages_test', 'Sender.py')
QIT_JMS_CLASSPATH_FILE = path.join(QPID_INTEROP_TEST_HOME, 'shims', 'qpid-jms', 'cp.txt')
with open(QIT_JMS_CLASSPATH_FILE, 'r') as classpath_file:
QIT_JMS_CLASSPATH = classpath_file.read()
---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@qpid.apache.org
For additional commands, e-mail: commits-help@qpid.apache.org
[2/2] qpid-interop-test git commit: QPIDIT-52: Make qpid-interop-test
installable. Now the test is installable via the use of cmake / make from the
top level directory.
Posted by kp...@apache.org.
QPIDIT-52: Make qpid-interop-test installable. Now the test is installable via the use of cmake / make from the top level directory.
Project: http://git-wip-us.apache.org/repos/asf/qpid-interop-test/repo
Commit: http://git-wip-us.apache.org/repos/asf/qpid-interop-test/commit/0e153797
Tree: http://git-wip-us.apache.org/repos/asf/qpid-interop-test/tree/0e153797
Diff: http://git-wip-us.apache.org/repos/asf/qpid-interop-test/diff/0e153797
Branch: refs/heads/master
Commit: 0e153797bdb6625c81be4834faf31a553997e7b6
Parents: 2380159
Author: Kim van der Riet <kv...@localhost.localdomain>
Authored: Wed Nov 23 12:51:46 2016 -0500
Committer: Kim van der Riet <kv...@localhost.localdomain>
Committed: Wed Nov 23 12:51:46 2016 -0500
----------------------------------------------------------------------
.gitignore | 1 +
CMakeLists.txt | 58 ++++++
QUICKSTART | 36 +---
setup.py | 66 +++++++
shims/qpid-proton-cpp/CMakeLists.txt | 2 +-
shims/qpid-proton-python/src/__init__.py | 18 --
.../src/amqp_dtx_test/__init__.py | 19 ++
.../src/amqp_features_test/__init__.py | 19 ++
.../src/amqp_large_content_test/__init__.py | 19 ++
.../src/amqp_types_test/__init__.py | 19 ++
.../src/jms_dtx_test/__init__.py | 19 ++
.../src/jms_hdrs_props_test/__init__.py | 19 ++
.../src/jms_large_content_test/__init__.py | 19 ++
.../src/jms_messages_test/__init__.py | 19 ++
src/python/not_yet_impl/amqp_dtx_test.py | 136 +++++++++++++
src/python/not_yet_impl/amqp_features_test.py | 195 +++++++++++++++++++
src/python/not_yet_impl/jms_dtx_test.py | 146 ++++++++++++++
.../not_yet_impl/jms_large_content_test.py | 144 ++++++++++++++
src/python/qpid_interop_test/amqp_dtx_test.py | 136 -------------
.../qpid_interop_test/amqp_features_test.py | 195 -------------------
.../amqp_large_content_test.py | 12 +-
src/python/qpid_interop_test/amqp_types_test.py | 19 +-
src/python/qpid_interop_test/jms_dtx_test.py | 146 --------------
.../qpid_interop_test/jms_hdrs_props_test.py | 12 +-
.../qpid_interop_test/jms_large_content_test.py | 144 --------------
.../qpid_interop_test/jms_messages_test.py | 12 +-
26 files changed, 927 insertions(+), 703 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/qpid-interop-test/blob/0e153797/.gitignore
----------------------------------------------------------------------
diff --git a/.gitignore b/.gitignore
index b83d222..99d2bb1 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1 +1,2 @@
/target/
+/build/
http://git-wip-us.apache.org/repos/asf/qpid-interop-test/blob/0e153797/CMakeLists.txt
----------------------------------------------------------------------
diff --git a/CMakeLists.txt b/CMakeLists.txt
new file mode 100644
index 0000000..830d737
--- /dev/null
+++ b/CMakeLists.txt
@@ -0,0 +1,58 @@
+#
+# 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.
+#
+
+project(qpid-interop-test)
+
+cmake_minimum_required(VERSION 2.8.7 FATAL_ERROR)
+
+set(PROTON_INSTALL_DIR "/usr/local/qpid-proton" CACHE PATH "Proton install directory")
+
+add_subdirectory(shims/qpid-proton-cpp/src)
+
+# Build Java code
+install(CODE "execute_process(COMMAND mvn -DskipTests install
+ WORKING_DIRECTORY ../)")
+
+# Install files using python setup.py
+install(CODE "execute_process(COMMAND python setup.py install --prefix ${CMAKE_INSTALL_PREFIX}
+ WORKING_DIRECTORY ../)")
+install(CODE "execute_process(COMMAND chmod +x amqp_large_content_test.py
+ amqp_types_test.py
+ jms_hdrs_props_test.py
+ jms_messages_test.py
+ WORKING_DIRECTORY ${CMAKE_INSTALL_PREFIX}/lib/python2.7/site-packages/qpid_interop_test/)")
+install(CODE "execute_process(COMMAND chmod +x Receiver.py
+ Sender.py
+ WORKING_DIRECTORY ${CMAKE_INSTALL_PREFIX}/lib/python2.7/site-packages/qpid_interop_test/shims/qpid-proton-python/amqp_large_content_test/)")
+install(CODE "execute_process(COMMAND chmod +x Receiver.py
+ Sender.py
+ WORKING_DIRECTORY ${CMAKE_INSTALL_PREFIX}/lib/python2.7/site-packages/qpid_interop_test/shims/qpid-proton-python/amqp_types_test/)")
+install(CODE "execute_process(COMMAND chmod +x Receiver.py
+ Sender.py
+ WORKING_DIRECTORY ${CMAKE_INSTALL_PREFIX}/lib/python2.7/site-packages/qpid_interop_test/shims/qpid-proton-python/jms_hdrs_props_test/)")
+install(CODE "execute_process(COMMAND chmod +x Receiver.py
+ Sender.py
+ WORKING_DIRECTORY ${CMAKE_INSTALL_PREFIX}/lib/python2.7/site-packages/qpid_interop_test/shims/qpid-proton-python/jms_messages_test/)")
+
+# Install Rhea client dependencies
+install(CODE "execute_process(COMMAND npm install node-uuid
+ WORKING_DIRECTORY ${CMAKE_INSTALL_PREFIX}/lib/python2.7/site-packages/qpid_interop_test/shims/rhea-js/)")
+install(CODE "execute_process(COMMAND npm link rhea
+ WORKING_DIRECTORY ${CMAKE_INSTALL_PREFIX}/lib/python2.7/site-packages/qpid_interop_test/shims/rhea-js/)")
+
http://git-wip-us.apache.org/repos/asf/qpid-interop-test/blob/0e153797/QUICKSTART
----------------------------------------------------------------------
diff --git a/QUICKSTART b/QUICKSTART
index 3eb5db8..bab2081 100644
--- a/QUICKSTART
+++ b/QUICKSTART
@@ -13,8 +13,8 @@ These are the install steps:
b. Qpid Python
c. Qpid JMS
d. Rhea
-2. Install and build qpid-interop-test
-3. Install or build AMQP brokers to test against
+2. Download and build qpid-interop-test
+3. Install or download / build AMQP brokers to test against
4. Run the tests
@@ -86,19 +86,10 @@ npm install debug
sudo npm link
cd ..
-2. Install and build qpid-interop-test
-======================================
+2. Download and build qpid-interop-test
+=======================================
git clone https://git-wip-us.apache.org/repos/asf/qpid-interop-test.git
cd qpid-interop-test
-
-a. Build Java shims
--------------------
-Java shims:
-mvn -DskipTests install
-
-b. Build C++ shims
-------------------
-cd shims/qpid-proton-cpp
mkdir build
cd build
@@ -108,17 +99,8 @@ make
sudo make install
# INSTALL OPTION B:
-cmake -DPROTON_INSTALL_DIR=/abs/path/to/local/install/dir ..
-make
-
-cd ../../..
-
-c. Prepare Rhea shims
----------------------
-cd shims/rhea-js/amqp_types_test
-npm install node-uuid
-npm link rhea
-cd ../../../..
+cmake -DPROTON_INSTALL_DIR=/abs/path/to/local/install/dir -DCMAKE_INSTALL_PREFIX=/abs/path/to/local/install/dir ..
+make install
3. Install or build AMQP brokers to test against
@@ -181,9 +163,9 @@ export LD_LIBRARY_PATH=${INSTALL_PATH}/lib64
Start the test broker
-All of the tests are located in ${QPID_INTEROP_TEST_HOME}/src/python/qpid-interop-test, and can be directly called:
-./src/python/qpid-interop-test/amqp_types_test.py
-./src/python/qpid-interop-test/jms_messages_test.py
+All of the tests are located in ${QPID_INTEROP_TEST_HOME}/src/python/qpid_interop_test, and can be directly called:
+./src/python/qpid_interop_test/amqp_types_test.py
+./src/python/qpid_interop_test/jms_messages_test.py
etc.
http://git-wip-us.apache.org/repos/asf/qpid-interop-test/blob/0e153797/setup.py
----------------------------------------------------------------------
diff --git a/setup.py b/setup.py
new file mode 100644
index 0000000..ab58998
--- /dev/null
+++ b/setup.py
@@ -0,0 +1,66 @@
+#!/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.
+#
+
+from distutils.core import setup
+
+PACKAGE_DIR = 'lib/python2.7/site-packages/qpid_interop_test'
+SHIM_DIR = '%s/shims' % PACKAGE_DIR
+
+setup(name='qpid-interop-test',
+ version='0.1',
+ description='Test suite for testing interoperability between Qpid AMQP clients',
+ author='Apache Qpid',
+ author_email='users@qpid.apache.org',
+ url='http://qpid.apache.org/',
+ packages=['qpid_interop_test',
+ 'qpid_interop_test/shims/qpid-proton-python/amqp_types_test',
+ 'qpid_interop_test/shims/qpid-proton-python/amqp_large_content_test',
+ 'qpid_interop_test/shims/qpid-proton-python/jms_hdrs_props_test',
+ 'qpid_interop_test/shims/qpid-proton-python/jms_messages_test',
+ ],
+ package_dir={'qpid_interop_test': 'src/python/qpid_interop_test',
+ 'qpid_interop_test/shims/qpid-proton-python/amqp_types_test': 'shims/qpid-proton-python/src/amqp_types_test',
+ 'qpid_interop_test/shims/qpid-proton-python/amqp_large_content_test': 'shims/qpid-proton-python/src/amqp_large_content_test',
+ 'qpid_interop_test/shims/qpid-proton-python/jms_hdrs_props_test': 'shims/qpid-proton-python/src/jms_hdrs_props_test',
+ 'qpid_interop_test/shims/qpid-proton-python/jms_messages_test': 'shims/qpid-proton-python/src/jms_messages_test',
+ },
+ data_files=[('%s/qpid-jms' % SHIM_DIR, ['shims/qpid-jms/target/qpid-interop-test-jms-shim-0.1.0-SNAPSHOT.jar',
+ 'shims/qpid-jms/cp.txt']),
+ ('%s/qpid-proton-cpp/amqp_types_test' % SHIM_DIR, ['build/amqp_types_test/Receiver',
+ 'build/amqp_types_test/Sender',
+ ]
+ ),
+ ('%s/qpid-proton-cpp/amqp_large_content_test' % SHIM_DIR, ['build/amqp_large_content_test/Receiver',
+ 'build/amqp_large_content_test/Sender',
+ ],
+ ),
+ ('%s/qpid-proton-cpp/jms_messages_test' % SHIM_DIR, ['build/jms_messages_test/Receiver',
+ 'build/jms_messages_test/Sender',
+ ],
+ ),
+ ('%s/qpid-proton-cpp/jms_hdrs_props_test' % SHIM_DIR, ['build/jms_hdrs_props_test/Receiver',
+ 'build/jms_hdrs_props_test/Sender',
+ ],
+ ),
+ ('%s/rhea-js/amqp_types_test' % SHIM_DIR, ['shims/rhea-js/amqp_types_test/Receiver.js',
+ 'shims/rhea-js/amqp_types_test/Sender.js'],
+ ),
+ ],
+ )
http://git-wip-us.apache.org/repos/asf/qpid-interop-test/blob/0e153797/shims/qpid-proton-cpp/CMakeLists.txt
----------------------------------------------------------------------
diff --git a/shims/qpid-proton-cpp/CMakeLists.txt b/shims/qpid-proton-cpp/CMakeLists.txt
index fb00a9d..31a2581 100644
--- a/shims/qpid-proton-cpp/CMakeLists.txt
+++ b/shims/qpid-proton-cpp/CMakeLists.txt
@@ -19,7 +19,7 @@
project (qpid-interop-test-cpp-shims)
-cmake_minimum_required(VERSION 2.6)
+cmake_minimum_required(VERSION 2.8.7 FATAL_ERROR)
set(PROTON_INSTALL_DIR "/usr/local/qpid-proton" CACHE PATH "Proton install directory")
http://git-wip-us.apache.org/repos/asf/qpid-interop-test/blob/0e153797/shims/qpid-proton-python/src/__init__.py
----------------------------------------------------------------------
diff --git a/shims/qpid-proton-python/src/__init__.py b/shims/qpid-proton-python/src/__init__.py
deleted file mode 100644
index 31d5a2e..0000000
--- a/shims/qpid-proton-python/src/__init__.py
+++ /dev/null
@@ -1,18 +0,0 @@
-#
-# 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.
-#
http://git-wip-us.apache.org/repos/asf/qpid-interop-test/blob/0e153797/shims/qpid-proton-python/src/amqp_dtx_test/__init__.py
----------------------------------------------------------------------
diff --git a/shims/qpid-proton-python/src/amqp_dtx_test/__init__.py b/shims/qpid-proton-python/src/amqp_dtx_test/__init__.py
new file mode 100644
index 0000000..63a3f41
--- /dev/null
+++ b/shims/qpid-proton-python/src/amqp_dtx_test/__init__.py
@@ -0,0 +1,19 @@
+#
+# 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.
+#
+
http://git-wip-us.apache.org/repos/asf/qpid-interop-test/blob/0e153797/shims/qpid-proton-python/src/amqp_features_test/__init__.py
----------------------------------------------------------------------
diff --git a/shims/qpid-proton-python/src/amqp_features_test/__init__.py b/shims/qpid-proton-python/src/amqp_features_test/__init__.py
new file mode 100644
index 0000000..63a3f41
--- /dev/null
+++ b/shims/qpid-proton-python/src/amqp_features_test/__init__.py
@@ -0,0 +1,19 @@
+#
+# 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.
+#
+
http://git-wip-us.apache.org/repos/asf/qpid-interop-test/blob/0e153797/shims/qpid-proton-python/src/amqp_large_content_test/__init__.py
----------------------------------------------------------------------
diff --git a/shims/qpid-proton-python/src/amqp_large_content_test/__init__.py b/shims/qpid-proton-python/src/amqp_large_content_test/__init__.py
new file mode 100644
index 0000000..63a3f41
--- /dev/null
+++ b/shims/qpid-proton-python/src/amqp_large_content_test/__init__.py
@@ -0,0 +1,19 @@
+#
+# 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.
+#
+
http://git-wip-us.apache.org/repos/asf/qpid-interop-test/blob/0e153797/shims/qpid-proton-python/src/amqp_types_test/__init__.py
----------------------------------------------------------------------
diff --git a/shims/qpid-proton-python/src/amqp_types_test/__init__.py b/shims/qpid-proton-python/src/amqp_types_test/__init__.py
new file mode 100644
index 0000000..63a3f41
--- /dev/null
+++ b/shims/qpid-proton-python/src/amqp_types_test/__init__.py
@@ -0,0 +1,19 @@
+#
+# 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.
+#
+
http://git-wip-us.apache.org/repos/asf/qpid-interop-test/blob/0e153797/shims/qpid-proton-python/src/jms_dtx_test/__init__.py
----------------------------------------------------------------------
diff --git a/shims/qpid-proton-python/src/jms_dtx_test/__init__.py b/shims/qpid-proton-python/src/jms_dtx_test/__init__.py
new file mode 100644
index 0000000..63a3f41
--- /dev/null
+++ b/shims/qpid-proton-python/src/jms_dtx_test/__init__.py
@@ -0,0 +1,19 @@
+#
+# 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.
+#
+
http://git-wip-us.apache.org/repos/asf/qpid-interop-test/blob/0e153797/shims/qpid-proton-python/src/jms_hdrs_props_test/__init__.py
----------------------------------------------------------------------
diff --git a/shims/qpid-proton-python/src/jms_hdrs_props_test/__init__.py b/shims/qpid-proton-python/src/jms_hdrs_props_test/__init__.py
new file mode 100644
index 0000000..63a3f41
--- /dev/null
+++ b/shims/qpid-proton-python/src/jms_hdrs_props_test/__init__.py
@@ -0,0 +1,19 @@
+#
+# 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.
+#
+
http://git-wip-us.apache.org/repos/asf/qpid-interop-test/blob/0e153797/shims/qpid-proton-python/src/jms_large_content_test/__init__.py
----------------------------------------------------------------------
diff --git a/shims/qpid-proton-python/src/jms_large_content_test/__init__.py b/shims/qpid-proton-python/src/jms_large_content_test/__init__.py
new file mode 100644
index 0000000..63a3f41
--- /dev/null
+++ b/shims/qpid-proton-python/src/jms_large_content_test/__init__.py
@@ -0,0 +1,19 @@
+#
+# 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.
+#
+
http://git-wip-us.apache.org/repos/asf/qpid-interop-test/blob/0e153797/shims/qpid-proton-python/src/jms_messages_test/__init__.py
----------------------------------------------------------------------
diff --git a/shims/qpid-proton-python/src/jms_messages_test/__init__.py b/shims/qpid-proton-python/src/jms_messages_test/__init__.py
new file mode 100644
index 0000000..63a3f41
--- /dev/null
+++ b/shims/qpid-proton-python/src/jms_messages_test/__init__.py
@@ -0,0 +1,19 @@
+#
+# 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.
+#
+
http://git-wip-us.apache.org/repos/asf/qpid-interop-test/blob/0e153797/src/python/not_yet_impl/amqp_dtx_test.py
----------------------------------------------------------------------
diff --git a/src/python/not_yet_impl/amqp_dtx_test.py b/src/python/not_yet_impl/amqp_dtx_test.py
new file mode 100644
index 0000000..7e4a644
--- /dev/null
+++ b/src/python/not_yet_impl/amqp_dtx_test.py
@@ -0,0 +1,136 @@
+#!/usr/bin/env python
+
+"""
+Module to test AMQP distributed transactions across different clients
+"""
+
+#
+# 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 argparse
+import sys
+import unittest
+
+#from itertools import product
+#from json import dumps
+from os import getenv, path
+#from time import mktime, time
+#from uuid import UUID, uuid4
+
+from proton import symbol
+#import qpid_interop_test.broker_properties
+import qpid_interop_test.shims
+#from qpid_interop_test.test_type_map import TestTypeMap
+
+# TODO: propose a sensible default when installation details are worked out
+QPID_INTEROP_TEST_HOME = getenv('QPID_INTEROP_TEST_HOME')
+if QPID_INTEROP_TEST_HOME is None:
+ print 'ERROR: Environment variable QPID_INTEROP_TEST_HOME is not set'
+ sys.exit(1)
+
+
+class AmqpDtxTestCase(unittest.TestCase):
+ """
+ Abstract base class for AMQP distributed transactions (DTX) test cases
+ """
+
+ def run_test(self):
+ """
+ Run this test by invoking the shim send method to send the test values, followed by the shim receive method
+ to receive the values. Finally, compare the sent values with the received values.
+ """
+ pass
+
+
+# SHIM_MAP contains an instance of each client language shim that is to be tested as a part of this test. For
+# every shim in this list, a test is dynamically constructed which tests it against itself as well as every
+# other shim in the list.
+#
+# As new shims are added, add them into this map to have them included in the test cases.
+PROTON_CPP_RECEIVER_SHIM = path.join(QPID_INTEROP_TEST_HOME, 'shims', 'qpid-proton-cpp', 'build', 'amqp_dtx_test',
+ 'Receiver')
+PROTON_CPP_SENDER_SHIM = path.join(QPID_INTEROP_TEST_HOME, 'shims', 'qpid-proton-cpp', 'build', 'amqp_dtx_test',
+ 'Sender')
+PROTON_PYTHON_RECEIVER_SHIM = path.join(QPID_INTEROP_TEST_HOME, 'shims', 'qpid-proton-python', 'src', 'amqp_dtx_test',
+ 'Receiver.py')
+PROTON_PYTHON_SENDER_SHIM = path.join(QPID_INTEROP_TEST_HOME, 'shims', 'qpid-proton-python', 'src', 'amqp_dtx_test',
+ 'Sender.py')
+
+SHIM_MAP = {qpid_interop_test.shims.ProtonCppShim.NAME: \
+ qpid_interop_test.shims.ProtonCppShim(PROTON_CPP_SENDER_SHIM, PROTON_CPP_RECEIVER_SHIM),
+ qpid_interop_test.shims.ProtonPythonShim.NAME: \
+ qpid_interop_test.shims.ProtonPythonShim(PROTON_PYTHON_SENDER_SHIM, PROTON_PYTHON_RECEIVER_SHIM),
+ }
+
+
+class TestOptions(object):
+ """
+ Class controlling command-line arguments used to control the test.
+ """
+ def __init__(self):
+ parser = argparse.ArgumentParser(description='Qpid-interop AMQP client interoparability test suite '
+ 'for AMQP distrubuted (dtx) transactions')
+ parser.add_argument('--broker', action='store', default='localhost:5672', metavar='BROKER:PORT',
+ help='Broker against which to run test suite.')
+ parser.add_argument('--exclude-shim', action='append', metavar='SHIM-NAME',
+ help='Name of shim to exclude. Supported shims:\n%s' % sorted(SHIM_MAP.keys()))
+ self.args = parser.parse_args()
+
+
+#--- Main program start ---
+
+if __name__ == '__main__':
+
+ ARGS = TestOptions().args
+ #print 'ARGS:', ARGS # debug
+
+ # Connect to broker to find broker type
+ CONNECTION_PROPS = qpid_interop_test.broker_properties.get_broker_properties(ARGS.sender)
+ if CONNECTION_PROPS is None:
+ print 'WARNING: Unable to get connection properties - unknown broker'
+ BROKER = 'unknown'
+ else:
+ BROKER = CONNECTION_PROPS[symbol(u'product')] if symbol(u'product') in CONNECTION_PROPS \
+ else '<product not found>'
+ BROKER_VERSION = CONNECTION_PROPS[symbol(u'version')] if symbol(u'version') in CONNECTION_PROPS \
+ else '<version not found>'
+ BROKER_PLATFORM = CONNECTION_PROPS[symbol(u'platform')] if symbol(u'platform') in CONNECTION_PROPS \
+ else '<platform not found>'
+ print 'Test Broker: %s v.%s on %s' % (BROKER, BROKER_VERSION, BROKER_PLATFORM)
+ print
+ sys.stdout.flush()
+
+ # TEST_CASE_CLASSES is a list that collects all the test classes that are constructed. One class is constructed
+ # per AMQP type used as the key in map AmqpPrimitiveTypes.TYPE_MAP.
+ TEST_CASE_CLASSES = []
+
+ # TEST_SUITE is the final suite of tests that will be run and which contains all the dynamically created
+ # type classes, each of which contains a test for the combinations of client shims
+ TEST_SUITE = unittest.TestSuite()
+
+ # Remove shims excluded from the command-line
+ if ARGS.exclude_shim is not None:
+ for shim in ARGS.exclude_shim:
+ SHIM_MAP.pop(shim)
+ # Create test classes dynamically
+
+ # Finally, run all the dynamically created tests
+ RES = unittest.TextTestRunner(verbosity=2).run(TEST_SUITE)
+ if not RES.wasSuccessful():
+ sys.exit(1) # Errors or failures present
http://git-wip-us.apache.org/repos/asf/qpid-interop-test/blob/0e153797/src/python/not_yet_impl/amqp_features_test.py
----------------------------------------------------------------------
diff --git a/src/python/not_yet_impl/amqp_features_test.py b/src/python/not_yet_impl/amqp_features_test.py
new file mode 100644
index 0000000..83f140f
--- /dev/null
+++ b/src/python/not_yet_impl/amqp_features_test.py
@@ -0,0 +1,195 @@
+#!/usr/bin/env python
+
+"""
+Module to test AMQP features across different clients
+"""
+
+#
+# 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 argparse
+import sys
+import unittest
+
+from json import dumps
+from os import getenv, path
+
+from proton import symbol
+import qpid_interop_test.shims
+
+# TODO: propose a sensible default when installation details are worked out
+QPID_INTEROP_TEST_HOME = getenv('QPID_INTEROP_TEST_HOME')
+if QPID_INTEROP_TEST_HOME is None:
+ print 'ERROR: Environment variable QPID_INTEROP_TEST_HOME is not set'
+ sys.exit(1)
+
+
+class AmqpFeaturesTestCase(unittest.TestCase):
+ """
+ Abstract base class for AMQP message features test cases
+ """
+
+ def run_test(self, sender_addr, receiver_addr, test_type, send_shim, receive_shim):
+ """
+ Run this test by invoking the shim send method to send the test values, followed by the shim receive method
+ to receive the values. Finally, compare the sent values with the received values.
+ """
+ send_queue_name = 'jms.queue.qpid-interop.amqp_features_test.%s' % send_shim.NAME
+ receive_queue_name = 'jms.queue.qpid-interop.amqp_features_test.%s' % receive_shim.NAME
+
+ # Start the receive shim first (for queueless brokers/dispatch)
+ receiver = receive_shim.create_receiver(receiver_addr, receive_queue_name, test_type, '0')
+ receiver.start()
+
+ # Start the send shim
+ sender = send_shim.create_sender(sender_addr, send_queue_name, test_type, dumps([None]))
+ sender.start()
+
+ # Wait for both shims to finish
+ sender.join_or_kill(qpid_interop_test.shims.THREAD_TIMEOUT)
+ receiver.join_or_kill(qpid_interop_test.shims.THREAD_TIMEOUT)
+
+ if test_type == 'connection_property':
+ self.check_connection_property_test_results(sender.get_return_object(), receiver.get_return_object())
+
+ def check_connection_property_test_results(self, sender_return_obj, receiver_return_obj):
+ """Check received connection property for pass/fail of test"""
+ self.check_connection_properties(sender_return_obj[1], 'sender')
+ self.check_connection_properties(receiver_return_obj[1], 'receiver')
+
+ def check_connection_properties(self, connection_properties, source):
+ """Check an individual connection property for pass/fail"""
+ keys = connection_properties.keys()
+ if 'product' not in keys:
+ self.fail('Broker connection properties (from %s) missing "product" key' % source)
+ if 'version' not in keys:
+ self.fail('Broker connection properties (from %s) missing "version" key' % source)
+ for key in keys:
+ self.assertTrue(len(connection_properties[key]) > 0, msg='Property "%s" (from %s) is empty' % (key, source))
+
+
+def create_connection_property_test_class(send_shim, receive_shim):
+ """
+ Class factory function which creates new subclasses to AmqpFeaturesTestCase.
+ """
+
+ def __repr__(self):
+ """Print the class name"""
+ return self.__class__.__name__
+
+ def add_test_method(cls, send_shim, receive_shim):
+ """Function which creates a new test method in class cls"""
+
+ def inner_test_method(self):
+ self.run_test(self.sender_addr, self.receiver_addr, 'connection_property', send_shim, receive_shim)
+
+ inner_test_method.__name__ = 'test_connection_properties_%s->%s' % (send_shim.NAME, receive_shim.NAME)
+ setattr(cls, inner_test_method.__name__, inner_test_method)
+
+ class_name = 'ConnectionPropertyTestCase'
+ class_dict = {'__name__': class_name,
+ '__repr__': __repr__,
+ '__doc__': 'Test case for AMQP connection properties',
+ 'sender_addr': ARGS.sender,
+ 'receiver_addr': ARGS.receiver}
+ new_class = type(class_name, (AmqpFeaturesTestCase,), class_dict)
+ add_test_method(new_class, send_shim, receive_shim)
+ return new_class
+
+# SHIM_MAP contains an instance of each client language shim that is to be tested as a part of this test. For
+# every shim in this list, a test is dynamically constructed which tests it against itself as well as every
+# other shim in the list.
+#
+# As new shims are added, add them into this map to have them included in the test cases.
+PROTON_CPP_RECEIVER_SHIM = path.join(QPID_INTEROP_TEST_HOME, 'shims', 'qpid-proton-cpp', 'build', 'amqp_features_test',
+ 'Receiver')
+PROTON_CPP_SENDER_SHIM = path.join(QPID_INTEROP_TEST_HOME, 'shims', 'qpid-proton-cpp', 'build', 'amqp_features_test',
+ 'Sender')
+PROTON_PYTHON_RECEIVER_SHIM = path.join(QPID_INTEROP_TEST_HOME, 'shims', 'qpid-proton-python', 'src',
+ 'amqp_features_test', 'Receiver.py')
+PROTON_PYTHON_SENDER_SHIM = path.join(QPID_INTEROP_TEST_HOME, 'shims', 'qpid-proton-python', 'src',
+ 'amqp_features_test', 'Sender.py')
+
+SHIM_MAP = {#qpid_interop_test.shims.ProtonCppShim.NAME: \
+ # qpid_interop_test.shims.ProtonCppShim(PROTON_CPP_SENDER_SHIM, PROTON_CPP_RECEIVER_SHIM),
+ qpid_interop_test.shims.ProtonPythonShim.NAME: \
+ qpid_interop_test.shims.ProtonPythonShim(PROTON_PYTHON_SENDER_SHIM, PROTON_PYTHON_RECEIVER_SHIM),
+ }
+
+
+class TestOptions(object):
+ """
+ Class controlling command-line arguments used to control the test.
+ """
+ def __init__(self):
+ parser = argparse.ArgumentParser(description='Qpid-interop AMQP client interoparability test suite '
+ 'for AMQP messaging features')
+ parser.add_argument('--sender', action='store', default='localhost:5672', metavar='IP-ADDR:PORT',
+ help='Node to which test suite will send messages.')
+ parser.add_argument('--receiver', action='store', default='localhost:5672', metavar='IP-ADDR:PORT',
+ help='Node from which test suite will receive messages.')
+ parser.add_argument('--exclude-shim', action='append', metavar='SHIM-NAME',
+ help='Name of shim to exclude. Supported shims:\n%s' % sorted(SHIM_MAP.keys()))
+ self.args = parser.parse_args()
+
+
+#--- Main program start ---
+
+if __name__ == '__main__':
+
+ ARGS = TestOptions().args
+ #print 'ARGS:', ARGS # debug
+
+ # Connect to broker to find broker type
+ CONNECTION_PROPS = qpid_interop_test.broker_properties.get_broker_properties(ARGS.sender)
+ if CONNECTION_PROPS is None:
+ print 'WARNING: Unable to get connection properties - unknown broker'
+ BROKER = 'unknown'
+ else:
+ BROKER = CONNECTION_PROPS[symbol(u'product')] if symbol(u'product') in CONNECTION_PROPS \
+ else '<product not found>'
+ BROKER_VERSION = CONNECTION_PROPS[symbol(u'version')] if symbol(u'version') in CONNECTION_PROPS \
+ else '<version not found>'
+ BROKER_PLATFORM = CONNECTION_PROPS[symbol(u'platform')] if symbol(u'platform') in CONNECTION_PROPS \
+ else '<platform not found>'
+ print 'Test Broker: %s v.%s on %s' % (BROKER, BROKER_VERSION, BROKER_PLATFORM)
+ print
+ sys.stdout.flush()
+
+ # TEST_CASE_CLASSES is a list that collects all the test classes that are constructed. One class is constructed
+ # per AMQP type used as the key in map AmqpPrimitiveTypes.TYPE_MAP.
+ TEST_CASE_CLASSES = []
+
+ # TEST_SUITE is the final suite of tests that will be run and which contains all the dynamically created
+ # type classes, each of which contains a test for the combinations of client shims
+ TEST_SUITE = unittest.TestSuite()
+
+ # Remove shims excluded from the command-line
+ if ARGS.exclude_shim is not None:
+ for shim in ARGS.exclude_shim:
+ SHIM_MAP.pop(shim)
+ # Create test classes dynamically
+ for shim_name in SHIM_MAP.keys():
+ test_case_class = create_connection_property_test_class(SHIM_MAP[shim_name], SHIM_MAP[shim_name])
+ TEST_SUITE.addTest(unittest.makeSuite(test_case_class))
+
+ # Finally, run all the dynamically created tests
+ RES = unittest.TextTestRunner(verbosity=2).run(TEST_SUITE)
+ if not RES.wasSuccessful():
+ sys.exit(1) # Errors or failures present
http://git-wip-us.apache.org/repos/asf/qpid-interop-test/blob/0e153797/src/python/not_yet_impl/jms_dtx_test.py
----------------------------------------------------------------------
diff --git a/src/python/not_yet_impl/jms_dtx_test.py b/src/python/not_yet_impl/jms_dtx_test.py
new file mode 100644
index 0000000..fd998a7
--- /dev/null
+++ b/src/python/not_yet_impl/jms_dtx_test.py
@@ -0,0 +1,146 @@
+#!/usr/bin/env python
+
+"""
+Module to test JMS distributed transactions (DTX) across different JMS clients
+"""
+
+#
+# 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 argparse
+import sys
+import unittest
+
+#from itertools import product
+#from json import dumps
+from os import getenv, path
+
+from proton import symbol
+#import qpid_interop_test.broker_properties
+import qpid_interop_test.shims
+#from qpid_interop_test.test_type_map import TestTypeMap
+
+
+# TODO: propose a sensible default when installation details are worked out
+QPID_INTEROP_TEST_HOME = getenv('QPID_INTEROP_TEST_HOME')
+if QPID_INTEROP_TEST_HOME is None:
+ print 'ERROR: Environment variable QPID_INTEROP_TEST_HOME is not set'
+ sys.exit(1)
+MAVEN_REPO_PATH = getenv('MAVEN_REPO_PATH', path.join(getenv('HOME'), '.m2', 'repository'))
+
+
+
+class JmsDtxTypeTestCase(unittest.TestCase):
+ """
+ Abstract base class for JMS DTX test cases
+ """
+
+ def run_test(self, broker_addr, jms_message_type, test_values, send_shim, receive_shim):
+ """
+ Run this test by invoking the shim send method to send the test values, followed by the shim receive method
+ to receive the values. Finally, compare the sent values with the received values.
+ """
+ pass
+
+
+PROTON_CPP_RECEIVER_SHIM = path.join(QPID_INTEROP_TEST_HOME, 'shims', 'qpid-proton-cpp', 'build',
+ 'jms_dtx_test', 'Receiver')
+PROTON_CPP_SENDER_SHIM = path.join(QPID_INTEROP_TEST_HOME, 'shims', 'qpid-proton-cpp', 'build',
+ 'jms_dtx_test', 'Sender')
+PROTON_PYTHON_RECEIVER_SHIM = path.join(QPID_INTEROP_TEST_HOME, 'shims', 'qpid-proton-python', 'src',
+ 'jms_dtx_test', 'Receiver.py')
+PROTON_PYTHON_SENDER_SHIM = path.join(QPID_INTEROP_TEST_HOME, 'shims', 'qpid-proton-python', 'src',
+ 'jms_dtx_test', 'Sender.py')
+QIT_JMS_CLASSPATH_FILE = path.join(QPID_INTEROP_TEST_HOME, 'shims', 'qpid-jms', 'cp.txt')
+with open(QIT_JMS_CLASSPATH_FILE, 'r') as classpath_file:
+ QIT_JMS_CLASSPATH = classpath_file.read()
+QPID_JMS_RECEIVER_SHIM = 'org.apache.qpid.interop_test.jms_dtx_test.Receiver'
+QPID_JMS_SENDER_SHIM = 'org.apache.qpid.interop_test.jms_dtx_test.Sender'
+
+# SHIM_MAP contains an instance of each client language shim that is to be tested as a part of this test. For
+# every shim in this list, a test is dynamically constructed which tests it against itself as well as every
+# other shim in the list.
+#
+# As new shims are added, add them into this map to have them included in the test cases.
+SHIM_MAP = {qpid_interop_test.shims.ProtonCppShim.NAME: \
+ qpid_interop_test.shims.ProtonCppShim(PROTON_CPP_SENDER_SHIM, PROTON_CPP_RECEIVER_SHIM),
+ qpid_interop_test.shims.ProtonPythonShim.NAME: \
+ qpid_interop_test.shims.ProtonPythonShim(PROTON_PYTHON_SENDER_SHIM, PROTON_PYTHON_RECEIVER_SHIM),
+ qpid_interop_test.shims.QpidJmsShim.NAME: \
+ qpid_interop_test.shims.QpidJmsShim(QIT_JMS_CLASSPATH, QPID_JMS_SENDER_SHIM, QPID_JMS_RECEIVER_SHIM),
+ }
+
+# TODO: Complete the test options to give fine control over running tests
+class TestOptions(object):
+ """
+ Class controlling command-line arguments used to control the test.
+ """
+ def __init__(self,):
+ parser = argparse.ArgumentParser(description='Qpid-interop AMQP client interoparability test suite '
+ 'for JMS distrubuted (dtx) transactions')
+ parser.add_argument('--sender', action='store', default='localhost:5672', metavar='IP-ADDR:PORT',
+ help='Node to which test suite will send messages.')
+ parser.add_argument('--receiver', action='store', default='localhost:5672', metavar='IP-ADDR:PORT',
+ help='Node from which test suite will receive messages.')
+ parser.add_argument('--exclude-shim', action='append', metavar='SHIM-NAME',
+ help='Name of shim to exclude. Supported shims:\n%s' % sorted(SHIM_MAP.keys()))
+ self.args = parser.parse_args()
+
+
+#--- Main program start ---
+
+if __name__ == '__main__':
+
+ ARGS = TestOptions().args
+ #print 'ARGS:', ARGS # debug
+
+ # Connect to broker to find broker type
+ CONNECTION_PROPS = qpid_interop_test.broker_properties.get_broker_properties(ARGS.sender)
+ if CONNECTION_PROPS is None:
+ print 'WARNING: Unable to get connection properties - unknown broker'
+ BROKER = 'unknown'
+ else:
+ BROKER = CONNECTION_PROPS[symbol(u'product')] if symbol(u'product') in CONNECTION_PROPS \
+ else '<product not found>'
+ BROKER_VERSION = CONNECTION_PROPS[symbol(u'version')] if symbol(u'version') in CONNECTION_PROPS \
+ else '<version not found>'
+ BROKER_PLATFORM = CONNECTION_PROPS[symbol(u'platform')] if symbol(u'platform') in CONNECTION_PROPS \
+ else '<platform not found>'
+ print 'Test Broker: %s v.%s on %s' % (BROKER, BROKER_VERSION, BROKER_PLATFORM)
+ print
+ sys.stdout.flush()
+
+ # TEST_CASE_CLASSES is a list that collects all the test classes that are constructed. One class is constructed
+ # per AMQP type used as the key in map JmsMessageTypes.TYPE_MAP.
+ TEST_CASE_CLASSES = []
+
+ # TEST_SUITE is the final suite of tests that will be run and which contains all the dynamically created
+ # type classes, each of which contains a test for the combinations of client shims
+ TEST_SUITE = unittest.TestSuite()
+
+ # Remove shims excluded from the command-line
+ if ARGS.exclude_shim is not None:
+ for shim in ARGS.exclude_shim:
+ SHIM_MAP.pop(shim)
+ # Create test classes dynamically
+
+ # Finally, run all the dynamically created tests
+ RES = unittest.TextTestRunner(verbosity=2).run(TEST_SUITE)
+ if not RES.wasSuccessful():
+ sys.exit(1)
http://git-wip-us.apache.org/repos/asf/qpid-interop-test/blob/0e153797/src/python/not_yet_impl/jms_large_content_test.py
----------------------------------------------------------------------
diff --git a/src/python/not_yet_impl/jms_large_content_test.py b/src/python/not_yet_impl/jms_large_content_test.py
new file mode 100644
index 0000000..6387060
--- /dev/null
+++ b/src/python/not_yet_impl/jms_large_content_test.py
@@ -0,0 +1,144 @@
+#!/usr/bin/env python
+
+"""
+Module to test JMS messages containing large content (either message bodies or properties) across different JMS clients
+"""
+
+#
+# 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 argparse
+import sys
+import unittest
+
+#from itertools import product
+#from json import dumps
+from os import getenv, path
+
+from proton import symbol
+#import qpid_interop_test.broker_properties
+import qpid_interop_test.shims
+#from qpid_interop_test.test_type_map import TestTypeMap
+
+
+# TODO: propose a sensible default when installation details are worked out
+QPID_INTEROP_TEST_HOME = getenv('QPID_INTEROP_TEST_HOME')
+if QPID_INTEROP_TEST_HOME is None:
+ print 'ERROR: Environment variable QPID_INTEROP_TEST_HOME is not set'
+ sys.exit(1)
+MAVEN_REPO_PATH = getenv('MAVEN_REPO_PATH', path.join(getenv('HOME'), '.m2', 'repository'))
+
+
+
+class JmsLargeContentTypeTestCase(unittest.TestCase):
+ """
+ Abstract base class for JMS large content test cases
+ """
+
+ def run_test(self, broker_addr, jms_message_type, test_values, send_shim, receive_shim):
+ """
+ Run this test by invoking the shim send method to send the test values, followed by the shim receive method
+ to receive the values. Finally, compare the sent values with the received values.
+ """
+ pass
+
+
+PROTON_CPP_RECEIVER_SHIM = path.join(QPID_INTEROP_TEST_HOME, 'shims', 'qpid-proton-cpp', 'build',
+ 'jms_large_content_test', 'Receiver')
+PROTON_CPP_SENDER_SHIM = path.join(QPID_INTEROP_TEST_HOME, 'shims', 'qpid-proton-cpp', 'build',
+ 'jms_large_content_test', 'Sender')
+PROTON_PYTHON_RECEIVER_SHIM = path.join(QPID_INTEROP_TEST_HOME, 'shims', 'qpid-proton-python', 'src',
+ 'jms_large_content_test', 'Receiver.py')
+PROTON_PYTHON_SENDER_SHIM = path.join(QPID_INTEROP_TEST_HOME, 'shims', 'qpid-proton-python', 'src',
+ 'jms_large_content_test', 'Sender.py')
+QIT_JMS_CLASSPATH_FILE = path.join(QPID_INTEROP_TEST_HOME, 'shims', 'qpid-jms', 'cp.txt')
+with open(QIT_JMS_CLASSPATH_FILE, 'r') as classpath_file:
+ QIT_JMS_CLASSPATH = classpath_file.read()
+QPID_JMS_RECEIVER_SHIM = 'org.apache.qpid.interop_test.jms_large_content_test.Receiver'
+QPID_JMS_SENDER_SHIM = 'org.apache.qpid.interop_test.jms_large_content_test.Sender'
+
+# SHIM_MAP contains an instance of each client language shim that is to be tested as a part of this test. For
+# every shim in this list, a test is dynamically constructed which tests it against itself as well as every
+# other shim in the list.
+#
+# As new shims are added, add them into this map to have them included in the test cases.
+SHIM_MAP = {qpid_interop_test.shims.ProtonCppShim.NAME: \
+ qpid_interop_test.shims.ProtonCppShim(PROTON_CPP_SENDER_SHIM, PROTON_CPP_RECEIVER_SHIM),
+ qpid_interop_test.shims.ProtonPythonShim.NAME: \
+ qpid_interop_test.shims.ProtonPythonShim(PROTON_PYTHON_SENDER_SHIM, PROTON_PYTHON_RECEIVER_SHIM),
+ qpid_interop_test.shims.QpidJmsShim.NAME: \
+ qpid_interop_test.shims.QpidJmsShim(QIT_JMS_CLASSPATH, QPID_JMS_SENDER_SHIM, QPID_JMS_RECEIVER_SHIM),
+ }
+
+# TODO: Complete the test options to give fine control over running tests
+class TestOptions(object):
+ """
+ Class controlling command-line arguments used to control the test.
+ """
+ def __init__(self,):
+ parser = argparse.ArgumentParser(description='Qpid-interop AMQP client interoparability test suite '
+ 'for JMS messages containing large content')
+ parser.add_argument('--broker', action='store', default='localhost:5672', metavar='BROKER:PORT',
+ help='Broker against which to run test suite.')
+ parser.add_argument('--exclude-shim', action='append', metavar='SHIM-NAME',
+ help='Name of shim to exclude. Supported shims:\n%s' % sorted(SHIM_MAP.keys()))
+ self.args = parser.parse_args()
+
+
+#--- Main program start ---
+
+if __name__ == '__main__':
+
+ ARGS = TestOptions().args
+ #print 'ARGS:', ARGS # debug
+
+ # Connect to broker to find broker type
+ CONNECTION_PROPS = qpid_interop_test.broker_properties.get_broker_properties(ARGS.broker)
+ if CONNECTION_PROPS is None:
+ print 'WARNING: Unable to get connection properties - unknown broker'
+ BROKER = 'unknown'
+ else:
+ BROKER = CONNECTION_PROPS[symbol(u'product')] if symbol(u'product') in CONNECTION_PROPS \
+ else '<product not found>'
+ BROKER_VERSION = CONNECTION_PROPS[symbol(u'version')] if symbol(u'version') in CONNECTION_PROPS \
+ else '<version not found>'
+ BROKER_PLATFORM = CONNECTION_PROPS[symbol(u'platform')] if symbol(u'platform') in CONNECTION_PROPS \
+ else '<platform not found>'
+ print 'Test Broker: %s v.%s on %s' % (BROKER, BROKER_VERSION, BROKER_PLATFORM)
+ print
+ sys.stdout.flush()
+
+ # TEST_CASE_CLASSES is a list that collects all the test classes that are constructed. One class is constructed
+ # per AMQP type used as the key in map JmsMessageTypes.TYPE_MAP.
+ TEST_CASE_CLASSES = []
+
+ # TEST_SUITE is the final suite of tests that will be run and which contains all the dynamically created
+ # type classes, each of which contains a test for the combinations of client shims
+ TEST_SUITE = unittest.TestSuite()
+
+ # Remove shims excluded from the command-line
+ if ARGS.exclude_shim is not None:
+ for shim in ARGS.exclude_shim:
+ SHIM_MAP.pop(shim)
+ # Create test classes dynamically
+
+ # Finally, run all the dynamically created tests
+ RES = unittest.TextTestRunner(verbosity=2).run(TEST_SUITE)
+ if not RES.wasSuccessful():
+ sys.exit(1)
http://git-wip-us.apache.org/repos/asf/qpid-interop-test/blob/0e153797/src/python/qpid_interop_test/amqp_dtx_test.py
----------------------------------------------------------------------
diff --git a/src/python/qpid_interop_test/amqp_dtx_test.py b/src/python/qpid_interop_test/amqp_dtx_test.py
deleted file mode 100755
index 7e4a644..0000000
--- a/src/python/qpid_interop_test/amqp_dtx_test.py
+++ /dev/null
@@ -1,136 +0,0 @@
-#!/usr/bin/env python
-
-"""
-Module to test AMQP distributed transactions across different clients
-"""
-
-#
-# 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 argparse
-import sys
-import unittest
-
-#from itertools import product
-#from json import dumps
-from os import getenv, path
-#from time import mktime, time
-#from uuid import UUID, uuid4
-
-from proton import symbol
-#import qpid_interop_test.broker_properties
-import qpid_interop_test.shims
-#from qpid_interop_test.test_type_map import TestTypeMap
-
-# TODO: propose a sensible default when installation details are worked out
-QPID_INTEROP_TEST_HOME = getenv('QPID_INTEROP_TEST_HOME')
-if QPID_INTEROP_TEST_HOME is None:
- print 'ERROR: Environment variable QPID_INTEROP_TEST_HOME is not set'
- sys.exit(1)
-
-
-class AmqpDtxTestCase(unittest.TestCase):
- """
- Abstract base class for AMQP distributed transactions (DTX) test cases
- """
-
- def run_test(self):
- """
- Run this test by invoking the shim send method to send the test values, followed by the shim receive method
- to receive the values. Finally, compare the sent values with the received values.
- """
- pass
-
-
-# SHIM_MAP contains an instance of each client language shim that is to be tested as a part of this test. For
-# every shim in this list, a test is dynamically constructed which tests it against itself as well as every
-# other shim in the list.
-#
-# As new shims are added, add them into this map to have them included in the test cases.
-PROTON_CPP_RECEIVER_SHIM = path.join(QPID_INTEROP_TEST_HOME, 'shims', 'qpid-proton-cpp', 'build', 'amqp_dtx_test',
- 'Receiver')
-PROTON_CPP_SENDER_SHIM = path.join(QPID_INTEROP_TEST_HOME, 'shims', 'qpid-proton-cpp', 'build', 'amqp_dtx_test',
- 'Sender')
-PROTON_PYTHON_RECEIVER_SHIM = path.join(QPID_INTEROP_TEST_HOME, 'shims', 'qpid-proton-python', 'src', 'amqp_dtx_test',
- 'Receiver.py')
-PROTON_PYTHON_SENDER_SHIM = path.join(QPID_INTEROP_TEST_HOME, 'shims', 'qpid-proton-python', 'src', 'amqp_dtx_test',
- 'Sender.py')
-
-SHIM_MAP = {qpid_interop_test.shims.ProtonCppShim.NAME: \
- qpid_interop_test.shims.ProtonCppShim(PROTON_CPP_SENDER_SHIM, PROTON_CPP_RECEIVER_SHIM),
- qpid_interop_test.shims.ProtonPythonShim.NAME: \
- qpid_interop_test.shims.ProtonPythonShim(PROTON_PYTHON_SENDER_SHIM, PROTON_PYTHON_RECEIVER_SHIM),
- }
-
-
-class TestOptions(object):
- """
- Class controlling command-line arguments used to control the test.
- """
- def __init__(self):
- parser = argparse.ArgumentParser(description='Qpid-interop AMQP client interoparability test suite '
- 'for AMQP distrubuted (dtx) transactions')
- parser.add_argument('--broker', action='store', default='localhost:5672', metavar='BROKER:PORT',
- help='Broker against which to run test suite.')
- parser.add_argument('--exclude-shim', action='append', metavar='SHIM-NAME',
- help='Name of shim to exclude. Supported shims:\n%s' % sorted(SHIM_MAP.keys()))
- self.args = parser.parse_args()
-
-
-#--- Main program start ---
-
-if __name__ == '__main__':
-
- ARGS = TestOptions().args
- #print 'ARGS:', ARGS # debug
-
- # Connect to broker to find broker type
- CONNECTION_PROPS = qpid_interop_test.broker_properties.get_broker_properties(ARGS.sender)
- if CONNECTION_PROPS is None:
- print 'WARNING: Unable to get connection properties - unknown broker'
- BROKER = 'unknown'
- else:
- BROKER = CONNECTION_PROPS[symbol(u'product')] if symbol(u'product') in CONNECTION_PROPS \
- else '<product not found>'
- BROKER_VERSION = CONNECTION_PROPS[symbol(u'version')] if symbol(u'version') in CONNECTION_PROPS \
- else '<version not found>'
- BROKER_PLATFORM = CONNECTION_PROPS[symbol(u'platform')] if symbol(u'platform') in CONNECTION_PROPS \
- else '<platform not found>'
- print 'Test Broker: %s v.%s on %s' % (BROKER, BROKER_VERSION, BROKER_PLATFORM)
- print
- sys.stdout.flush()
-
- # TEST_CASE_CLASSES is a list that collects all the test classes that are constructed. One class is constructed
- # per AMQP type used as the key in map AmqpPrimitiveTypes.TYPE_MAP.
- TEST_CASE_CLASSES = []
-
- # TEST_SUITE is the final suite of tests that will be run and which contains all the dynamically created
- # type classes, each of which contains a test for the combinations of client shims
- TEST_SUITE = unittest.TestSuite()
-
- # Remove shims excluded from the command-line
- if ARGS.exclude_shim is not None:
- for shim in ARGS.exclude_shim:
- SHIM_MAP.pop(shim)
- # Create test classes dynamically
-
- # Finally, run all the dynamically created tests
- RES = unittest.TextTestRunner(verbosity=2).run(TEST_SUITE)
- if not RES.wasSuccessful():
- sys.exit(1) # Errors or failures present
http://git-wip-us.apache.org/repos/asf/qpid-interop-test/blob/0e153797/src/python/qpid_interop_test/amqp_features_test.py
----------------------------------------------------------------------
diff --git a/src/python/qpid_interop_test/amqp_features_test.py b/src/python/qpid_interop_test/amqp_features_test.py
deleted file mode 100755
index 83f140f..0000000
--- a/src/python/qpid_interop_test/amqp_features_test.py
+++ /dev/null
@@ -1,195 +0,0 @@
-#!/usr/bin/env python
-
-"""
-Module to test AMQP features across different clients
-"""
-
-#
-# 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 argparse
-import sys
-import unittest
-
-from json import dumps
-from os import getenv, path
-
-from proton import symbol
-import qpid_interop_test.shims
-
-# TODO: propose a sensible default when installation details are worked out
-QPID_INTEROP_TEST_HOME = getenv('QPID_INTEROP_TEST_HOME')
-if QPID_INTEROP_TEST_HOME is None:
- print 'ERROR: Environment variable QPID_INTEROP_TEST_HOME is not set'
- sys.exit(1)
-
-
-class AmqpFeaturesTestCase(unittest.TestCase):
- """
- Abstract base class for AMQP message features test cases
- """
-
- def run_test(self, sender_addr, receiver_addr, test_type, send_shim, receive_shim):
- """
- Run this test by invoking the shim send method to send the test values, followed by the shim receive method
- to receive the values. Finally, compare the sent values with the received values.
- """
- send_queue_name = 'jms.queue.qpid-interop.amqp_features_test.%s' % send_shim.NAME
- receive_queue_name = 'jms.queue.qpid-interop.amqp_features_test.%s' % receive_shim.NAME
-
- # Start the receive shim first (for queueless brokers/dispatch)
- receiver = receive_shim.create_receiver(receiver_addr, receive_queue_name, test_type, '0')
- receiver.start()
-
- # Start the send shim
- sender = send_shim.create_sender(sender_addr, send_queue_name, test_type, dumps([None]))
- sender.start()
-
- # Wait for both shims to finish
- sender.join_or_kill(qpid_interop_test.shims.THREAD_TIMEOUT)
- receiver.join_or_kill(qpid_interop_test.shims.THREAD_TIMEOUT)
-
- if test_type == 'connection_property':
- self.check_connection_property_test_results(sender.get_return_object(), receiver.get_return_object())
-
- def check_connection_property_test_results(self, sender_return_obj, receiver_return_obj):
- """Check received connection property for pass/fail of test"""
- self.check_connection_properties(sender_return_obj[1], 'sender')
- self.check_connection_properties(receiver_return_obj[1], 'receiver')
-
- def check_connection_properties(self, connection_properties, source):
- """Check an individual connection property for pass/fail"""
- keys = connection_properties.keys()
- if 'product' not in keys:
- self.fail('Broker connection properties (from %s) missing "product" key' % source)
- if 'version' not in keys:
- self.fail('Broker connection properties (from %s) missing "version" key' % source)
- for key in keys:
- self.assertTrue(len(connection_properties[key]) > 0, msg='Property "%s" (from %s) is empty' % (key, source))
-
-
-def create_connection_property_test_class(send_shim, receive_shim):
- """
- Class factory function which creates new subclasses to AmqpFeaturesTestCase.
- """
-
- def __repr__(self):
- """Print the class name"""
- return self.__class__.__name__
-
- def add_test_method(cls, send_shim, receive_shim):
- """Function which creates a new test method in class cls"""
-
- def inner_test_method(self):
- self.run_test(self.sender_addr, self.receiver_addr, 'connection_property', send_shim, receive_shim)
-
- inner_test_method.__name__ = 'test_connection_properties_%s->%s' % (send_shim.NAME, receive_shim.NAME)
- setattr(cls, inner_test_method.__name__, inner_test_method)
-
- class_name = 'ConnectionPropertyTestCase'
- class_dict = {'__name__': class_name,
- '__repr__': __repr__,
- '__doc__': 'Test case for AMQP connection properties',
- 'sender_addr': ARGS.sender,
- 'receiver_addr': ARGS.receiver}
- new_class = type(class_name, (AmqpFeaturesTestCase,), class_dict)
- add_test_method(new_class, send_shim, receive_shim)
- return new_class
-
-# SHIM_MAP contains an instance of each client language shim that is to be tested as a part of this test. For
-# every shim in this list, a test is dynamically constructed which tests it against itself as well as every
-# other shim in the list.
-#
-# As new shims are added, add them into this map to have them included in the test cases.
-PROTON_CPP_RECEIVER_SHIM = path.join(QPID_INTEROP_TEST_HOME, 'shims', 'qpid-proton-cpp', 'build', 'amqp_features_test',
- 'Receiver')
-PROTON_CPP_SENDER_SHIM = path.join(QPID_INTEROP_TEST_HOME, 'shims', 'qpid-proton-cpp', 'build', 'amqp_features_test',
- 'Sender')
-PROTON_PYTHON_RECEIVER_SHIM = path.join(QPID_INTEROP_TEST_HOME, 'shims', 'qpid-proton-python', 'src',
- 'amqp_features_test', 'Receiver.py')
-PROTON_PYTHON_SENDER_SHIM = path.join(QPID_INTEROP_TEST_HOME, 'shims', 'qpid-proton-python', 'src',
- 'amqp_features_test', 'Sender.py')
-
-SHIM_MAP = {#qpid_interop_test.shims.ProtonCppShim.NAME: \
- # qpid_interop_test.shims.ProtonCppShim(PROTON_CPP_SENDER_SHIM, PROTON_CPP_RECEIVER_SHIM),
- qpid_interop_test.shims.ProtonPythonShim.NAME: \
- qpid_interop_test.shims.ProtonPythonShim(PROTON_PYTHON_SENDER_SHIM, PROTON_PYTHON_RECEIVER_SHIM),
- }
-
-
-class TestOptions(object):
- """
- Class controlling command-line arguments used to control the test.
- """
- def __init__(self):
- parser = argparse.ArgumentParser(description='Qpid-interop AMQP client interoparability test suite '
- 'for AMQP messaging features')
- parser.add_argument('--sender', action='store', default='localhost:5672', metavar='IP-ADDR:PORT',
- help='Node to which test suite will send messages.')
- parser.add_argument('--receiver', action='store', default='localhost:5672', metavar='IP-ADDR:PORT',
- help='Node from which test suite will receive messages.')
- parser.add_argument('--exclude-shim', action='append', metavar='SHIM-NAME',
- help='Name of shim to exclude. Supported shims:\n%s' % sorted(SHIM_MAP.keys()))
- self.args = parser.parse_args()
-
-
-#--- Main program start ---
-
-if __name__ == '__main__':
-
- ARGS = TestOptions().args
- #print 'ARGS:', ARGS # debug
-
- # Connect to broker to find broker type
- CONNECTION_PROPS = qpid_interop_test.broker_properties.get_broker_properties(ARGS.sender)
- if CONNECTION_PROPS is None:
- print 'WARNING: Unable to get connection properties - unknown broker'
- BROKER = 'unknown'
- else:
- BROKER = CONNECTION_PROPS[symbol(u'product')] if symbol(u'product') in CONNECTION_PROPS \
- else '<product not found>'
- BROKER_VERSION = CONNECTION_PROPS[symbol(u'version')] if symbol(u'version') in CONNECTION_PROPS \
- else '<version not found>'
- BROKER_PLATFORM = CONNECTION_PROPS[symbol(u'platform')] if symbol(u'platform') in CONNECTION_PROPS \
- else '<platform not found>'
- print 'Test Broker: %s v.%s on %s' % (BROKER, BROKER_VERSION, BROKER_PLATFORM)
- print
- sys.stdout.flush()
-
- # TEST_CASE_CLASSES is a list that collects all the test classes that are constructed. One class is constructed
- # per AMQP type used as the key in map AmqpPrimitiveTypes.TYPE_MAP.
- TEST_CASE_CLASSES = []
-
- # TEST_SUITE is the final suite of tests that will be run and which contains all the dynamically created
- # type classes, each of which contains a test for the combinations of client shims
- TEST_SUITE = unittest.TestSuite()
-
- # Remove shims excluded from the command-line
- if ARGS.exclude_shim is not None:
- for shim in ARGS.exclude_shim:
- SHIM_MAP.pop(shim)
- # Create test classes dynamically
- for shim_name in SHIM_MAP.keys():
- test_case_class = create_connection_property_test_class(SHIM_MAP[shim_name], SHIM_MAP[shim_name])
- TEST_SUITE.addTest(unittest.makeSuite(test_case_class))
-
- # Finally, run all the dynamically created tests
- RES = unittest.TextTestRunner(verbosity=2).run(TEST_SUITE)
- if not RES.wasSuccessful():
- sys.exit(1) # Errors or failures present
http://git-wip-us.apache.org/repos/asf/qpid-interop-test/blob/0e153797/src/python/qpid_interop_test/amqp_large_content_test.py
----------------------------------------------------------------------
diff --git a/src/python/qpid_interop_test/amqp_large_content_test.py b/src/python/qpid_interop_test/amqp_large_content_test.py
index 7130203..67a3990 100755
--- a/src/python/qpid_interop_test/amqp_large_content_test.py
+++ b/src/python/qpid_interop_test/amqp_large_content_test.py
@@ -177,14 +177,10 @@ def create_testcase_class(amqp_type, shim_product):
# other shim in the list.
#
# As new shims are added, add them into this map to have them included in the test cases.
-PROTON_CPP_RECEIVER_SHIM = path.join(QPID_INTEROP_TEST_HOME, 'shims', 'qpid-proton-cpp', 'build',
- 'amqp_large_content_test', 'Receiver')
-PROTON_CPP_SENDER_SHIM = path.join(QPID_INTEROP_TEST_HOME, 'shims', 'qpid-proton-cpp', 'build',
- 'amqp_large_content_test', 'Sender')
-PROTON_PYTHON_RECEIVER_SHIM = path.join(QPID_INTEROP_TEST_HOME, 'shims', 'qpid-proton-python', 'src',
- 'amqp_large_content_test', 'Receiver.py')
-PROTON_PYTHON_SENDER_SHIM = path.join(QPID_INTEROP_TEST_HOME, 'shims', 'qpid-proton-python', 'src',
- 'amqp_large_content_test', 'Sender.py')
+PROTON_CPP_RECEIVER_SHIM = path.join(QPID_INTEROP_TEST_HOME, 'shims', 'qpid-proton-cpp', 'amqp_large_content_test', 'Receiver')
+PROTON_CPP_SENDER_SHIM = path.join(QPID_INTEROP_TEST_HOME, 'shims', 'qpid-proton-cpp', 'amqp_large_content_test', 'Sender')
+PROTON_PYTHON_RECEIVER_SHIM = path.join(QPID_INTEROP_TEST_HOME, 'shims', 'qpid-proton-python', 'amqp_large_content_test', 'Receiver.py')
+PROTON_PYTHON_SENDER_SHIM = path.join(QPID_INTEROP_TEST_HOME, 'shims', 'qpid-proton-python', 'amqp_large_content_test', 'Sender.py')
SHIM_MAP = {qpid_interop_test.shims.ProtonCppShim.NAME: \
qpid_interop_test.shims.ProtonCppShim(PROTON_CPP_SENDER_SHIM, PROTON_CPP_RECEIVER_SHIM),
http://git-wip-us.apache.org/repos/asf/qpid-interop-test/blob/0e153797/src/python/qpid_interop_test/amqp_types_test.py
----------------------------------------------------------------------
diff --git a/src/python/qpid_interop_test/amqp_types_test.py b/src/python/qpid_interop_test/amqp_types_test.py
index 600b3fc..0f339e4 100755
--- a/src/python/qpid_interop_test/amqp_types_test.py
+++ b/src/python/qpid_interop_test/amqp_types_test.py
@@ -403,18 +403,12 @@ def create_testcase_class(amqp_type, shim_product):
# other shim in the list.
#
# As new shims are added, add them into this map to have them included in the test cases.
-PROTON_CPP_RECEIVER_SHIM = path.join(QPID_INTEROP_TEST_HOME, 'shims', 'qpid-proton-cpp', 'build', 'amqp_types_test',
- 'Receiver')
-PROTON_CPP_SENDER_SHIM = path.join(QPID_INTEROP_TEST_HOME, 'shims', 'qpid-proton-cpp', 'build', 'amqp_types_test',
- 'Sender')
-PROTON_PYTHON_RECEIVER_SHIM = path.join(QPID_INTEROP_TEST_HOME, 'shims', 'qpid-proton-python', 'src', 'amqp_types_test',
- 'Receiver.py')
-PROTON_PYTHON_SENDER_SHIM = path.join(QPID_INTEROP_TEST_HOME, 'shims', 'qpid-proton-python', 'src', 'amqp_types_test',
- 'Sender.py')
-PROTON_RHEAJS_RECEIVER_SHIM = path.join(QPID_INTEROP_TEST_HOME, 'shims', 'rhea-js', 'amqp_types_test',
- 'Receiver.js')
-PROTON_RHEAJS_SENDER_SHIM = path.join(QPID_INTEROP_TEST_HOME, 'shims', 'rhea-js', 'amqp_types_test',
- 'Sender.js')
+PROTON_CPP_RECEIVER_SHIM = path.join(QPID_INTEROP_TEST_HOME, 'shims', 'qpid-proton-cpp', 'amqp_types_test', 'Receiver')
+PROTON_CPP_SENDER_SHIM = path.join(QPID_INTEROP_TEST_HOME, 'shims', 'qpid-proton-cpp', 'amqp_types_test', 'Sender')
+PROTON_PYTHON_RECEIVER_SHIM = path.join(QPID_INTEROP_TEST_HOME, 'shims', 'qpid-proton-python', 'amqp_types_test', 'Receiver.py')
+PROTON_PYTHON_SENDER_SHIM = path.join(QPID_INTEROP_TEST_HOME, 'shims', 'qpid-proton-python', 'amqp_types_test', 'Sender.py')
+PROTON_RHEAJS_RECEIVER_SHIM = path.join(QPID_INTEROP_TEST_HOME, 'shims', 'rhea-js', 'amqp_types_test', 'Receiver.js')
+PROTON_RHEAJS_SENDER_SHIM = path.join(QPID_INTEROP_TEST_HOME, 'shims', 'rhea-js', 'amqp_types_test', 'Sender.js')
SHIM_MAP = {qpid_interop_test.shims.ProtonCppShim.NAME: \
qpid_interop_test.shims.ProtonCppShim(PROTON_CPP_SENDER_SHIM, PROTON_CPP_RECEIVER_SHIM),
@@ -464,6 +458,7 @@ if __name__ == '__main__':
#print 'ARGS:', ARGS # debug
# Connect to broker to find broker type
+ # TODO: Find out why this uses auth
CONNECTION_PROPS = qpid_interop_test.broker_properties.get_broker_properties(ARGS.sender)
if CONNECTION_PROPS is None:
print 'WARNING: Unable to get connection properties - unknown broker'
http://git-wip-us.apache.org/repos/asf/qpid-interop-test/blob/0e153797/src/python/qpid_interop_test/jms_dtx_test.py
----------------------------------------------------------------------
diff --git a/src/python/qpid_interop_test/jms_dtx_test.py b/src/python/qpid_interop_test/jms_dtx_test.py
deleted file mode 100755
index fd998a7..0000000
--- a/src/python/qpid_interop_test/jms_dtx_test.py
+++ /dev/null
@@ -1,146 +0,0 @@
-#!/usr/bin/env python
-
-"""
-Module to test JMS distributed transactions (DTX) across different JMS clients
-"""
-
-#
-# 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 argparse
-import sys
-import unittest
-
-#from itertools import product
-#from json import dumps
-from os import getenv, path
-
-from proton import symbol
-#import qpid_interop_test.broker_properties
-import qpid_interop_test.shims
-#from qpid_interop_test.test_type_map import TestTypeMap
-
-
-# TODO: propose a sensible default when installation details are worked out
-QPID_INTEROP_TEST_HOME = getenv('QPID_INTEROP_TEST_HOME')
-if QPID_INTEROP_TEST_HOME is None:
- print 'ERROR: Environment variable QPID_INTEROP_TEST_HOME is not set'
- sys.exit(1)
-MAVEN_REPO_PATH = getenv('MAVEN_REPO_PATH', path.join(getenv('HOME'), '.m2', 'repository'))
-
-
-
-class JmsDtxTypeTestCase(unittest.TestCase):
- """
- Abstract base class for JMS DTX test cases
- """
-
- def run_test(self, broker_addr, jms_message_type, test_values, send_shim, receive_shim):
- """
- Run this test by invoking the shim send method to send the test values, followed by the shim receive method
- to receive the values. Finally, compare the sent values with the received values.
- """
- pass
-
-
-PROTON_CPP_RECEIVER_SHIM = path.join(QPID_INTEROP_TEST_HOME, 'shims', 'qpid-proton-cpp', 'build',
- 'jms_dtx_test', 'Receiver')
-PROTON_CPP_SENDER_SHIM = path.join(QPID_INTEROP_TEST_HOME, 'shims', 'qpid-proton-cpp', 'build',
- 'jms_dtx_test', 'Sender')
-PROTON_PYTHON_RECEIVER_SHIM = path.join(QPID_INTEROP_TEST_HOME, 'shims', 'qpid-proton-python', 'src',
- 'jms_dtx_test', 'Receiver.py')
-PROTON_PYTHON_SENDER_SHIM = path.join(QPID_INTEROP_TEST_HOME, 'shims', 'qpid-proton-python', 'src',
- 'jms_dtx_test', 'Sender.py')
-QIT_JMS_CLASSPATH_FILE = path.join(QPID_INTEROP_TEST_HOME, 'shims', 'qpid-jms', 'cp.txt')
-with open(QIT_JMS_CLASSPATH_FILE, 'r') as classpath_file:
- QIT_JMS_CLASSPATH = classpath_file.read()
-QPID_JMS_RECEIVER_SHIM = 'org.apache.qpid.interop_test.jms_dtx_test.Receiver'
-QPID_JMS_SENDER_SHIM = 'org.apache.qpid.interop_test.jms_dtx_test.Sender'
-
-# SHIM_MAP contains an instance of each client language shim that is to be tested as a part of this test. For
-# every shim in this list, a test is dynamically constructed which tests it against itself as well as every
-# other shim in the list.
-#
-# As new shims are added, add them into this map to have them included in the test cases.
-SHIM_MAP = {qpid_interop_test.shims.ProtonCppShim.NAME: \
- qpid_interop_test.shims.ProtonCppShim(PROTON_CPP_SENDER_SHIM, PROTON_CPP_RECEIVER_SHIM),
- qpid_interop_test.shims.ProtonPythonShim.NAME: \
- qpid_interop_test.shims.ProtonPythonShim(PROTON_PYTHON_SENDER_SHIM, PROTON_PYTHON_RECEIVER_SHIM),
- qpid_interop_test.shims.QpidJmsShim.NAME: \
- qpid_interop_test.shims.QpidJmsShim(QIT_JMS_CLASSPATH, QPID_JMS_SENDER_SHIM, QPID_JMS_RECEIVER_SHIM),
- }
-
-# TODO: Complete the test options to give fine control over running tests
-class TestOptions(object):
- """
- Class controlling command-line arguments used to control the test.
- """
- def __init__(self,):
- parser = argparse.ArgumentParser(description='Qpid-interop AMQP client interoparability test suite '
- 'for JMS distrubuted (dtx) transactions')
- parser.add_argument('--sender', action='store', default='localhost:5672', metavar='IP-ADDR:PORT',
- help='Node to which test suite will send messages.')
- parser.add_argument('--receiver', action='store', default='localhost:5672', metavar='IP-ADDR:PORT',
- help='Node from which test suite will receive messages.')
- parser.add_argument('--exclude-shim', action='append', metavar='SHIM-NAME',
- help='Name of shim to exclude. Supported shims:\n%s' % sorted(SHIM_MAP.keys()))
- self.args = parser.parse_args()
-
-
-#--- Main program start ---
-
-if __name__ == '__main__':
-
- ARGS = TestOptions().args
- #print 'ARGS:', ARGS # debug
-
- # Connect to broker to find broker type
- CONNECTION_PROPS = qpid_interop_test.broker_properties.get_broker_properties(ARGS.sender)
- if CONNECTION_PROPS is None:
- print 'WARNING: Unable to get connection properties - unknown broker'
- BROKER = 'unknown'
- else:
- BROKER = CONNECTION_PROPS[symbol(u'product')] if symbol(u'product') in CONNECTION_PROPS \
- else '<product not found>'
- BROKER_VERSION = CONNECTION_PROPS[symbol(u'version')] if symbol(u'version') in CONNECTION_PROPS \
- else '<version not found>'
- BROKER_PLATFORM = CONNECTION_PROPS[symbol(u'platform')] if symbol(u'platform') in CONNECTION_PROPS \
- else '<platform not found>'
- print 'Test Broker: %s v.%s on %s' % (BROKER, BROKER_VERSION, BROKER_PLATFORM)
- print
- sys.stdout.flush()
-
- # TEST_CASE_CLASSES is a list that collects all the test classes that are constructed. One class is constructed
- # per AMQP type used as the key in map JmsMessageTypes.TYPE_MAP.
- TEST_CASE_CLASSES = []
-
- # TEST_SUITE is the final suite of tests that will be run and which contains all the dynamically created
- # type classes, each of which contains a test for the combinations of client shims
- TEST_SUITE = unittest.TestSuite()
-
- # Remove shims excluded from the command-line
- if ARGS.exclude_shim is not None:
- for shim in ARGS.exclude_shim:
- SHIM_MAP.pop(shim)
- # Create test classes dynamically
-
- # Finally, run all the dynamically created tests
- RES = unittest.TextTestRunner(verbosity=2).run(TEST_SUITE)
- if not RES.wasSuccessful():
- sys.exit(1)
http://git-wip-us.apache.org/repos/asf/qpid-interop-test/blob/0e153797/src/python/qpid_interop_test/jms_hdrs_props_test.py
----------------------------------------------------------------------
diff --git a/src/python/qpid_interop_test/jms_hdrs_props_test.py b/src/python/qpid_interop_test/jms_hdrs_props_test.py
index 4c001ca..d0d77ac 100755
--- a/src/python/qpid_interop_test/jms_hdrs_props_test.py
+++ b/src/python/qpid_interop_test/jms_hdrs_props_test.py
@@ -585,14 +585,10 @@ def create_part_d_testcase_class(jms_message_type):
return new_class
-PROTON_CPP_RECEIVER_SHIM = path.join(QPID_INTEROP_TEST_HOME, 'shims', 'qpid-proton-cpp', 'build', 'jms_hdrs_props_test',
- 'Receiver')
-PROTON_CPP_SENDER_SHIM = path.join(QPID_INTEROP_TEST_HOME, 'shims', 'qpid-proton-cpp', 'build', 'jms_hdrs_props_test',
- 'Sender')
-PROTON_PYTHON_RECEIVER_SHIM = path.join(QPID_INTEROP_TEST_HOME, 'shims', 'qpid-proton-python', 'src',
- 'jms_hdrs_props_test', 'Receiver.py')
-PROTON_PYTHON_SENDER_SHIM = path.join(QPID_INTEROP_TEST_HOME, 'shims', 'qpid-proton-python', 'src',
- 'jms_hdrs_props_test', 'Sender.py')
+PROTON_CPP_RECEIVER_SHIM = path.join(QPID_INTEROP_TEST_HOME, 'shims', 'qpid-proton-cpp', 'jms_hdrs_props_test', 'Receiver')
+PROTON_CPP_SENDER_SHIM = path.join(QPID_INTEROP_TEST_HOME, 'shims', 'qpid-proton-cpp', 'jms_hdrs_props_test', 'Sender')
+PROTON_PYTHON_RECEIVER_SHIM = path.join(QPID_INTEROP_TEST_HOME, 'shims', 'qpid-proton-python', 'jms_hdrs_props_test', 'Receiver.py')
+PROTON_PYTHON_SENDER_SHIM = path.join(QPID_INTEROP_TEST_HOME, 'shims', 'qpid-proton-python', 'jms_hdrs_props_test', 'Sender.py')
QIT_JMS_CLASSPATH_FILE = path.join(QPID_INTEROP_TEST_HOME, 'shims', 'qpid-jms', 'cp.txt')
with open(QIT_JMS_CLASSPATH_FILE, 'r') as classpath_file:
QIT_JMS_CLASSPATH = classpath_file.read()
---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@qpid.apache.org
For additional commands, e-mail: commits-help@qpid.apache.org