Skip to content

michaelklishin/acits

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

38 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

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.

About

RabbitMQ clients interoperability test suite

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published