@@ -570,7 +570,6 @@ impl Actor for SenderAccount {
570570 ) ;
571571 SenderAccount :: deny_sender ( & state. pgpool , state. sender ) . await ;
572572 }
573-
574573 state. sender_fee_tracker . add ( allocation_id, value) ;
575574
576575 UNAGGREGATED_FEES
@@ -612,7 +611,6 @@ impl Actor for SenderAccount {
612611 state. sender_fee_tracker . get_total_fee_outside_buffer ( ) ;
613612 let total_fee_greater_trigger_value =
614613 total_fee_outside_buffer >= state. config . tap . rav_request_trigger_value ;
615-
616614 let rav_result = match (
617615 counter_greater_receipt_limit,
618616 total_fee_greater_trigger_value,
@@ -931,13 +929,15 @@ pub mod tests {
931929 const TRIGGER_VALUE : u128 = 500 ;
932930 const ESCROW_VALUE : u128 = 1000 ;
933931 const BUFFER_MS : u64 = 100 ;
932+ const RECEIPT_LIMIT : u64 = 10000 ;
934933
935934 async fn create_sender_account (
936935 pgpool : PgPool ,
937936 initial_allocation : HashSet < Address > ,
938937 rav_request_trigger_value : u128 ,
939938 max_unnaggregated_fees_per_sender : u128 ,
940939 escrow_subgraph_endpoint : & str ,
940+ rav_request_receipt_limit : u64 ,
941941 ) -> (
942942 ActorRef < SenderAccountMessage > ,
943943 tokio:: task:: JoinHandle < ( ) > ,
@@ -954,6 +954,7 @@ pub mod tests {
954954 rav_request_timestamp_buffer_ms : BUFFER_MS ,
955955 rav_request_timeout_secs : 5 ,
956956 max_unnaggregated_fees_per_sender,
957+ rav_request_receipt_limit,
957958 ..Default :: default ( )
958959 } ,
959960 ..Default :: default ( )
@@ -1005,6 +1006,7 @@ pub mod tests {
10051006 TRIGGER_VALUE ,
10061007 TRIGGER_VALUE ,
10071008 DUMMY_URL ,
1009+ RECEIPT_LIMIT ,
10081010 )
10091011 . await ;
10101012
@@ -1045,6 +1047,7 @@ pub mod tests {
10451047 TRIGGER_VALUE ,
10461048 TRIGGER_VALUE ,
10471049 DUMMY_URL ,
1050+ RECEIPT_LIMIT ,
10481051 )
10491052 . await ;
10501053
@@ -1228,6 +1231,7 @@ pub mod tests {
12281231 TRIGGER_VALUE ,
12291232 TRIGGER_VALUE ,
12301233 DUMMY_URL ,
1234+ RECEIPT_LIMIT ,
12311235 )
12321236 . await ;
12331237
@@ -1264,6 +1268,7 @@ pub mod tests {
12641268 TRIGGER_VALUE ,
12651269 TRIGGER_VALUE ,
12661270 DUMMY_URL ,
1271+ RECEIPT_LIMIT ,
12671272 )
12681273 . await ;
12691274
@@ -1309,6 +1314,60 @@ pub mod tests {
13091314 handle. await . unwrap ( ) ;
13101315 }
13111316
1317+ #[ sqlx:: test( migrations = "../migrations" ) ]
1318+ async fn test_counter_greater_limit_trigger_rav ( pgpool : PgPool ) {
1319+ let ( sender_account, handle, prefix, _) = create_sender_account (
1320+ pgpool,
1321+ HashSet :: new ( ) ,
1322+ TRIGGER_VALUE ,
1323+ TRIGGER_VALUE ,
1324+ DUMMY_URL ,
1325+ 1 ,
1326+ )
1327+ . await ;
1328+
1329+ let ( triggered_rav_request, _, allocation, allocation_handle) =
1330+ create_mock_sender_allocation ( prefix, SENDER . 1 , * ALLOCATION_ID_0 ) . await ;
1331+
1332+ // create a fake sender allocation
1333+ sender_account
1334+ . cast ( SenderAccountMessage :: UpdateReceiptFees (
1335+ * ALLOCATION_ID_0 ,
1336+ ReceiptFees :: NewReceipt ( TRIGGER_VALUE - 1 ) ,
1337+ ) )
1338+ . unwrap ( ) ;
1339+
1340+ tokio:: time:: sleep ( Duration :: from_millis ( 20 ) ) . await ;
1341+
1342+ assert_eq ! (
1343+ triggered_rav_request. load( std:: sync:: atomic:: Ordering :: SeqCst ) ,
1344+ 0
1345+ ) ;
1346+
1347+ // wait for it to be outside buffer
1348+ tokio:: time:: sleep ( Duration :: from_millis ( BUFFER_MS ) ) . await ;
1349+
1350+ sender_account
1351+ . cast ( SenderAccountMessage :: UpdateReceiptFees (
1352+ * ALLOCATION_ID_0 ,
1353+ ReceiptFees :: Retry ,
1354+ ) )
1355+ . unwrap ( ) ;
1356+
1357+ tokio:: time:: sleep ( Duration :: from_millis ( 20 ) ) . await ;
1358+
1359+ assert_eq ! (
1360+ triggered_rav_request. load( std:: sync:: atomic:: Ordering :: SeqCst ) ,
1361+ 1
1362+ ) ;
1363+
1364+ allocation. stop_and_wait ( None , None ) . await . unwrap ( ) ;
1365+ allocation_handle. await . unwrap ( ) ;
1366+
1367+ sender_account. stop_and_wait ( None , None ) . await . unwrap ( ) ;
1368+ handle. await . unwrap ( ) ;
1369+ }
1370+
13121371 #[ sqlx:: test( migrations = "../migrations" ) ]
13131372 async fn test_remove_sender_account ( pgpool : PgPool ) {
13141373 let ( sender_account, handle, prefix, _) = create_sender_account (
@@ -1317,6 +1376,7 @@ pub mod tests {
13171376 TRIGGER_VALUE ,
13181377 TRIGGER_VALUE ,
13191378 DUMMY_URL ,
1379+ RECEIPT_LIMIT ,
13201380 )
13211381 . await ;
13221382
@@ -1368,6 +1428,7 @@ pub mod tests {
13681428 TRIGGER_VALUE ,
13691429 TRIGGER_VALUE ,
13701430 DUMMY_URL ,
1431+ RECEIPT_LIMIT ,
13711432 )
13721433 . await ;
13731434
@@ -1386,6 +1447,7 @@ pub mod tests {
13861447 TRIGGER_VALUE ,
13871448 max_unaggregated_fees_per_sender,
13881449 DUMMY_URL ,
1450+ RECEIPT_LIMIT ,
13891451 )
13901452 . await ;
13911453
@@ -1435,6 +1497,7 @@ pub mod tests {
14351497 u128:: MAX ,
14361498 max_unaggregated_fees_per_sender,
14371499 DUMMY_URL ,
1500+ RECEIPT_LIMIT ,
14381501 )
14391502 . await ;
14401503
@@ -1530,6 +1593,7 @@ pub mod tests {
15301593 TRIGGER_VALUE ,
15311594 u128:: MAX ,
15321595 DUMMY_URL ,
1596+ RECEIPT_LIMIT ,
15331597 )
15341598 . await ;
15351599
@@ -1563,6 +1627,7 @@ pub mod tests {
15631627 trigger_rav_request,
15641628 u128:: MAX ,
15651629 DUMMY_URL ,
1630+ RECEIPT_LIMIT ,
15661631 )
15671632 . await ;
15681633
@@ -1668,6 +1733,7 @@ pub mod tests {
16681733 TRIGGER_VALUE ,
16691734 u128:: MAX ,
16701735 & mock_server. uri ( ) ,
1736+ RECEIPT_LIMIT ,
16711737 )
16721738 . await ;
16731739
@@ -1721,6 +1787,7 @@ pub mod tests {
17211787 TRIGGER_VALUE ,
17221788 u128:: MAX ,
17231789 DUMMY_URL ,
1790+ RECEIPT_LIMIT ,
17241791 )
17251792 . await ;
17261793
@@ -1764,6 +1831,7 @@ pub mod tests {
17641831 TRIGGER_VALUE ,
17651832 max_unaggregated_fees_per_sender,
17661833 DUMMY_URL ,
1834+ RECEIPT_LIMIT ,
17671835 )
17681836 . await ;
17691837
0 commit comments