Skip to content

Commit ee4128f

Browse files
committed
fix: conflict
1 parent 87f519b commit ee4128f

7 files changed

Lines changed: 87 additions & 138 deletions

File tree

crates/node/src/args.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1075,7 +1075,7 @@ mod tests {
10751075
#[test]
10761076
fn test_validate_remote_source_enabled_without_url_fails() {
10771077
let config = ScrollRollupNodeConfig {
1078-
test: false,
1078+
test_args: TestArgs::default(),
10791079
sequencer_args: SequencerArgs::default(),
10801080
signer_args: SignerArgs::default(),
10811081
database_args: RollupNodeDatabaseArgs::default(),

crates/node/src/test_utils/fixture.rs

Lines changed: 39 additions & 44 deletions
Original file line numberDiff line numberDiff line change
@@ -4,10 +4,10 @@ use super::{
44
block_builder::BlockBuilder, l1_helpers::L1Helper, setup_engine, tx_helpers::TxHelper,
55
};
66
use crate::{
7-
BlobProviderArgs, ChainOrchestratorArgs, ConsensusAlgorithm, ConsensusArgs, EngineDriverArgs,
8-
L1ProviderArgs, PprofArgs, RollupNodeDatabaseArgs, RollupNodeGasPriceOracleArgs,
9-
RollupNodeNetworkArgs, RpcArgs, ScrollRollupNode, ScrollRollupNodeConfig, SequencerArgs,
10-
SignerArgs,
7+
constants, BlobProviderArgs, ChainOrchestratorArgs, ConsensusAlgorithm, ConsensusArgs,
8+
EngineDriverArgs, L1ProviderArgs, PprofArgs, RollupNodeDatabaseArgs,
9+
RollupNodeGasPriceOracleArgs, RollupNodeNetworkArgs, RpcArgs, ScrollRollupNode,
10+
ScrollRollupNodeConfig, SequencerArgs, SignerArgs, TestArgs,
1111
};
1212

1313
use alloy_eips::BlockNumberOrTag;
@@ -31,8 +31,10 @@ use reth_scroll_primitives::ScrollPrimitives;
3131
use reth_tasks::TaskManager;
3232
use reth_tokio_util::EventStream;
3333
use rollup_node_chain_orchestrator::{ChainOrchestratorEvent, ChainOrchestratorHandle};
34+
use rollup_node_primitives::BlockInfo;
3435
use rollup_node_sequencer::L1MessageInclusionMode;
3536
use scroll_alloy_consensus::ScrollPooledTransaction;
37+
use scroll_alloy_provider::{ScrollAuthApiEngineClient, ScrollEngineApi};
3638
use scroll_alloy_rpc_types::Transaction;
3739
use scroll_engine::{Engine, ForkchoiceState};
3840
use std::{
@@ -166,6 +168,27 @@ pub struct NodeHandle {
166168
}
167169

168170
impl NodeHandle {
171+
/// Create a new node handle.
172+
pub async fn new(node: ScrollNodeTestComponents, typ: NodeType) -> eyre::Result<Self> {
173+
// Create engine for the node
174+
let genesis_hash = node.inner.chain_spec().genesis_hash();
175+
let auth_client = node.inner.engine_http_client();
176+
let engine_client = Arc::new(ScrollAuthApiEngineClient::new(auth_client))
177+
as Arc<dyn ScrollEngineApi + Send + Sync + 'static>;
178+
let fcs = ForkchoiceState::new(
179+
BlockInfo { hash: genesis_hash, number: 0 },
180+
Default::default(),
181+
Default::default(),
182+
);
183+
let engine = Engine::new(Arc::new(engine_client), fcs);
184+
185+
let rollup_manager_handle = node.inner.add_ons_handle.rollup_manager_handle.clone();
186+
let chain_orchestrator_rx =
187+
node.inner.add_ons_handle.rollup_manager_handle.get_event_listener().await?;
188+
189+
Ok(Self { node, engine, chain_orchestrator_rx, rollup_manager_handle, typ })
190+
}
191+
169192
/// Returns true if this is a handle to the sequencer.
170193
pub const fn is_sequencer(&self) -> bool {
171194
matches!(self.typ, NodeType::Sequencer)
@@ -671,14 +694,13 @@ impl TestFixtureBuilder {
671694
None
672695
};
673696

674-
let (mut nodes, mut dbs, task, wallet) = setup_engine(
697+
let (mut nodes, dbs, wallet) = setup_engine(
675698
self.config.clone(),
676699
self.num_nodes,
677700
chain_spec.clone(),
678701
self.is_dev,
679702
self.no_local_transactions_propagation,
680703
None,
681-
None,
682704
)
683705
.await?;
684706

@@ -689,68 +711,41 @@ impl TestFixtureBuilder {
689711
format!("http://localhost:{}", nodes[0].rpc_url().port().unwrap()).parse()?;
690712

691713
// Configure remote source node
692-
let mut remote_config = config.clone();
714+
let mut remote_config = self.config.clone();
693715
remote_config.sequencer_args.sequencer_enabled = true; // needs to build blocks
694716
remote_config.sequencer_args.auto_start = false;
695717
remote_config.remote_block_source_args.enabled = true;
696718
remote_config.remote_block_source_args.url = Some(sequencer_url);
697719
// Use a fast poll interval for tests
698720
remote_config.remote_block_source_args.poll_interval_ms = 100;
699721

700-
let (mut remote_nodes, _, new_task, _) = setup_engine(
722+
let (mut remote_nodes, _, _) = setup_engine(
701723
remote_config,
702724
1,
703725
chain_spec.clone(),
704726
self.is_dev,
705727
self.no_local_transactions_propagation,
706728
None,
707-
Some(tasks),
708729
)
709730
.await?;
710-
let tasks = new_task;
711731

712732
nodes.push(remote_nodes.pop().unwrap());
713733
}
714734

715735
let mut node_handles = Vec::with_capacity(nodes.len());
716736
for (index, node) in nodes.into_iter().enumerate() {
717-
let genesis_hash = node.inner.chain_spec().genesis_hash();
718-
719-
// Create engine for the node
720-
let auth_client = node.inner.engine_http_client();
721-
let engine_client = Arc::new(ScrollAuthApiEngineClient::new(auth_client))
722-
as Arc<dyn ScrollEngineApi + Send + Sync + 'static>;
723-
let fcs = ForkchoiceState::new(
724-
BlockInfo { hash: genesis_hash, number: 0 },
725-
Default::default(),
726-
Default::default(),
727-
);
728-
let engine = Engine::new(Arc::new(engine_client), fcs);
729-
730-
// Get handles if available
731-
let rollup_manager_handle = node.inner.add_ons_handle.rollup_manager_handle.clone();
732-
let chain_orchestrator_rx =
733-
node.inner.add_ons_handle.rollup_manager_handle.get_event_listener().await?;
734-
735-
node_handles.push(NodeHandle {
736-
node,
737-
engine,
738-
chain_orchestrator_rx,
739-
rollup_manager_handle,
740-
typ: if config.sequencer_args.sequencer_enabled && index == 0 {
741-
NodeType::Sequencer
742-
} else if config.remote_block_source_args.enabled && index == node_handles.len() {
743-
NodeType::RemoteSource
744-
} else {
745-
NodeType::Follower
746-
},
747-
});
748-
749-
nodes.push(Some(handle));
737+
let typ = if self.config.sequencer_args.sequencer_enabled && index == 0 {
738+
NodeType::Sequencer
739+
} else if self.config.remote_block_source_args.enabled && index == node_handles.len() {
740+
NodeType::RemoteSource
741+
} else {
742+
NodeType::Follower
743+
};
744+
node_handles.push(Some(NodeHandle::new(node, typ).await?));
750745
}
751746

752747
Ok(TestFixture {
753-
nodes,
748+
nodes: node_handles,
754749
dbs,
755750
wallet: Arc::new(Mutex::new(wallet)),
756751
chain_spec,

crates/node/src/test_utils/mod.rs

Lines changed: 5 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -79,9 +79,10 @@ pub use network_helpers::{
7979

8080
// Legacy utilities - keep existing functions for backward compatibility
8181
use crate::{
82-
BlobProviderArgs, ChainOrchestratorArgs, ConsensusArgs, EngineDriverArgs, L1ProviderArgs,
83-
PprofArgs, RollupNodeDatabaseArgs, RollupNodeNetworkArgs, RpcArgs, ScrollRollupNode,
84-
ScrollRollupNodeConfig, SequencerArgs,
82+
test_utils::fixture::ScrollNodeTestComponents, BlobProviderArgs, ChainOrchestratorArgs,
83+
ConsensusArgs, EngineDriverArgs, L1ProviderArgs, PprofArgs, RollupNodeDatabaseArgs,
84+
RollupNodeNetworkArgs, RpcArgs, ScrollRollupNode, ScrollRollupNodeConfig, SequencerArgs,
85+
TestArgs,
8586
};
8687
use alloy_primitives::Bytes;
8788
use reth_chainspec::EthChainSpec;
@@ -115,11 +116,9 @@ pub async fn setup_engine(
115116
is_dev: bool,
116117
no_local_transactions_propagation: bool,
117118
reboot_info: Option<(usize, Arc<reth_db::test_utils::TempDatabase<reth_db::DatabaseEnv>>)>,
118-
task_executor: Option<reth_tasks::TaskManager>,
119119
) -> eyre::Result<(
120120
Vec<ScrollNodeTestComponents>,
121121
Vec<Arc<reth_db::test_utils::TempDatabase<reth_db::DatabaseEnv>>>,
122-
TaskManager,
123122
Wallet,
124123
)>
125124
where
@@ -130,9 +129,6 @@ where
130129
TmpNodeAddOnsHandle<ScrollRollupNode>:
131130
RpcHandleProvider<Adapter<ScrollRollupNode>, TmpNodeEthApi<ScrollRollupNode>>,
132131
{
133-
let tasks = task_executor.unwrap_or_else(TaskManager::current);
134-
let exec = tasks.executor();
135-
136132
let network_config = NetworkArgs {
137133
discovery: DiscoveryArgs { disable_discovery: true, ..DiscoveryArgs::default() },
138134
..NetworkArgs::default()
@@ -248,7 +244,7 @@ where
248244
nodes.push(node);
249245
}
250246

251-
Ok((nodes, dbs, exec, Wallet::default().with_chain_id(chain_spec.chain().into())))
247+
Ok((nodes, dbs, Wallet::default().with_chain_id(chain_spec.chain().into())))
252248
}
253249

254250
/// Generate a transfer transaction with the given wallet.

crates/node/src/test_utils/reboot.rs

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@ impl TestFixture {
3232
tracing::info!("Shutting down node at index {}", node_index);
3333
let NodeHandle {
3434
node,
35-
engine,
35+
engine: _,
3636
mut chain_orchestrator_rx,
3737
rollup_manager_handle: _r_h,
3838
typ: _,
@@ -94,14 +94,13 @@ impl TestFixture {
9494
tracing::info!("Starting node at index {} (reusing database)", node_index);
9595

9696
// Create node instance with existing database
97-
let (mut new_nodes, _, _, _) = setup_engine(
97+
let (mut new_nodes, _, _) = setup_engine(
9898
self.config.clone(),
9999
1,
100100
self.chain_spec.clone(),
101101
true,
102102
false,
103103
Some((node_index, self.dbs[node_index].clone())),
104-
None,
105104
)
106105
.await?;
107106

crates/node/tests/e2e.rs

Lines changed: 8 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -390,15 +390,15 @@ async fn can_forward_tx_to_sequencer() -> eyre::Result<()> {
390390

391391
// Create the chain spec for scroll mainnet with Euclid v2 activated and a test genesis.
392392
let chain_spec = (*SCROLL_DEV).clone();
393-
let (mut sequencer_node, _dbs, _tasks, _) =
394-
setup_engine(sequencer_node_config, 1, chain_spec.clone(), false, true, None, None)
393+
let (mut sequencer_node, _dbs, _) =
394+
setup_engine(sequencer_node_config, 1, chain_spec.clone(), false, true, None)
395395
.await
396396
.unwrap();
397397

398398
let sequencer_url = format!("http://localhost:{}", sequencer_node[0].rpc_url().port().unwrap());
399399
follower_node_config.network_args.sequencer_url = Some(sequencer_url);
400-
let (mut follower_node, _tasks, wallet) =
401-
setup_engine(follower_node_config, 1, chain_spec, false, true, None, None).await.unwrap();
400+
let (mut follower_node, _dbs, wallet) =
401+
setup_engine(follower_node_config, 1, chain_spec, false, true, None).await.unwrap();
402402

403403
let wallet = Arc::new(Mutex::new(wallet));
404404

@@ -560,14 +560,13 @@ async fn can_bridge_blocks() -> eyre::Result<()> {
560560
let chain_spec = (*SCROLL_DEV).clone();
561561

562562
// Setup the bridge node and a standard node.
563-
let (mut nodes, _dbs, tasks, _) = setup_engine(
563+
let (mut nodes, _dbs, _) = setup_engine(
564564
default_test_scroll_rollup_node_config(),
565565
1,
566566
chain_spec.clone(),
567567
false,
568568
false,
569569
None,
570-
None,
571570
)
572571
.await?;
573572
let mut bridge_node = nodes.pop().unwrap();
@@ -668,14 +667,13 @@ async fn shutdown_consolidates_most_recent_batch_on_startup() -> eyre::Result<()
668667
let chain_spec = (*SCROLL_MAINNET).clone();
669668

670669
// Launch a node
671-
let (mut nodes, _dbs, _tasks, _) = setup_engine(
670+
let (mut nodes, _dbs, _) = setup_engine(
672671
default_test_scroll_rollup_node_config(),
673672
1,
674673
chain_spec.clone(),
675674
false,
676675
false,
677676
None,
678-
None,
679677
)
680678
.await?;
681679
let node = nodes.pop().unwrap();
@@ -955,8 +953,8 @@ async fn graceful_shutdown_sets_fcs_to_latest_signed_block_in_db_on_start_up() -
955953
config.signer_args.private_key = Some(PrivateKeySigner::random());
956954

957955
// Launch a node
958-
let (mut nodes, _dbs, _tasks, _) =
959-
setup_engine(config.clone(), 1, chain_spec.clone(), false, false, None, None).await?;
956+
let (mut nodes, _dbs, _) =
957+
setup_engine(config.clone(), 1, chain_spec.clone(), false, false, None).await?;
960958
let node = nodes.pop().unwrap();
961959

962960
// Instantiate the rollup node manager.

crates/node/tests/sync.rs

Lines changed: 9 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ use rollup_node::{
1414
},
1515
BlobProviderArgs, ChainOrchestratorArgs, ConsensusArgs, EngineDriverArgs, L1ProviderArgs,
1616
PprofArgs, RollupNodeDatabaseArgs, RollupNodeGasPriceOracleArgs, RollupNodeNetworkArgs,
17-
RpcArgs, ScrollRollupNodeConfig, SequencerArgs,
17+
RpcArgs, ScrollRollupNodeConfig, SequencerArgs, TestArgs,
1818
};
1919
use rollup_node_chain_orchestrator::ChainOrchestratorEvent;
2020
use rollup_node_primitives::BlockInfo;
@@ -82,8 +82,8 @@ async fn test_should_consolidate_to_block_15k() -> eyre::Result<()> {
8282
};
8383

8484
let chain_spec = (*SCROLL_SEPOLIA).clone();
85-
let (mut nodes, _dbs, _tasks, _) =
86-
setup_engine(node_config, 1, chain_spec.clone(), false, false, None, None).await?;
85+
let (mut nodes, _dbs, _) =
86+
setup_engine(node_config, 1, chain_spec.clone(), false, false, None).await?;
8787
let node = nodes.pop().unwrap();
8888

8989
// We perform consolidation up to block 15k. This allows us to capture a batch revert event at
@@ -555,27 +555,18 @@ async fn test_chain_orchestrator_l1_reorg() -> eyre::Result<()> {
555555
let chain_spec = (*SCROLL_DEV).clone();
556556

557557
// Create a sequencer node and an unsynced node.
558-
let (mut nodes, _dbs, _tasks, _) = setup_engine(
559-
sequencer_node_config.clone(),
560-
1,
561-
chain_spec.clone(),
562-
false,
563-
false,
564-
None,
565-
None,
566-
)
567-
.await
568-
.unwrap();
558+
let (mut nodes, _dbs, _) =
559+
setup_engine(sequencer_node_config.clone(), 1, chain_spec.clone(), false, false, None)
560+
.await
561+
.unwrap();
569562
let mut sequencer = nodes.pop().unwrap();
570563
let sequencer_handle = sequencer.inner.rollup_manager_handle.clone();
571564
let mut sequencer_events = sequencer_handle.get_event_listener().await?;
572565
let sequencer_l1_watcher_tx =
573566
sequencer.inner.add_ons_handle.rollup_manager_handle.l1_watcher_mock.clone().unwrap();
574567

575-
let (mut nodes, _dbs, _tasks, _) =
576-
setup_engine(node_config.clone(), 1, chain_spec.clone(), false, false, None, None)
577-
.await
578-
.unwrap();
568+
let (mut nodes, _dbs, _) =
569+
setup_engine(node_config.clone(), 1, chain_spec.clone(), false, false, None).await.unwrap();
579570
let mut follower = nodes.pop().unwrap();
580571
let mut follower_events = follower.inner.rollup_manager_handle.get_event_listener().await?;
581572
let follower_l1_watcher_tx =

0 commit comments

Comments
 (0)