Skip to main content

FakeProvider

Struct FakeProvider 

Source
pub struct FakeProvider { /* private fields */ }
Expand description

Deterministic, programmable SPI reference implementation (04 §8).

Construction injects the execute script; all other behavior is programmable through FakeProvider::handle. Sessions share the provider’s world, so a journal written through one session generation stays readable by reconcile from a later one (resume tests).

Implementations§

Source§

impl FakeProvider

Source

pub fn new(script: VecDeque<ScriptedOutcome>) -> Self

Creates a fake provider that will serve script from its execute implementation, front to back.

Source

pub fn handle(&self) -> FakeHandle

A programming/inspection handle sharing this provider’s world.

Source

pub fn lockfile(&self) -> &CapabilityLockfile

The lockfile this fake attests against (its digest goes into crate::spi::OpenSessionOptions::lockfile_digest).

Source

pub fn default_open_options(&self) -> OpenSessionOptions

Session options that open successfully against this fake.

Trait Implementations§

Source§

impl Debug for FakeProvider

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl Provider for FakeProvider

Source§

fn manifest(&self) -> &ProviderManifest

The package-shipped static capability declaration.
Source§

fn open_session<'life0, 'async_trait>( &'life0 self, opts: OpenSessionOptions, ) -> Pin<Box<dyn Future<Output = Result<Box<dyn ProviderSession>, ProviderError>> + Send + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait,

Opens a session. Atomic (04 §2.1): returning means the connection is up, the protocol is negotiated with all requiredFeatures satisfied, the device is selected and connected, the substrate session is started, and attestation matched lockfileDigest. On any failure the provider cleans up partial resources and fails — never a half-open session. Failure classes: negotiation/capability mismatch → capability_drift; device unavailable → action_failed_retryable; connection failure → transport_lost.

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, 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> 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.