shadow_load_testing/
lib.rs1pub mod swarm;
7pub mod stress;
8pub mod report;
9
10pub use swarm::VirtualSwarm;
11pub use stress::StressTest;
12pub use report::LoadTestReport;
13
14pub fn run_load_test_suite(peer_count: usize) -> LoadTestReport {
16 let mut report = LoadTestReport::new(peer_count);
17
18 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 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 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 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 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}