diff --git a/crates/scyllaconn/Cargo.toml b/crates/scyllaconn/Cargo.toml index 6c9234b..23f0918 100644 --- a/crates/scyllaconn/Cargo.toml +++ b/crates/scyllaconn/Cargo.toml @@ -9,6 +9,7 @@ futures-util = "0.3.31" pin-project = "1" async-channel = "2.3.1" scylla = "1.1" +time = { version = "0.3.41", features = ["parsing", "formatting", "macros"] } autoerr = "0.0.3" daqbuf-err = { path = "../../../daqbuf-err" } netpod = { path = "../../../daqbuf-netpod", package = "daqbuf-netpod" } diff --git a/crates/scyllaconn/src/binned2/msplspiter.rs b/crates/scyllaconn/src/binned2/msplspiter.rs index b73234f..f09d2e4 100644 --- a/crates/scyllaconn/src/binned2/msplspiter.rs +++ b/crates/scyllaconn/src/binned2/msplspiter.rs @@ -44,9 +44,54 @@ impl Iterator for MspLspIter { fn test_iter_00() { let range = NanoRange::from_strings("2024-06-07T09:17:31Z", "2024-06-07T09:17:31Z").unwrap(); let pbp = PrebinnedPartitioning::Sec1; - let mut it = MspLspIter::new(range, pbp); - // taskrun; - for x in it { - eprintln!("{:?}", x); - } + assert_eq!(pbp.patch_len(), 1200); + let it = MspLspIter::new(range, pbp); + let a: Vec<_> = it.collect(); + assert_eq!(a.len(), 0); +} + +#[test] +fn test_iter_01() { + let range = NanoRange::from_strings("2024-06-07T09:17:31Z", "2024-06-07T09:17:32Z").unwrap(); + let pbp = PrebinnedPartitioning::Sec1; + assert_eq!(pbp.patch_len(), 1200); + let it = MspLspIter::new(range, pbp.clone()); + let a: Vec<_> = it.collect(); + assert_eq!(a.len(), 1); + assert_eq!(a[0].0.0, 1431459); + assert_eq!(a[0].1.0, 1051); + let ts_sec = pbp.patch_len() as u64 * a[0].0.0 as u64 + a[0].1.0 as u64; + // time::UtcDateTime::new(time::Date::with, time) + let ts1 = time::UtcDateTime::from_unix_timestamp(ts_sec as i64).unwrap(); + let fmt = time::macros::format_description!("[year]-[month]-[day]T[hour]:[minute]:[second]Z"); + let ts2 = time::UtcDateTime::parse("2024-06-07T09:17:31Z", &fmt).unwrap(); + assert_eq!(ts1, ts2); +} + +#[test] +fn test_iter_02() { + let range = NanoRange::from_strings("2024-06-07T09:17:31Z", "2024-06-07T09:22:00Z").unwrap(); + let pbp = PrebinnedPartitioning::Sec1; + let it = MspLspIter::new(range, pbp.clone()); + let a: Vec<_> = it.collect(); + assert_eq!(a.len(), 240 + 29); + let e = &a[a.len() - 1]; + assert_eq!(e.0.0, 1431460); + assert_eq!(e.1.0, 119); +} + +#[test] +fn test_iter_03() { + // Check clamped covering in correct direction + let range = NanoRange::from_strings("2024-06-07T09:17:31.1Z", "2024-06-07T09:21:59.8Z").unwrap(); + let pbp = PrebinnedPartitioning::Sec1; + let it = MspLspIter::new(range, pbp.clone()); + let a: Vec<_> = it.collect(); + assert_eq!(a.len(), 240 + 29); + let e = &a[0]; + assert_eq!(e.0.0, 1431459); + assert_eq!(e.1.0, 1051); + let e = &a[a.len() - 1]; + assert_eq!(e.0.0, 1431460); + assert_eq!(e.1.0, 119); }