AMQP 0.9.1 Clients Interoperability Test Suite (ACITS for short) is a test suite that verifies compatibility of various AMQP 0.9.1/RabbitMQ clients, for example, the official Java client, amqp gem, Pika, the Erlang client and so on.
It does not mean to be the most comprehensive but covers all the common protocol operations, scenarios and issues observed over about 4 years of using RabbitMQ with various languages.
ACITS in its current form is a very young project (started in early November, 2012). As such, expect things to change, much more automation to be added over time, more clients included and so on.
There is one main test suite that delivers commands to command handlers implemented in various languages using various client libraries. The main test suite uses Langohr and thus the RabbitMQ Java client which is widely considered to be a reference implementation of a RabbitMQ client.
Commands are distributed over AMQP 0.9.1 and not out of band. There are few reasons for this:
- It is assumed that clients will be reasonably mature to participate in ACITS, so they should cover all the basic operations
- Out-of-band options such as IPC, shell-outs (CLI interfaces) or other protocols (e.g. HTTP) will make command handler implementations more complex and introduce new issues such as potential port conflicts or slight command-line parsing incompatibilities.
As such, the main test suite delivers commands to various clients and performs assertions on entities they are supposed to declare, messages they respond with and so on.
To run the suite, start all the command handlers (currently: amqp gem
, pika
) and then run
the main test suite.
Make sure you have JDK 6+ and Leiningen installed and available in PATH. Then, from the langohr
directory:
CLIENTS="bunny,pika,erlang-amqp-client,amqp-gem" lein test
On the first run, this will cause all dependencies to be downloaded. To run the suite for only
a few clients, simply leave some clients out of the CLIENTS
env variable value:
CLIENTS="bunny,pika" lein test
Make sure you have Ruby (1.9.3 is recommended, 1.8.7 should work as well, JRuby is supported in both modes). Then
gem install bundler
and from the bunny
directory:
bundle install
./script/command_handler.rb
Make sure you have Ruby (1.9.3 is recommended, 1.8.7 should work as well, JRuby is supported in both modes). Then
gem install bundler
and from the amqp_gem
directory:
bundle install
./script/command_handler.rb
Make sure you have Python 2.7 installed. Then
pip install pika
and from the pika
directory:
python ./script/command_handler.py
Make sure you have Erlang/OTP R15B02+ and Rebar installed. Then, from the erlang
directory:
rebar get-deps
./run.sh
Released under the Apache Public License 2.0.
(c) Michael S. Klishin michael@defprotocol.org.