Comprehensive cross-language integration testing for the capns ecosystem.
Tests all viable capns implementations (Rust, Python, Swift, Go) against each other in both host and plugin roles, ensuring bulletproof protocol compliance across:
- Simple request/response
- Streaming responses
- Stream multiplexing
- Heartbeat mechanisms
- Bidirectional invocations
- Error handling
- Performance benchmarks
# Build all test plugins
make all
# Run full test suite
pytest tests/ -v
# Run full matrix (252+ tests)
pytest tests/test_matrix.py -v- Python orchestrator uses
PluginHostRuntimeto test plugins in different languages - Test plugins implement identical 13 capabilities across Rust/Python/Swift
- 9 language-pair configurations: 3 languages × 3 languages
- 28 scenarios covering all protocol features
- Python 3.10+
- Rust toolchain (cargo)
- Swift toolchain (swift build)
- capns-py package (../capns-py)
rust-plugin python-plugin swift-plugin
rust-host ✓ ✓ ✓
python-host ✓ ✓ ✓
swift-host ✓ ✓ ✓
src/capns_interop/framework/- Core orchestrationsrc/capns_interop/scenarios/- Test scenariossrc/capns_interop/plugins/- Test plugin sources (Rust/Python/Swift)tests/- pytest test suiteartifacts/- Build outputs and reports
When Go/JavaScript implement CBOR runtimes:
- Add plugin implementation in
src/capns_interop/plugins/{go,javascript}/ - Add Makefile build target
- Update
SUPPORTED_LANGUAGESconstant - Matrix automatically expands from 9 to 25 configurations
PYTHONPATH=src python -m pytest tests/test_chunking_interop.py tests/test_filepath_interop.py -v
PYTHONPATH=src python -m pytest tests/ -v
PYTHONPATH=src python -m pytest tests/ -v --tb=short
PYTHONPATH=src python -m pytest tests/ -v --durations=10
Expected Results:
- 24 chunking tests (6 scenarios × 4 languages)
- 22 file-path tests (7-8 scenarios × 3-4 languages)
- Total: 46 tests, all passing
Note: The tests require all plugins to be built first. If you need to rebuild:
make all # Builds all plugins (Rust, Go, Python, Swift)
Or build individually: make build-rust make build-go make build-python make build-swift