@@ -10,7 +10,7 @@ use crate::{
1010 common:: { TestCounter , build_provider, deploy_counter, spawn_anvil} ,
1111 mock_callbacks:: BasicCounterCallback ,
1212} ;
13- use alloy:: { network :: Ethereum , providers :: WsConnect , sol_types:: SolEvent } ;
13+ use alloy:: { eips :: BlockNumberOrTag , network :: Ethereum , sol_types:: SolEvent } ;
1414use event_scanner:: { event_scanner:: EventScannerBuilder , types:: EventFilter } ;
1515use tokio:: time:: sleep;
1616
@@ -30,10 +30,14 @@ async fn basic_single_event_scanning() -> anyhow::Result<()> {
3030 callback,
3131 } ;
3232
33- let builder = EventScannerBuilder :: < Ethereum > :: new ( ) . with_event_filter ( filter) ;
34- let mut scanner = builder. connect_ws ( WsConnect :: new ( anvil. ws_endpoint_url ( ) ) ) . await ?;
33+ let mut builder = EventScannerBuilder :: new ( ) ;
34+ builder. with_event_filter ( filter) ;
35+ let scanner = builder. connect_ws :: < Ethereum > ( anvil. ws_endpoint_url ( ) ) . await ?;
3536
36- let scanner_handle = tokio:: spawn ( async move { scanner. start ( ) . await } ) ;
37+ let scanner_handle = tokio:: spawn ( async move {
38+ let mut scanner = scanner;
39+ scanner. start ( BlockNumberOrTag :: Latest , None ) . await
40+ } ) ;
3741
3842 for _ in 0 ..5 {
3943 let _ = contract. increase ( ) . send ( ) . await ?. get_receipt ( ) . await ?;
@@ -69,15 +73,18 @@ async fn multiple_contracts_same_event_isolate_callbacks() -> anyhow::Result<()>
6973 callback : b_cb,
7074 } ;
7175
72- let builder = EventScannerBuilder :: < Ethereum > :: new ( )
73- . with_event_filter ( a_filter)
74- . with_event_filter ( b_filter) ;
75- let mut scanner = builder. connect_ws ( WsConnect :: new ( anvil. ws_endpoint_url ( ) ) ) . await ?;
76- let scanner_handle = tokio:: spawn ( async move { scanner. start ( ) . await } ) ;
76+ let mut builder = EventScannerBuilder :: new ( ) ;
77+ builder. with_event_filters ( vec ! [ a_filter, b_filter] ) ;
78+ let scanner = builder. connect_ws :: < Ethereum > ( anvil. ws_endpoint_url ( ) ) . await ?;
79+ let scanner_handle = tokio:: spawn ( async move {
80+ let mut scanner = scanner;
81+ scanner. start ( BlockNumberOrTag :: Latest , None ) . await
82+ } ) ;
7783
7884 for _ in 0 ..3 {
7985 let _ = a. increase ( ) . send ( ) . await ?. get_receipt ( ) . await ?;
8086 }
87+
8188 for _ in 0 ..2 {
8289 let _ = b. increase ( ) . send ( ) . await ?. get_receipt ( ) . await ?;
8390 }
@@ -113,12 +120,14 @@ async fn multiple_events_same_contract() -> anyhow::Result<()> {
113120 callback : decrease_cb,
114121 } ;
115122
116- let builder = EventScannerBuilder :: < Ethereum > :: new ( )
117- . with_event_filter ( increase_filter)
118- . with_event_filter ( decrease_filter) ;
119- let mut scanner = builder. connect_ws ( WsConnect :: new ( anvil. ws_endpoint_url ( ) ) ) . await ?;
123+ let mut builder = EventScannerBuilder :: new ( ) ;
124+ builder. with_event_filters ( vec ! [ increase_filter, decrease_filter] ) ;
125+ let scanner = builder. connect_ws :: < Ethereum > ( anvil. ws_endpoint_url ( ) ) . await ?;
120126
121- let scanner_handle = tokio:: spawn ( async move { scanner. start ( ) . await } ) ;
127+ let scanner_handle = tokio:: spawn ( async move {
128+ let mut scanner = scanner;
129+ scanner. start ( BlockNumberOrTag :: Latest , None ) . await
130+ } ) ;
122131
123132 for i in 0 ..6 {
124133 let _ = contract. increase ( ) . send ( ) . await ?. get_receipt ( ) . await ?;
@@ -127,7 +136,7 @@ async fn multiple_events_same_contract() -> anyhow::Result<()> {
127136 }
128137 }
129138
130- sleep ( Duration :: from_millis ( 200 ) ) . await ;
139+ sleep ( Duration :: from_millis ( 1500 ) ) . await ;
131140 scanner_handle. abort ( ) ;
132141
133142 assert_eq ! ( increase_count. load( Ordering :: SeqCst ) , 6 ) ;
@@ -151,9 +160,13 @@ async fn signature_matching_ignores_irrelevant_events() -> anyhow::Result<()> {
151160 callback,
152161 } ;
153162
154- let builder = EventScannerBuilder :: < Ethereum > :: new ( ) . with_event_filter ( filter) ;
155- let mut scanner = builder. connect_ws ( WsConnect :: new ( anvil. ws_endpoint_url ( ) ) ) . await ?;
156- let scanner_handle = tokio:: spawn ( async move { scanner. start ( ) . await } ) ;
163+ let mut builder = EventScannerBuilder :: new ( ) ;
164+ builder. with_event_filter ( filter) ;
165+ let scanner = builder. connect_ws :: < Ethereum > ( anvil. ws_endpoint_url ( ) ) . await ?;
166+ let scanner_handle = tokio:: spawn ( async move {
167+ let mut scanner = scanner;
168+ scanner. start ( BlockNumberOrTag :: Latest , None ) . await
169+ } ) ;
157170
158171 for _ in 0 ..3 {
159172 let _ = contract. increase ( ) . send ( ) . await ?. get_receipt ( ) . await ?;
@@ -180,9 +193,13 @@ async fn live_filters_malformed_signature_graceful() -> anyhow::Result<()> {
180193 callback,
181194 } ;
182195
183- let builder = EventScannerBuilder :: < Ethereum > :: new ( ) . with_event_filter ( filter) ;
184- let mut scanner = builder. connect_ws ( WsConnect :: new ( anvil. ws_endpoint_url ( ) ) ) . await ?;
185- let scanner_handle = tokio:: spawn ( async move { scanner. start ( ) . await } ) ;
196+ let mut builder = EventScannerBuilder :: new ( ) ;
197+ builder. with_event_filter ( filter) ;
198+ let scanner = builder. connect_ws :: < Ethereum > ( anvil. ws_endpoint_url ( ) ) . await ?;
199+ let scanner_handle = tokio:: spawn ( async move {
200+ let mut scanner = scanner;
201+ scanner. start ( BlockNumberOrTag :: Latest , None ) . await
202+ } ) ;
186203
187204 for _ in 0 ..3 {
188205 let _ = contract. increase ( ) . send ( ) . await ?. get_receipt ( ) . await ?;
0 commit comments