Skip to content

Commit 1bd6523

Browse files
committed
fix: merge main conflict
1 parent d8078f1 commit 1bd6523

8 files changed

Lines changed: 378 additions & 2689 deletions

File tree

Cargo.lock

Lines changed: 281 additions & 2595 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

crates/node/src/args.rs

Lines changed: 2 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -402,7 +402,6 @@ impl ScrollRollupNodeConfig {
402402
{
403403
tracing::info!(target: "scroll::node::args", ?l1_block_startup_info, "Starting L1 watcher");
404404

405-
<<<<<<< HEAD
406405
#[cfg(feature = "test-utils")]
407406
let skip_synced = self.test_args.test && self.test_args.skip_l1_synced;
408407

@@ -411,28 +410,8 @@ impl ScrollRollupNodeConfig {
411410
l1_block_startup_info,
412411
node_config,
413412
self.l1_provider_args.logs_query_block_range,
414-
=======
415-
let (_l1_watcher_mock, l1_watcher_handle): (L1WatcherMockOpt, Option<L1WatcherHandle>) =
416-
if let Some(provider) = l1_provider.filter(|_| !self.test) {
417-
tracing::info!(target: "scroll::node::args", ?l1_block_startup_info, "Starting L1 watcher");
418-
(
419-
None,
420-
Some(
421-
L1Watcher::spawn(
422-
provider,
423-
l1_block_startup_info,
424-
node_config,
425-
self.l1_provider_args.logs_query_block_range,
426-
self.l1_provider_args.liveness_threshold,
427-
self.l1_provider_args.liveness_check_interval,
428-
)
429-
.await,
430-
),
431-
)
432-
} else {
433-
// Create a channel for L1 notifications that we can use to inject L1 messages for
434-
// testing
435-
>>>>>>> main
413+
self.l1_provider_args.liveness_threshold,
414+
self.l1_provider_args.liveness_check_interval,
436415
#[cfg(feature = "test-utils")]
437416
skip_synced,
438417
)

crates/node/src/test_utils/fixture.rs

Lines changed: 14 additions & 35 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,7 @@ use rollup_node_chain_orchestrator::{ChainOrchestratorEvent, ChainOrchestratorHa
3434
use rollup_node_sequencer::L1MessageInclusionMode;
3535
use scroll_alloy_consensus::ScrollPooledTransaction;
3636
use scroll_alloy_rpc_types::Transaction;
37+
use scroll_engine::{Engine, ForkchoiceState};
3738
use std::{
3839
fmt::{Debug, Formatter},
3940
ops::{Deref, DerefMut},
@@ -95,14 +96,10 @@ pub type ScrollNetworkHandle =
9596
pub type TestBlockChainProvider =
9697
BlockchainProvider<NodeTypesWithDBAdapter<ScrollRollupNode, TmpDB>>;
9798

98-
<<<<<<< HEAD
9999
/// The test node type for Scroll nodes.
100100
pub type ScrollTestNode = NodeHelperType<ScrollRollupNode, TestBlockChainProvider>;
101101

102-
/// The node type (sequencer or follower).
103-
=======
104102
/// The node type (sequencer, follower, or remote source).
105-
>>>>>>> main
106103
#[derive(Debug)]
107104
pub enum NodeType {
108105
/// A sequencer node.
@@ -158,6 +155,8 @@ impl Deref for ScrollNodeTestComponents {
158155
pub struct NodeHandle {
159156
/// The underlying node context.
160157
pub node: ScrollNodeTestComponents,
158+
/// Engine instance for this node.
159+
pub engine: Engine<Arc<dyn ScrollEngineApi + Send + Sync + 'static>>,
161160
/// Chain orchestrator listener.
162161
pub chain_orchestrator_rx: EventStream<ChainOrchestratorEvent>,
163162
/// Chain orchestrator handle.
@@ -167,15 +166,6 @@ pub struct NodeHandle {
167166
}
168167

169168
impl NodeHandle {
170-
/// Create a new node handle.
171-
pub async fn new(node: ScrollNodeTestComponents, typ: NodeType) -> eyre::Result<Self> {
172-
let rollup_manager_handle = node.inner.add_ons_handle.rollup_manager_handle.clone();
173-
let chain_orchestrator_rx =
174-
node.inner.add_ons_handle.rollup_manager_handle.get_event_listener().await?;
175-
176-
Ok(Self { node, chain_orchestrator_rx, rollup_manager_handle, typ })
177-
}
178-
179169
/// Returns true if this is a handle to the sequencer.
180170
pub const fn is_sequencer(&self) -> bool {
181171
matches!(self.typ, NodeType::Sequencer)
@@ -236,7 +226,7 @@ impl TestFixture {
236226
pub fn remote_source(&mut self) -> &mut NodeHandle {
237227
self.nodes
238228
.iter_mut()
239-
.find(|n| matches!(n.typ, NodeType::RemoteSource))
229+
.find_map(|n| n.as_mut().filter(|node| matches!(node.typ, NodeType::RemoteSource)))
240230
.expect("remote source node not found")
241231
}
242232

@@ -654,7 +644,6 @@ impl TestFixtureBuilder {
654644
pub async fn build(mut self) -> eyre::Result<TestFixture> {
655645
let chain_spec = self.chain_spec.unwrap_or_else(|| SCROLL_DEV.clone());
656646

657-
<<<<<<< HEAD
658647
// Start Anvil if requested
659648
let anvil = if self.anvil_config.enabled {
660649
let handle = Self::spawn_anvil(
@@ -682,25 +671,17 @@ impl TestFixtureBuilder {
682671
None
683672
};
684673

685-
let (node_components, dbs, wallet) = setup_engine(
674+
let (mut nodes, mut dbs, task, wallet) = setup_engine(
686675
self.config.clone(),
687-
=======
688-
let (mut nodes, mut tasks, wallet) = setup_engine(
689-
config.clone(),
690-
>>>>>>> main
691676
self.num_nodes,
692677
chain_spec.clone(),
693678
self.is_dev,
694679
self.no_local_transactions_propagation,
695680
None,
681+
None,
696682
)
697683
.await?;
698684

699-
<<<<<<< HEAD
700-
let mut nodes = Vec::with_capacity(node_components.len());
701-
for (index, node) in node_components.into_iter().enumerate() {
702-
let handle = NodeHandle::new(
703-
=======
704685
// Launch remote source node if requested
705686
if self.has_remote_source_node {
706687
// Get sequencer's RPC URL
@@ -716,16 +697,17 @@ impl TestFixtureBuilder {
716697
// Use a fast poll interval for tests
717698
remote_config.remote_block_source_args.poll_interval_ms = 100;
718699

719-
let (mut remote_nodes, new_tasks, _) = setup_engine(
700+
let (mut remote_nodes, _, new_task, _) = setup_engine(
720701
remote_config,
721702
1,
722703
chain_spec.clone(),
723704
self.is_dev,
724705
self.no_local_transactions_propagation,
706+
None,
725707
Some(tasks),
726708
)
727709
.await?;
728-
tasks = new_tasks;
710+
let tasks = new_task;
729711

730712
nodes.push(remote_nodes.pop().unwrap());
731713
}
@@ -751,17 +733,18 @@ impl TestFixtureBuilder {
751733
node.inner.add_ons_handle.rollup_manager_handle.get_event_listener().await?;
752734

753735
node_handles.push(NodeHandle {
754-
>>>>>>> main
755736
node,
756-
if self.config.sequencer_args.sequencer_enabled && index == 0 {
737+
engine,
738+
chain_orchestrator_rx,
739+
rollup_manager_handle,
740+
typ: if config.sequencer_args.sequencer_enabled && index == 0 {
757741
NodeType::Sequencer
758742
} else if config.remote_block_source_args.enabled && index == node_handles.len() {
759743
NodeType::RemoteSource
760744
} else {
761745
NodeType::Follower
762746
},
763-
)
764-
.await?;
747+
});
765748

766749
nodes.push(Some(handle));
767750
}
@@ -771,12 +754,8 @@ impl TestFixtureBuilder {
771754
dbs,
772755
wallet: Arc::new(Mutex::new(wallet)),
773756
chain_spec,
774-
<<<<<<< HEAD
775757
anvil,
776758
config: self.config,
777-
=======
778-
_tasks: tasks,
779-
>>>>>>> main
780759
})
781760
}
782761

crates/node/src/test_utils/mod.rs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -119,6 +119,7 @@ pub async fn setup_engine(
119119
) -> eyre::Result<(
120120
Vec<ScrollNodeTestComponents>,
121121
Vec<Arc<reth_db::test_utils::TempDatabase<reth_db::DatabaseEnv>>>,
122+
TaskManager,
122123
Wallet,
123124
)>
124125
where
@@ -247,7 +248,7 @@ where
247248
nodes.push(node);
248249
}
249250

250-
Ok((nodes, dbs, Wallet::default().with_chain_id(chain_spec.chain().into())))
251+
Ok((nodes, dbs, exec, Wallet::default().with_chain_id(chain_spec.chain().into())))
251252
}
252253

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

crates/node/src/test_utils/reboot.rs

Lines changed: 13 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -30,11 +30,17 @@ impl TestFixture {
3030
}
3131

3232
tracing::info!("Shutting down node at index {}", node_index);
33-
let NodeHandle { node, mut chain_orchestrator_rx, rollup_manager_handle: _r_h, typ: _ } =
34-
self.nodes
35-
.get_mut(node_index)
36-
.and_then(|opt| opt.take())
37-
.expect("Node existence checked above");
33+
let NodeHandle {
34+
node,
35+
engine,
36+
mut chain_orchestrator_rx,
37+
rollup_manager_handle: _r_h,
38+
typ: _,
39+
} = self
40+
.nodes
41+
.get_mut(node_index)
42+
.and_then(|opt| opt.take())
43+
.expect("Node existence checked above");
3844
let ScrollNodeTestComponents { node, task_manager, exit_future } = node;
3945

4046
tokio::task::spawn_blocking(|| {
@@ -88,13 +94,14 @@ impl TestFixture {
8894
tracing::info!("Starting node at index {} (reusing database)", node_index);
8995

9096
// Create node instance with existing database
91-
let (mut new_nodes, _, _) = setup_engine(
97+
let (mut new_nodes, _, _, _) = setup_engine(
9298
self.config.clone(),
9399
1,
94100
self.chain_spec.clone(),
95101
true,
96102
false,
97103
Some((node_index, self.dbs[node_index].clone())),
104+
None,
98105
)
99106
.await?;
100107

crates/node/tests/e2e.rs

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -390,7 +390,7 @@ 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, _tasks, _) =
393+
let (mut sequencer_node, _dbs, _tasks, _) =
394394
setup_engine(sequencer_node_config, 1, chain_spec.clone(), false, true, None, None)
395395
.await
396396
.unwrap();
@@ -560,7 +560,7 @@ 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, tasks, _) = setup_engine(
563+
let (mut nodes, _dbs, tasks, _) = setup_engine(
564564
default_test_scroll_rollup_node_config(),
565565
1,
566566
chain_spec.clone(),
@@ -668,7 +668,7 @@ async fn shutdown_consolidates_most_recent_batch_on_startup() -> eyre::Result<()
668668
let chain_spec = (*SCROLL_MAINNET).clone();
669669

670670
// Launch a node
671-
let (mut nodes, _tasks, _) = setup_engine(
671+
let (mut nodes, _dbs, _tasks, _) = setup_engine(
672672
default_test_scroll_rollup_node_config(),
673673
1,
674674
chain_spec.clone(),
@@ -955,7 +955,7 @@ async fn graceful_shutdown_sets_fcs_to_latest_signed_block_in_db_on_start_up() -
955955
config.signer_args.private_key = Some(PrivateKeySigner::random());
956956

957957
// Launch a node
958-
let (mut nodes, _tasks, _) =
958+
let (mut nodes, _dbs, _tasks, _) =
959959
setup_engine(config.clone(), 1, chain_spec.clone(), false, false, None, None).await?;
960960
let node = nodes.pop().unwrap();
961961

crates/node/tests/sync.rs

Lines changed: 16 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -82,7 +82,7 @@ async fn test_should_consolidate_to_block_15k() -> eyre::Result<()> {
8282
};
8383

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

@@ -555,18 +555,27 @@ 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, _tasks, _) =
559-
setup_engine(sequencer_node_config.clone(), 1, chain_spec.clone(), false, false, None, None)
560-
.await
561-
.unwrap();
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();
562569
let mut sequencer = nodes.pop().unwrap();
563570
let sequencer_handle = sequencer.inner.rollup_manager_handle.clone();
564571
let mut sequencer_events = sequencer_handle.get_event_listener().await?;
565572
let sequencer_l1_watcher_tx =
566573
sequencer.inner.add_ons_handle.rollup_manager_handle.l1_watcher_mock.clone().unwrap();
567574

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

0 commit comments

Comments
 (0)