Skip to main content

Conformance

Struct Conformance 

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

Run identical object, range, prefix and immutable-create checks on any provider. The caller supplies the capability at construction, like production composition.

Implementations§

Source§

impl Conformance

Source

pub fn new(storage: Arc<dyn Storage>, store: StoreId) -> Self

The provider under test, with an unused store ID.

Source

pub async fn shared_location(&self, other: StoreId)

Two stores may publish the same device and number in one provider location.

Source

pub async fn run(&self) -> Result<(), StorageError>

Exercise the real provider operations, returning the first violated contract.

Source

pub async fn creation_race( &self, claimants: [Arc<dyn Storage>; 3], ) -> Result<(), StorageError>

Setups of one store race for its first sequence slot (§10.3, D10): of three concurrent creates, one per claimant connection, exactly one wins and keeps its bytes, and the others are refused as occupied. The winner’s connection deletes the slot afterwards.

Source§

impl Conformance

Source

pub async fn listing_times( &self, stored_at: StorageTime, advance: impl Future<Output = ()>, )

Preserve provider publication times and sizes through listings and retries. Advance the fixture clock after publication to distinguish retry timestamps.

Source

pub async fn expired_session( &self, expire: impl Future<Output = ()>, ) -> StorageError

Restart an expired recording at its original destination with no progress. Return the expiry error so native fixtures can also inspect its provider cause.

Source

pub async fn owner_only_sharing(&self)

Non-owner accounts may neither add nor remove another account’s access.

Source

pub async fn lost_part_reply( &self, part_size: usize, lose: impl Future<Output = ()>, )

Restore a persisted recording after the provider accepts a part but loses its reply.

Source

pub async fn permission_failures( &self, deny: impl Future<Output = ()>, ) -> Vec<StorageError>

Every object, upload and sharing operation preserves a permission failure.

Source§

impl Conformance

Source

pub async fn conditional_floor_upload(&self)

Competing recorded floor uploads keep the original absent/revision condition through parts, serialization, resumption and publication.

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.

§

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> IntoEither for T

Source§

fn into_either(self, into_left: bool) -> Either<Self, Self>

Converts self into a Left variant of Either<Self, Self> if into_left is true. Converts self into a Right variant of Either<Self, Self> otherwise. Read more
Source§

fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
where F: FnOnce(&Self) -> bool,

Converts self into a Left variant of Either<Self, Self> if into_left(&self) returns true. Converts self into a Right variant of Either<Self, Self> otherwise. Read more
§

impl<Unshared, Shared> IntoShared<Shared> for Unshared
where Shared: FromUnshared<Unshared>,

§

fn into_shared(self) -> Shared

Creates a shared type from an unshared type.
§

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

§

fn and<P, B, E>(self, other: P) -> And<T, P>
where T: Policy<B, E>, P: Policy<B, E>,

Create a new Policy that returns [Action::Follow] only if self and other return Action::Follow. Read more
§

fn or<P, B, E>(self, other: P) -> Or<T, P>
where T: Policy<B, E>, P: Policy<B, E>,

Create a new Policy that returns [Action::Follow] if either self or other returns Action::Follow. Read more
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.
§

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

§

fn vzip(self) -> V

§

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<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
where ST: ?Sized, DT: ?Sized,

§

impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
where ST: ?Sized, DT: ?Sized,

§

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

§

impl<T> Read<Exclusive, BecauseExclusive> for T
where T: ?Sized,