Skip to main content

shadow_load_testing/
lib.rs

1//! # Load Testing Framework
2//!
3//! Simulates large peer swarms (10,000+) to stress test
4//! DHT, messaging, storage, and steganography subsystems.
5
6pub mod swarm;
7pub mod stress;
8pub mod report;
9
10pub use swarm::VirtualSwarm;
11pub use stress::StressTest;
12pub use report::LoadTestReport;
13
14/// Run a complete load test suite
15pub fn run_load_test_suite(peer_count: usize) -> LoadTestReport {
16    let mut report = LoadTestReport::new(peer_count);
17
18    // Swarm creation
19    let start = std::time::Instant::now();
20    let mut swarm = VirtualSwarm::new(peer_count);
21    swarm.bootstrap(10.min(peer_count.saturating_sub(1)));
22    report.record("swarm_creation", start.elapsed(), true);
23
24    // DHT stress
25    let start = std::time::Instant::now();
26    let dht_ok = stress::stress_dht_operations(&swarm, 1000);
27    report.record("dht_stress_1000_ops", start.elapsed(), dht_ok);
28
29    // Message routing stress
30    let start = std::time::Instant::now();
31    let msg_ok = stress::stress_message_routing(&swarm, 500);
32    report.record("message_routing_500", start.elapsed(), msg_ok);
33
34    // Storage stress
35    let start = std::time::Instant::now();
36    let store_ok = stress::stress_storage_operations(100);
37    report.record("storage_100_items", start.elapsed(), store_ok);
38
39    // Concurrent operations
40    let start = std::time::Instant::now();
41    let conc_ok = stress::stress_concurrent_channels(50);
42    report.record("concurrent_50_channels", start.elapsed(), conc_ok);
43
44    report
45}
46
47#[cfg(test)]
48mod tests {
49    use super::*;
50
51    #[test]
52    fn test_small_load_test() {
53        let report = run_load_test_suite(100);
54        assert!(report.all_passed());
55    }
56
57    #[test]
58    fn test_medium_load_test() {
59        let report = run_load_test_suite(1000);
60        assert!(report.all_passed());
61    }
62}