@@ -2233,179 +2233,3 @@ async fn compute_l1_message_queue_hash(
22332233// );
22342234// }
22352235// }
2236-
2237- #[ cfg( test) ]
2238- mod tests {
2239- // use super::*;
2240- // use alloy_primitives::B256;
2241- // use rollup_node_primitives::BatchCommitData;
2242- // use std::sync::Arc;
2243-
2244- // Commented out due to removal of MockL1WatcherHandle
2245- // #[tokio::test]
2246- // async fn test_gap_recovery() {
2247- // use rollup_node_watcher::MockL1WatcherHandle;
2248- //
2249- // // setup a test node
2250- // let (mut nodes, _tasks, _wallet) = setup(1, false).await.unwrap();
2251- // let node = nodes.pop().unwrap();
2252- //
2253- // // create a fork choice state
2254- // let genesis_hash = node.inner.chain_spec().genesis_hash();
2255- // let fcs = ForkchoiceState::new(
2256- // BlockInfo { hash: genesis_hash, number: 0 },
2257- // Default::default(),
2258- // Default::default(),
2259- // );
2260- //
2261- // // create the engine driver connected to the node
2262- // let auth_client = node.inner.engine_http_client();
2263- // let engine_client = ScrollAuthApiEngineClient::new(auth_client);
2264- // let engine = Engine::new(Arc::new(engine_client), fcs);
2265- //
2266- // // create a test database
2267- // let db = Arc::new(setup_test_db().await);
2268- //
2269- // // prepare derivation pipeline
2270- // let mock_l1_provider = MockL1Provider { db: db.clone(), blobs: HashMap::new() };
2271- // let derivation_pipeline =
2272- // DerivationPipeline::new(mock_l1_provider, db.clone(), u64::MAX).await;
2273- //
2274- // let (scroll_network_manager, scroll_network_handle) =
2275- // scroll_network::ScrollNetworkManager::new(
2276- // node.inner.chain_spec().clone(),
2277- // NetworkConfigBuilder::<ScrollNetworkPrimitives>::with_rng_secret_key()
2278- // .build_with_noop_provider(node.inner.chain_spec().clone()),
2279- // ScrollWireConfig::new(true),
2280- // None,
2281- // Default::default(),
2282- // None,
2283- // )
2284- // .await;
2285- // tokio::spawn(scroll_network_manager);
2286- //
2287- // // create full block client
2288- // let block_client = FullBlockClient::new(
2289- // scroll_network_handle
2290- // .inner()
2291- // .fetch_client()
2292- // .await
2293- // .expect("failed to fetch block client"),
2294- // Arc::new(ScrollBeaconConsensus::new(node.inner.chain_spec())),
2295- // );
2296- //
2297- // // create l2 provider
2298- // let client = RpcClient::builder().http(node.rpc_url());
2299- // let l2_provider = ProviderBuilder::<_, _, Scroll>::default().connect_client(client);
2300- // let l2_provider = Arc::new(l2_provider);
2301- //
2302- // // prepare L1 notification channel
2303- // let (l1_notification_tx, l1_notification_rx) = mpsc::channel(100);
2304- //
2305- // // create mock L1 watcher handle for testing gap recovery
2306- // let mock_l1_watcher_handle = MockL1WatcherHandle::new();
2307- //
2308- // // initialize database state
2309- // db.set_latest_l1_block_number(0).await.unwrap();
2310- //
2311- // let (chain_orchestrator, _handle) = ChainOrchestrator::new(
2312- // db.clone(),
2313- // ChainOrchestratorConfig::new(node.inner.chain_spec().clone(), 0, 0),
2314- // Arc::new(block_client),
2315- // l2_provider,
2316- // l1_notification_rx,
2317- // Some(mock_l1_watcher_handle.clone()),
2318- // scroll_network_handle.into_scroll_network().await,
2319- // Box::new(NoopConsensus::default()),
2320- // engine,
2321- // Some(Sequencer::new(
2322- // Arc::new(MockL1Provider { db: db.clone(), blobs: HashMap::new() }),
2323- // SequencerConfig {
2324- // chain_spec: node.inner.chain_spec(),
2325- // fee_recipient: Address::random(),
2326- // auto_start: false,
2327- // payload_building_config: PayloadBuildingConfig {
2328- // block_gas_limit: 15_000_000,
2329- // max_l1_messages_per_block: 4,
2330- // l1_message_inclusion_mode: L1MessageInclusionMode::BlockDepth(0),
2331- // },
2332- // block_time: 1,
2333- // payload_building_duration: 0,
2334- // allow_empty_blocks: false,
2335- // },
2336- // )),
2337- // None,
2338- // derivation_pipeline,
2339- // )
2340- // .await
2341- // .unwrap();
2342- //
2343- // // Spawn a task that constantly polls chain orchestrator to process L1 notifications
2344- // let (_signal, shutdown) = shutdown_signal();
2345- // tokio::spawn(async {
2346- // let (_signal, inner) = shutdown_signal();
2347- // let chain_orchestrator = chain_orchestrator.run_until_shutdown(inner);
2348- // tokio::select! {
2349- // biased;
2350- //
2351- // _ = shutdown => {},
2352- // _ = chain_orchestrator => {},
2353- // }
2354- // });
2355- //
2356- // let genesis_batch = create_test_batch(1, 100);
2357- // l1_notification_tx
2358- // .send(Arc::new(L1Notification::BatchCommit(genesis_batch)))
2359- // .await
2360- // .unwrap();
2361- // tokio::time::sleep(tokio::time::Duration::from_millis(50)).await;
2362- //
2363- // let batch_with_gap = create_test_batch(3, 102);
2364- // l1_notification_tx
2365- // .send(Arc::new(L1Notification::BatchCommit(batch_with_gap)))
2366- // .await
2367- // .unwrap();
2368- // tokio::time::sleep(tokio::time::Duration::from_millis(100)).await;
2369- //
2370- // mock_l1_watcher_handle.assert_reset_to(100);
2371- //
2372- // // Insert first L1 message
2373- // // let l1_msg_0 = create_test_l1_message(0);
2374- // // l1_notification_tx.send(Arc::new(L1Notification::L1Message {
2375- // // message: l1_msg_0,
2376- // // block_number: 105,
2377- // // block_timestamp: 0,
2378- // // })).await.unwrap();
2379- // // tokio::time::sleep(tokio::time::Duration::from_millis(50)).await;
2380- // //
2381- // // let l1_msg_with_gap = create_test_l1_message(2);
2382- // // l1_notification_tx.send(Arc::new(L1Notification::L1Message {
2383- // // message: l1_msg_with_gap,
2384- // // block_number: 107,
2385- // // block_timestamp: 0,
2386- // // })).await.unwrap();
2387- // // tokio::time::sleep(tokio::time::Duration::from_millis(100)).await;
2388- // //
2389- // // // Verify that reset was triggered to block 105 (last known L1 message)
2390- // // mock_l1_watcher_handle.assert_reset_to(105);
2391- // }
2392-
2393- // Helper function to create a simple test batch commit
2394- // fn create_test_batch(index: u64, block_number: u64) -> BatchCommitData {
2395- // use alloy_primitives::Bytes;
2396- // BatchCommitData {
2397- // index,
2398- // hash: B256::random(),
2399- // block_number,
2400- // block_timestamp: 0,
2401- // calldata: Arc::new(Bytes::new()),
2402- // blob_versioned_hash: None,
2403- // finalized_block_number: None,
2404- // }
2405- // }
2406-
2407- // Helper function to create a simple test L1 message
2408- // fn create_test_l1_message(queue_index: u64) -> TxL1Message {
2409- // TxL1Message { queue_index, ..Default::default() }
2410- // }
2411- }
0 commit comments