You must build and install qpid-interop-test before you can run the tests.
By default, qpid-interop-test will install to /usr/local, but you can set any non-priviedged directory as the install prefix using the CMAKE_INSTALL_PREFIX environment variable, for example $HOME/install.
The following tools are needed to build qpid-interop-test:
The following Qpid components must be installed before you build and install qpid-interop-test:
The following are not required, but if installed and present, will be tested:
Pre-requisites can be installed using the standard system package manager (yum, dnf, apt-get etc.) OR built from source and installed.
These are the install steps:
Currently RHEL6 is not supported because it uses Python 2.6.x, and the test code uses features of Python 2.7.x. This may be supported in a future release.
From a clean install:
yum install cmake maven java-1.8.0-openjdk-devel perl-XML-XPath
Some packages will need to be downloaded from EPEL. To set up the EPEL repo in yum:
wget https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm rpm -ivh epel-release-latest-6.noarch.rpm
then install the following packages:
yum install jsoncpp-devel nodejs-rhea qpid-proton-cpp-devel python-qpid-proton
Qpid-jms client is not available as a package, so it must be built:
git clone https://git-wip-us.apache.org/repos/asf/qpid-jms.git cd qpid-jms mvn -DskipTests install cd ..
All packages are available directly from the Fedora repositories:
dnf install gcc-c++ cmake maven java-1.8.0-openjdk-devel perl-XML-XPath jsoncpp-devel nodejs-rhea qpid-proton-cpp-devel python-qpid-proton qpid-jms-client
Qpid-interop-test requires a broker to be running against which the tests may be run. This may be on localhost as a local install or build, or on another machine, in which case its IP addresss must be known. Some local broker install options are:
Download from Apache.
Make the following changes to the activemq.xml
config file: For XML element broker.transportConnectors.transportConnector@name="amqp"
add the attribute wireFormat.allowNonSaslConnections=true
. ie:
<transportConnector name="amqp" uri="amqp://0.0.0.0:5672?maximumConnections=1000&wireFormat.maxFrameSize=1048576000&wireFormat.allowNonSaslConnections=true"/>
Download from Apache.
Make the following changes to the broker.xml
file: For XML element configuration.core.address-settings.address-setting@match="#"
add the following child element:
<auto-create-jms-queues>true</auto-create-jms-queues>
yum install qpid-cpp-server
and set the configuration file in /etc/qpid/qpidd.conf as follows:
auth=no queue-patterns=jms.queue.qpid-interop
yum install qpid-dispatch-router
and add the following to the config file in /etc/qpid-dispatch/qdrouterd.conf:
listener { host: ::1 port: amqp authenticatePeer: no saslMechanisms: ANONYMOUS }
Qpid-interop-test may be installed locally (preferred for local builds) or to the system (which requires root privileges). For a local install, use the -DCMAKE_INSTALL_PREFIX
option to the cmake
command. If it is omitted, then qpid-interop-test will be installed into the default system directories.
git clone https://git-wip-us.apache.org/repos/asf/qpid-interop-test.git cd qpid-interop-test mkdir build cd build cmake [-DCMAKE_INSTALL_PREFIX=<abs-path-to-local-install-dir>] .. make install
The config.sh script is in the qpid-interop-test build directory:
source build/config.sh
If the broker is at a remote location rather than localhost, the IP address must be known. In tests using the Qpid Dispatch Router, then the entire broker network must be running before the tests are run. The IP addresses of the sender (the broker to which messages are being sent) and receiver (the broker from which messages will be received) must be known.
The available tests are:
Module | Description | Clients |
---|---|---|
amqp_large_content_test | Tests implementation of large messages up to 10MB | C++ Python AMQP.NetLite |
amqp_types_test | Tests the implementation of AMQP 1.0 types | C++ Python Rhea AMQP.NetLite |
jms_hdrs_props_test | Tests JMS headers and properties | C++ JMS Python |
jms_messages_test | Tests all JMS message types (except ObjectMessage) | C++ JMS Python |
The preferred method to run the tests is using the Python module option as follows:
python -m qpid_interop_test.amqp_types_test python -m qpid_interop_test.jms_messages_test ...
If the broker is remote, use the following to point to the broker:
python -m qpid_interop_test.amqp_types_test --sender <broker-ip-addr> --receiver <broker-ip-addr> python -m qpid_interop_test.jms_messages_test --sender <broker-ip-addr> --receiver <broker-ip-addr> ...
In tests using the Qpid dispatch router, a multi-node configuration may be set up such that messages are sent to a different broker to that from which they will be received. For example, to send to broker A and receive from broker B:
python -m qpid_interop_test.amqp_types_test --sender <broker-ip-addr-A> --receiver <broker-ip-addr-B> python -m qpid_interop_test.jms_messages_test --sender <broker-ip-addr-A> --receiver <broker-ip-addr-B> ...