// file: crates/ksp-logging-lib/tests/overhead.rs // version: 2 //! Diagnostic gross-overhead probe for the reload layer used by KSP Logging. use tracing_subscriber::layer::SubscriberExt; // rust-rules: trait-import const ITERATIONS: u64 = 200_000; const TEST_TARGET: &str = "ksp-logging-lib"; fn emit_probe_events() { for sequence in 0..ITERATIONS { tracing::trace!(target: TEST_TARGET, sequence, "reload overhead probe"); } } fn trace_filter() -> tracing_subscriber::filter::Targets { return tracing_subscriber::filter::Targets::new() .with_default(tracing_subscriber::filter::LevelFilter::OFF) .with_target(TEST_TARGET, tracing_subscriber::filter::LevelFilter::TRACE); } #[test] #[ignore = "diagnostic timing probe; run explicitly with --ignored --nocapture"] fn reload_layer_overhead_remains_within_a_gross_regression_guardrail() { let baseline_subscriber = tracing_subscriber::registry().with(trace_filter()); let baseline_start = std::time::Instant::now(); tracing::subscriber::with_default(baseline_subscriber, || { emit_probe_events(); return; }); let baseline_elapsed = baseline_start.elapsed(); let (reload_layer, _reload_handle) = tracing_subscriber::reload::Layer::new(trace_filter()); let reload_subscriber = tracing_subscriber::registry().with(reload_layer); let reload_start = std::time::Instant::now(); tracing::subscriber::with_default(reload_subscriber, || { emit_probe_events(); return; }); let reload_elapsed = reload_start.elapsed(); let gross_ceiling = baseline_elapsed.saturating_mul(100).saturating_add(std::time::Duration::from_millis(100)); println!("KSP reload overhead probe: baseline={baseline_elapsed:?}, reload={reload_elapsed:?}, iterations={ITERATIONS}"); assert!( reload_elapsed <= gross_ceiling, "reload layer exceeded the gross regression guardrail: baseline={baseline_elapsed:?}, reload={reload_elapsed:?}" ); }