4 releases (2 breaking)
0.3.0 | Feb 12, 2023 |
---|---|
0.2.2 | Nov 27, 2022 |
0.2.1 | Jul 14, 2021 |
0.1.0 | Feb 2, 2021 |
#730 in Asynchronous
27 downloads per month
330KB
7.5K
SLoC
MetalMQ
Build and run
metalmq
is under development, it is not feature complete but you can try and run with cargo run.
cargo run --bin metalmq
## or to enable logs
RUST_LOG=debug cargo run --bin metalmq
RUST_LOG=metalmq=trace cargo run --bin metalmq
cargo test --tests
## or to run integration tests
cargo test --package metalmq --test it
There are some examples in the examples
directory, they implement simple scenarios of the
metalmq-client
library. To run execute
RUST_LOG=metalmq_client=trace cargo run --example publish-consume
Running tests in metalmq-client
cargo test --package metalmq-client --test it
AMQP compliance
For AMQP compliance we use pika
Python library and pytest
framework to be to validate
the comformance of metalmq server.
cd amqp-compliance
pytest
Compilance matrix
Method | Field |
---|---|
connection. | |
channel. | |
exchange.declare | ✅ exchange |
❌ type | |
✅ passive | |
❌ durable (no persistence) | |
❓ arguments | |
queue.declare | ✅ queue |
✅ passive | |
❓ durable | |
✅ exclusive | |
✅ auto-delete | |
basic. |
AMQP 0.9 client library
In metalmq-client
there is a Rust async client which implements part of the AMQP 0.9.1 protocol.
You can try agains metalmq
server or rabbitmq
.
#docker run -p 5672:5672 -p 15672:15672 --rm rabbitmq:3-management
cargo test --lib metalmq-client
In order to validate AMQP packages we also need a stable AMQP client implementation which is
the pika
. It runs on Python, so one need to install pipenv
to run that.
cd amqp-compliance
pytest
Debug test
Switch on logging in the beginning of the test.
#[tokio::test]
async fn test() -> Result<()> {
env_logger::builder().is_test(true).try_init();
}
Start the test with the environment variable set.
RUST_LOG=metalmq_client=trace cargo test -- --exact exchange::declare_exchange_with_different_type --show-output
Unit test coverage
Run unit test with coverage.
rustup component add llvm-tools-preview
cargo install grconv
mkdir -p target/coverage/data
make metalmq-cover
open target/coverage/html/index.html
Use tokio console
In the examples the publish-consume test has dependency on the tokio console.
RUSTFLAGS="--cfg tokio_unstable" cargo run --example publish-consume
Dependencies
~10–20MB
~278K SLoC