Mirror of Apache Qpid Interop Test

Clone this repo:
  1. 3e08839 Add shim auto-discovery and --shims/--exclude-shims CLI filtering by QIT Development Team · 17 hours ago main
  2. 15a376e Remove unused uuid dependency from Rhea shim by QIT Development Team · 2 days ago
  3. 4f8fa4c Add CodeQL analysis workflow configuration by Kim van der Riet · 2 days ago
  4. 72cff54 Release cleanup: remove dev docs, add CHANGES, RAT compliance by QIT Development Team · 2 days ago
  5. b26d6c9 Update to .gitignore by QIT Development Team · 3 days ago

QIT 2.0 - AMQP Interoperability Test Suite

Modern rewrite of the Apache Qpid Interoperability Test suite for verifying AMQP 1.0 client interoperability across multiple language implementations.

Overview

QIT 2.0 tests that AMQP 1.0 messages sent by one client can be correctly received by another, through an Apache Artemis broker. It covers data type fidelity, JMS interoperability, message metadata, and large content transfer.

Tested Clients (6):

  • Python (Apache Qpid Proton)
  • C++ (Apache Qpid Proton)
  • JavaScript (AMQP Rhea)
  • .NET (Apache Qpid Proton .NET)
  • Java (Apache Qpid JMS) - JMS interop tests
  • Java (Apache Qpid ProtonJ2) - native AMQP tests

Test Coverage (2076 tests default / ~2470 extended):

  • 18 AMQP 1.0 primitive types + 4 complex types (550 tests)
  • JMS message types, headers, and application properties (363 tests)
  • AMQP Header section fields: durable, priority, ttl, first-acquirer, delivery-count (275 tests)
  • Large content: 1MB/10MB binary/string, collections, multi-frame-size (888 tests)

See docs/QIT2_SUMMARY.md for the full summary including improvements over the original QIT.

Quick Start

Prerequisites

Installation

# Setup Python environment
uv venv
source .venv/bin/activate
uv sync

# Setup and start broker (see docs/BROKER_SETUP.md for details)
./scripts/setup-local-broker.sh
./artemis-local/bin/artemis run &

# Run AMQP type tests
qit test amqp-types

# Run JMS, AMQP header, and large content tests
pytest tests/test_jms_unified.py -v
pytest tests/test_amqp_headers.py -v
pytest tests/test_large_content.py -v

Architecture

See docs/ARCHITECTURE.md for detailed design documentation. To add a shim for a new language or client library, see docs/SHIM_HOWTO.md.

qit/
  src/qit/              # Python package (orchestrator, type system, xfail)
  shims/                # 6 client implementations with uniform CLI + JSON interface
  tests/                # pytest test suites
  scripts/              # Broker setup, CI helpers, debug tools
  docs/                 # Architecture, status, setup documentation

CI/CD

Jenkins pipeline runs weekly, with extended tier (10MB content) enabled during the first week of each month. Four JUnit XML result files per run:

  • qit-results.xml - AMQP types (550 tests)
  • qit-jms-results.xml - JMS interop (363 tests)
  • qit-amqp-header-results.xml - AMQP headers (275 tests)
  • qit-large-content-results.xml - Large content (494-888 tests)

License

Apache License 2.0 — see LICENSE and NOTICE.