Move `Persist` trait to chainmonitor as that's the only reference
[rust-lightning] / lightning / src / ln / functional_test_utils.rs
index 9fbbcfff39c9701306f0c06e0dcc47c0fdd7728b..63dfae514c573d3a18ac6eb2d8539fd7ac0f01d9 100644 (file)
@@ -763,21 +763,29 @@ macro_rules! check_closed_broadcast {
        }}
 }
 
-/// Check that a channel's closing channel event has been issued
+/// Check that a channel's closing channel events has been issued
 #[macro_export]
 macro_rules! check_closed_event {
-       ($node: expr, $events: expr, $reason: expr) => {{
+       ($node: expr, $events: expr, $reason: expr) => {
+               check_closed_event!($node, $events, $reason, false);
+       };
+       ($node: expr, $events: expr, $reason: expr, $is_check_discard_funding: expr) => {{
                let events = $node.node.get_and_clear_pending_events();
                assert_eq!(events.len(), $events);
                let expected_reason = $reason;
+               let mut issues_discard_funding = false;
                for event in events {
                        match event {
                                Event::ChannelClosed { ref reason, .. } => {
                                        assert_eq!(*reason, expected_reason);
                                },
+                               Event::DiscardFunding { .. } => {
+                                       issues_discard_funding = true;
+                               }
                                _ => panic!("Unexpected event"),
                        }
                }
+               assert_eq!($is_check_discard_funding, issues_discard_funding);
        }}
 }
 
@@ -965,10 +973,16 @@ macro_rules! commitment_signed_dance {
 macro_rules! get_payment_preimage_hash {
        ($dest_node: expr) => {
                {
-                       let payment_preimage = PaymentPreimage([*$dest_node.network_payment_count.borrow(); 32]);
-                       *$dest_node.network_payment_count.borrow_mut() += 1;
+                       get_payment_preimage_hash!($dest_node, None)
+               }
+       };
+       ($dest_node: expr, $min_value_msat: expr) => {
+               {
+                       let mut payment_count = $dest_node.network_payment_count.borrow_mut();
+                       let payment_preimage = PaymentPreimage([*payment_count; 32]);
+                       *payment_count += 1;
                        let payment_hash = PaymentHash(Sha256::hash(&payment_preimage.0[..]).into_inner());
-                       let payment_secret = $dest_node.node.create_inbound_payment_for_hash(payment_hash, None, 7200, 0).unwrap();
+                       let payment_secret = $dest_node.node.create_inbound_payment_for_hash(payment_hash, $min_value_msat, 7200, 0).unwrap();
                        (payment_preimage, payment_hash, payment_secret)
                }
        }
@@ -977,11 +991,17 @@ macro_rules! get_payment_preimage_hash {
 #[cfg(test)]
 macro_rules! get_route_and_payment_hash {
        ($send_node: expr, $recv_node: expr, $recv_value: expr) => {{
-               let (payment_preimage, payment_hash, payment_secret) = get_payment_preimage_hash!($recv_node);
+               get_route_and_payment_hash!($send_node, $recv_node, vec![], $recv_value, TEST_FINAL_CLTV)
+       }};
+       ($send_node: expr, $recv_node: expr, $last_hops: expr, $recv_value: expr, $cltv: expr) => {{
+               let (payment_preimage, payment_hash, payment_secret) = get_payment_preimage_hash!($recv_node, Some($recv_value));
                let net_graph_msg_handler = &$send_node.net_graph_msg_handler;
-               let route = get_route(&$send_node.node.get_our_node_id(),
-                       &net_graph_msg_handler.network_graph,
-                       &$recv_node.node.get_our_node_id(), None, None, &Vec::new(), $recv_value, TEST_FINAL_CLTV, $send_node.logger).unwrap();
+               let route = ::routing::router::get_route(
+                       &$send_node.node.get_our_node_id(), &net_graph_msg_handler.network_graph,
+                       &$recv_node.node.get_our_node_id(), Some(::ln::features::InvoiceFeatures::known()),
+                       Some(&$send_node.node.list_usable_channels().iter().collect::<Vec<_>>()),
+                       &$last_hops, $recv_value, $cltv, $send_node.logger
+               ).unwrap();
                (route, payment_hash, payment_preimage, payment_secret)
        }}
 }
@@ -1043,10 +1063,12 @@ macro_rules! expect_payment_received {
 macro_rules! expect_payment_sent {
        ($node: expr, $expected_payment_preimage: expr) => {
                let events = $node.node.get_and_clear_pending_events();
+               let expected_payment_hash = PaymentHash(Sha256::hash(&$expected_payment_preimage.0).into_inner());
                assert_eq!(events.len(), 1);
                match events[0] {
-                       Event::PaymentSent { ref payment_preimage } => {
+                       Event::PaymentSent { ref payment_preimage, ref payment_hash } => {
                                assert_eq!($expected_payment_preimage, *payment_preimage);
+                               assert_eq!(expected_payment_hash, *payment_hash);
                        },
                        _ => panic!("Unexpected event"),
                }