11use 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} ;
76use alloy_node_bindings:: Anvil ;
87use 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 ) ;
0 commit comments