use crate::metrics::MetricsCollector; use crate::types::BenchmarkResult; use std::path::PathBuf; pub struct BenchConfig { pub test_file: PathBuf, pub quick_mode: bool, pub suites: Option>, } fn warn_reset_hwm() { if let Err(e) = MetricsCollector::reset_vm_hwm() { if e.kind() == std::io::ErrorKind::PermissionDenied { eprintln!("WARNING: VmHWM reset requires root: {e}"); } } } pub fn run_all(config: &BenchConfig) -> Vec { let mut results = Vec::new(); let should_run = |name: &str| -> bool { match &config.suites { Some(suites) => suites.iter().any(|s| s == name), None => true, } }; if should_run("startup") { warn_reset_hwm(); results.extend(crate::suites::startup::run(config)); } if should_run("render") { warn_reset_hwm(); results.extend(crate::suites::render::run(config)); } if should_run("jump") { warn_reset_hwm(); results.extend(crate::suites::jump::run(config)); } if should_run("memory") { warn_reset_hwm(); results.extend(crate::suites::memory::run(config)); } if should_run("growth") { warn_reset_hwm(); results.extend(crate::suites::growth::run(config)); } if should_run("rotation") { warn_reset_hwm(); results.extend(crate::suites::rotation::run(config)); } if should_run("concurrent") { warn_reset_hwm(); results.extend(crate::suites::concurrent::run(config)); } results }