#![cfg(feature = "integration-tests")]
mod helpers;
use netring::Capture;
use std::time::{Duration, Instant};
#[test]
fn packets_for_terminates_on_idle_lo() {
let mut cap = Capture::builder()
.interface(helpers::LOOPBACK)
.block_timeout_ms(10)
.build()
.expect("build capture");
let target = Duration::from_millis(200);
let start = Instant::now();
let _count = cap.packets_for(target).count();
let elapsed = start.elapsed();
assert!(
elapsed < Duration::from_secs(2),
"packets_for did not terminate within 2s on idle lo (took {elapsed:?})"
);
assert!(
elapsed >= target / 2,
"packets_for returned suspiciously early ({elapsed:?})"
);
}
#[test]
fn packets_until_past_deadline_yields_none() {
let mut cap = Capture::builder()
.interface(helpers::LOOPBACK)
.block_timeout_ms(10)
.build()
.expect("build capture");
let past = Instant::now() - Duration::from_secs(1);
let mut iter = cap.packets_until(past);
assert!(iter.next().is_none());
}