pub struct PausedClock { /* private fields */ }Expand description
Fully-virtual clock for tests.
Stores its own wall-clock cursor and a monotonic counter. Sleeps suspend on
an internal Notify and wake when PausedClock::advance or
PausedClock::set crosses the deadline. No tokio-runtime cooperation is
required: PausedClock works inside current_thread, multi_thread, and
start_paused runtimes equally well.
Pairs with tokio::time::pause() for tests that mix this clock with code
that uses tokio::time::sleep directly (e.g. tokio::time::timeout).
Implementations§
Source§impl PausedClock
impl PausedClock
Sourcepub fn new(origin: OffsetDateTime) -> Arc<Self>
pub fn new(origin: OffsetDateTime) -> Arc<Self>
Build a paused clock pinned at origin.
Sourcepub fn advance(&self, duration: Duration)
pub fn advance(&self, duration: Duration)
Advance wall + monotonic by duration and wake any sleepers whose
deadlines are now in the past.
Sourcepub fn advance_time(&self, duration: Duration)
pub fn advance_time(&self, duration: Duration)
Advance using a time::Duration. Negative durations are clamped to zero.
Sourcepub fn advance_ticks(&self, ticks: u32, tick: Duration)
pub fn advance_ticks(&self, ticks: u32, tick: Duration)
Step ticks times by tick, notifying sleepers between every step so
tasks observing intermediate wake-ups see each notification.
Sourcepub fn set(&self, wall: OffsetDateTime)
pub fn set(&self, wall: OffsetDateTime)
Pin the wall clock to wall. Monotonic counter advances by the
(signed) delta, never moving backwards.
Trait Implementations§
Source§impl Clock for PausedClock
impl Clock for PausedClock
Source§fn now_utc(&self) -> OffsetDateTime
fn now_utc(&self) -> OffsetDateTime
Source§fn monotonic_ms(&self) -> i64
fn monotonic_ms(&self) -> i64
Source§fn sleep<'life0, 'async_trait>(
&'life0 self,
duration: Duration,
) -> Pin<Box<dyn Future<Output = ()> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
fn sleep<'life0, 'async_trait>(
&'life0 self,
duration: Duration,
) -> Pin<Box<dyn Future<Output = ()> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
duration. No-op when duration is zero.Source§fn sleep_until_utc<'life0, 'async_trait>(
&'life0 self,
deadline: OffsetDateTime,
) -> Pin<Box<dyn Future<Output = ()> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
fn sleep_until_utc<'life0, 'async_trait>(
&'life0 self,
deadline: OffsetDateTime,
) -> Pin<Box<dyn Future<Output = ()> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
deadline. No-op if deadline is in
the past.