Type Alias NodeHelperType

Source
pub type NodeHelperType<N, Provider = BlockchainProvider<NodeTypesWithDBAdapter<N, TmpDB>>> = NodeTestContext<Adapter<N, Provider>, <N as Node<FullNodeTypesAdapter<N, TmpDB, Provider>>>::AddOns>;
Expand description

Type alias for a type of NodeHelper

Aliased Type§

struct NodeHelperType<N, Provider = BlockchainProvider<NodeTypesWithDBAdapter<N, TmpDB>>> {
    pub inner: FullNode<NodeAdapter<FullNodeTypesAdapter<N, Arc<TempDatabase<DatabaseEnv>>, Provider>, <<N as Node<FullNodeTypesAdapter<N, Arc<TempDatabase<DatabaseEnv>>, Provider>>>::ComponentsBuilder as NodeComponentsBuilder<FullNodeTypesAdapter<N, Arc<TempDatabase<DatabaseEnv>>, Provider>>>::Components>, <N as Node<FullNodeTypesAdapter<N, Arc<TempDatabase<DatabaseEnv>>, Provider>>>::AddOns>,
    pub payload: PayloadTestContext<<<NodeAdapter<FullNodeTypesAdapter<N, Arc<TempDatabase<DatabaseEnv>>, Provider>, <<N as Node<FullNodeTypesAdapter<N, Arc<TempDatabase<DatabaseEnv>>, Provider>>>::ComponentsBuilder as NodeComponentsBuilder<FullNodeTypesAdapter<N, Arc<TempDatabase<DatabaseEnv>>, Provider>>>::Components> as FullNodeTypes>::Types as NodeTypesWithEngine>::Engine>,
    pub network: NetworkTestContext<<NodeAdapter<FullNodeTypesAdapter<N, Arc<TempDatabase<DatabaseEnv>>, Provider>, <<N as Node<FullNodeTypesAdapter<N, Arc<TempDatabase<DatabaseEnv>>, Provider>>>::ComponentsBuilder as NodeComponentsBuilder<FullNodeTypesAdapter<N, Arc<TempDatabase<DatabaseEnv>>, Provider>>>::Components> as FullNodeComponents>::Network>,
    pub rpc: RpcTestContext<NodeAdapter<FullNodeTypesAdapter<N, Arc<TempDatabase<DatabaseEnv>>, Provider>, <<N as Node<FullNodeTypesAdapter<N, Arc<TempDatabase<DatabaseEnv>>, Provider>>>::ComponentsBuilder as NodeComponentsBuilder<FullNodeTypesAdapter<N, Arc<TempDatabase<DatabaseEnv>>, Provider>>>::Components>, <<N as Node<FullNodeTypesAdapter<N, Arc<TempDatabase<DatabaseEnv>>, Provider>>>::AddOns as RethRpcAddOns<NodeAdapter<FullNodeTypesAdapter<N, Arc<TempDatabase<DatabaseEnv>>, Provider>, <<N as Node<FullNodeTypesAdapter<N, Arc<TempDatabase<DatabaseEnv>>, Provider>>>::ComponentsBuilder as NodeComponentsBuilder<FullNodeTypesAdapter<N, Arc<TempDatabase<DatabaseEnv>>, Provider>>>::Components>>>::EthApi>,
    pub canonical_stream: CanonStateNotificationStream<<<NodeAdapter<FullNodeTypesAdapter<N, Arc<TempDatabase<DatabaseEnv>>, Provider>, <<N as Node<FullNodeTypesAdapter<N, Arc<TempDatabase<DatabaseEnv>>, Provider>>>::ComponentsBuilder as NodeComponentsBuilder<FullNodeTypesAdapter<N, Arc<TempDatabase<DatabaseEnv>>, Provider>>>::Components> as FullNodeTypes>::Types as NodeTypes>::Primitives>,
}

Fields§

§inner: FullNode<NodeAdapter<FullNodeTypesAdapter<N, Arc<TempDatabase<DatabaseEnv>>, Provider>, <<N as Node<FullNodeTypesAdapter<N, Arc<TempDatabase<DatabaseEnv>>, Provider>>>::ComponentsBuilder as NodeComponentsBuilder<FullNodeTypesAdapter<N, Arc<TempDatabase<DatabaseEnv>>, Provider>>>::Components>, <N as Node<FullNodeTypesAdapter<N, Arc<TempDatabase<DatabaseEnv>>, Provider>>>::AddOns>

The core structure representing the full node.

§payload: PayloadTestContext<<<NodeAdapter<FullNodeTypesAdapter<N, Arc<TempDatabase<DatabaseEnv>>, Provider>, <<N as Node<FullNodeTypesAdapter<N, Arc<TempDatabase<DatabaseEnv>>, Provider>>>::ComponentsBuilder as NodeComponentsBuilder<FullNodeTypesAdapter<N, Arc<TempDatabase<DatabaseEnv>>, Provider>>>::Components> as FullNodeTypes>::Types as NodeTypesWithEngine>::Engine>

Context for testing payload-related features.

§network: NetworkTestContext<<NodeAdapter<FullNodeTypesAdapter<N, Arc<TempDatabase<DatabaseEnv>>, Provider>, <<N as Node<FullNodeTypesAdapter<N, Arc<TempDatabase<DatabaseEnv>>, Provider>>>::ComponentsBuilder as NodeComponentsBuilder<FullNodeTypesAdapter<N, Arc<TempDatabase<DatabaseEnv>>, Provider>>>::Components> as FullNodeComponents>::Network>

Context for testing network functionalities.

§rpc: RpcTestContext<NodeAdapter<FullNodeTypesAdapter<N, Arc<TempDatabase<DatabaseEnv>>, Provider>, <<N as Node<FullNodeTypesAdapter<N, Arc<TempDatabase<DatabaseEnv>>, Provider>>>::ComponentsBuilder as NodeComponentsBuilder<FullNodeTypesAdapter<N, Arc<TempDatabase<DatabaseEnv>>, Provider>>>::Components>, <<N as Node<FullNodeTypesAdapter<N, Arc<TempDatabase<DatabaseEnv>>, Provider>>>::AddOns as RethRpcAddOns<NodeAdapter<FullNodeTypesAdapter<N, Arc<TempDatabase<DatabaseEnv>>, Provider>, <<N as Node<FullNodeTypesAdapter<N, Arc<TempDatabase<DatabaseEnv>>, Provider>>>::ComponentsBuilder as NodeComponentsBuilder<FullNodeTypesAdapter<N, Arc<TempDatabase<DatabaseEnv>>, Provider>>>::Components>>>::EthApi>

Context for testing RPC features.

§canonical_stream: CanonStateNotificationStream<<<NodeAdapter<FullNodeTypesAdapter<N, Arc<TempDatabase<DatabaseEnv>>, Provider>, <<N as Node<FullNodeTypesAdapter<N, Arc<TempDatabase<DatabaseEnv>>, Provider>>>::ComponentsBuilder as NodeComponentsBuilder<FullNodeTypesAdapter<N, Arc<TempDatabase<DatabaseEnv>>, Provider>>>::Components> as FullNodeTypes>::Types as NodeTypes>::Primitives>

Canonical state events.

Layout§

Note: Encountered an error during type layout; the type failed to be normalized.

Implementations

Source§

impl<Node, Engine, AddOns> NodeTestContext<Node, AddOns>
where Engine: EngineTypes, Node: FullNodeComponents, Node::Types: NodeTypesWithEngine<ChainSpec: EthereumHardforks, Engine = Engine>, Node::Network: PeersHandleProvider, AddOns: RethRpcAddOns<Node>,

Source

pub async fn new( node: FullNode<Node, AddOns>, attributes_generator: impl Fn(u64) -> Engine::PayloadBuilderAttributes + Send + Sync + 'static, ) -> Result<Self>

Creates a new test node

Source

pub async fn connect(&mut self, node: &mut Self)

Establish a connection to the node

Source

pub async fn advance( &mut self, length: u64, tx_generator: impl Fn(u64) -> Pin<Box<dyn Future<Output = Bytes>>>, ) -> Result<Vec<Engine::BuiltPayload>>
where AddOns::EthApi: EthApiSpec<Provider: BlockReader<Block = BlockTy<Node::Types>>> + EthTransactions + TraceExt,

Advances the chain length blocks.

Returns the added chain as a Vec of block hashes.

Source

pub async fn new_payload(&mut self) -> Result<Engine::BuiltPayload>

Creates a new payload from given attributes generator expects a payload attribute event and waits until the payload is built.

It triggers the resolve payload via engine api and expects the built payload event.

Source

pub async fn build_and_submit_payload(&mut self) -> Result<Engine::BuiltPayload>

Triggers payload building job and submits it to the engine.

Source

pub async fn advance_block(&mut self) -> Result<Engine::BuiltPayload>

Advances the node forward one block

Source

pub async fn wait_block( &self, number: BlockNumber, expected_block_hash: BlockHash, wait_finish_checkpoint: bool, ) -> Result<()>

Waits for block to be available on node.

Source

pub async fn wait_unwind(&self, number: BlockNumber) -> Result<()>

Waits for the node to unwind to the given block number

Source

pub async fn assert_new_block( &mut self, tip_tx_hash: B256, block_hash: B256, block_number: BlockNumber, ) -> Result<()>

Asserts that a new block has been added to the blockchain and the tx has been included in the block.

Does NOT work for pipeline since there’s no stream notification!

Source

pub fn block_hash(&self, number: u64) -> BlockHash

Gets block hash by number.

Source

pub async fn sync_to(&self, block: BlockHash) -> Result<()>

Sends FCU and waits for the node to sync to the given block.

Source

pub async fn update_forkchoice( &self, current_head: B256, new_head: B256, ) -> Result<()>

Sends a forkchoice update message to the engine.

Source

pub async fn update_optimistic_forkchoice(&self, hash: B256) -> Result<()>

Sends forkchoice update to the engine api with a zero finalized hash

Source

pub async fn submit_payload( &self, payload: Engine::BuiltPayload, ) -> Result<B256>

Submits a payload to the engine.

Source

pub fn rpc_url(&self) -> Url

Returns the RPC URL.

Source

pub fn rpc_client(&self) -> Option<HttpClient>

Returns an RPC client.

Source

pub fn engine_api_client(&self) -> HttpClient<AuthClientService<HttpBackend>>

Returns an Engine API client.