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: &Leaf<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: &Leaf<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

Object Safety§

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