Expand description
§rusmes-loadtest
Multi-protocol load testing tool for the RusMES Rust Mail Enterprise Server.
This crate provides the rusmes-loadtest binary, capable of generating
realistic, high-throughput email traffic across SMTP, IMAP, JMAP, and POP3
protocols simultaneously, while collecting detailed latency and throughput metrics.
§Features
- Multi-protocol — SMTP, IMAP, JMAP, POP3, and configurable mixed-protocol scenarios
- Configurable scenarios — SMTP throughput, concurrent connections, mixed protocol, and sustained-load test patterns
- Flexible workload patterns — steady, spike, ramp-up, stress, and wave patterns
- HDR histogram latency — precise percentile reporting (p50, p95, p99, p99.9)
via
hdrhistogram - Report generation — JSON, HTML, and CSV output; Prometheus metrics export
- Realistic message generation — random sizes, template-based, and real-world content types
§Example
# 60-second SMTP throughput test at 200 msg/s with 20 workers
rusmes-loadtest --host mail.example.com --port 25 \
--protocol smtp --scenario smtp-throughput \
--duration 60 --concurrency 20 --rate 200 \
--output-json /tmp/results.json --output-html /tmp/results.html§Architecture
The main entry point is LoadTester, which takes a LoadTestConfig and
orchestrates concurrent workers via Tokio tasks. Each worker calls into a
protocol-specific client (protocols::SmtpClient, protocols::ImapClient, …)
and records results into a shared LoadTestMetrics protected by an
Arc<RwLock<…>>.
Re-exports§
pub use config::LoadTestConfig;pub use metrics::LatencyStats;pub use metrics::LoadTestMetrics;pub use scenarios::LoadTestScenario;pub use scenarios::ScenarioRunner;
Modules§
- config
- Load test configuration
- generators
- Message generators for load testing
- metrics
- Load test metrics collection and reporting
- protocols
- Protocol clients for load testing
- reporter
- Report generation for load test results
- scenarios
- Load test scenarios
- workload
- Workload patterns for load testing
Structs§
- Load
Tester - Main load test coordinator