TestLoopV2

Struct TestLoopV2 

Source
pub struct TestLoopV2 {
    pub data: TestLoopData,
    /* private fields */
}
Expand description

Main struct for the Test Loop framework. The TestLoopData should contain all the business logic state that is relevant to the test. All possible Event that are sent to the event loop are callbacks. See TestLoopData for mode details.

Events are sent to the testloop, with a possible delay, via the pending_events_sender.

Fields§

§data: TestLoopData

The data that is stored and accessed by the test loop.

Implementations§

Source§

impl TestLoopV2

Source

pub fn new() -> Self

Source

pub fn future_spawner(&self, identifier: &str) -> TestLoopFutureSpawner

Returns a FutureSpawner that can be used to spawn futures into the loop.

Source

pub fn async_computation_spawner( &self, identifier: &str, artificial_delay: impl Fn(&str) -> Duration + Send + Sync + 'static, ) -> TestLoopAsyncComputationSpawner

Returns an AsyncComputationSpawner that can be used to spawn async computation into the loop. The artificial_delay allows the test to determine an artificial delay that the computation should take, based on the name of the computation.

Source

pub fn send_adhoc_event( &self, description: String, callback: impl FnOnce(&mut TestLoopData) + Send + 'static, )

Sends any ad-hoc event to the loop.

Source

pub fn send_adhoc_event_with_delay( &self, description: String, delay: Duration, callback: impl FnOnce(&mut TestLoopData) + Send + 'static, )

Sends any ad-hoc event to the loop, after some delay.

Source

pub fn remove_events_with_identifier(&mut self, identifier: &str)

This function is used to filter out all events that belong to a certain identifier. The use case is while shutting down a node, we would like to not execute any more events from that node.

Source

pub fn clock(&self) -> Clock

Returns a clock that will always return the current virtual time.

Source

pub fn set_every_event_callback( &mut self, callback: impl FnMut(&TestLoopData) + 'static, )

Source

pub fn run_for(&mut self, duration: Duration)

Runs the test loop for the given duration. This function may be called multiple times, but further test handlers may not be registered after the first call.

Source

pub fn run_until( &mut self, condition: impl FnMut(&mut TestLoopData) -> bool, maximum_duration: Duration, )

Run until the given condition is true, asserting that it happens before the maximum duration is reached.

To maximize logical consistency, the condition is only checked before the clock would advance. If it returns true, execution stops before advancing the clock.

Source

pub fn shutdown_and_drain_remaining_events(self, maximum_duration: Duration)

Source

pub fn run_instant(&mut self)

Trait Implementations§

Source§

impl Drop for TestLoopV2

Source§

fn drop(&mut self)

Executes the destructor for this type. Read more

Auto Trait Implementations§

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.

Source§

impl<T> FutureExt for T

Source§

fn with_context(self, otel_cx: Context) -> WithContext<Self>

Attaches the provided Context to this type, returning a WithContext wrapper. Read more
Source§

fn with_current_context(self) -> WithContext<Self>

Attaches the current Context to this type, returning a WithContext wrapper. Read more
Source§

impl<T> Instrument for T

Source§

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

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

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<A, B> IntoMultiSender<B> for A
where B: MultiSenderFrom<A>,

Source§

fn as_multi_sender(self: &Arc<A>) -> B

Source§

fn into_multi_sender(self) -> B

Source§

impl<T> IntoRequest<T> for T

Source§

fn into_request(self) -> Request<T>

Wrap the input message T in a tonic::Request
Source§

impl<T> Same for T

Source§

type Output = T

Should always be Self
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.
Source§

impl<V, T> VZip<V> for T
where V: MultiLane<T>,

Source§

fn vzip(self) -> V

Source§

impl<T> WithSubscriber for T

Source§

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
Source§

fn with_current_subscriber(self) -> WithDispatch<Self>

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