Skip to content

Commit 4054bc4

Browse files
committed
Move some additional test macros into functions
This marginally reduces the quantity of code compiled in tests further.
1 parent ea30171 commit 4054bc4

File tree

2 files changed

+51
-72
lines changed

2 files changed

+51
-72
lines changed

lightning/src/ln/functional_test_utils.rs

+49-43
Original file line numberDiff line numberDiff line change
@@ -1555,22 +1555,20 @@ macro_rules! commitment_signed_dance {
15551555
bs_revoke_and_ack
15561556
}
15571557
};
1558-
($node_a: expr, $node_b: expr, (), $fail_backwards: expr, true /* skip last step */, true /* return extra message */) => {
1559-
{
1560-
let (extra_msg_option, bs_revoke_and_ack) = $crate::ln::functional_test_utils::do_main_commitment_signed_dance(&$node_a, &$node_b, $fail_backwards);
1561-
$node_a.node.handle_revoke_and_ack(&$node_b.node.get_our_node_id(), &bs_revoke_and_ack);
1562-
$crate::ln::functional_test_utils::check_added_monitors(&$node_a, 1);
1563-
extra_msg_option
1564-
}
1565-
};
15661558
($node_a: expr, $node_b: expr, (), $fail_backwards: expr, true /* skip last step */, false /* no extra message */) => {
1567-
assert!(commitment_signed_dance!($node_a, $node_b, (), $fail_backwards, true, true).is_none());
1559+
assert!($crate::ln::functional_test_utils::commitment_signed_dance_through_cp_raa(&$node_a, &$node_b, $fail_backwards).is_none());
15681560
};
15691561
($node_a: expr, $node_b: expr, $commitment_signed: expr, $fail_backwards: expr) => {
15701562
$crate::ln::functional_test_utils::do_commitment_signed_dance(&$node_a, &$node_b, &$commitment_signed, $fail_backwards, false);
15711563
}
15721564
}
15731565

1566+
pub fn commitment_signed_dance_through_cp_raa(node_a: &Node<'_, '_, '_>, node_b: &Node<'_, '_, '_>, fail_backwards: bool) -> Option<MessageSendEvent> {
1567+
let (extra_msg_option, bs_revoke_and_ack) = do_main_commitment_signed_dance(node_a, node_b, fail_backwards);
1568+
node_a.node.handle_revoke_and_ack(&node_b.node.get_our_node_id(), &bs_revoke_and_ack);
1569+
check_added_monitors(node_a, 1);
1570+
extra_msg_option
1571+
}
15741572

15751573
pub fn do_main_commitment_signed_dance(node_a: &Node<'_, '_, '_>, node_b: &Node<'_, '_, '_>, fail_backwards: bool) -> (Option<MessageSendEvent>, msgs::RevokeAndACK) {
15761574
let (as_revoke_and_ack, as_commitment_signed) = get_revoke_commit_msgs!(node_a, node_b.node.get_our_node_id());
@@ -1741,6 +1739,44 @@ macro_rules! expect_payment_claimed {
17411739
}
17421740
}
17431741

1742+
pub fn expect_payment_sent<CM: AChannelManager, H: NodeHolder<CM=CM>>(node: &H,
1743+
expected_payment_preimage: PaymentPreimage, expected_fee_msat_opt: Option<Option<u64>>,
1744+
expect_per_path_claims: bool,
1745+
) {
1746+
let events = node.node().get_and_clear_pending_events();
1747+
let expected_payment_hash = PaymentHash(
1748+
bitcoin::hashes::sha256::Hash::hash(&expected_payment_preimage.0).into_inner());
1749+
if expect_per_path_claims {
1750+
assert!(events.len() > 1);
1751+
} else {
1752+
assert_eq!(events.len(), 1);
1753+
}
1754+
let expected_payment_id = match events[0] {
1755+
Event::PaymentSent { ref payment_id, ref payment_preimage, ref payment_hash, ref fee_paid_msat } => {
1756+
assert_eq!(expected_payment_preimage, *payment_preimage);
1757+
assert_eq!(expected_payment_hash, *payment_hash);
1758+
if let Some(expected_fee_msat) = expected_fee_msat_opt {
1759+
assert_eq!(*fee_paid_msat, expected_fee_msat);
1760+
} else {
1761+
assert!(fee_paid_msat.is_some());
1762+
}
1763+
payment_id.unwrap()
1764+
},
1765+
_ => panic!("Unexpected event"),
1766+
};
1767+
if expect_per_path_claims {
1768+
for i in 1..events.len() {
1769+
match events[i] {
1770+
Event::PaymentPathSuccessful { payment_id, payment_hash, .. } => {
1771+
assert_eq!(payment_id, expected_payment_id);
1772+
assert_eq!(payment_hash, Some(expected_payment_hash));
1773+
},
1774+
_ => panic!("Unexpected event"),
1775+
}
1776+
}
1777+
}
1778+
}
1779+
17441780
#[cfg(test)]
17451781
#[macro_export]
17461782
macro_rules! expect_payment_sent_without_paths {
@@ -1760,40 +1796,10 @@ macro_rules! expect_payment_sent {
17601796
($node: expr, $expected_payment_preimage: expr, $expected_fee_msat_opt: expr) => {
17611797
$crate::expect_payment_sent!($node, $expected_payment_preimage, $expected_fee_msat_opt, true);
17621798
};
1763-
($node: expr, $expected_payment_preimage: expr, $expected_fee_msat_opt: expr, $expect_paths: expr) => { {
1764-
use bitcoin::hashes::Hash as _;
1765-
let events = $node.node.get_and_clear_pending_events();
1766-
let expected_payment_hash = $crate::ln::PaymentHash(
1767-
bitcoin::hashes::sha256::Hash::hash(&$expected_payment_preimage.0).into_inner());
1768-
if $expect_paths {
1769-
assert!(events.len() > 1);
1770-
} else {
1771-
assert_eq!(events.len(), 1);
1772-
}
1773-
let expected_payment_id = match events[0] {
1774-
$crate::events::Event::PaymentSent { ref payment_id, ref payment_preimage, ref payment_hash, ref fee_paid_msat } => {
1775-
assert_eq!($expected_payment_preimage, *payment_preimage);
1776-
assert_eq!(expected_payment_hash, *payment_hash);
1777-
assert!(fee_paid_msat.is_some());
1778-
if $expected_fee_msat_opt.is_some() {
1779-
assert_eq!(*fee_paid_msat, $expected_fee_msat_opt);
1780-
}
1781-
payment_id.unwrap()
1782-
},
1783-
_ => panic!("Unexpected event"),
1784-
};
1785-
if $expect_paths {
1786-
for i in 1..events.len() {
1787-
match events[i] {
1788-
$crate::events::Event::PaymentPathSuccessful { payment_id, payment_hash, .. } => {
1789-
assert_eq!(payment_id, expected_payment_id);
1790-
assert_eq!(payment_hash, Some(expected_payment_hash));
1791-
},
1792-
_ => panic!("Unexpected event"),
1793-
}
1794-
}
1795-
}
1796-
} }
1799+
($node: expr, $expected_payment_preimage: expr, $expected_fee_msat_opt: expr, $expect_paths: expr) => {
1800+
$crate::ln::functional_test_utils::expect_payment_sent(&$node, $expected_payment_preimage,
1801+
$expected_fee_msat_opt.map(|o| Some(o)), $expect_paths);
1802+
}
17971803
}
17981804

17991805
#[cfg(test)]

lightning/src/ln/functional_tests.rs

+2-29
Original file line numberDiff line numberDiff line change
@@ -4897,15 +4897,7 @@ fn test_duplicate_payment_hash_one_failure_one_success() {
48974897

48984898
nodes[0].node.handle_update_fulfill_htlc(&nodes[1].node.get_our_node_id(), &updates.update_fulfill_htlcs[0]);
48994899
commitment_signed_dance!(nodes[0], nodes[1], &updates.commitment_signed, false);
4900-
4901-
let events = nodes[0].node.get_and_clear_pending_events();
4902-
match events[0] {
4903-
Event::PaymentSent { ref payment_preimage, ref payment_hash, .. } => {
4904-
assert_eq!(*payment_preimage, our_payment_preimage);
4905-
assert_eq!(*payment_hash, duplicate_payment_hash);
4906-
}
4907-
_ => panic!("Unexpected event"),
4908-
}
4900+
expect_payment_sent(&nodes[0], our_payment_preimage, None, true);
49094901
}
49104902

49114903
#[test]
@@ -9481,26 +9473,7 @@ fn test_inconsistent_mpp_params() {
94819473
pass_along_path(&nodes[0], &[&nodes[2], &nodes[3]], 15_000_000, our_payment_hash, Some(our_payment_secret), events.pop().unwrap(), true, None);
94829474

94839475
do_claim_payment_along_route(&nodes[0], &[&[&nodes[1], &nodes[3]], &[&nodes[2], &nodes[3]]], false, our_payment_preimage);
9484-
let events = nodes[0].node.get_and_clear_pending_events();
9485-
assert_eq!(events.len(), 3);
9486-
match events[0] {
9487-
Event::PaymentSent { payment_hash, .. } => { // The payment was abandoned earlier, so the fee paid will be None
9488-
assert_eq!(payment_hash, our_payment_hash);
9489-
},
9490-
_ => panic!("Unexpected event")
9491-
}
9492-
match events[1] {
9493-
Event::PaymentPathSuccessful { payment_hash, .. } => {
9494-
assert_eq!(payment_hash.unwrap(), our_payment_hash);
9495-
},
9496-
_ => panic!("Unexpected event")
9497-
}
9498-
match events[2] {
9499-
Event::PaymentPathSuccessful { payment_hash, .. } => {
9500-
assert_eq!(payment_hash.unwrap(), our_payment_hash);
9501-
},
9502-
_ => panic!("Unexpected event")
9503-
}
9476+
expect_payment_sent(&nodes[0], our_payment_preimage, Some(None), true);
95049477
}
95059478

95069479
#[test]

0 commit comments

Comments
 (0)