mod vhost_tests { use super::*; #[test] fn streaming_completion_and_histogram() { let m = VhostMetrics::default(); m.active.store(1, Ordering::Relaxed); m.complete(503, false, std::time::Duration::from_millis(20), 10, 50); assert_eq!(n(&m.active), 0); assert_eq!(n(&m.errors), 1); assert_eq!(n(&m.status[4]), 1); assert_eq!(n(&m.buckets[1]), 0); assert_eq!(n(&m.buckets[2]), 1); assert_eq!(n(&m.buckets[10]), 1); let view = m.view(); assert_eq!(view.requests, 0); assert_eq!(view.completed, 1); assert_eq!(view.errors, 1); assert!(view.ewma_latency_ms >= 20.0); } } mod compression_counter_tests { use super::*; use crate::compression::AppliedEncoding; #[test] fn each_codec_has_an_independent_counter() { let metrics = Metrics::default(); for encoding in [ AppliedEncoding::Gzip, AppliedEncoding::Brotli, AppliedEncoding::Zstd, AppliedEncoding::Deflate, ] { metrics.record_compression(encoding); } let view = metrics.view(); assert_eq!(view.compression_gzip, 1); assert_eq!(view.compression_br, 1); assert_eq!(view.compression_zstd, 1); assert_eq!(view.compression_deflate, 1); } }