Skip to content

Commit bdd31ec

Browse files
committed
test: added test for counter
1 parent 74a6f89 commit bdd31ec

File tree

2 files changed

+71
-2
lines changed

2 files changed

+71
-2
lines changed

tap-agent/src/agent/sender_account.rs

Lines changed: 70 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -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

tap-agent/src/agent/sender_fee_tracker.rs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -99,6 +99,7 @@ impl SenderFeeTracker {
9999
expiring_sum.sum += value;
100100
}
101101
self.total_fee += value;
102+
102103
let entry = self.id_to_fee.entry(id).or_default();
103104
entry.fee += value;
104105
entry.count += 1;

0 commit comments

Comments
 (0)