Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
RabbitMQ clients interoperability test suite
Clojure Erlang Ruby Python
branch: master

Fetching latest commit…

Cannot retrieve the latest commit at this time

Failed to load latest commit information.
amqp_gem
bunny
erlang
langohr
pika
.gitignore
.rspec
README.md

README.md

AMQP 0.9.1 Clients Interoperability Test Suite

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.

Project Maturity

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.

How It Works

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.

Running Tests

To run the suite, start all the command handlers (currently: amqp gem, pika) and then run the main test suite.

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

Bunny 0.9+

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

amqp gem

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

Pika

Make sure you have Python 2.7 installed. Then

pip install pika

and from the pika directory:

python ./script/command_handler.py

Erlang Client

Make sure you have Erlang/OTP R15B02+ and Rebar installed. Then, from the erlang directory:

rebar get-deps
./run.sh

License and Copyright

Released under the Apache Public License 2.0.

(c) Michael S. Klishin michael@defprotocol.org.

Something went wrong with that request. Please try again.