Skip to main content

reth_e2e_test_utils/
lib.rs

1//! Utilities for end-to-end tests.
2
3use alloy_rpc_types_engine::PayloadAttributes;
4use node::NodeTestContext;
5use reth_db::{test_utils::TempDatabase, DatabaseEnv};
6use reth_network_api::test_utils::PeersHandleProvider;
7use reth_node_builder::{
8    components::NodeComponentsBuilder,
9    rpc::{EngineValidatorAddOn, RethRpcAddOns},
10    FullNodeTypesAdapter, Node, NodeAdapter, NodeComponents, NodeTypesWithDBAdapter, PayloadTypes,
11};
12use reth_provider::providers::{BlockchainProvider, NodeTypesForProvider};
13use std::sync::Arc;
14
15/// Wrapper type to create test nodes
16pub mod node;
17pub mod testsuite;
18
19/// Helper for transaction operations
20pub mod transaction;
21
22/// Helper type to yield accounts from mnemonic
23pub mod wallet;
24
25/// Helper for payload operations
26mod payload;
27
28/// Helper for setting up nodes with pre-imported chain data
29pub mod setup_import;
30
31/// Helper for network operations
32mod network;
33
34/// Helper for rpc operations
35mod rpc;
36
37/// Utilities for creating and writing RLP test data
38pub mod test_rlp_utils;
39
40/// Helpers for verifying the persisted state and trie representation
41pub mod trie;
42
43pub mod receipt;
44
45pub mod wait;
46
47mod chain_spec;
48pub use chain_spec::{
49    eth_payload_attributes, test_chain_spec, test_chain_spec_builder, test_genesis,
50};
51
52/// Builder for configuring test node setups
53mod setup_builder;
54pub use setup_builder::{E2ETestSetupBuilder, E2ETestSetupExt};
55
56// Type aliases
57
58/// Testing database
59pub type TmpDB = Arc<TempDatabase<DatabaseEnv>>;
60type TmpNodeAdapter<N, Provider = BlockchainProvider<NodeTypesWithDBAdapter<N, TmpDB>>> =
61    FullNodeTypesAdapter<N, TmpDB, Provider>;
62
63/// Type alias for a `NodeAdapter`
64pub type Adapter<N, Provider = BlockchainProvider<NodeTypesWithDBAdapter<N, TmpDB>>> = NodeAdapter<
65    TmpNodeAdapter<N, Provider>,
66    <<N as Node<TmpNodeAdapter<N, Provider>>>::ComponentsBuilder as NodeComponentsBuilder<
67        TmpNodeAdapter<N, Provider>,
68    >>::Components,
69>;
70
71/// Type alias for a type of `NodeHelper`
72pub type NodeHelperType<N, Provider = BlockchainProvider<NodeTypesWithDBAdapter<N, TmpDB>>> =
73    NodeTestContext<Adapter<N, Provider>, <N as Node<TmpNodeAdapter<N, Provider>>>::AddOns>;
74
75/// Helper trait to simplify the bounds of nodes launched by [`E2ETestSetupBuilder`].
76pub trait NodeBuilderHelper
77where
78    Self: Default
79        + NodeTypesForProvider<Payload: PayloadTypes<PayloadAttributes: From<PayloadAttributes>>>
80        + Node<
81            TmpNodeAdapter<Self>,
82            ComponentsBuilder: NodeComponentsBuilder<
83                TmpNodeAdapter<Self>,
84                Components: NodeComponents<TmpNodeAdapter<Self>, Network: PeersHandleProvider>,
85            >,
86            AddOns: RethRpcAddOns<Adapter<Self>> + EngineValidatorAddOn<Adapter<Self>>,
87        >,
88{
89}
90
91impl<T> NodeBuilderHelper for T where
92    Self: Default
93        + NodeTypesForProvider<Payload: PayloadTypes<PayloadAttributes: From<PayloadAttributes>>>
94        + Node<
95            TmpNodeAdapter<Self>,
96            ComponentsBuilder: NodeComponentsBuilder<
97                TmpNodeAdapter<Self>,
98                Components: NodeComponents<TmpNodeAdapter<Self>, Network: PeersHandleProvider>,
99            >,
100            AddOns: RethRpcAddOns<Adapter<Self>> + EngineValidatorAddOn<Adapter<Self>>,
101        >
102{
103}