Skip to content

Commit ef3b363

Browse files
committed
fix: test
1 parent 9d1df37 commit ef3b363

File tree

2 files changed

+31
-25
lines changed

2 files changed

+31
-25
lines changed

tests/block_range_scanner.rs

Lines changed: 15 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,12 @@
11
use alloy::{
22
eips::{BlockId, BlockNumberOrTag},
3-
network::Ethereum,
4-
providers::{Provider, ProviderBuilder, ext::AnvilApi},
3+
providers::{ProviderBuilder, ext::AnvilApi},
54
rpc::types::anvil::ReorgOptions,
65
};
76
use alloy_node_bindings::Anvil;
87
use event_scanner::{
98
ScannerError, ScannerStatus, assert_closed, assert_empty, assert_next,
10-
block_range_scanner::{BlockRangeScanner, Message},
11-
robust_provider::RobustProvider,
9+
block_range_scanner::BlockRangeScanner, robust_provider::RobustProvider,
1210
};
1311

1412
#[tokio::test]
@@ -63,27 +61,23 @@ async fn stream_from_latest_starts_at_tip_not_confirmed() -> anyhow::Result<()>
6361
let anvil = Anvil::new().try_spawn()?;
6462
let provider = ProviderBuilder::new().connect(anvil.ws_endpoint_url().as_str()).await?;
6563

66-
provider.anvil_mine(Some(20), None).await?;
67-
6864
let robust_provider = RobustProvider::new(provider);
69-
7065
let client = BlockRangeScanner::new().connect(robust_provider.clone()).run()?;
7166

67+
robust_provider.root().anvil_mine(Some(20), None).await?;
68+
7269
let stream = client.stream_from(BlockNumberOrTag::Latest, 5).await?;
7370

7471
let stream = assert_empty!(stream);
7572

7673
robust_provider.root().anvil_mine(Some(4), None).await?;
77-
7874
let mut stream = assert_empty!(stream);
7975

8076
robust_provider.root().anvil_mine(Some(1), None).await?;
81-
8277
assert_next!(stream, 20..=20);
8378
let mut stream = assert_empty!(stream);
8479

8580
robust_provider.root().anvil_mine(Some(1), None).await?;
86-
8781
assert_next!(stream, 21..=21);
8882
assert_empty!(stream);
8983

@@ -95,16 +89,13 @@ async fn continuous_blocks_if_reorg_less_than_block_confirmation() -> anyhow::Re
9589
let anvil = Anvil::new().try_spawn()?;
9690
let provider = ProviderBuilder::new().connect(anvil.ws_endpoint_url().as_str()).await?;
9791

98-
let provider = ProviderBuilder::new().connect(anvil.ws_endpoint().as_str()).await?;
99-
100-
let robust_provider = RobustProvider::new(provider.clone());
101-
102-
let client = BlockRangeScanner::new().connect(robust_provider).run()?;
92+
let robust_provider = RobustProvider::new(provider);
93+
let client = BlockRangeScanner::new().connect(robust_provider.clone()).run()?;
10394

104-
let mut receiver = client.stream_live(5).await?;
95+
let mut stream = client.stream_live(5).await?;
10596

10697
// mine initial blocks
107-
provider.anvil_mine(Some(10), None).await?;
98+
robust_provider.root().anvil_mine(Some(10), None).await?;
10899

109100
// assert initial block ranges immediately to avoid Anvil race condition:
110101
//
@@ -119,9 +110,9 @@ async fn continuous_blocks_if_reorg_less_than_block_confirmation() -> anyhow::Re
119110
assert_next!(stream, 5..=5);
120111

121112
// reorg less blocks than the block_confirmation config
122-
provider.anvil_reorg(ReorgOptions { depth: 4, tx_block_pairs: vec![] }).await?;
113+
robust_provider.root().anvil_reorg(ReorgOptions { depth: 4, tx_block_pairs: vec![] }).await?;
123114
// mint additional blocks so the scanner processes reorged blocks
124-
provider.anvil_mine(Some(5), None).await?;
115+
robust_provider.root().anvil_mine(Some(5), None).await?;
125116

126117
// no ReorgDetected should be emitted
127118
assert_next!(stream, 6..=6);
@@ -139,12 +130,13 @@ async fn shallow_block_confirmation_does_not_mitigate_reorg() -> anyhow::Result<
139130
let anvil = Anvil::new().try_spawn()?;
140131
let provider = ProviderBuilder::new().connect(anvil.ws_endpoint_url().as_str()).await?;
141132

142-
let client = BlockRangeScanner::new().connect::<Ethereum>(provider.root().clone()).run()?;
133+
let robust_provider = RobustProvider::new(provider);
134+
let client = BlockRangeScanner::new().connect(robust_provider.clone()).run()?;
143135

144136
let mut stream = client.stream_live(3).await?;
145137

146138
// mine initial blocks
147-
provider.anvil_mine(Some(10), None).await?;
139+
robust_provider.root().anvil_mine(Some(10), None).await?;
148140

149141
// assert initial block ranges immediately to avoid Anvil race condition:
150142
//
@@ -161,9 +153,9 @@ async fn shallow_block_confirmation_does_not_mitigate_reorg() -> anyhow::Result<
161153
assert_next!(stream, 7..=7);
162154

163155
// reorg more blocks than the block_confirmation config
164-
provider.anvil_reorg(ReorgOptions { depth: 8, tx_block_pairs: vec![] }).await?;
156+
robust_provider.root().anvil_reorg(ReorgOptions { depth: 8, tx_block_pairs: vec![] }).await?;
165157
// mint additional blocks
166-
provider.anvil_mine(Some(3), None).await?;
158+
robust_provider.root().anvil_mine(Some(3), None).await?;
167159

168160
assert_next!(stream, ScannerStatus::ReorgDetected);
169161
assert_next!(stream, 0..=0);

tests/sync/from_block.rs

Lines changed: 16 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -86,15 +86,29 @@ async fn block_confirmations_mitigate_reorgs() -> anyhow::Result<()> {
8686

8787
// mine some initial "historic" blocks
8888
contract.increase().send().await?.watch().await?;
89-
provider.anvil_mine(Some(5), None).await?;
89+
provider.root().anvil_mine(Some(5), None).await?;
9090

9191
scanner.start().await?;
9292

93-
// emit initial events
93+
// emit "live" events
9494
for _ in 0..4 {
9595
contract.increase().send().await?.watch().await?;
9696
}
9797

98+
// assert only the first events has enough confirmations to be streamed
99+
assert_next!(stream, &[TestCounter::CountIncreased { newCount: U256::from(1) }]);
100+
assert_next!(stream, ScannerStatus::SwitchingToLive);
101+
let stream = assert_empty!(stream);
102+
103+
// Perform a shallow reorg on the live tail
104+
// note: we include new txs in the same post-reorg block to showcase that the scanner
105+
// only streams the post-reorg, confirmed logs
106+
let tx_block_pairs = vec![
107+
(TransactionData::JSON(contract.increase().into_transaction_request()), 0),
108+
(TransactionData::JSON(contract.increase().into_transaction_request()), 0),
109+
];
110+
provider.root().anvil_reorg(ReorgOptions { depth: 2, tx_block_pairs }).await?;
111+
98112
// assert that still no events have been streamed
99113
let mut stream = assert_empty!(stream);
100114

0 commit comments

Comments
 (0)