From 6c3029ddd8106c31e100e47bba3eb2220e2d2efd Mon Sep 17 00:00:00 2001 From: Matt Corallo Date: Tue, 11 Jul 2023 19:49:41 +0000 Subject: [PATCH] Split `expect_payment_forwarded` into a function called by macro Also allowing us to pass the event manually. --- lightning/src/ln/functional_test_utils.rs | 51 +++++++++++++---------- 1 file changed, 30 insertions(+), 21 deletions(-) diff --git a/lightning/src/ln/functional_test_utils.rs b/lightning/src/ln/functional_test_utils.rs index c677d12d..f6684485 100644 --- a/lightning/src/ln/functional_test_utils.rs +++ b/lightning/src/ln/functional_test_utils.rs @@ -2005,29 +2005,38 @@ macro_rules! expect_payment_path_successful { } } +pub fn expect_payment_forwarded>( + event: Event, node: &H, prev_node: &H, next_node: &H, expected_fee: Option, + upstream_force_closed: bool, downstream_force_closed: bool +) { + match event { + Event::PaymentForwarded { + fee_earned_msat, prev_channel_id, claim_from_onchain_tx, next_channel_id, + outbound_amount_forwarded_msat: _ + } => { + assert_eq!(fee_earned_msat, expected_fee); + if !upstream_force_closed { + // Is the event prev_channel_id in one of the channels between the two nodes? + assert!(node.node().list_channels().iter().any(|x| x.counterparty.node_id == prev_node.node().get_our_node_id() && x.channel_id == prev_channel_id.unwrap())); + } + // We check for force closures since a force closed channel is removed from the + // node's channel list + if !downstream_force_closed { + assert!(node.node().list_channels().iter().any(|x| x.counterparty.node_id == next_node.node().get_our_node_id() && x.channel_id == next_channel_id.unwrap())); + } + assert_eq!(claim_from_onchain_tx, downstream_force_closed); + }, + _ => panic!("Unexpected event"), + } +} + macro_rules! expect_payment_forwarded { ($node: expr, $prev_node: expr, $next_node: expr, $expected_fee: expr, $upstream_force_closed: expr, $downstream_force_closed: expr) => { - let events = $node.node.get_and_clear_pending_events(); + let mut events = $node.node.get_and_clear_pending_events(); assert_eq!(events.len(), 1); - match events[0] { - Event::PaymentForwarded { - fee_earned_msat, prev_channel_id, claim_from_onchain_tx, next_channel_id, - outbound_amount_forwarded_msat: _ - } => { - assert_eq!(fee_earned_msat, $expected_fee); - if !$upstream_force_closed { - // Is the event prev_channel_id in one of the channels between the two nodes? - assert!($node.node.list_channels().iter().any(|x| x.counterparty.node_id == $prev_node.node.get_our_node_id() && x.channel_id == prev_channel_id.unwrap())); - } - // We check for force closures since a force closed channel is removed from the - // node's channel list - if !$downstream_force_closed { - assert!($node.node.list_channels().iter().any(|x| x.counterparty.node_id == $next_node.node.get_our_node_id() && x.channel_id == next_channel_id.unwrap())); - } - assert_eq!(claim_from_onchain_tx, $downstream_force_closed); - }, - _ => panic!("Unexpected event"), - } + $crate::ln::functional_test_utils::expect_payment_forwarded( + events.pop().unwrap(), &$node, &$prev_node, &$next_node, $expected_fee, + $upstream_force_closed, $downstream_force_closed); } } @@ -2404,7 +2413,7 @@ pub fn pass_claimed_payment_along_route<'a, 'b, 'c>(origin_node: &Node<'a, 'b, ' } }; if $idx == 1 { fee += expected_extra_fees[i]; } - expect_payment_forwarded!($node, $next_node, $prev_node, Some(fee as u64), false, false); + expect_payment_forwarded!(*$node, $next_node, $prev_node, Some(fee as u64), false, false); expected_total_fee_msat += fee as u64; check_added_monitors!($node, 1); let new_next_msgs = if $new_msgs { -- 2.30.2