@@ -731,16 +731,16 @@ macro_rules! get_closing_signed_broadcast {
731
731
#[ macro_export]
732
732
macro_rules! check_closed_broadcast {
733
733
( $node: expr, $with_error_msg: expr) => { {
734
- let events = $node. node. get_and_clear_pending_msg_events( ) ;
735
- assert_eq!( events . len( ) , if $with_error_msg { 2 } else { 1 } ) ;
736
- match events [ 0 ] {
734
+ let msg_events = $node. node. get_and_clear_pending_msg_events( ) ;
735
+ assert_eq!( msg_events . len( ) , if $with_error_msg { 2 } else { 1 } ) ;
736
+ match msg_events [ 0 ] {
737
737
MessageSendEvent :: BroadcastChannelUpdate { ref msg } => {
738
738
assert_eq!( msg. contents. flags & 2 , 2 ) ;
739
739
} ,
740
740
_ => panic!( "Unexpected event" ) ,
741
741
}
742
742
if $with_error_msg {
743
- match events [ 1 ] {
743
+ match msg_events [ 1 ] {
744
744
MessageSendEvent :: HandleError { action: ErrorAction :: SendErrorMessage { ref msg } , node_id: _ } => {
745
745
// TODO: Check node_id
746
746
Some ( msg. clone( ) )
@@ -751,6 +751,19 @@ macro_rules! check_closed_broadcast {
751
751
} }
752
752
}
753
753
754
+ /// Check that a channel's closing channel event has been issued
755
+ #[ macro_export]
756
+ macro_rules! check_closed_event {
757
+ ( $node: expr, $events: expr) => { {
758
+ let events = $node. node. get_and_clear_pending_events( ) ;
759
+ assert_eq!( events. len( ) , $events) ;
760
+ match events[ 0 ] {
761
+ Event :: ChannelClosed { .. } => { }
762
+ _ => panic!( "Unexpected event" ) ,
763
+ }
764
+ } }
765
+ }
766
+
754
767
pub fn close_channel < ' a , ' b , ' c > ( outbound_node : & Node < ' a , ' b , ' c > , inbound_node : & Node < ' a , ' b , ' c > , channel_id : & [ u8 ; 32 ] , funding_tx : Transaction , close_inbound_first : bool ) -> ( msgs:: ChannelUpdate , msgs:: ChannelUpdate , Transaction ) {
755
768
let ( node_a, broadcaster_a, struct_a) = if close_inbound_first { ( & inbound_node. node , & inbound_node. tx_broadcaster , inbound_node) } else { ( & outbound_node. node , & outbound_node. tx_broadcaster , outbound_node) } ;
756
769
let ( node_b, broadcaster_b) = if close_inbound_first { ( & outbound_node. node , & outbound_node. tx_broadcaster ) } else { ( & inbound_node. node , & inbound_node. tx_broadcaster ) } ;
@@ -911,7 +924,8 @@ macro_rules! commitment_signed_dance {
911
924
{
912
925
commitment_signed_dance!( $node_a, $node_b, $commitment_signed, $fail_backwards, true ) ;
913
926
if $fail_backwards {
914
- expect_pending_htlcs_forwardable!( $node_a) ;
927
+ let events = $node_a. node. get_and_clear_pending_events( ) ;
928
+ expect_pending_htlcs_forwardable!( $node_a, events) ;
915
929
check_added_monitors!( $node_a, 1 ) ;
916
930
917
931
let channel_state = $node_a. node. channel_state. lock( ) . unwrap( ) ;
@@ -953,19 +967,18 @@ macro_rules! get_route_and_payment_hash {
953
967
}
954
968
955
969
macro_rules! expect_pending_htlcs_forwardable_ignore {
956
- ( $node: expr) => { {
957
- let events = $node. node. get_and_clear_pending_events( ) ;
958
- assert_eq!( events. len( ) , 1 ) ;
959
- match events[ 0 ] {
970
+ ( $node: expr, $events: expr) => { {
971
+ assert_eq!( $events. len( ) , 1 ) ;
972
+ match $events[ 0 ] {
960
973
Event :: PendingHTLCsForwardable { .. } => { } ,
961
974
_ => panic!( "Unexpected event" ) ,
962
975
} ;
963
976
} }
964
977
}
965
978
966
979
macro_rules! expect_pending_htlcs_forwardable {
967
- ( $node: expr) => { {
968
- expect_pending_htlcs_forwardable_ignore!( $node) ;
980
+ ( $node: expr, $events : expr ) => { {
981
+ expect_pending_htlcs_forwardable_ignore!( $node, $events ) ;
969
982
$node. node. process_pending_htlc_forwards( ) ;
970
983
} }
971
984
}
@@ -988,10 +1001,9 @@ macro_rules! expect_payment_received {
988
1001
}
989
1002
990
1003
macro_rules! expect_payment_sent {
991
- ( $node: expr, $expected_payment_preimage: expr) => {
992
- let events = $node. node. get_and_clear_pending_events( ) ;
993
- assert_eq!( events. len( ) , 1 ) ;
994
- match events[ 0 ] {
1004
+ ( $node: expr, $expected_payment_preimage: expr, $events: expr) => {
1005
+ assert_eq!( $events. len( ) , 1 ) ;
1006
+ match $events[ 0 ] {
995
1007
Event :: PaymentSent { ref payment_preimage } => {
996
1008
assert_eq!( $expected_payment_preimage, * payment_preimage) ;
997
1009
} ,
@@ -1026,8 +1038,8 @@ macro_rules! expect_payment_failure_chan_update {
1026
1038
1027
1039
#[ cfg( test) ]
1028
1040
macro_rules! expect_payment_failed {
1029
- ( $node: expr, $expected_payment_hash: expr, $rejected_by_dest: expr $( , $expected_error_code: expr, $expected_error_data: expr) * ) => {
1030
- let events = $node . node . get_and_clear_pending_events ( ) ;
1041
+ ( $node: expr, $events : expr , $ expected_payment_hash: expr, $rejected_by_dest: expr $( , $expected_error_code: expr, $expected_error_data: expr) * ) => {
1042
+ let events: Vec < Event > = $events ;
1031
1043
assert_eq!( events. len( ) , 1 ) ;
1032
1044
match events[ 0 ] {
1033
1045
Event :: PaymentFailed { ref payment_hash, rejected_by_dest, ref error_code, ref error_data } => {
@@ -1062,7 +1074,8 @@ pub fn pass_along_path<'a, 'b, 'c>(origin_node: &Node<'a, 'b, 'c>, expected_path
1062
1074
check_added_monitors ! ( node, 0 ) ;
1063
1075
commitment_signed_dance ! ( node, prev_node, payment_event. commitment_msg, false ) ;
1064
1076
1065
- expect_pending_htlcs_forwardable ! ( node) ;
1077
+ let events = node. node . get_and_clear_pending_events ( ) ;
1078
+ expect_pending_htlcs_forwardable ! ( node, events) ;
1066
1079
1067
1080
if idx == expected_path. len ( ) - 1 {
1068
1081
let events_2 = node. node . get_and_clear_pending_events ( ) ;
@@ -1192,7 +1205,14 @@ pub fn claim_payment_along_route<'a, 'b, 'c>(origin_node: &Node<'a, 'b, 'c>, exp
1192
1205
1193
1206
if !skip_last {
1194
1207
last_update_fulfill_dance ! ( origin_node, expected_route. first( ) . unwrap( ) ) ;
1195
- expect_payment_sent ! ( origin_node, our_payment_preimage) ;
1208
+ let mut events = origin_node. node . get_and_clear_pending_events ( ) ;
1209
+ let payment_sent: Vec < Event > ;
1210
+ if events. len ( ) == 2 {
1211
+ payment_sent = events. drain ( 1 ..2 ) . collect ( ) ;
1212
+ } else {
1213
+ payment_sent = events;
1214
+ }
1215
+ expect_payment_sent ! ( origin_node, our_payment_preimage, payment_sent) ;
1196
1216
}
1197
1217
}
1198
1218
}
@@ -1241,7 +1261,8 @@ pub fn send_payment<'a, 'b, 'c>(origin: &Node<'a, 'b, 'c>, expected_route: &[&No
1241
1261
1242
1262
pub fn fail_payment_along_route < ' a , ' b , ' c > ( origin_node : & Node < ' a , ' b , ' c > , expected_route : & [ & Node < ' a , ' b , ' c > ] , skip_last : bool , our_payment_hash : PaymentHash ) {
1243
1263
assert ! ( expected_route. last( ) . unwrap( ) . node. fail_htlc_backwards( & our_payment_hash) ) ;
1244
- expect_pending_htlcs_forwardable ! ( expected_route. last( ) . unwrap( ) ) ;
1264
+ let events = expected_route. last ( ) . unwrap ( ) . node . get_and_clear_pending_events ( ) ;
1265
+ expect_pending_htlcs_forwardable ! ( expected_route. last( ) . unwrap( ) , events) ;
1245
1266
check_added_monitors ! ( expected_route. last( ) . unwrap( ) , 1 ) ;
1246
1267
1247
1268
let mut next_msgs: Option < ( msgs:: UpdateFailHTLC , msgs:: CommitmentSigned ) > = None ;
@@ -1251,7 +1272,8 @@ pub fn fail_payment_along_route<'a, 'b, 'c>(origin_node: &Node<'a, 'b, 'c>, expe
1251
1272
$node. node. handle_update_fail_htlc( & $prev_node. node. get_our_node_id( ) , & next_msgs. as_ref( ) . unwrap( ) . 0 ) ;
1252
1273
commitment_signed_dance!( $node, $prev_node, next_msgs. as_ref( ) . unwrap( ) . 1 , !$last_node) ;
1253
1274
if skip_last && $last_node {
1254
- expect_pending_htlcs_forwardable!( $node) ;
1275
+ let events = $node. node. get_and_clear_pending_events( ) ;
1276
+ expect_pending_htlcs_forwardable!( $node, events) ;
1255
1277
}
1256
1278
}
1257
1279
}
0 commit comments