Skip to main content

TrieTestHarness

Struct TrieTestHarness 

Source
pub struct TrieTestHarness { /* private fields */ }
Available on crate features test-utils only.
Expand description

General-purpose test harness for storage trie tests.

Manages a base storage dataset, computes expected roots via StorageRoot, and generates V2 proofs via StorageProofCalculator using mock cursors.

Implementations§

Source§

impl TrieTestHarness

Source

pub fn new(storage: BTreeMap<B256, U256>) -> Self

Creates a new test harness from a map of hashed storage slots to values.

Source

pub fn get_root_with_updates( &self, changeset: &BTreeMap<B256, U256>, ) -> (B256, StorageTrieUpdates)

Computes the storage root and trie updates after applying the given changeset on top of the current base storage.

Builds a HashedPostStateCursorFactory overlay, derives a prefix set from the changeset keys, and passes both into StorageRoot::new_hashed.

Source

pub fn apply_changeset(&mut self, changeset: BTreeMap<B256, U256>)

Merges changeset into the base storage (zero values remove entries) and rebuilds the harness from scratch with the resulting storage.

Source

pub const fn hashed_address(&self) -> B256

Returns the hashed address used for all storage trie operations.

Source

pub const fn storage(&self) -> &BTreeMap<B256, U256>

Returns a reference to the base storage dataset.

Source

pub const fn original_root(&self) -> B256

Returns the expected storage root.

Source

pub const fn storage_trie_updates(&self) -> &StorageTrieUpdates

Returns a reference to the storage trie updates.

Source

pub fn set_trie_nodes( &mut self, trie_nodes: BTreeMap<Nibbles, BranchNodeCompact>, )

Replaces the trie cursor factory with one backed by the given trie nodes.

Source

pub fn trie_cursor_factory(&self) -> MockTrieCursorFactory

Returns a clone of the mock trie cursor factory.

Source

pub fn hashed_cursor_factory(&self) -> MockHashedCursorFactory

Returns a clone of the mock hashed cursor factory.

Source

pub fn root_node(&self) -> ProofTrieNodeV2

Obtains the root node of the storage trie via StorageProofCalculator.

Source

pub fn proof_v2( &self, targets: &mut [ProofV2Target], ) -> (Vec<ProofTrieNodeV2>, Option<B256>)

Generates storage proofs for the given targets using StorageProofCalculator.

Also computes and returns the root hash (if the proof contains a root node) by reusing the calculator after the proof call.

Source

pub fn minimize_trie_updates(&self, updates: &mut StorageTrieUpdates)

Removes all entries from updates that are redundant with the starting storage trie updates.

A storage node is redundant if it exists in the starting set with the same value. A removed node is redundant if it was already absent from the starting set.

Trait Implementations§

Source§

impl Debug for TrieTestHarness

Source§

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

Formats the value using the given formatter. 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
§

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,

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> 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<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<T> MaybeDebug for T
where T: Debug,

§

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

§

fn type_id(&self) -> TypeId

Returns the lifetime-erased type ID of self.
§

impl<T> Pointable for T

§

const ALIGN: usize

The alignment of pointer.
§

type Init = T

The type for initializers.
§

unsafe fn init(init: <T as Pointable>::Init) -> usize

Initializes a with the given initializer. Read more
§

unsafe fn deref<'a>(ptr: usize) -> &'a T

Dereferences the given pointer. Read more
§

unsafe fn deref_mut<'a>(ptr: usize) -> &'a mut T

Mutably dereferences the given pointer. Read more
§

unsafe fn drop(ptr: usize)

Drops the object pointed to by the given pointer. Read more
§

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

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 = !

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

fn try_from(value: U) -> Result<T, !>

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

Layout§

Note: Most layout information is completely unstable and may even differ between compilations. The only exception is types with certain repr(...) attributes. Please see the Rust Reference's “Type Layout” chapter for details on type layout guarantees.

Size: 200 bytes