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
impl FakeProvider
Sourcepub fn new(script: VecDeque<ScriptedOutcome>) -> Self
pub fn new(script: VecDeque<ScriptedOutcome>) -> Self
Creates a fake provider that will serve script from its
execute implementation, front to back.
Sourcepub fn handle(&self) -> FakeHandle
pub fn handle(&self) -> FakeHandle
A programming/inspection handle sharing this provider’s world.
Sourcepub fn lockfile(&self) -> &CapabilityLockfile
pub fn lockfile(&self) -> &CapabilityLockfile
The lockfile this fake attests against (its digest goes into
crate::spi::OpenSessionOptions::lockfile_digest).
Sourcepub fn default_open_options(&self) -> OpenSessionOptions
pub fn default_open_options(&self) -> OpenSessionOptions
Session options that open successfully against this fake.
Trait Implementations§
Source§impl Debug for FakeProvider
impl Debug for FakeProvider
Source§impl Provider for FakeProvider
impl Provider for FakeProvider
Source§fn manifest(&self) -> &ProviderManifest
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,
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§
impl Freeze for FakeProvider
impl RefUnwindSafe for FakeProvider
impl Send for FakeProvider
impl Sync for FakeProvider
impl Unpin for FakeProvider
impl UnsafeUnpin for FakeProvider
impl UnwindSafe for FakeProvider
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more