diff --git a/crates/scheduler/src/clock.rs b/crates/scheduler/src/clock.rs index 447d76b584..017643c4eb 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 243f6f756d..d9523640f4 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();