Skip to content

Commit 5945709

Browse files
author
Antoine Riard
committed
-f more tests
1 parent 9c39df9 commit 5945709

File tree

7 files changed

+91
-33
lines changed

7 files changed

+91
-33
lines changed

lightning/src/ln/chanmon_update_fail_tests.rs

Lines changed: 16 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -2168,7 +2168,8 @@ fn test_pending_update_fee_ack_on_reconnect() {
21682168
nodes[1].node.handle_revoke_and_ack(&nodes[0].node.get_our_node_id(), &get_event_msg!(nodes[0], MessageSendEvent::SendRevokeAndACK, nodes[1].node.get_our_node_id()));
21692169
check_added_monitors!(nodes[1], 1);
21702170

2171-
expect_pending_htlcs_forwardable!(nodes[0]);
2171+
let events = nodes[0].node.get_and_clear_pending_events();
2172+
expect_pending_htlcs_forwardable!(nodes[0], events);
21722173
expect_payment_received!(nodes[0], payment_hash, payment_secret, 1_000_000);
21732174

21742175
claim_payment(&nodes[1], &[&nodes[0]], payment_preimage);
@@ -2527,7 +2528,8 @@ fn do_test_reconnect_dup_htlc_claims(htlc_status: HTLCStatusAtDupClaim, second_f
25272528
};
25282529
if second_fails {
25292530
assert!(nodes[2].node.fail_htlc_backwards(&payment_hash));
2530-
expect_pending_htlcs_forwardable!(nodes[2]);
2531+
let events = nodes[2].node.get_and_clear_pending_events();
2532+
expect_pending_htlcs_forwardable!(nodes[2], events);
25312533
check_added_monitors!(nodes[2], 1);
25322534
get_htlc_update_msgs!(nodes[2], nodes[1].node.get_our_node_id());
25332535
} else {
@@ -2547,7 +2549,8 @@ fn do_test_reconnect_dup_htlc_claims(htlc_status: HTLCStatusAtDupClaim, second_f
25472549
bs_updates = Some(get_htlc_update_msgs!(nodes[1], nodes[0].node.get_our_node_id()));
25482550
assert_eq!(bs_updates.as_ref().unwrap().update_fulfill_htlcs.len(), 1);
25492551
nodes[0].node.handle_update_fulfill_htlc(&nodes[1].node.get_our_node_id(), &bs_updates.as_ref().unwrap().update_fulfill_htlcs[0]);
2550-
expect_payment_sent!(nodes[0], payment_preimage);
2552+
let events = nodes[0].node.get_and_clear_pending_events();
2553+
expect_payment_sent!(nodes[0], payment_preimage, events);
25512554
if htlc_status == HTLCStatusAtDupClaim::Cleared {
25522555
commitment_signed_dance!(nodes[0], nodes[1], &bs_updates.as_ref().unwrap().commitment_signed, false);
25532556
}
@@ -2560,20 +2563,23 @@ fn do_test_reconnect_dup_htlc_claims(htlc_status: HTLCStatusAtDupClaim, second_f
25602563

25612564
if second_fails {
25622565
reconnect_nodes(&nodes[1], &nodes[2], (false, false), (0, 0), (0, 0), (1, 0), (0, 0), (0, 0), (false, false));
2563-
expect_pending_htlcs_forwardable!(nodes[1]);
2566+
let events = nodes[1].node.get_and_clear_pending_events();
2567+
expect_pending_htlcs_forwardable!(nodes[1], events);
25642568
} else {
25652569
reconnect_nodes(&nodes[1], &nodes[2], (false, false), (0, 0), (1, 0), (0, 0), (0, 0), (0, 0), (false, false));
25662570
}
25672571

25682572
if htlc_status == HTLCStatusAtDupClaim::HoldingCell {
25692573
nodes[1].node.handle_revoke_and_ack(&nodes[0].node.get_our_node_id(), &as_raa.unwrap());
25702574
check_added_monitors!(nodes[1], 1);
2571-
expect_pending_htlcs_forwardable_ignore!(nodes[1]); // We finally receive the second payment, but don't claim it
2575+
let events = nodes[1].node.get_and_clear_pending_events();
2576+
expect_pending_htlcs_forwardable_ignore!(nodes[1], events); // We finally receive the second payment, but don't claim it
25722577

25732578
bs_updates = Some(get_htlc_update_msgs!(nodes[1], nodes[0].node.get_our_node_id()));
25742579
assert_eq!(bs_updates.as_ref().unwrap().update_fulfill_htlcs.len(), 1);
25752580
nodes[0].node.handle_update_fulfill_htlc(&nodes[1].node.get_our_node_id(), &bs_updates.as_ref().unwrap().update_fulfill_htlcs[0]);
2576-
expect_payment_sent!(nodes[0], payment_preimage);
2581+
let events = nodes[0].node.get_and_clear_pending_events();
2582+
expect_payment_sent!(nodes[0], payment_preimage, events);
25772583
}
25782584
if htlc_status != HTLCStatusAtDupClaim::Cleared {
25792585
commitment_signed_dance!(nodes[0], nodes[1], &bs_updates.as_ref().unwrap().commitment_signed, false);
@@ -2641,6 +2647,8 @@ fn test_temporary_error_during_shutdown() {
26412647
assert_eq!(txn_a, txn_b);
26422648
assert_eq!(txn_a.len(), 1);
26432649
check_spends!(txn_a[0], funding_tx);
2650+
check_closed_event!(nodes[1], 1);
2651+
check_closed_event!(nodes[0], 1);
26442652
}
26452653

26462654
#[test]
@@ -2661,6 +2669,7 @@ fn test_permanent_error_during_sending_shutdown() {
26612669
assert!(nodes[0].node.close_channel(&channel_id).is_ok());
26622670
check_closed_broadcast!(nodes[0], true);
26632671
check_added_monitors!(nodes[0], 2);
2672+
check_closed_event!(nodes[0], 1);
26642673
}
26652674

26662675
#[test]
@@ -2683,4 +2692,5 @@ fn test_permanent_error_during_handling_shutdown() {
26832692
nodes[1].node.handle_shutdown(&nodes[0].node.get_our_node_id(), &InitFeatures::known(), &shutdown);
26842693
check_closed_broadcast!(nodes[1], true);
26852694
check_added_monitors!(nodes[1], 2);
2695+
check_closed_event!(nodes[1], 1);
26862696
}

lightning/src/ln/channelmanager.rs

Lines changed: 17 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -5565,8 +5565,10 @@ mod tests {
55655565
nodes[1].node.handle_update_add_htlc(&nodes[0].node.get_our_node_id(), &payment_event.msgs[0]);
55665566
check_added_monitors!(nodes[1], 0);
55675567
commitment_signed_dance!(nodes[1], nodes[0], payment_event.commitment_msg, false);
5568-
expect_pending_htlcs_forwardable!(nodes[1]);
5569-
expect_pending_htlcs_forwardable!(nodes[1]);
5568+
let events = nodes[1].node.get_and_clear_pending_events();
5569+
expect_pending_htlcs_forwardable!(nodes[1], events);
5570+
let events = nodes[1].node.get_and_clear_pending_events();
5571+
expect_pending_htlcs_forwardable!(nodes[1], events);
55705572
check_added_monitors!(nodes[1], 1);
55715573
let updates = get_htlc_update_msgs!(nodes[1], nodes[0].node.get_our_node_id());
55725574
assert!(updates.update_add_htlcs.is_empty());
@@ -5576,7 +5578,8 @@ mod tests {
55765578
assert!(updates.update_fee.is_none());
55775579
nodes[0].node.handle_update_fail_htlc(&nodes[1].node.get_our_node_id(), &updates.update_fail_htlcs[0]);
55785580
commitment_signed_dance!(nodes[0], nodes[1], updates.commitment_signed, true, true);
5579-
expect_payment_failed!(nodes[0], our_payment_hash, true);
5581+
let events = nodes[0].node.get_and_clear_pending_events();
5582+
expect_payment_failed!(nodes[0], events, our_payment_hash, true);
55805583

55815584
// Send the second half of the original MPP payment.
55825585
nodes[0].node.send_payment_along_path(&route.paths[0], &our_payment_hash, &Some(payment_secret), 200_000, cur_height, &None).unwrap();
@@ -5661,8 +5664,9 @@ mod tests {
56615664
nodes[1].node.handle_update_add_htlc(&nodes[0].node.get_our_node_id(), &payment_event.msgs[0]);
56625665
check_added_monitors!(nodes[1], 0);
56635666
commitment_signed_dance!(nodes[1], nodes[0], payment_event.commitment_msg, false);
5664-
expect_pending_htlcs_forwardable!(nodes[1]);
5665-
expect_pending_htlcs_forwardable!(nodes[1]);
5667+
let events = nodes[1].node.get_and_clear_pending_events();
5668+
expect_pending_htlcs_forwardable!(nodes[1], events);
5669+
expect_pending_htlcs_forwardable!(nodes[1], events);
56665670
check_added_monitors!(nodes[1], 1);
56675671
let updates = get_htlc_update_msgs!(nodes[1], nodes[0].node.get_our_node_id());
56685672
assert!(updates.update_add_htlcs.is_empty());
@@ -5672,7 +5676,8 @@ mod tests {
56725676
assert!(updates.update_fee.is_none());
56735677
nodes[0].node.handle_update_fail_htlc(&nodes[1].node.get_our_node_id(), &updates.update_fail_htlcs[0]);
56745678
commitment_signed_dance!(nodes[0], nodes[1], updates.commitment_signed, true, true);
5675-
expect_payment_failed!(nodes[0], payment_hash, true);
5679+
let events = nodes[0].node.get_and_clear_pending_events();
5680+
expect_payment_failed!(nodes[0], events, payment_hash, true);
56765681

56775682
// Finally, claim the original payment.
56785683
claim_payment(&nodes[0], &expected_route, payment_preimage);
@@ -5699,8 +5704,10 @@ mod tests {
56995704
nodes[1].node.handle_update_add_htlc(&nodes[0].node.get_our_node_id(), &payment_event.msgs[0]);
57005705
check_added_monitors!(nodes[1], 0);
57015706
commitment_signed_dance!(nodes[1], nodes[0], payment_event.commitment_msg, false);
5702-
expect_pending_htlcs_forwardable!(nodes[1]);
5703-
expect_pending_htlcs_forwardable!(nodes[1]);
5707+
let events = nodes[1].node.get_and_clear_pending_events();
5708+
expect_pending_htlcs_forwardable!(nodes[1], events);
5709+
let events = nodes[1].node.get_and_clear_pending_events();
5710+
expect_pending_htlcs_forwardable!(nodes[1], events);
57045711
check_added_monitors!(nodes[1], 1);
57055712
let updates = get_htlc_update_msgs!(nodes[1], nodes[0].node.get_our_node_id());
57065713
assert!(updates.update_add_htlcs.is_empty());
@@ -5710,7 +5717,8 @@ mod tests {
57105717
assert!(updates.update_fee.is_none());
57115718
nodes[0].node.handle_update_fail_htlc(&nodes[1].node.get_our_node_id(), &updates.update_fail_htlcs[0]);
57125719
commitment_signed_dance!(nodes[0], nodes[1], updates.commitment_signed, true, true);
5713-
expect_payment_failed!(nodes[0], payment_hash, true);
5720+
let events = nodes[0].node.get_and_clear_pending_events();
5721+
expect_payment_failed!(nodes[0], events, payment_hash, true);
57145722

57155723
// Finally, succeed the keysend payment.
57165724
claim_payment(&nodes[0], &expected_route, payment_preimage);

lightning/src/ln/functional_test_utils.rs

Lines changed: 1 addition & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1251,13 +1251,7 @@ pub fn claim_payment_along_route<'a, 'b, 'c>(origin_node: &Node<'a, 'b, 'c>, exp
12511251
if !skip_last {
12521252
last_update_fulfill_dance!(origin_node, expected_route.first().unwrap());
12531253
let mut events = origin_node.node.get_and_clear_pending_events();
1254-
let payment_sent: Vec<Event>;
1255-
if events.len() == 2 {
1256-
payment_sent = events.drain(1..2).collect();
1257-
} else {
1258-
payment_sent = events;
1259-
}
1260-
expect_payment_sent!(origin_node, our_payment_preimage, payment_sent);
1254+
expect_payment_sent!(origin_node, our_payment_preimage, events);
12611255
}
12621256
}
12631257
}

lightning/src/ln/functional_tests.rs

Lines changed: 21 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -2584,11 +2584,15 @@ fn test_htlc_on_chain_success() {
25842584
added_monitors.clear();
25852585
}
25862586
let forwarded_events = nodes[1].node.get_and_clear_pending_events();
2587-
assert_eq!(forwarded_events.len(), 2);
2588-
if let Event::PaymentForwarded { fee_earned_msat: Some(1000), claim_from_onchain_tx: true } = forwarded_events[0] {
2589-
} else { panic!(); }
2587+
assert_eq!(forwarded_events.len(), 3);
2588+
match forwarded_events[0] {
2589+
Event::ChannelClosed { .. } => {}
2590+
_ => panic!("Unexpected event"),
2591+
}
25902592
if let Event::PaymentForwarded { fee_earned_msat: Some(1000), claim_from_onchain_tx: true } = forwarded_events[1] {
25912593
} else { panic!(); }
2594+
if let Event::PaymentForwarded { fee_earned_msat: Some(1000), claim_from_onchain_tx: true } = forwarded_events[2] {
2595+
} else { panic!(); }
25922596
let events = nodes[1].node.get_and_clear_pending_msg_events();
25932597
{
25942598
let mut added_monitors = nodes[1].chain_monitor.added_monitors.lock().unwrap();
@@ -2655,7 +2659,7 @@ fn test_htlc_on_chain_success() {
26552659
mine_transaction(&nodes[1], &node_a_commitment_tx[0]);
26562660
check_closed_broadcast!(nodes[1], true);
26572661
check_added_monitors!(nodes[1], 1);
2658-
check_closed_event!(nodes[1], 2);
2662+
check_closed_event!(nodes[1], 1);
26592663
let node_txn = nodes[1].tx_broadcaster.txn_broadcasted.lock().unwrap().clone();
26602664
assert_eq!(node_txn.len(), 6); // ChannelManager : 3 (commitment tx + HTLC-Sucess * 2), ChannelMonitor : 3 (HTLC-Success, 2* RBF bumps of above HTLC txn)
26612665
let commitment_spend =
@@ -5137,7 +5141,19 @@ fn test_onchain_to_onchain_claim() {
51375141
let header = BlockHeader { version: 0x20000000, prev_blockhash: nodes[1].best_block_hash(), merkle_root: Default::default(), time: 42, bits: 42, nonce: 42};
51385142
connect_block(&nodes[1], &Block { header, txdata: vec![c_txn[1].clone(), c_txn[2].clone()]});
51395143
check_added_monitors!(nodes[1], 1);
5140-
expect_payment_forwarded!(nodes[1], Some(1000), true);
5144+
let events = nodes[1].node.get_and_clear_pending_events();
5145+
assert_eq!(events.len(), 2);
5146+
match events[0] {
5147+
Event::ChannelClosed { .. } => {}
5148+
_ => panic!("Unexpected event"),
5149+
}
5150+
match events[1] {
5151+
Event::PaymentForwarded { fee_earned_msat, claim_from_onchain_tx } => {
5152+
assert_eq!(fee_earned_msat, Some(1000));
5153+
assert_eq!(claim_from_onchain_tx, true);
5154+
},
5155+
_ => panic!("Unexpected event"),
5156+
}
51415157
{
51425158
let mut b_txn = nodes[1].tx_broadcaster.txn_broadcasted.lock().unwrap();
51435159
// ChannelMonitor: claim tx
@@ -5146,10 +5162,8 @@ fn test_onchain_to_onchain_claim() {
51465162
b_txn.clear();
51475163
}
51485164
check_added_monitors!(nodes[1], 1);
5149-
check_closed_event!(nodes[1], 1);
51505165
let msg_events = nodes[1].node.get_and_clear_pending_msg_events();
51515166
assert_eq!(msg_events.len(), 3);
5152-
check_added_monitors!(nodes[1], 1);
51535167
match msg_events[0] {
51545168
MessageSendEvent::BroadcastChannelUpdate { .. } => {},
51555169
_ => panic!("Unexpected event"),

lightning/src/ln/monitor_tests.rs

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -58,7 +58,8 @@ fn chanmon_fail_from_stale_commitment() {
5858
nodes[1].node.handle_update_add_htlc(&nodes[0].node.get_our_node_id(), &updates.update_add_htlcs[0]);
5959
commitment_signed_dance!(nodes[1], nodes[0], updates.commitment_signed, false);
6060

61-
expect_pending_htlcs_forwardable!(nodes[1]);
61+
let events = nodes[1].node.get_and_clear_pending_events();
62+
expect_pending_htlcs_forwardable!(nodes[1], events);
6263
get_htlc_update_msgs!(nodes[1], nodes[2].node.get_our_node_id());
6364
check_added_monitors!(nodes[1], 1);
6465

@@ -67,15 +68,18 @@ fn chanmon_fail_from_stale_commitment() {
6768
mine_transaction(&nodes[1], &bs_txn[0]);
6869
check_added_monitors!(nodes[1], 1);
6970
check_closed_broadcast!(nodes[1], true);
71+
check_closed_event!(nodes[1], 1);
7072
assert!(nodes[1].node.get_and_clear_pending_msg_events().is_empty());
7173

7274
connect_blocks(&nodes[1], ANTI_REORG_DELAY - 1);
73-
expect_pending_htlcs_forwardable!(nodes[1]);
75+
let events = nodes[1].node.get_and_clear_pending_events();
76+
expect_pending_htlcs_forwardable!(nodes[1], events);
7477
check_added_monitors!(nodes[1], 1);
7578
let fail_updates = get_htlc_update_msgs!(nodes[1], nodes[0].node.get_our_node_id());
7679

7780
nodes[0].node.handle_update_fail_htlc(&nodes[1].node.get_our_node_id(), &fail_updates.update_fail_htlcs[0]);
7881
commitment_signed_dance!(nodes[0], nodes[1], fail_updates.commitment_signed, true, true);
79-
expect_payment_failed!(nodes[0], payment_hash, false);
82+
let events = nodes[0].node.get_and_clear_pending_events();
83+
expect_payment_failed!(nodes[0], events, payment_hash, false);
8084
expect_payment_failure_chan_update!(nodes[0], update_a.contents.short_channel_id, true);
8185
}

lightning/src/ln/reorg_tests.rs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -473,9 +473,11 @@ fn do_test_to_remote_after_local_detection(style: ConnectStyle) {
473473
assert!(nodes[0].node.list_channels().is_empty());
474474
check_closed_broadcast!(nodes[0], true);
475475
check_added_monitors!(nodes[0], 1);
476+
check_closed_event!(nodes[0], 1);
476477
assert!(nodes[1].node.list_channels().is_empty());
477478
check_closed_broadcast!(nodes[1], true);
478479
check_added_monitors!(nodes[1], 1);
480+
check_closed_event!(nodes[1], 1);
479481

480482
// Drop transactions broadcasted in response to the first commitment transaction (we have good
481483
// test coverage of these things already elsewhere).

0 commit comments

Comments
 (0)