Skip to content

Commit 9e0cfc5

Browse files
authored
Merge pull request #799 from joostjager/fix-async-payment-test
Fix flaky async_payment test due to non-deterministic event ordering
2 parents 2f5a966 + 16d567a commit 9e0cfc5

File tree

2 files changed

+45
-10
lines changed

2 files changed

+45
-10
lines changed

tests/common/mod.rs

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -98,6 +98,34 @@ macro_rules! expect_channel_ready_event {
9898

9999
pub(crate) use expect_channel_ready_event;
100100

101+
macro_rules! expect_channel_ready_events {
102+
($node:expr, $counterparty_node_id_a:expr, $counterparty_node_id_b:expr) => {{
103+
let mut ids = Vec::new();
104+
for _ in 0..2 {
105+
match $node.next_event_async().await {
106+
ref e @ Event::ChannelReady { counterparty_node_id, .. } => {
107+
println!("{} got event {:?}", $node.node_id(), e);
108+
ids.push(counterparty_node_id);
109+
$node.event_handled().unwrap();
110+
},
111+
ref e => {
112+
panic!("{} got unexpected event!: {:?}", std::stringify!($node), e);
113+
},
114+
}
115+
}
116+
assert!(
117+
ids.contains(&Some($counterparty_node_id_a))
118+
&& ids.contains(&Some($counterparty_node_id_b)),
119+
"Expected ChannelReady events from {:?} and {:?}, but got {:?}",
120+
$counterparty_node_id_a,
121+
$counterparty_node_id_b,
122+
ids
123+
);
124+
}};
125+
}
126+
127+
pub(crate) use expect_channel_ready_events;
128+
101129
macro_rules! expect_splice_pending_event {
102130
($node:expr, $counterparty_node_id:expr) => {{
103131
match $node.next_event_async().await {

tests/integration_tests_rust.rs

Lines changed: 17 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -18,12 +18,13 @@ use bitcoin::{Address, Amount, ScriptBuf, Txid};
1818
use common::logging::{init_log_logger, validate_log_entry, MultiNodeLogger, TestLogWriter};
1919
use common::{
2020
bump_fee_and_broadcast, distribute_funds_unconfirmed, do_channel_full_cycle,
21-
expect_channel_pending_event, expect_channel_ready_event, expect_event,
22-
expect_payment_claimable_event, expect_payment_received_event, expect_payment_successful_event,
23-
expect_splice_pending_event, generate_blocks_and_wait, open_channel, open_channel_push_amt,
24-
premine_and_distribute_funds, premine_blocks, prepare_rbf, random_chain_source, random_config,
25-
random_listening_addresses, setup_bitcoind_and_electrsd, setup_builder, setup_node,
26-
setup_two_nodes, wait_for_tx, TestChainSource, TestStoreType, TestSyncStore,
21+
expect_channel_pending_event, expect_channel_ready_event, expect_channel_ready_events,
22+
expect_event, expect_payment_claimable_event, expect_payment_received_event,
23+
expect_payment_successful_event, expect_splice_pending_event, generate_blocks_and_wait,
24+
open_channel, open_channel_push_amt, premine_and_distribute_funds, premine_blocks, prepare_rbf,
25+
random_chain_source, random_config, random_listening_addresses, setup_bitcoind_and_electrsd,
26+
setup_builder, setup_node, setup_two_nodes, wait_for_tx, TestChainSource, TestStoreType,
27+
TestSyncStore,
2728
};
2829
use ldk_node::config::{AsyncPaymentsRole, EsploraSyncConfig};
2930
use ldk_node::entropy::NodeEntropy;
@@ -1343,10 +1344,16 @@ async fn async_payment() {
13431344
node_receiver.sync_wallets().unwrap();
13441345

13451346
expect_channel_ready_event!(node_sender, node_sender_lsp.node_id());
1346-
expect_channel_ready_event!(node_sender_lsp, node_sender.node_id());
1347-
expect_channel_ready_event!(node_sender_lsp, node_receiver_lsp.node_id());
1348-
expect_channel_ready_event!(node_receiver_lsp, node_sender_lsp.node_id());
1349-
expect_channel_ready_event!(node_receiver_lsp, node_receiver.node_id());
1347+
expect_channel_ready_events!(
1348+
node_sender_lsp,
1349+
node_sender.node_id(),
1350+
node_receiver_lsp.node_id()
1351+
);
1352+
expect_channel_ready_events!(
1353+
node_receiver_lsp,
1354+
node_sender_lsp.node_id(),
1355+
node_receiver.node_id()
1356+
);
13501357
expect_channel_ready_event!(node_receiver, node_receiver_lsp.node_id());
13511358

13521359
let has_node_announcements = |node: &ldk_node::Node| {

0 commit comments

Comments
 (0)