Skip to main content

reth_e2e_test_utils/
lib.rs

1#![doc = include_str!("../README.md")]
2
3use node::NodeTestContext;
4use reth_db::{test_utils::TempDatabase, DatabaseEnv};
5use reth_network_api::test_utils::PeersHandleProvider;
6use reth_node_builder::{
7    components::NodeComponentsBuilder,
8    rpc::{EngineValidatorAddOn, RethRpcAddOns},
9    FullNodeTypesAdapter, Node, NodeAdapter, NodeComponents, NodeTypesWithDBAdapter,
10};
11use reth_provider::providers::{BlockchainProvider, NodeTypesForProvider};
12use std::sync::Arc;
13
14/// Wrapper type to create test nodes
15pub mod node;
16pub mod testsuite;
17
18/// Helper for transaction operations
19pub mod transaction;
20
21/// Helper type to yield accounts from mnemonic
22pub mod wallet;
23
24/// Helper for payload operations
25mod payload;
26
27/// Helper for setting up nodes with pre-imported chain data
28#[cfg(feature = "chain-import")]
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
47pub mod engine;
48
49pub mod snap;
50
51mod chain_spec;
52pub use chain_spec::{
53    eth_payload_attributes, test_chain_spec, test_chain_spec_builder, test_genesis,
54};
55
56/// Builder for configuring test node setups
57mod setup_builder;
58pub use setup_builder::{E2ETestSetupBuilder, E2ETestSetupExt, TestNodeBuilder};
59
60// Type aliases
61
62/// Testing database
63pub type TmpDB = Arc<TempDatabase<DatabaseEnv>>;
64type TmpNodeAdapter<N, Provider = BlockchainProvider<NodeTypesWithDBAdapter<N, TmpDB>>> =
65    FullNodeTypesAdapter<N, TmpDB, Provider>;
66
67/// Type alias for a `NodeAdapter`
68pub type Adapter<N, Provider = BlockchainProvider<NodeTypesWithDBAdapter<N, TmpDB>>> = NodeAdapter<
69    TmpNodeAdapter<N, Provider>,
70    <<N as Node<TmpNodeAdapter<N, Provider>>>::ComponentsBuilder as NodeComponentsBuilder<
71        TmpNodeAdapter<N, Provider>,
72    >>::Components,
73>;
74
75/// Type alias for a type of `NodeHelper`
76pub type NodeHelperType<N, Provider = BlockchainProvider<NodeTypesWithDBAdapter<N, TmpDB>>> =
77    NodeTestContext<Adapter<N, Provider>, <N as Node<TmpNodeAdapter<N, Provider>>>::AddOns>;
78
79/// Helper trait to simplify the bounds of nodes launched by [`E2ETestSetupBuilder`].
80pub trait NodeBuilderHelper
81where
82    Self: Default
83        + NodeTypesForProvider
84        + Node<
85            TmpNodeAdapter<Self>,
86            ComponentsBuilder: NodeComponentsBuilder<
87                TmpNodeAdapter<Self>,
88                Components: NodeComponents<TmpNodeAdapter<Self>, Network: PeersHandleProvider>,
89            >,
90            AddOns: RethRpcAddOns<Adapter<Self>> + EngineValidatorAddOn<Adapter<Self>>,
91        >,
92{
93}
94
95impl<T> NodeBuilderHelper for T where
96    Self: Default
97        + NodeTypesForProvider
98        + Node<
99            TmpNodeAdapter<Self>,
100            ComponentsBuilder: NodeComponentsBuilder<
101                TmpNodeAdapter<Self>,
102                Components: NodeComponents<TmpNodeAdapter<Self>, Network: PeersHandleProvider>,
103            >,
104            AddOns: RethRpcAddOns<Adapter<Self>> + EngineValidatorAddOn<Adapter<Self>>,
105        >
106{
107}