Giter Club home page Giter Club logo

acits's Introduction

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 [email protected].

acits's People

Contributors

michaelklishin avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.