Trait TestableNodeImplementation

Source
pub trait TestableNodeImplementation<TYPES>: NodeImplementation<TYPES>
where TYPES: NodeType,
{ // Required methods fn state_create_random_transaction( state: Option<&<TYPES as NodeType>::ValidatedState>, rng: &mut dyn RngCore, padding: u64, ) -> <<TYPES as NodeType>::BlockPayload as BlockPayload<TYPES>>::Transaction; fn leaf_create_random_transaction( leaf: &Leaf2<TYPES>, rng: &mut dyn RngCore, padding: u64, ) -> <<TYPES as NodeType>::BlockPayload as BlockPayload<TYPES>>::Transaction; fn block_genesis() -> <TYPES as NodeType>::BlockPayload; fn txn_count(block: &<TYPES as NodeType>::BlockPayload) -> u64; fn gen_networks( expected_node_count: usize, num_bootstrap: usize, da_committee_size: usize, reliability_config: Option<Box<dyn NetworkReliability>>, secondary_network_delay: Duration, ) -> Pin<Box<dyn Fn(u64) -> Pin<Box<dyn Future<Output = Arc<Self::Network>> + Send>> + Send + Sync>>; }
Expand description

extra functions required on a node implementation to be usable by hotshot-testing

Required Methods§

Source

fn state_create_random_transaction( state: Option<&<TYPES as NodeType>::ValidatedState>, rng: &mut dyn RngCore, padding: u64, ) -> <<TYPES as NodeType>::BlockPayload as BlockPayload<TYPES>>::Transaction

Creates random transaction if possible otherwise panics padding is the bytes of padding to add to the transaction

Source

fn leaf_create_random_transaction( leaf: &Leaf2<TYPES>, rng: &mut dyn RngCore, padding: u64, ) -> <<TYPES as NodeType>::BlockPayload as BlockPayload<TYPES>>::Transaction

Creates random transaction if possible otherwise panics padding is the bytes of padding to add to the transaction

Source

fn block_genesis() -> <TYPES as NodeType>::BlockPayload

generate a genesis block

Source

fn txn_count(block: &<TYPES as NodeType>::BlockPayload) -> u64

the number of transactions in a block

Source

fn gen_networks( expected_node_count: usize, num_bootstrap: usize, da_committee_size: usize, reliability_config: Option<Box<dyn NetworkReliability>>, secondary_network_delay: Duration, ) -> Pin<Box<dyn Fn(u64) -> Pin<Box<dyn Future<Output = Arc<Self::Network>> + Send>> + Send + Sync>>

Generate the communication channels for testing

Dyn Compatibility§

This trait is not dyn compatible.

In older versions of Rust, dyn compatibility was called "object safety", so this trait is not object safe.

Implementors§

Source§

impl<TYPES, I> TestableNodeImplementation<TYPES> for I
where TYPES: NodeType, I: NodeImplementation<TYPES>, <TYPES as NodeType>::ValidatedState: TestableState<TYPES>, <TYPES as NodeType>::BlockPayload: TestableBlock<TYPES>, <I as NodeImplementation<TYPES>>::Network: TestableNetworkingImplementation<TYPES>,