Skip to content

Commit 618bd53

Browse files
committed
fix: test_l1_sync_batch_finalized
1 parent 61ee962 commit 618bd53

File tree

3 files changed

+31
-7
lines changed

3 files changed

+31
-7
lines changed

crates/node/src/test_utils/event_utils.rs

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -172,8 +172,15 @@ impl<'a> EventWaiter<'a> {
172172

173173
/// Wait for L1 block finalized event on all specified nodes.
174174
pub async fn l1_block_finalized(self) -> eyre::Result<()> {
175+
self.l1_block_finalized_at_least(0).await
176+
}
177+
178+
/// Wait for L1 block finalized event on all specified nodes where the block number
179+
/// is at least the specified target.
180+
pub async fn l1_block_finalized_at_least(self, target_block_number: u64) -> eyre::Result<()> {
175181
self.wait_for_event_on_all(|e| {
176-
matches!(e, ChainOrchestratorEvent::L1BlockFinalized(_, _)).then_some(())
182+
matches!(e, ChainOrchestratorEvent::L1BlockFinalized(n, _) if n >= &target_block_number)
183+
.then_some(())
177184
})
178185
.await?;
179186
Ok(())

crates/node/src/test_utils/fixture.rs

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -239,6 +239,20 @@ impl TestFixture {
239239
})
240240
}
241241

242+
/// Get the current block number from Anvil.
243+
pub async fn anvil_get_block_number(&self) -> eyre::Result<u64> {
244+
let provider = self.anvil_provider().ok_or_else(|| eyre::eyre!("Anvil is not running"))?;
245+
let block_number = provider.get_block_number().await?;
246+
Ok(block_number)
247+
}
248+
249+
/// Get the finalized block number from Anvil.
250+
pub async fn anvil_get_finalized_block_number(&self) -> eyre::Result<u64> {
251+
let provider = self.anvil_provider().ok_or_else(|| eyre::eyre!("Anvil is not running"))?;
252+
let finalized_block = provider.get_block(BlockNumberOrTag::Finalized.into()).await?;
253+
Ok(finalized_block.map(|block| block.number()).unwrap_or(0u64))
254+
}
255+
242256
/// Generate Anvil blocks by calling `anvil_mine` RPC method.
243257
pub async fn anvil_mine_blocks(&self, num_blocks: u64) -> eyre::Result<()> {
244258
let provider = self.anvil_provider().ok_or_else(|| eyre::eyre!("Anvil is not running"))?;

crates/node/tests/l1_sync.rs

Lines changed: 9 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -193,7 +193,7 @@ async fn test_l1_sync_batch_finalized() -> eyre::Result<()> {
193193
let mut fixture = TestFixture::builder()
194194
.followers(1)
195195
.skip_l1_synced_notifications()
196-
.with_anvil(None, None, Some(22222222), None, Some(4))
196+
.with_anvil(None, None, Some(22222222), None, Some(2))
197197
.build()
198198
.await?;
199199

@@ -231,7 +231,9 @@ async fn test_l1_sync_batch_finalized() -> eyre::Result<()> {
231231
let finalize_batch_tx = read_test_transaction("finalizeBatch", &i.to_string())?;
232232
fixture.anvil_inject_tx(finalize_batch_tx).await?;
233233
}
234-
fixture.anvil_mine_blocks(8).await?;
234+
let anvil_block_number = fixture.anvil_get_block_number().await?;
235+
fixture.anvil_mine_blocks(4).await?;
236+
fixture.expect_event().l1_block_finalized_at_least(anvil_block_number).await?;
235237

236238
for i in 1..=3 {
237239
fixture.expect_event().batch_consolidated().await?;
@@ -272,8 +274,8 @@ async fn test_l1_sync_batch_finalized() -> eyre::Result<()> {
272274
}
273275
let l1_synced_status = fixture.get_status(0).await?;
274276
assert!(
275-
batch_finalized_status.l2.fcs.safe_block_info().number <
276-
l1_synced_status.l2.fcs.safe_block_info().number,
277+
l1_synced_status.l2.fcs.safe_block_info().number >
278+
batch_finalized_status.l2.fcs.safe_block_info().number,
277279
"Safe head should advance after L1 Synced when processing buffered BatchCommit events"
278280
);
279281

@@ -299,8 +301,9 @@ async fn test_l1_sync_batch_finalized() -> eyre::Result<()> {
299301
"Finalized head should not advance before BatchFinalized event are finalized on L1"
300302
);
301303

302-
fixture.anvil_mine_blocks(8).await?;
303-
fixture.expect_event().l1_block_finalized().await?;
304+
let anvil_block_number = fixture.anvil_get_block_number().await?;
305+
fixture.anvil_mine_blocks(4).await?;
306+
fixture.expect_event().l1_block_finalized_at_least(anvil_block_number).await?;
304307

305308
// Step 8: Verify only finalized head advanced (safe head managed by BatchCommit)
306309
let batch_finalized_status = fixture.get_status(0).await?;

0 commit comments

Comments
 (0)