1- use std:: { sync:: { Arc , atomic:: { AtomicUsize , Ordering } } , time:: Duration } ;
2-
1+ use std:: {
2+ sync:: {
3+ Arc ,
4+ atomic:: { AtomicUsize , Ordering } ,
5+ } ,
6+ time:: Duration ,
7+ } ;
8+
9+ use crate :: {
10+ common:: { TestCounter , build_provider, deploy_counter, spawn_anvil} ,
11+ mock_callbacks:: { AlwaysFailingCallback , FlakyCallback , SlowProcessorCallback } ,
12+ } ;
313use alloy:: { network:: Ethereum , providers:: WsConnect , sol_types:: SolEvent } ;
4- use crate :: common:: { TestCounter , build_provider, deploy_counter, spawn_anvil, SlowProcessor , FlakyCallback , AlwaysFailingCallback } ;
5- use event_scanner:: { types:: { EventFilter , CallbackConfig } , event_scanner:: EventScannerBuilder } ;
14+ use event_scanner:: {
15+ event_scanner:: EventScannerBuilder ,
16+ types:: { CallbackConfig , EventFilter } ,
17+ } ;
618use tokio:: time:: sleep;
719
820#[ tokio:: test]
@@ -13,9 +25,13 @@ async fn callbacks_slow_processing_does_not_drop_events() -> anyhow::Result<()>
1325 let contract_address = * contract. address ( ) ;
1426
1527 let processed = Arc :: new ( AtomicUsize :: new ( 0 ) ) ;
16- let callback = Arc :: new ( SlowProcessor { delay_ms : 100 , processed : processed. clone ( ) } ) ;
28+ let callback = Arc :: new ( SlowProcessorCallback { delay_ms : 100 , processed : processed. clone ( ) } ) ;
1729
18- let filter = EventFilter { contract_address, event : TestCounter :: CountIncreased :: SIGNATURE . to_owned ( ) , callback } ;
30+ let filter = EventFilter {
31+ contract_address,
32+ event : TestCounter :: CountIncreased :: SIGNATURE . to_owned ( ) ,
33+ callback,
34+ } ;
1935 let builder = EventScannerBuilder :: < Ethereum > :: new ( ) . with_event_filter ( filter) ;
2036 let mut scanner = builder. connect_ws ( WsConnect :: new ( anvil. ws_endpoint_url ( ) ) ) . await ?;
2137
@@ -42,12 +58,21 @@ async fn callbacks_failure_then_retry_success() -> anyhow::Result<()> {
4258
4359 let attempts = Arc :: new ( AtomicUsize :: new ( 0 ) ) ;
4460 let successes = Arc :: new ( AtomicUsize :: new ( 0 ) ) ;
45- let callback = Arc :: new ( FlakyCallback { attempts : attempts. clone ( ) , successes : successes. clone ( ) , fail_times : 2 } ) ;
46-
47- let filter = EventFilter { contract_address : * contract. address ( ) , event : TestCounter :: CountIncreased :: SIGNATURE . to_owned ( ) , callback } ;
61+ let callback = Arc :: new ( FlakyCallback {
62+ attempts : attempts. clone ( ) ,
63+ successes : successes. clone ( ) ,
64+ fail_times : 2 ,
65+ } ) ;
66+
67+ let filter = EventFilter {
68+ contract_address : * contract. address ( ) ,
69+ event : TestCounter :: CountIncreased :: SIGNATURE . to_owned ( ) ,
70+ callback,
71+ } ;
4872 let cfg = CallbackConfig { max_attempts : 3 , delay_ms : 50 } ;
4973
50- let builder = EventScannerBuilder :: < Ethereum > :: new ( ) . with_event_filter ( filter) . with_callback_config ( cfg) ;
74+ let builder =
75+ EventScannerBuilder :: < Ethereum > :: new ( ) . with_event_filter ( filter) . with_callback_config ( cfg) ;
5176 let mut scanner = builder. connect_ws ( WsConnect :: new ( anvil. ws_endpoint_url ( ) ) ) . await ?;
5277 let scanner_handle = tokio:: spawn ( async move { scanner. start ( ) . await } ) ;
5378
@@ -69,9 +94,14 @@ async fn callbacks_always_failing_respects_max_attempts() -> anyhow::Result<()>
6994 let attempts = Arc :: new ( AtomicUsize :: new ( 0 ) ) ;
7095 let callback = Arc :: new ( AlwaysFailingCallback { attempts : attempts. clone ( ) } ) ;
7196
72- let filter = EventFilter { contract_address : * contract. address ( ) , event : TestCounter :: CountIncreased :: SIGNATURE . to_owned ( ) , callback } ;
97+ let filter = EventFilter {
98+ contract_address : * contract. address ( ) ,
99+ event : TestCounter :: CountIncreased :: SIGNATURE . to_owned ( ) ,
100+ callback,
101+ } ;
73102 let cfg = CallbackConfig { max_attempts : 2 , delay_ms : 20 } ;
74- let builder = EventScannerBuilder :: < Ethereum > :: new ( ) . with_event_filter ( filter) . with_callback_config ( cfg) ;
103+ let builder =
104+ EventScannerBuilder :: < Ethereum > :: new ( ) . with_event_filter ( filter) . with_callback_config ( cfg) ;
75105 let mut scanner = builder. connect_ws ( WsConnect :: new ( anvil. ws_endpoint_url ( ) ) ) . await ?;
76106 let scanner_handle = tokio:: spawn ( async move { scanner. start ( ) . await } ) ;
77107
0 commit comments