Skip to main content

Crate rusmes_loadtest

Crate rusmes_loadtest 

Source
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§

LoadTester
Main load test coordinator