@@ -1905,6 +1905,22 @@ pub fn fail_payment_along_route<'a, 'b, 'c>(origin_node: &Node<'a, 'b, 'c>, expe
1905
1905
}
1906
1906
1907
1907
pub 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 > {
1908
1924
let mut expected_paths: Vec < _ > = expected_paths_slice. iter ( ) . collect ( ) ;
1909
1925
check_added_monitors ! ( expected_paths[ 0 ] . last( ) . unwrap( ) , expected_paths. len( ) ) ;
1910
1926
@@ -1928,6 +1944,8 @@ pub fn pass_failed_payment_back<'a, 'b, 'c>(origin_node: &Node<'a, 'b, 'c>, expe
1928
1944
per_path_msgs. sort_unstable_by ( |( _, node_id_a) , ( _, node_id_b) | node_id_a. cmp ( node_id_b) ) ;
1929
1945
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 ( ) ) ) ;
1930
1946
1947
+ let mut expected_payment_id = None ;
1948
+
1931
1949
for ( i, ( expected_route, ( path_msgs, next_hop) ) ) in expected_paths. iter ( ) . zip ( per_path_msgs. drain ( ..) ) . enumerate ( ) {
1932
1950
let mut next_msgs = Some ( path_msgs) ;
1933
1951
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
1976
1994
commitment_signed_dance ! ( origin_node, prev_node, next_msgs. as_ref( ) . unwrap( ) . 1 , false ) ;
1977
1995
let events = origin_node. node . get_and_clear_pending_events ( ) ;
1978
1996
assert_eq ! ( events. len( ) , 1 ) ;
1979
- let expected_payment_id = match events[ 0 ] {
1997
+ expected_payment_id = Some ( match events[ 0 ] {
1980
1998
Event :: PaymentPathFailed { payment_hash, payment_failed_permanently, all_paths_failed, ref path, ref payment_id, .. } => {
1981
1999
assert_eq ! ( payment_hash, our_payment_hash) ;
1982
2000
assert ! ( payment_failed_permanently) ;
@@ -1987,19 +2005,7 @@ pub fn pass_failed_payment_back<'a, 'b, 'c>(origin_node: &Node<'a, 'b, 'c>, expe
1987
2005
payment_id. unwrap ( )
1988
2006
} ,
1989
2007
_ => 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
+ } ) ;
2003
2009
}
2004
2010
}
2005
2011
@@ -2008,6 +2014,8 @@ pub fn pass_failed_payment_back<'a, 'b, 'c>(origin_node: &Node<'a, 'b, 'c>, expe
2008
2014
assert ! ( expected_paths[ 0 ] . last( ) . unwrap( ) . node. get_and_clear_pending_events( ) . is_empty( ) ) ;
2009
2015
assert ! ( expected_paths[ 0 ] . last( ) . unwrap( ) . node. get_and_clear_pending_msg_events( ) . is_empty( ) ) ;
2010
2016
check_added_monitors ! ( expected_paths[ 0 ] . last( ) . unwrap( ) , 0 ) ;
2017
+
2018
+ expected_payment_id
2011
2019
}
2012
2020
2013
2021
pub 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