@@ -569,7 +569,6 @@ impl Actor for SenderAccount {
569569 ) ;
570570 SenderAccount :: deny_sender ( & state. pgpool , state. sender ) . await ;
571571 }
572-
573572 state. sender_fee_tracker . add ( allocation_id, value) ;
574573
575574 UNAGGREGATED_FEES
@@ -647,7 +646,6 @@ impl Actor for SenderAccount {
647646 state. sender_fee_tracker . get_total_fee_outside_buffer ( ) ;
648647 let total_fee_greater_trigger_value =
649648 total_fee_outside_buffer >= state. config . tap . rav_request_trigger_value ;
650-
651649 let rav_result = match (
652650 counter_greater_receipt_limit,
653651 total_fee_greater_trigger_value,
@@ -980,13 +978,15 @@ pub mod tests {
980978 const TRIGGER_VALUE : u128 = 500 ;
981979 const ESCROW_VALUE : u128 = 1000 ;
982980 const BUFFER_MS : u64 = 100 ;
981+ const RECEIPT_LIMIT : u64 = 10000 ;
983982
984983 async fn create_sender_account (
985984 pgpool : PgPool ,
986985 initial_allocation : HashSet < Address > ,
987986 rav_request_trigger_value : u128 ,
988987 max_unnaggregated_fees_per_sender : u128 ,
989988 escrow_subgraph_endpoint : & str ,
989+ rav_request_receipt_limit : u64 ,
990990 ) -> (
991991 ActorRef < SenderAccountMessage > ,
992992 tokio:: task:: JoinHandle < ( ) > ,
@@ -1003,6 +1003,7 @@ pub mod tests {
10031003 rav_request_timestamp_buffer_ms : BUFFER_MS ,
10041004 rav_request_timeout_secs : 5 ,
10051005 max_unnaggregated_fees_per_sender,
1006+ rav_request_receipt_limit,
10061007 ..Default :: default ( )
10071008 } ,
10081009 ..Default :: default ( )
@@ -1054,6 +1055,7 @@ pub mod tests {
10541055 TRIGGER_VALUE ,
10551056 TRIGGER_VALUE ,
10561057 DUMMY_URL ,
1058+ RECEIPT_LIMIT ,
10571059 )
10581060 . await ;
10591061
@@ -1094,6 +1096,7 @@ pub mod tests {
10941096 TRIGGER_VALUE ,
10951097 TRIGGER_VALUE ,
10961098 DUMMY_URL ,
1099+ RECEIPT_LIMIT ,
10971100 )
10981101 . await ;
10991102
@@ -1294,6 +1297,7 @@ pub mod tests {
12941297 TRIGGER_VALUE ,
12951298 TRIGGER_VALUE ,
12961299 DUMMY_URL ,
1300+ RECEIPT_LIMIT ,
12971301 )
12981302 . await ;
12991303
@@ -1336,6 +1340,7 @@ pub mod tests {
13361340 TRIGGER_VALUE ,
13371341 TRIGGER_VALUE ,
13381342 DUMMY_URL ,
1343+ RECEIPT_LIMIT ,
13391344 )
13401345 . await ;
13411346
@@ -1387,6 +1392,60 @@ pub mod tests {
13871392 handle. await . unwrap ( ) ;
13881393 }
13891394
1395+ #[ sqlx:: test( migrations = "../migrations" ) ]
1396+ async fn test_counter_greater_limit_trigger_rav ( pgpool : PgPool ) {
1397+ let ( sender_account, handle, prefix, _) = create_sender_account (
1398+ pgpool,
1399+ HashSet :: new ( ) ,
1400+ TRIGGER_VALUE ,
1401+ TRIGGER_VALUE ,
1402+ DUMMY_URL ,
1403+ 1 ,
1404+ )
1405+ . await ;
1406+
1407+ let ( triggered_rav_request, _, allocation, allocation_handle) =
1408+ create_mock_sender_allocation ( prefix, SENDER . 1 , * ALLOCATION_ID_0 ) . await ;
1409+
1410+ // create a fake sender allocation
1411+ sender_account
1412+ . cast ( SenderAccountMessage :: UpdateReceiptFees (
1413+ * ALLOCATION_ID_0 ,
1414+ ReceiptFees :: NewReceipt ( TRIGGER_VALUE - 1 ) ,
1415+ ) )
1416+ . unwrap ( ) ;
1417+
1418+ tokio:: time:: sleep ( Duration :: from_millis ( 20 ) ) . await ;
1419+
1420+ assert_eq ! (
1421+ triggered_rav_request. load( std:: sync:: atomic:: Ordering :: SeqCst ) ,
1422+ 0
1423+ ) ;
1424+
1425+ // wait for it to be outside buffer
1426+ tokio:: time:: sleep ( Duration :: from_millis ( BUFFER_MS ) ) . await ;
1427+
1428+ sender_account
1429+ . cast ( SenderAccountMessage :: UpdateReceiptFees (
1430+ * ALLOCATION_ID_0 ,
1431+ ReceiptFees :: Retry ,
1432+ ) )
1433+ . unwrap ( ) ;
1434+
1435+ tokio:: time:: sleep ( Duration :: from_millis ( 20 ) ) . await ;
1436+
1437+ assert_eq ! (
1438+ triggered_rav_request. load( std:: sync:: atomic:: Ordering :: SeqCst ) ,
1439+ 1
1440+ ) ;
1441+
1442+ allocation. stop_and_wait ( None , None ) . await . unwrap ( ) ;
1443+ allocation_handle. await . unwrap ( ) ;
1444+
1445+ sender_account. stop_and_wait ( None , None ) . await . unwrap ( ) ;
1446+ handle. await . unwrap ( ) ;
1447+ }
1448+
13901449 #[ sqlx:: test( migrations = "../migrations" ) ]
13911450 async fn test_remove_sender_account ( pgpool : PgPool ) {
13921451 let ( sender_account, handle, prefix, _) = create_sender_account (
@@ -1395,6 +1454,7 @@ pub mod tests {
13951454 TRIGGER_VALUE ,
13961455 TRIGGER_VALUE ,
13971456 DUMMY_URL ,
1457+ RECEIPT_LIMIT ,
13981458 )
13991459 . await ;
14001460
@@ -1446,6 +1506,7 @@ pub mod tests {
14461506 TRIGGER_VALUE ,
14471507 TRIGGER_VALUE ,
14481508 DUMMY_URL ,
1509+ RECEIPT_LIMIT ,
14491510 )
14501511 . await ;
14511512
@@ -1464,6 +1525,7 @@ pub mod tests {
14641525 TRIGGER_VALUE ,
14651526 max_unaggregated_fees_per_sender,
14661527 DUMMY_URL ,
1528+ RECEIPT_LIMIT ,
14671529 )
14681530 . await ;
14691531
@@ -1519,6 +1581,7 @@ pub mod tests {
15191581 u128:: MAX ,
15201582 max_unaggregated_fees_per_sender,
15211583 DUMMY_URL ,
1584+ RECEIPT_LIMIT ,
15221585 )
15231586 . await ;
15241587
@@ -1614,6 +1677,7 @@ pub mod tests {
16141677 TRIGGER_VALUE ,
16151678 u128:: MAX ,
16161679 DUMMY_URL ,
1680+ RECEIPT_LIMIT ,
16171681 )
16181682 . await ;
16191683
@@ -1647,6 +1711,7 @@ pub mod tests {
16471711 trigger_rav_request,
16481712 u128:: MAX ,
16491713 DUMMY_URL ,
1714+ RECEIPT_LIMIT ,
16501715 )
16511716 . await ;
16521717
@@ -1752,6 +1817,7 @@ pub mod tests {
17521817 TRIGGER_VALUE ,
17531818 u128:: MAX ,
17541819 & mock_server. uri ( ) ,
1820+ RECEIPT_LIMIT ,
17551821 )
17561822 . await ;
17571823
@@ -1805,6 +1871,7 @@ pub mod tests {
18051871 TRIGGER_VALUE ,
18061872 u128:: MAX ,
18071873 DUMMY_URL ,
1874+ RECEIPT_LIMIT ,
18081875 )
18091876 . await ;
18101877
@@ -1848,6 +1915,7 @@ pub mod tests {
18481915 TRIGGER_VALUE ,
18491916 max_unaggregated_fees_per_sender,
18501917 DUMMY_URL ,
1918+ RECEIPT_LIMIT ,
18511919 )
18521920 . await ;
18531921
0 commit comments