From 5b6d05e30ed2c859a8edf58b07c2ca98f011678e Mon Sep 17 00:00:00 2001 From: Dominik Werder Date: Wed, 2 Oct 2024 14:33:01 +0200 Subject: [PATCH] WIP --- crates/items_2/src/binning/test/events00.rs | 91 +++++++++++++++++++-- 1 file changed, 86 insertions(+), 5 deletions(-) diff --git a/crates/items_2/src/binning/test/events00.rs b/crates/items_2/src/binning/test/events00.rs index 9ce8f89..51110ba 100644 --- a/crates/items_2/src/binning/test/events00.rs +++ b/crates/items_2/src/binning/test/events00.rs @@ -68,10 +68,7 @@ fn exp_u64<'a>( } if let (Some(val), Some(exp)) = (a, b) { if val != exp { - return Err(Error::AssertMsg(format!( - "{tag} expect close value {} vs {}", - val, exp - ))); + return Err(Error::AssertMsg(format!("{tag} expect value {} vs {}", val, exp))); } } else { return Err(Error::AssertMsg(format!("{tag} len mismatch"))); @@ -97,7 +94,7 @@ fn exp_avgs(bins: &ContainerBins, exps: impl IntoVecDequeF32) -> Result<(), if let (Some(a), Some(&exp)) = (a, b) { let val = *a.avg as f32; if netpod::f32_close(val, exp) == false { - return Err(Error::AssertMsg(format!("expect close value {} vs {}", val, exp))); + return Err(Error::AssertMsg(format!("expect value {} vs {}", val, exp))); } } else { return Err(Error::AssertMsg(format!( @@ -260,6 +257,90 @@ fn test_bin_events_f32_small_range_final() -> Result<(), Error> { Ok(()) } +#[test] +fn test_bin_events_f32_small_intermittent_silence_range_open() -> Result<(), Error> { + let beg = TsNano::from_ms(100); + let end = TsNano::from_ms(150); + let nano_range = NanoRange { + beg: beg.ns(), + end: end.ns(), + }; + let range = BinnedRange::from_nano_range(nano_range, DtMs::from_ms_u64(10)); + let mut binner = BinnedEventsTimeweight::new(range); + let mut evs = ContainerEvents::::new(); + let em = &mut evs; + pu(em, 102, 2.0); + pu(em, 104, 2.4); + binner.ingest(evs)?; + let mut evs = ContainerEvents::::new(); + let em = &mut evs; + pu(em, 111, 1.0); + pu(em, 112, 1.2); + binner.ingest(evs)?; + // TODO take bins already here and assert. + // TODO combine all bins together for combined assert. + let mut evs = ContainerEvents::::new(); + let em = &mut evs; + pu(em, 113, 1.4); + pu(em, 146, 1.3); + pu(em, 148, 1.2); + binner.ingest(evs)?; + binner.input_done_range_open()?; + let bins = binner.output(); + trace!("{bins:?}"); + for b in bins.iter_debug() { + trace!("{b:?}"); + } + assert_eq!(bins.len(), 5); + exp_cnts(&bins, "2 3 0 0 2")?; + exp_avgs(&bins, "2.30 1.44 1.4 1.4 1.375")?; + let bins = binner.output(); + assert_eq!(bins.len(), 0); + Ok(()) +} + +#[test] +fn test_bin_events_f32_small_intermittent_silence_range_final() -> Result<(), Error> { + let beg = TsNano::from_ms(100); + let end = TsNano::from_ms(150); + let nano_range = NanoRange { + beg: beg.ns(), + end: end.ns(), + }; + let range = BinnedRange::from_nano_range(nano_range, DtMs::from_ms_u64(10)); + let mut binner = BinnedEventsTimeweight::new(range); + let mut evs = ContainerEvents::::new(); + let em = &mut evs; + pu(em, 102, 2.0); + pu(em, 104, 2.4); + binner.ingest(evs)?; + let mut evs = ContainerEvents::::new(); + let em = &mut evs; + pu(em, 111, 1.0); + pu(em, 112, 1.2); + binner.ingest(evs)?; + // TODO take bins already here and assert. + // TODO combine all bins together for combined assert. + let mut evs = ContainerEvents::::new(); + let em = &mut evs; + pu(em, 113, 1.4); + pu(em, 146, 1.3); + pu(em, 148, 1.2); + binner.ingest(evs)?; + binner.input_done_range_final()?; + let bins = binner.output(); + trace!("{bins:?}"); + for b in bins.iter_debug() { + trace!("{b:?}"); + } + assert_eq!(bins.len(), 5); + exp_cnts(&bins, "2 3 0 0 2")?; + exp_avgs(&bins, "2.30 1.44 1.4 1.4 1.34")?; + let bins = binner.output(); + assert_eq!(bins.len(), 0); + Ok(()) +} + #[test] fn test_bin_events_enum_simple_range_final() -> Result<(), Error> { let beg = TsNano::from_ms(100);