Skip to main content

RecordingClock

Struct RecordingClock 

Source
pub struct RecordingClock<S> { /* private fields */ }
Expand description

A clock that keeps every value reported into one watch, for a test that checks steps a host reading the watch could miss. A report reads its clock just before it sends, so what the watch holds at each reading, with what it holds at the end, is every value sent, in order. Time and waits are clock’s.

Implementations§

Source§

impl<S: Clone + PartialEq> RecordingClock<S>

Source

pub fn new(clock: ClockRef) -> Self

Keep time by clock; nothing is recorded until Self::watch.

Source

pub fn watch(&self, watch: Receiver<Option<Progress<S>>>)

Record the values reported into watch, from now on, in place of the watch an earlier part of the operation reported into, whose newest value is recorded first: a join reports the scan that finds its keys through its own owner, then the loading of the store it publishes through the store’s.

Source

pub fn watch_progress(&self, progress: ProgressWatch<S>)

Record the values an owner’s operation reports into progress, from now on.

Source

pub fn on_record(&self, hook: impl Fn(&Progress<S>) + Send + Sync + 'static)

Call hook with each value as it is recorded, on the thread that read the clock: when that is the reporting work’s, the work waits until hook returns.

Source

pub fn seen(&self) -> Vec<Progress<S>>

Every value reported so far, in order.

Trait Implementations§

Source§

impl<S: Clone + PartialEq + Send + Sync> Clock for RecordingClock<S>

Available on crate feature test-utils only.
Source§

fn now(&self) -> SystemTime

The wall clock’s current time.
Source§

fn elapsed(&self) -> Duration

Monotonic time since an arbitrary origin, counting time the system spent asleep (§16.6). Readings never decrease within a process; only differences between two readings of one clock mean anything.
Source§

fn deadline( &self, duration: Duration, ) -> Pin<Box<dyn Future<Output = ()> + Send>>

End once duration of elapsed time has passed: a deadline that work races, such as a sign-in’s wait for its callback or a stalled transfer’s, or an interval, such as the idle time between passes. System clocks use the runtime’s monotonic timer; controlled clocks wake only when their supplied time advances.
Source§

fn wait_out(&self, wait: Duration) -> Pin<Box<dyn Future<Output = ()> + Send>>

Wait out wait before trying again: a backoff, a provider’s cooldown, or the spacing between requests the code chose. It passes as a deadline of the same length does; a test’s clock may move its time to the wait’s end as the code arms it, since no work races it.
Source§

fn sleep_until( &self, at: SystemTime, ) -> Pin<Box<dyn Future<Output = Result<(), WallTimerError>> + Send>>

Wait until the wall clock reads at or later, however it gets there: by running, or by being set past it (§13.2). A time already reached ends the wait at once, and a clock set back moves the wait’s end with it. The clock itself says when it reaches at; nothing reads it again on a timer. A clock that can’t say fails the wait.

Auto Trait Implementations§

§

impl<S> !Freeze for RecordingClock<S>

§

impl<S> !RefUnwindSafe for RecordingClock<S>

§

impl<S> Send for RecordingClock<S>
where S: Send + Sync,

§

impl<S> Sync for RecordingClock<S>
where S: Send + Sync,

§

impl<S> Unpin for RecordingClock<S>
where S: Unpin,

§

impl<S> UnsafeUnpin for RecordingClock<S>

§

impl<S> !UnwindSafe for RecordingClock<S>

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

§

impl<T> Instrument for T

§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided [Span], returning an Instrumented wrapper. Read more
§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
§

impl<T> WithSubscriber for T

§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a [WithDispatch] wrapper. Read more
§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a [WithDispatch] wrapper. Read more
§

impl<T> ErasedDestructor for T
where T: 'static,