use super::SimCluster;
use std::time::Instant;
#[derive(Debug, Clone)]
pub struct ScalingResult {
pub n: usize,
pub construction_ms: u64,
}
pub fn bench_construction(n: usize) -> ScalingResult {
let start = Instant::now();
let _cluster = SimCluster::new(n);
ScalingResult {
n,
construction_ms: start.elapsed().as_millis() as u64,
}
}
pub fn bench_all_tiers() -> [ScalingResult; 3] {
[
bench_construction(10),
bench_construction(100),
bench_construction(1000),
]
}
#[cfg(test)]
mod tests {
use super::*;
#[test]
fn test_bench_construction_10() {
let r = bench_construction(10);
assert_eq!(r.n, 10);
assert!(
r.construction_ms < 1000,
"10-node construction too slow: {}ms",
r.construction_ms
);
}
#[test]
fn test_bench_construction_100() {
let r = bench_construction(100);
assert_eq!(r.n, 100);
assert!(
r.construction_ms < 5000,
"100-node construction too slow: {}ms",
r.construction_ms
);
}
#[test]
fn test_bench_construction_1000() {
let r = bench_construction(1000);
assert_eq!(r.n, 1000);
assert!(
r.construction_ms < 30000,
"1000-node construction too slow: {}ms",
r.construction_ms
);
}
#[test]
fn test_bench_all_tiers_counts() {
let tiers = bench_all_tiers();
assert_eq!(tiers[0].n, 10);
assert_eq!(tiers[1].n, 100);
assert_eq!(tiers[2].n, 1000);
}
}