Skip to content

Commit 22d7511

Browse files
committed
Wait for return payment in benches
Wait for the cleanup payment to settle before starting the next payment benchmark sample. This keeps the measured forward-payment duration intact while avoiding HTLC state leaking into later samples. AI tools: Created with assistance from OpenAI Codex.
1 parent ef8694f commit 22d7511

1 file changed

Lines changed: 23 additions & 1 deletion

File tree

benches/payments.rs

Lines changed: 23 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@ use common::{
1919
};
2020
use criterion::{criterion_group, criterion_main, Criterion};
2121
use ldk_node::{Event, Node};
22+
use lightning::ln::channelmanager::PaymentId;
2223
use lightning_types::payment::{PaymentHash, PaymentPreimage};
2324
use rand::RngCore;
2425
use tokio::task::{self};
@@ -115,7 +116,7 @@ async fn send_payments(node_a: Arc<Node>, node_b: Arc<Node>) -> std::time::Durat
115116
// Send back the money for the next iteration.
116117
let mut preimage_bytes = [0u8; 32];
117118
rand::rng().fill_bytes(&mut preimage_bytes);
118-
node_b
119+
let return_payment_id = node_b
119120
.spontaneous_payment()
120121
.send_with_preimage(
121122
amount_msat * total_payments,
@@ -125,10 +126,31 @@ async fn send_payments(node_a: Arc<Node>, node_b: Arc<Node>) -> std::time::Durat
125126
)
126127
.ok()
127128
.unwrap();
129+
wait_for_payment_success(&node_b, return_payment_id).await;
128130

129131
duration
130132
}
131133

134+
async fn wait_for_payment_success(node: &Node, expected_payment_id: PaymentId) {
135+
loop {
136+
match node.next_event_async().await {
137+
Event::PaymentSuccessful { payment_id: Some(payment_id), .. }
138+
if payment_id == expected_payment_id =>
139+
{
140+
node.event_handled().unwrap();
141+
break;
142+
},
143+
Event::PaymentFailed { payment_id, payment_hash, .. } => {
144+
node.event_handled().unwrap();
145+
panic!("Return payment {:?} failed with hash {:?}", payment_id, payment_hash);
146+
},
147+
_ => {
148+
node.event_handled().unwrap();
149+
},
150+
}
151+
}
152+
}
153+
132154
fn payment_benchmark(c: &mut Criterion) {
133155
dotenvy::dotenv().ok();
134156

0 commit comments

Comments
 (0)