@@ -1905,6 +1905,22 @@ pub fn fail_payment_along_route<'a, 'b, 'c>(origin_node: &Node<'a, 'b, 'c>, expe
19051905}
19061906
19071907pub fn pass_failed_payment_back < ' a , ' b , ' c > ( origin_node : & Node < ' a , ' b , ' c > , expected_paths_slice : & [ & [ & Node < ' a , ' b , ' c > ] ] , skip_last : bool , our_payment_hash : PaymentHash ) {
1908+ let expected_payment_id = pass_failed_payment_back_no_abandon ( origin_node, expected_paths_slice, skip_last, our_payment_hash) ;
1909+ if !skip_last {
1910+ origin_node. node . abandon_payment ( expected_payment_id. unwrap ( ) ) ;
1911+ let events = origin_node. node . get_and_clear_pending_events ( ) ;
1912+ assert_eq ! ( events. len( ) , 1 ) ;
1913+ match events[ 0 ] {
1914+ Event :: PaymentFailed { ref payment_hash, ref payment_id } => {
1915+ assert_eq ! ( * payment_hash, our_payment_hash, "unexpected second payment_hash" ) ;
1916+ assert_eq ! ( * payment_id, expected_payment_id. unwrap( ) ) ;
1917+ }
1918+ _ => panic ! ( "Unexpected second event" ) ,
1919+ }
1920+ }
1921+ }
1922+
1923+ pub fn pass_failed_payment_back_no_abandon < ' a , ' b , ' c > ( origin_node : & Node < ' a , ' b , ' c > , expected_paths_slice : & [ & [ & Node < ' a , ' b , ' c > ] ] , skip_last : bool , our_payment_hash : PaymentHash ) -> Option < PaymentId > {
19081924 let mut expected_paths: Vec < _ > = expected_paths_slice. iter ( ) . collect ( ) ;
19091925 check_added_monitors ! ( expected_paths[ 0 ] . last( ) . unwrap( ) , expected_paths. len( ) ) ;
19101926
@@ -1928,6 +1944,8 @@ pub fn pass_failed_payment_back<'a, 'b, 'c>(origin_node: &Node<'a, 'b, 'c>, expe
19281944 per_path_msgs. sort_unstable_by ( |( _, node_id_a) , ( _, node_id_b) | node_id_a. cmp ( node_id_b) ) ;
19291945 expected_paths. sort_unstable_by ( |path_a, path_b| path_a[ path_a. len ( ) - 2 ] . node . get_our_node_id ( ) . cmp ( & path_b[ path_b. len ( ) - 2 ] . node . get_our_node_id ( ) ) ) ;
19301946
1947+ let mut expected_payment_id = None ;
1948+
19311949 for ( i, ( expected_route, ( path_msgs, next_hop) ) ) in expected_paths. iter ( ) . zip ( per_path_msgs. drain ( ..) ) . enumerate ( ) {
19321950 let mut next_msgs = Some ( path_msgs) ;
19331951 let mut expected_next_node = next_hop;
@@ -1976,7 +1994,7 @@ pub fn pass_failed_payment_back<'a, 'b, 'c>(origin_node: &Node<'a, 'b, 'c>, expe
19761994 commitment_signed_dance ! ( origin_node, prev_node, next_msgs. as_ref( ) . unwrap( ) . 1 , false ) ;
19771995 let events = origin_node. node . get_and_clear_pending_events ( ) ;
19781996 assert_eq ! ( events. len( ) , 1 ) ;
1979- let expected_payment_id = match events[ 0 ] {
1997+ expected_payment_id = Some ( match events[ 0 ] {
19801998 Event :: PaymentPathFailed { payment_hash, payment_failed_permanently, all_paths_failed, ref path, ref payment_id, .. } => {
19811999 assert_eq ! ( payment_hash, our_payment_hash) ;
19822000 assert ! ( payment_failed_permanently) ;
@@ -1987,19 +2005,7 @@ pub fn pass_failed_payment_back<'a, 'b, 'c>(origin_node: &Node<'a, 'b, 'c>, expe
19872005 payment_id. unwrap ( )
19882006 } ,
19892007 _ => panic ! ( "Unexpected event" ) ,
1990- } ;
1991- if i == expected_paths. len ( ) - 1 {
1992- origin_node. node . abandon_payment ( expected_payment_id) ;
1993- let events = origin_node. node . get_and_clear_pending_events ( ) ;
1994- assert_eq ! ( events. len( ) , 1 ) ;
1995- match events[ 0 ] {
1996- Event :: PaymentFailed { ref payment_hash, ref payment_id } => {
1997- assert_eq ! ( * payment_hash, our_payment_hash, "unexpected second payment_hash" ) ;
1998- assert_eq ! ( * payment_id, expected_payment_id) ;
1999- }
2000- _ => panic ! ( "Unexpected second event" ) ,
2001- }
2002- }
2008+ } ) ;
20032009 }
20042010 }
20052011
@@ -2008,6 +2014,8 @@ pub fn pass_failed_payment_back<'a, 'b, 'c>(origin_node: &Node<'a, 'b, 'c>, expe
20082014 assert ! ( expected_paths[ 0 ] . last( ) . unwrap( ) . node. get_and_clear_pending_events( ) . is_empty( ) ) ;
20092015 assert ! ( expected_paths[ 0 ] . last( ) . unwrap( ) . node. get_and_clear_pending_msg_events( ) . is_empty( ) ) ;
20102016 check_added_monitors ! ( expected_paths[ 0 ] . last( ) . unwrap( ) , 0 ) ;
2017+
2018+ expected_payment_id
20112019}
20122020
20132021pub fn fail_payment < ' a , ' b , ' c > ( origin_node : & Node < ' a , ' b , ' c > , expected_path : & [ & Node < ' a , ' b , ' c > ] , our_payment_hash : PaymentHash ) {
0 commit comments