@@ -6,6 +6,7 @@ use crate::{
66use scroll_migration:: MigratorTrait ;
77use std:: { fs, path:: PathBuf , sync:: Arc } ;
88
9+ use super :: test_utils:: l1_helpers:: L1WatcherMock ;
910use alloy_chains:: NamedChain ;
1011use alloy_primitives:: { hex, Address , U128 } ;
1112use alloy_provider:: { layers:: CacheLayer , Provider , ProviderBuilder } ;
@@ -38,7 +39,7 @@ use rollup_node_providers::{
3839use rollup_node_sequencer:: {
3940 L1MessageInclusionMode , PayloadBuildingConfig , Sequencer , SequencerConfig ,
4041} ;
41- use rollup_node_watcher:: { L1Notification , L1Watcher } ;
42+ use rollup_node_watcher:: { L1Watcher , L1WatcherHandle } ;
4243use scroll_alloy_hardforks:: ScrollHardforks ;
4344use scroll_alloy_network:: Scroll ;
4445use scroll_alloy_provider:: { ScrollAuthApiEngineClient , ScrollEngineApi } ;
@@ -51,7 +52,7 @@ use scroll_engine::{Engine, ForkchoiceState};
5152use scroll_migration:: traits:: ScrollMigrator ;
5253use scroll_network:: ScrollNetworkManager ;
5354use scroll_wire:: ScrollWireEvent ;
54- use tokio:: sync:: mpsc:: { Sender , UnboundedReceiver } ;
55+ use tokio:: sync:: mpsc:: UnboundedReceiver ;
5556
5657/// A struct that represents the arguments for the rollup node.
5758#[ derive( Debug , Clone , clap:: Args ) ]
@@ -166,7 +167,7 @@ impl ScrollRollupNodeConfig {
166167 impl ScrollEngineApi ,
167168 > ,
168169 ChainOrchestratorHandle < N > ,
169- Option < Sender < Arc < L1Notification > > > ,
170+ Option < L1WatcherMock > ,
170171 ) >
171172 where
172173 N : FullNetwork < Primitives = ScrollNetworkPrimitives > + NetworkProtocols ,
@@ -350,35 +351,42 @@ impl ScrollRollupNodeConfig {
350351 } ;
351352 let consensus = self . consensus_args . consensus ( authorized_signer) ?;
352353
353- let ( l1_notification_tx, l1_notification_rx) : ( Option < Sender < Arc < L1Notification > > > , _ ) =
354- if let Some ( provider) = l1_provider. filter ( |_| !self . test ) {
355- tracing:: info!( target: "scroll::node::args" , ?l1_block_startup_info, "Starting L1 watcher" ) ;
356- (
357- None ,
358- Some (
359- L1Watcher :: spawn (
360- provider,
361- l1_block_startup_info,
362- node_config,
363- self . l1_provider_args . logs_query_block_range ,
364- )
365- . await ,
366- ) ,
367- )
368- } else {
369- // Create a channel for L1 notifications that we can use to inject L1 messages for
370- // testing
371- #[ cfg( feature = "test-utils" ) ]
372- {
373- let ( tx, rx) = tokio:: sync:: mpsc:: channel ( 1000 ) ;
374- ( Some ( tx) , Some ( rx) )
375- }
376-
377- #[ cfg( not( feature = "test-utils" ) ) ]
378- {
379- ( None , None )
380- }
381- } ;
354+ let ( l1_watcher_mock, l1_watcher_handle) = if let Some ( provider) =
355+ l1_provider. filter ( |_| !self . test )
356+ {
357+ tracing:: info!( target: "scroll::node::args" , ?l1_block_startup_info, "Starting L1 watcher" ) ;
358+ (
359+ None ,
360+ Some (
361+ L1Watcher :: spawn (
362+ provider,
363+ l1_block_startup_info,
364+ node_config,
365+ self . l1_provider_args . logs_query_block_range ,
366+ )
367+ . await ,
368+ ) ,
369+ )
370+ } else {
371+ // Create a channel for L1 notifications that we can use to inject L1 messages for
372+ // testing
373+ #[ cfg( feature = "test-utils" ) ]
374+ {
375+ let ( notification_tx, notification_rx) = tokio:: sync:: mpsc:: channel ( 1000 ) ;
376+ let ( command_tx, command_rx) = tokio:: sync:: mpsc:: unbounded_channel ( ) ;
377+ let handle = L1WatcherHandle :: new ( command_tx, notification_rx) ;
378+ let watcher_mock = L1WatcherMock {
379+ command_rx : Arc :: new ( tokio:: sync:: Mutex :: new ( command_rx) ) ,
380+ notification_tx,
381+ } ;
382+ ( Some ( watcher_mock) , Some ( handle) )
383+ }
384+
385+ #[ cfg( not( feature = "test-utils" ) ) ]
386+ {
387+ ( None , None )
388+ }
389+ } ;
382390
383391 // Construct the l1 provider.
384392 let l1_messages_provider = db. clone ( ) ;
@@ -457,7 +465,7 @@ impl ScrollRollupNodeConfig {
457465 config,
458466 Arc :: new ( block_client) ,
459467 l2_provider,
460- l1_notification_rx . expect ( "L1 notification receiver should be set" ) ,
468+ l1_watcher_handle . expect ( "L1 notification receiver should be set" ) ,
461469 scroll_network_handle. into_scroll_network ( ) . await ,
462470 consensus,
463471 engine,
@@ -467,7 +475,7 @@ impl ScrollRollupNodeConfig {
467475 )
468476 . await ?;
469477
470- Ok ( ( chain_orchestrator, handle, l1_notification_tx ) )
478+ Ok ( ( chain_orchestrator, handle, l1_watcher_mock ) )
471479 }
472480}
473481
0 commit comments