tests: rework the actually useful tests to live in the integration crate
Rust CI / cargo fmt (push) Successful in 17s
Rust CI / cargo check (x86_64-unknown-linux-gnu) (push) Successful in 34s
Rust CI / cargo clippy (push) Successful in 35s
Rust CI / cargo check (x86_64-unknown-linux-musl) (push) Failing after 8s
Rust CI / cargo test (x86_64-unknown-linux-musl) (push) Failing after 10s
Rust CI / cargo test (x86_64-unknown-linux-gnu) (push) Successful in 1m14s
Rust CI / cargo doc (push) Successful in 23s
Fuzz Smoke / cargo fuzz smoke (push) Failing after 29s
Supply chain / cargo-deny advisories (push) Successful in 9s
Supply chain / cargo-deny bans licenses sources (push) Successful in 5s
Supply chain / actionlint (push) Successful in 3s
Netem Interop / netem interop (push) Successful in 1m11s
Rust CI / cargo fmt (push) Successful in 17s
Rust CI / cargo check (x86_64-unknown-linux-gnu) (push) Successful in 34s
Rust CI / cargo clippy (push) Successful in 35s
Rust CI / cargo check (x86_64-unknown-linux-musl) (push) Failing after 8s
Rust CI / cargo test (x86_64-unknown-linux-musl) (push) Failing after 10s
Rust CI / cargo test (x86_64-unknown-linux-gnu) (push) Successful in 1m14s
Rust CI / cargo doc (push) Successful in 23s
Fuzz Smoke / cargo fuzz smoke (push) Failing after 29s
Supply chain / cargo-deny advisories (push) Successful in 9s
Supply chain / cargo-deny bans licenses sources (push) Successful in 5s
Supply chain / actionlint (push) Successful in 3s
Netem Interop / netem interop (push) Successful in 1m11s
This commit is contained in:
101 files changed
+3636
-15159
No files matched your search
@@ -152,73 +152,3 @@ pub(crate) fn instant_abs_diff(left: Instant, right: Instant) -> Duration {
|
||||
.or_else(|| right.checked_duration_since(left))
|
||||
.unwrap_or(Duration::ZERO)
|
||||
}
|
||||
#[cfg(test)]
|
||||
mod tests {
|
||||
use super::*;
|
||||
use irtt_proto::Params;
|
||||
|
||||
fn negotiated(duration_ns: i64) -> NegotiatedParams {
|
||||
NegotiatedParams {
|
||||
params: Params {
|
||||
interval_ns: 10_000_000,
|
||||
duration_ns,
|
||||
..Params::default()
|
||||
},
|
||||
restrictions: Vec::new(),
|
||||
}
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn missed_slots_skip_on_the_absolute_grid_only_after_commit() {
|
||||
let start = Instant::now();
|
||||
let mut schedule = ProbeSchedule::new(start, &negotiated(0)).unwrap();
|
||||
for (now_ms, intended_ms, next_ms) in [(0, 0, 10), (45, 40, 50), (50, 50, 60)] {
|
||||
let deadline = schedule.next_send_deadline().unwrap();
|
||||
let commit = schedule
|
||||
.preflight_managed_commit(deadline, start + Duration::from_millis(now_ms))
|
||||
.unwrap();
|
||||
assert_eq!(
|
||||
commit.scheduled_at,
|
||||
start + Duration::from_millis(intended_ms)
|
||||
);
|
||||
// A failed or pending submission discards this preflight.
|
||||
assert_eq!(schedule.next_send_deadline(), Some(deadline));
|
||||
schedule.commit(commit);
|
||||
assert_eq!(
|
||||
schedule.next_send_deadline(),
|
||||
Some(start + Duration::from_millis(next_ms))
|
||||
);
|
||||
}
|
||||
schedule
|
||||
.skip_missed_slots_at(start + Duration::from_millis(85))
|
||||
.unwrap();
|
||||
assert_eq!(
|
||||
schedule.next_send_deadline(),
|
||||
Some(start + Duration::from_millis(90))
|
||||
);
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn finite_duration_excludes_its_end_even_when_a_slot_is_missed() {
|
||||
let start = Instant::now();
|
||||
let mut schedule = ProbeSchedule::new(start, &negotiated(20_000_000)).unwrap();
|
||||
assert!(schedule.permit_probe_at(start + Duration::from_millis(19)));
|
||||
let commit = schedule
|
||||
.preflight_managed_commit(start, start + Duration::from_millis(19))
|
||||
.unwrap();
|
||||
schedule.commit(commit);
|
||||
assert!(schedule.is_finished());
|
||||
|
||||
let mut missed = ProbeSchedule::new(start, &negotiated(20_000_000)).unwrap();
|
||||
assert!(!missed.permit_probe_at(start + Duration::from_millis(20)));
|
||||
assert!(missed.is_finished());
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn cadence_rejects_overflow_before_commit() {
|
||||
assert!(matches!(
|
||||
advance_cadence(Instant::now(), Duration::MAX, Instant::now()),
|
||||
Err(ClientError::DurationOverflow)
|
||||
));
|
||||
}
|
||||
}
|
||||
Reference in new issue
Block a user