diff --git a/crates/scheduler/src/clock.rs b/crates/scheduler/src/clock.rs index 447d76b584a6b55e5fb977661e1aed068486f864..017643c4eb7ffe46db48b5efb43d006bf155a03c 100644 --- a/crates/scheduler/src/clock.rs +++ b/crates/scheduler/src/clock.rs @@ -24,6 +24,11 @@ impl TestClock { })) } + pub fn set_utc_now(&self, now: DateTime) { + let mut state = self.0.lock(); + state.utc_now = now; + } + pub fn advance(&self, duration: Duration) { let mut state = self.0.lock(); state.now += duration; diff --git a/crates/scheduler/src/test_scheduler.rs b/crates/scheduler/src/test_scheduler.rs index 243f6f756df15f9b05b87ec70b37c1392f60c57d..d9523640f4c39f6487a0383c3edba461260379af 100644 --- a/crates/scheduler/src/test_scheduler.rs +++ b/crates/scheduler/src/test_scheduler.rs @@ -135,6 +135,12 @@ impl TestScheduler { } } + pub fn run_with_clock_advancement(&self) { + while self.step() || self.advance_clock_to_next_timer() { + // Continue until no work remains + } + } + fn step(&self) -> bool { let elapsed_timers = { let mut state = self.state.lock();