Skip to content

Commit fecac81

Browse files
committed
Support pending update_fail_htlcs in reconnect_nodes test util
1 parent 431f807 commit fecac81

File tree

4 files changed

+36
-34
lines changed

4 files changed

+36
-34
lines changed

lightning/src/ln/chanmon_update_fail_tests.rs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -197,7 +197,7 @@ fn do_test_simple_monitor_temporary_update_fail(disconnect: bool, persister_fail
197197
if disconnect {
198198
nodes[0].node.peer_disconnected(&nodes[1].node.get_our_node_id(), false);
199199
nodes[1].node.peer_disconnected(&nodes[0].node.get_our_node_id(), false);
200-
reconnect_nodes(&nodes[0], &nodes[1], (true, true), (0, 0), (0, 0), (0, 0), (0, 0), (false, false));
200+
reconnect_nodes(&nodes[0], &nodes[1], (true, true), (0, 0), (0, 0), (0, 0), (0, 0), (0, 0), (false, false));
201201
}
202202

203203
match persister_fail {
@@ -251,7 +251,7 @@ fn do_test_simple_monitor_temporary_update_fail(disconnect: bool, persister_fail
251251
if disconnect {
252252
nodes[0].node.peer_disconnected(&nodes[1].node.get_our_node_id(), false);
253253
nodes[1].node.peer_disconnected(&nodes[0].node.get_our_node_id(), false);
254-
reconnect_nodes(&nodes[0], &nodes[1], (false, false), (0, 0), (0, 0), (0, 0), (0, 0), (false, false));
254+
reconnect_nodes(&nodes[0], &nodes[1], (false, false), (0, 0), (0, 0), (0, 0), (0, 0), (0, 0), (false, false));
255255
}
256256

257257
// ...and make sure we can force-close a frozen channel
@@ -1912,7 +1912,7 @@ fn do_during_funding_monitor_fail(confirm_a_first: bool, restore_b_before_conf:
19121912
// Make sure nodes[1] isn't stupid enough to re-send the FundingLocked on reconnect
19131913
nodes[0].node.peer_disconnected(&nodes[1].node.get_our_node_id(), false);
19141914
nodes[1].node.peer_disconnected(&nodes[0].node.get_our_node_id(), false);
1915-
reconnect_nodes(&nodes[0], &nodes[1], (false, confirm_a_first), (0, 0), (0, 0), (0, 0), (0, 0), (false, false));
1915+
reconnect_nodes(&nodes[0], &nodes[1], (false, confirm_a_first), (0, 0), (0, 0), (0, 0), (0, 0), (0, 0), (false, false));
19161916
assert!(nodes[0].node.get_and_clear_pending_msg_events().is_empty());
19171917
assert!(nodes[1].node.get_and_clear_pending_msg_events().is_empty());
19181918

lightning/src/ln/functional_test_utils.rs

Lines changed: 10 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1624,7 +1624,7 @@ macro_rules! handle_chan_reestablish_msgs {
16241624

16251625
/// pending_htlc_adds includes both the holding cell and in-flight update_add_htlcs, whereas
16261626
/// for claims/fails they are separated out.
1627-
pub fn reconnect_nodes<'a, 'b, 'c>(node_a: &Node<'a, 'b, 'c>, node_b: &Node<'a, 'b, 'c>, send_funding_locked: (bool, bool), pending_htlc_adds: (i64, i64), pending_htlc_claims: (usize, usize), pending_cell_htlc_claims: (usize, usize), pending_cell_htlc_fails: (usize, usize), pending_raa: (bool, bool)) {
1627+
pub fn reconnect_nodes<'a, 'b, 'c>(node_a: &Node<'a, 'b, 'c>, node_b: &Node<'a, 'b, 'c>, send_funding_locked: (bool, bool), pending_htlc_adds: (i64, i64), pending_htlc_claims: (usize, usize), pending_htlc_fails: (usize, usize), pending_cell_htlc_claims: (usize, usize), pending_cell_htlc_fails: (usize, usize), pending_raa: (bool, bool)) {
16281628
node_a.node.peer_connected(&node_b.node.get_our_node_id(), &msgs::Init { features: InitFeatures::empty() });
16291629
let reestablish_1 = get_chan_reestablish_msgs!(node_a, node_b);
16301630
node_b.node.peer_connected(&node_a.node.get_our_node_id(), &msgs::Init { features: InitFeatures::empty() });
@@ -1678,8 +1678,10 @@ pub fn reconnect_nodes<'a, 'b, 'c>(node_a: &Node<'a, 'b, 'c>, node_b: &Node<'a,
16781678
}
16791679

16801680
// We don't yet support both needing updates, as that would require a different commitment dance:
1681-
assert!((pending_htlc_adds.0 == 0 && pending_htlc_claims.0 == 0 && pending_cell_htlc_claims.0 == 0 && pending_cell_htlc_fails.0 == 0) ||
1682-
(pending_htlc_adds.1 == 0 && pending_htlc_claims.1 == 0 && pending_cell_htlc_claims.1 == 0 && pending_cell_htlc_fails.1 == 0));
1681+
assert!((pending_htlc_adds.0 == 0 && pending_htlc_claims.0 == 0 && pending_htlc_fails.0 == 0 &&
1682+
pending_cell_htlc_claims.0 == 0 && pending_cell_htlc_fails.0 == 0) ||
1683+
(pending_htlc_adds.1 == 0 && pending_htlc_claims.1 == 0 && pending_htlc_fails.1 == 0 &&
1684+
pending_cell_htlc_claims.1 == 0 && pending_cell_htlc_fails.1 == 0));
16831685

16841686
for chan_msgs in resp_1.drain(..) {
16851687
if send_funding_locked.0 {
@@ -1702,15 +1704,15 @@ pub fn reconnect_nodes<'a, 'b, 'c>(node_a: &Node<'a, 'b, 'c>, node_b: &Node<'a,
17021704
} else {
17031705
assert!(chan_msgs.1.is_none());
17041706
}
1705-
if pending_htlc_adds.0 != 0 || pending_htlc_claims.0 != 0 || pending_cell_htlc_claims.0 != 0 || pending_cell_htlc_fails.0 != 0 {
1707+
if pending_htlc_adds.0 != 0 || pending_htlc_claims.0 != 0 || pending_htlc_fails.0 != 0 || pending_cell_htlc_claims.0 != 0 || pending_cell_htlc_fails.0 != 0 {
17061708
let commitment_update = chan_msgs.2.unwrap();
17071709
if pending_htlc_adds.0 != -1 { // We use -1 to denote a response commitment_signed
17081710
assert_eq!(commitment_update.update_add_htlcs.len(), pending_htlc_adds.0 as usize);
17091711
} else {
17101712
assert!(commitment_update.update_add_htlcs.is_empty());
17111713
}
17121714
assert_eq!(commitment_update.update_fulfill_htlcs.len(), pending_htlc_claims.0 + pending_cell_htlc_claims.0);
1713-
assert_eq!(commitment_update.update_fail_htlcs.len(), pending_cell_htlc_fails.0);
1715+
assert_eq!(commitment_update.update_fail_htlcs.len(), pending_htlc_fails.0 + pending_cell_htlc_fails.0);
17141716
assert!(commitment_update.update_fail_malformed_htlcs.is_empty());
17151717
for update_add in commitment_update.update_add_htlcs {
17161718
node_a.node.handle_update_add_htlc(&node_b.node.get_our_node_id(), &update_add);
@@ -1759,13 +1761,13 @@ pub fn reconnect_nodes<'a, 'b, 'c>(node_a: &Node<'a, 'b, 'c>, node_b: &Node<'a,
17591761
} else {
17601762
assert!(chan_msgs.1.is_none());
17611763
}
1762-
if pending_htlc_adds.1 != 0 || pending_htlc_claims.1 != 0 || pending_cell_htlc_claims.1 != 0 || pending_cell_htlc_fails.1 != 0 {
1764+
if pending_htlc_adds.1 != 0 || pending_htlc_claims.1 != 0 || pending_htlc_fails.1 != 0 || pending_cell_htlc_claims.1 != 0 || pending_cell_htlc_fails.1 != 0 {
17631765
let commitment_update = chan_msgs.2.unwrap();
17641766
if pending_htlc_adds.1 != -1 { // We use -1 to denote a response commitment_signed
17651767
assert_eq!(commitment_update.update_add_htlcs.len(), pending_htlc_adds.1 as usize);
17661768
}
1767-
assert_eq!(commitment_update.update_fulfill_htlcs.len(), pending_htlc_claims.0 + pending_cell_htlc_claims.0);
1768-
assert_eq!(commitment_update.update_fail_htlcs.len(), pending_cell_htlc_fails.0);
1769+
assert_eq!(commitment_update.update_fulfill_htlcs.len(), pending_htlc_claims.1 + pending_cell_htlc_claims.1);
1770+
assert_eq!(commitment_update.update_fail_htlcs.len(), pending_htlc_fails.1 + pending_cell_htlc_fails.1);
17691771
assert!(commitment_update.update_fail_malformed_htlcs.is_empty());
17701772
for update_add in commitment_update.update_add_htlcs {
17711773
node_b.node.handle_update_add_htlc(&node_a.node.get_our_node_id(), &update_add);

lightning/src/ln/functional_tests.rs

Lines changed: 22 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -3537,7 +3537,7 @@ fn test_dup_events_on_peer_disconnect() {
35373537
nodes[0].node.peer_disconnected(&nodes[1].node.get_our_node_id(), false);
35383538
nodes[1].node.peer_disconnected(&nodes[0].node.get_our_node_id(), false);
35393539

3540-
reconnect_nodes(&nodes[0], &nodes[1], (false, false), (0, 0), (1, 0), (0, 0), (0, 0), (false, false));
3540+
reconnect_nodes(&nodes[0], &nodes[1], (false, false), (0, 0), (1, 0), (0, 0), (0, 0), (0, 0), (false, false));
35413541
assert!(nodes[0].node.get_and_clear_pending_events().is_empty());
35423542
}
35433543

@@ -3553,7 +3553,7 @@ fn test_simple_peer_disconnect() {
35533553

35543554
nodes[0].node.peer_disconnected(&nodes[1].node.get_our_node_id(), false);
35553555
nodes[1].node.peer_disconnected(&nodes[0].node.get_our_node_id(), false);
3556-
reconnect_nodes(&nodes[0], &nodes[1], (true, true), (0, 0), (0, 0), (0, 0), (0, 0), (false, false));
3556+
reconnect_nodes(&nodes[0], &nodes[1], (true, true), (0, 0), (0, 0), (0, 0), (0, 0), (0, 0), (false, false));
35573557

35583558
let payment_preimage_1 = route_payment(&nodes[0], &vec!(&nodes[1], &nodes[2])[..], 1000000).0;
35593559
let payment_hash_2 = route_payment(&nodes[0], &vec!(&nodes[1], &nodes[2])[..], 1000000).1;
@@ -3562,7 +3562,7 @@ fn test_simple_peer_disconnect() {
35623562

35633563
nodes[0].node.peer_disconnected(&nodes[1].node.get_our_node_id(), false);
35643564
nodes[1].node.peer_disconnected(&nodes[0].node.get_our_node_id(), false);
3565-
reconnect_nodes(&nodes[0], &nodes[1], (false, false), (0, 0), (0, 0), (0, 0), (0, 0), (false, false));
3565+
reconnect_nodes(&nodes[0], &nodes[1], (false, false), (0, 0), (0, 0), (0, 0), (0, 0), (0, 0), (false, false));
35663566

35673567
let payment_preimage_3 = route_payment(&nodes[0], &vec!(&nodes[1], &nodes[2])[..], 1000000).0;
35683568
let payment_preimage_4 = route_payment(&nodes[0], &vec!(&nodes[1], &nodes[2])[..], 1000000).0;
@@ -3575,7 +3575,7 @@ fn test_simple_peer_disconnect() {
35753575
claim_payment_along_route(&nodes[0], &[&[&nodes[1], &nodes[2]]], true, payment_preimage_3);
35763576
fail_payment_along_route(&nodes[0], &[&nodes[1], &nodes[2]], true, payment_hash_5);
35773577

3578-
reconnect_nodes(&nodes[0], &nodes[1], (false, false), (0, 0), (0, 0), (1, 0), (1, 0), (false, false));
3578+
reconnect_nodes(&nodes[0], &nodes[1], (false, false), (0, 0), (0, 0), (0, 0), (1, 0), (1, 0), (false, false));
35793579
{
35803580
let events = nodes[0].node.get_and_clear_pending_events();
35813581
assert_eq!(events.len(), 2);
@@ -3679,19 +3679,19 @@ fn do_test_drop_messages_peer_disconnect(messages_delivered: u8, simulate_broken
36793679
}
36803680
// Even if the funding_locked messages get exchanged, as long as nothing further was
36813681
// received on either side, both sides will need to resend them.
3682-
reconnect_nodes(&nodes[0], &nodes[1], (true, true), (0, 1), (0, 0), (0, 0), (0, 0), (false, false));
3682+
reconnect_nodes(&nodes[0], &nodes[1], (true, true), (0, 1), (0, 0), (0, 0), (0, 0), (0, 0), (false, false));
36833683
} else if messages_delivered == 3 {
36843684
// nodes[0] still wants its RAA + commitment_signed
3685-
reconnect_nodes(&nodes[0], &nodes[1], (false, false), (-1, 0), (0, 0), (0, 0), (0, 0), (true, false));
3685+
reconnect_nodes(&nodes[0], &nodes[1], (false, false), (-1, 0), (0, 0), (0, 0), (0, 0), (0, 0), (true, false));
36863686
} else if messages_delivered == 4 {
36873687
// nodes[0] still wants its commitment_signed
3688-
reconnect_nodes(&nodes[0], &nodes[1], (false, false), (-1, 0), (0, 0), (0, 0), (0, 0), (false, false));
3688+
reconnect_nodes(&nodes[0], &nodes[1], (false, false), (-1, 0), (0, 0), (0, 0), (0, 0), (0, 0), (false, false));
36893689
} else if messages_delivered == 5 {
36903690
// nodes[1] still wants its final RAA
3691-
reconnect_nodes(&nodes[0], &nodes[1], (false, false), (0, 0), (0, 0), (0, 0), (0, 0), (false, true));
3691+
reconnect_nodes(&nodes[0], &nodes[1], (false, false), (0, 0), (0, 0), (0, 0), (0, 0), (0, 0), (false, true));
36923692
} else if messages_delivered == 6 {
36933693
// Everything was delivered...
3694-
reconnect_nodes(&nodes[0], &nodes[1], (false, false), (0, 0), (0, 0), (0, 0), (0, 0), (false, false));
3694+
reconnect_nodes(&nodes[0], &nodes[1], (false, false), (0, 0), (0, 0), (0, 0), (0, 0), (0, 0), (false, false));
36953695
}
36963696

36973697
let events_1 = nodes[1].node.get_and_clear_pending_events();
@@ -3703,7 +3703,7 @@ fn do_test_drop_messages_peer_disconnect(messages_delivered: u8, simulate_broken
37033703

37043704
nodes[0].node.peer_disconnected(&nodes[1].node.get_our_node_id(), false);
37053705
nodes[1].node.peer_disconnected(&nodes[0].node.get_our_node_id(), false);
3706-
reconnect_nodes(&nodes[0], &nodes[1], (false, false), (0, 0), (0, 0), (0, 0), (0, 0), (false, false));
3706+
reconnect_nodes(&nodes[0], &nodes[1], (false, false), (0, 0), (0, 0), (0, 0), (0, 0), (0, 0), (false, false));
37073707

37083708
nodes[1].node.process_pending_htlc_forwards();
37093709

@@ -3778,7 +3778,7 @@ fn do_test_drop_messages_peer_disconnect(messages_delivered: u8, simulate_broken
37783778
nodes[0].node.peer_disconnected(&nodes[1].node.get_our_node_id(), false);
37793779
nodes[1].node.peer_disconnected(&nodes[0].node.get_our_node_id(), false);
37803780
if messages_delivered < 2 {
3781-
reconnect_nodes(&nodes[0], &nodes[1], (false, false), (0, 0), (1, 0), (0, 0), (0, 0), (false, false));
3781+
reconnect_nodes(&nodes[0], &nodes[1], (false, false), (0, 0), (1, 0), (0, 0), (0, 0), (0, 0), (false, false));
37823782
if messages_delivered < 1 {
37833783
let events_4 = nodes[0].node.get_and_clear_pending_events();
37843784
assert_eq!(events_4.len(), 1);
@@ -3793,21 +3793,21 @@ fn do_test_drop_messages_peer_disconnect(messages_delivered: u8, simulate_broken
37933793
}
37943794
} else if messages_delivered == 2 {
37953795
// nodes[0] still wants its RAA + commitment_signed
3796-
reconnect_nodes(&nodes[0], &nodes[1], (false, false), (0, -1), (0, 0), (0, 0), (0, 0), (false, true));
3796+
reconnect_nodes(&nodes[0], &nodes[1], (false, false), (0, -1), (0, 0), (0, 0), (0, 0), (0, 0), (false, true));
37973797
} else if messages_delivered == 3 {
37983798
// nodes[0] still wants its commitment_signed
3799-
reconnect_nodes(&nodes[0], &nodes[1], (false, false), (0, -1), (0, 0), (0, 0), (0, 0), (false, false));
3799+
reconnect_nodes(&nodes[0], &nodes[1], (false, false), (0, -1), (0, 0), (0, 0), (0, 0), (0, 0), (false, false));
38003800
} else if messages_delivered == 4 {
38013801
// nodes[1] still wants its final RAA
3802-
reconnect_nodes(&nodes[0], &nodes[1], (false, false), (0, 0), (0, 0), (0, 0), (0, 0), (true, false));
3802+
reconnect_nodes(&nodes[0], &nodes[1], (false, false), (0, 0), (0, 0), (0, 0), (0, 0), (0, 0), (true, false));
38033803
} else if messages_delivered == 5 {
38043804
// Everything was delivered...
3805-
reconnect_nodes(&nodes[0], &nodes[1], (false, false), (0, 0), (0, 0), (0, 0), (0, 0), (false, false));
3805+
reconnect_nodes(&nodes[0], &nodes[1], (false, false), (0, 0), (0, 0), (0, 0), (0, 0), (0, 0), (false, false));
38063806
}
38073807

38083808
nodes[0].node.peer_disconnected(&nodes[1].node.get_our_node_id(), false);
38093809
nodes[1].node.peer_disconnected(&nodes[0].node.get_our_node_id(), false);
3810-
reconnect_nodes(&nodes[0], &nodes[1], (false, false), (0, 0), (0, 0), (0, 0), (0, 0), (false, false));
3810+
reconnect_nodes(&nodes[0], &nodes[1], (false, false), (0, 0), (0, 0), (0, 0), (0, 0), (0, 0), (false, false));
38113811

38123812
// Channel should still work fine...
38133813
let net_graph_msg_handler = &nodes[0].net_graph_msg_handler;
@@ -3859,7 +3859,7 @@ fn test_funding_peer_disconnect() {
38593859
_ => panic!("Unexpected event"),
38603860
}
38613861

3862-
reconnect_nodes(&nodes[0], &nodes[1], (false, true), (0, 0), (0, 0), (0, 0), (0, 0), (false, false));
3862+
reconnect_nodes(&nodes[0], &nodes[1], (false, true), (0, 0), (0, 0), (0, 0), (0, 0), (0, 0), (false, false));
38633863

38643864
nodes[0].node.peer_disconnected(&nodes[1].node.get_our_node_id(), false);
38653865
nodes[1].node.peer_disconnected(&nodes[0].node.get_our_node_id(), false);
@@ -3882,7 +3882,7 @@ fn test_funding_peer_disconnect() {
38823882
_ => panic!("Unexpected event"),
38833883
};
38843884

3885-
reconnect_nodes(&nodes[0], &nodes[1], (true, true), (0, 0), (0, 0), (0, 0), (0, 0), (false, false));
3885+
reconnect_nodes(&nodes[0], &nodes[1], (true, true), (0, 0), (0, 0), (0, 0), (0, 0), (0, 0), (false, false));
38863886

38873887
nodes[0].node.handle_funding_locked(&nodes[1].node.get_our_node_id(), &funding_locked);
38883888
nodes[0].node.handle_announcement_signatures(&nodes[1].node.get_our_node_id(), &bs_announcement_sigs);
@@ -3960,7 +3960,7 @@ fn test_funding_peer_disconnect() {
39603960
nodes[0].node = &nodes_0_deserialized;
39613961
check_added_monitors!(nodes[0], 1);
39623962

3963-
reconnect_nodes(&nodes[0], &nodes[1], (false, false), (0, 0), (0, 0), (0, 0), (0, 0), (false, false));
3963+
reconnect_nodes(&nodes[0], &nodes[1], (false, false), (0, 0), (0, 0), (0, 0), (0, 0), (0, 0), (false, false));
39643964

39653965
// as_announcement should be re-generated exactly by broadcast_node_announcement.
39663966
nodes[0].node.broadcast_node_announcement([0, 0, 0], [0; 32], Vec::new());
@@ -4696,7 +4696,7 @@ fn test_simple_manager_serialize_deserialize() {
46964696
nodes[0].node = &nodes_0_deserialized;
46974697
check_added_monitors!(nodes[0], 1);
46984698

4699-
reconnect_nodes(&nodes[0], &nodes[1], (false, false), (0, 0), (0, 0), (0, 0), (0, 0), (false, false));
4699+
reconnect_nodes(&nodes[0], &nodes[1], (false, false), (0, 0), (0, 0), (0, 0), (0, 0), (0, 0), (false, false));
47004700

47014701
fail_payment(&nodes[0], &[&nodes[1]], our_payment_hash);
47024702
claim_payment(&nodes[0], &[&nodes[1]], our_payment_preimage);
@@ -4810,8 +4810,8 @@ fn test_manager_serialize_deserialize_inconsistent_monitor() {
48104810
nodes[0].node = &nodes_0_deserialized;
48114811

48124812
// nodes[1] and nodes[2] have no lost state with nodes[0]...
4813-
reconnect_nodes(&nodes[0], &nodes[1], (false, false), (0, 0), (0, 0), (0, 0), (0, 0), (false, false));
4814-
reconnect_nodes(&nodes[0], &nodes[2], (false, false), (0, 0), (0, 0), (0, 0), (0, 0), (false, false));
4813+
reconnect_nodes(&nodes[0], &nodes[1], (false, false), (0, 0), (0, 0), (0, 0), (0, 0), (0, 0), (false, false));
4814+
reconnect_nodes(&nodes[0], &nodes[2], (false, false), (0, 0), (0, 0), (0, 0), (0, 0), (0, 0), (false, false));
48154815
//... and we can even still claim the payment!
48164816
claim_payment(&nodes[2], &[&nodes[0], &nodes[1]], our_payment_preimage);
48174817

lightning/src/ln/onion_route_tests.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -482,7 +482,7 @@ fn test_onion_failure() {
482482
nodes[1].node.peer_disconnected(&nodes[2].node.get_our_node_id(), false);
483483
nodes[2].node.peer_disconnected(&nodes[1].node.get_our_node_id(), false);
484484
}, true, Some(UPDATE|20), Some(msgs::HTLCFailChannelUpdate::ChannelUpdateMessage{msg: ChannelUpdate::dummy()}));
485-
reconnect_nodes(&nodes[1], &nodes[2], (false, false), (0, 0), (0, 0), (0, 0), (0, 0), (false, false));
485+
reconnect_nodes(&nodes[1], &nodes[2], (false, false), (0, 0), (0, 0), (0, 0), (0, 0), (0, 0), (false, false));
486486

487487
run_onion_failure_test("expiry_too_far", 0, &nodes, &route, &payment_hash, &payment_secret, |msg| {
488488
let session_priv = SecretKey::from_slice(&[3; 32]).unwrap();

0 commit comments

Comments
 (0)