Skip to content

Commit 7c8f154

Browse files
committed
Stop reorg nodes before runtime exit
Stop all reorg test nodes on helper threads before leaving each property case so shutdown does not park the Tokio worker. Co-Authored-By: HAL 9000
1 parent 15edfdd commit 7c8f154

2 files changed

Lines changed: 40 additions & 1 deletion

File tree

tests/common/mod.rs

Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -730,6 +730,43 @@ where
730730
}
731731
}
732732

733+
pub(crate) async fn stop_nodes(node_a: TestNode, node_b: TestNode) {
734+
let (stop_a_sender, stop_a_receiver) = tokio::sync::oneshot::channel();
735+
let (stop_b_sender, stop_b_receiver) = tokio::sync::oneshot::channel();
736+
std::thread::spawn(move || {
737+
let _ = stop_a_sender.send(node_a.stop());
738+
});
739+
std::thread::spawn(move || {
740+
let _ = stop_b_sender.send(node_b.stop());
741+
});
742+
stop_a_receiver.await.expect("node_a stop thread panicked").unwrap();
743+
stop_b_receiver.await.expect("node_b stop thread panicked").unwrap();
744+
}
745+
746+
pub(crate) async fn stop_nodes_concurrently(nodes: Vec<TestNode>) {
747+
let stop_receivers = nodes
748+
.into_iter()
749+
.map(|node| {
750+
let (stop_sender, stop_receiver) = tokio::sync::oneshot::channel();
751+
std::thread::spawn(move || {
752+
let _ = stop_sender.send(node.stop());
753+
});
754+
stop_receiver
755+
})
756+
.collect::<Vec<_>>();
757+
758+
for stop_receiver in stop_receivers {
759+
stop_receiver.await.expect("node stop thread panicked").unwrap();
760+
}
761+
}
762+
763+
pub(crate) async fn stop_node(node: TestNode) {
764+
let (stop_sender, stop_receiver) = tokio::sync::oneshot::channel();
765+
std::thread::spawn(move || {
766+
let _ = stop_sender.send(node.stop());
767+
});
768+
stop_receiver.await.expect("node stop thread panicked").unwrap();
769+
}
733770
pub(crate) async fn premine_and_distribute_funds<E: ElectrumApi>(
734771
bitcoind: &BitcoindClient, electrs: &E, addrs: Vec<Address>, amount: Amount,
735772
) {

tests/reorg_test.rs

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ use proptest::proptest;
1111
use crate::common::{
1212
expect_event, generate_blocks_and_wait, invalidate_blocks, open_channel,
1313
premine_and_distribute_funds, random_chain_source, random_config, setup_bitcoind_and_electrsd,
14-
setup_node, wait_for_outpoint_spend,
14+
setup_node, stop_nodes_concurrently, wait_for_outpoint_spend,
1515
};
1616

1717
async fn wait_for_pending_sweep_balance<F>(node: &ldk_node::Node, mut matches_pending_balance: F)
@@ -236,6 +236,8 @@ proptest! {
236236

237237
assert_eq!(node.next_event(), None);
238238
});
239+
240+
stop_nodes_concurrently(nodes).await;
239241
})
240242
}
241243
}

0 commit comments

Comments
 (0)