Skip to content

Commit 1052ac6

Browse files
Add test coverage ChannelClosed event fields
1 parent de909da commit 1052ac6

13 files changed

+245
-202
lines changed

lightning-persister/src/lib.rs

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -237,7 +237,7 @@ mod tests {
237237
// Force close because cooperative close doesn't result in any persisted
238238
// updates.
239239
nodes[0].node.force_close_broadcasting_latest_txn(&nodes[0].node.list_channels()[0].channel_id, &nodes[1].node.get_our_node_id()).unwrap();
240-
check_closed_event!(nodes[0], 1, ClosureReason::HolderForceClosed);
240+
check_closed_event!(nodes[0], 1, ClosureReason::HolderForceClosed, [nodes[1].node.get_our_node_id()], 100000);
241241
check_closed_broadcast!(nodes[0], true);
242242
check_added_monitors!(nodes[0], 1);
243243

@@ -246,7 +246,7 @@ mod tests {
246246

247247
connect_block(&nodes[1], &create_dummy_block(nodes[0].best_block_hash(), 42, vec![node_txn[0].clone(), node_txn[0].clone()]));
248248
check_closed_broadcast!(nodes[1], true);
249-
check_closed_event!(nodes[1], 1, ClosureReason::CommitmentTxConfirmed);
249+
check_closed_event!(nodes[1], 1, ClosureReason::CommitmentTxConfirmed, [nodes[0].node.get_our_node_id()], 100000);
250250
check_added_monitors!(nodes[1], 1);
251251

252252
// Make sure everything is persisted as expected after close.
@@ -270,7 +270,7 @@ mod tests {
270270
let nodes = create_network(2, &node_cfgs, &node_chanmgrs);
271271
let chan = create_announced_chan_between_nodes(&nodes, 0, 1);
272272
nodes[1].node.force_close_broadcasting_latest_txn(&chan.2, &nodes[0].node.get_our_node_id()).unwrap();
273-
check_closed_event!(nodes[1], 1, ClosureReason::HolderForceClosed);
273+
check_closed_event!(nodes[1], 1, ClosureReason::HolderForceClosed, [nodes[0].node.get_our_node_id()], 100000);
274274
let mut added_monitors = nodes[1].chain_monitor.added_monitors.lock().unwrap();
275275
let update_map = nodes[1].chain_monitor.latest_monitor_update_id.lock().unwrap();
276276
let update_id = update_map.get(&added_monitors[0].0.to_channel_id()).unwrap();
@@ -309,7 +309,7 @@ mod tests {
309309
let nodes = create_network(2, &node_cfgs, &node_chanmgrs);
310310
let chan = create_announced_chan_between_nodes(&nodes, 0, 1);
311311
nodes[1].node.force_close_broadcasting_latest_txn(&chan.2, &nodes[0].node.get_our_node_id()).unwrap();
312-
check_closed_event!(nodes[1], 1, ClosureReason::HolderForceClosed);
312+
check_closed_event!(nodes[1], 1, ClosureReason::HolderForceClosed, [nodes[0].node.get_our_node_id()], 100000);
313313
let mut added_monitors = nodes[1].chain_monitor.added_monitors.lock().unwrap();
314314
let update_map = nodes[1].chain_monitor.latest_monitor_update_id.lock().unwrap();
315315
let update_id = update_map.get(&added_monitors[0].0.to_channel_id()).unwrap();

lightning/src/chain/chainmonitor.rs

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -966,7 +966,8 @@ mod tests {
966966
assert!(err.contains("ChannelMonitor storage failure")));
967967
check_added_monitors!(nodes[0], 2); // After the failure we generate a close-channel monitor update
968968
check_closed_broadcast!(nodes[0], true);
969-
check_closed_event!(nodes[0], 1, ClosureReason::ProcessingError { err: "ChannelMonitor storage failure".to_string() });
969+
check_closed_event!(nodes[0], 1, ClosureReason::ProcessingError { err: "ChannelMonitor storage failure".to_string() },
970+
[nodes[1].node.get_our_node_id()], 100000);
970971

971972
// However, as the ChainMonitor is still waiting for the original persistence to complete,
972973
// it won't yet release the MonitorEvents.
@@ -1013,7 +1014,8 @@ mod tests {
10131014
// ... however once we get events once, the channel will close, creating a channel-closed
10141015
// ChannelMonitorUpdate.
10151016
check_closed_broadcast!(nodes[0], true);
1016-
check_closed_event!(nodes[0], 1, ClosureReason::ProcessingError { err: "Failed to persist ChannelMonitor update during chain sync".to_string() });
1017+
check_closed_event!(nodes[0], 1, ClosureReason::ProcessingError { err: "Failed to persist ChannelMonitor update during chain sync".to_string() },
1018+
[nodes[1].node.get_our_node_id()], 100000);
10171019
check_added_monitors!(nodes[0], 1);
10181020
}
10191021
}

lightning/src/chain/channelmonitor.rs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4282,7 +4282,8 @@ mod tests {
42824282
assert!(err.contains("ChannelMonitor storage failure")));
42834283
check_added_monitors!(nodes[1], 2); // After the failure we generate a close-channel monitor update
42844284
check_closed_broadcast!(nodes[1], true);
4285-
check_closed_event!(nodes[1], 1, ClosureReason::ProcessingError { err: "ChannelMonitor storage failure".to_string() });
4285+
check_closed_event!(nodes[1], 1, ClosureReason::ProcessingError { err: "ChannelMonitor storage failure".to_string() },
4286+
[nodes[0].node.get_our_node_id()], 100000);
42864287

42874288
// Build a new ChannelMonitorUpdate which contains both the failing commitment tx update
42884289
// and provides the claim preimages for the two pending HTLCs. The first update generates

lightning/src/ln/chanmon_update_fail_tests.rs

Lines changed: 14 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -70,7 +70,8 @@ fn test_simple_monitor_permanent_update_fail() {
7070
// PaymentPathFailed event
7171

7272
assert_eq!(nodes[0].node.list_channels().len(), 0);
73-
check_closed_event!(nodes[0], 1, ClosureReason::ProcessingError { err: "ChannelMonitor storage failure".to_string() });
73+
check_closed_event!(nodes[0], 1, ClosureReason::ProcessingError { err: "ChannelMonitor storage failure".to_string() },
74+
[nodes[1].node.get_our_node_id()], 100000);
7475
}
7576

7677
#[test]
@@ -245,7 +246,7 @@ fn do_test_simple_monitor_temporary_update_fail(disconnect: bool) {
245246
// PaymentPathFailed event
246247

247248
assert_eq!(nodes[0].node.list_channels().len(), 0);
248-
check_closed_event!(nodes[0], 1, ClosureReason::HolderForceClosed);
249+
check_closed_event!(nodes[0], 1, ClosureReason::HolderForceClosed, [nodes[1].node.get_our_node_id()], 100000);
249250
}
250251

251252
#[test]
@@ -1983,8 +1984,8 @@ fn do_during_funding_monitor_fail(confirm_a_first: bool, restore_b_before_conf:
19831984

19841985
send_payment(&nodes[0], &[&nodes[1]], 8000000);
19851986
close_channel(&nodes[0], &nodes[1], &channel_id, funding_tx, true);
1986-
check_closed_event!(nodes[0], 1, ClosureReason::CooperativeClosure);
1987-
check_closed_event!(nodes[1], 1, ClosureReason::CooperativeClosure);
1987+
check_closed_event!(nodes[0], 1, ClosureReason::CooperativeClosure, [nodes[1].node.get_our_node_id()], 100000);
1988+
check_closed_event!(nodes[1], 1, ClosureReason::CooperativeClosure, [nodes[0].node.get_our_node_id()], 100000);
19881989
}
19891990

19901991
#[test]
@@ -2184,7 +2185,7 @@ fn test_fail_htlc_on_broadcast_after_claim() {
21842185
expect_payment_forwarded!(nodes[1], nodes[0], nodes[2], Some(1000), false, false);
21852186

21862187
mine_transaction(&nodes[1], &bs_txn[0]);
2187-
check_closed_event!(nodes[1], 1, ClosureReason::CommitmentTxConfirmed);
2188+
check_closed_event!(nodes[1], 1, ClosureReason::CommitmentTxConfirmed, [nodes[2].node.get_our_node_id()], 100000);
21882189
check_closed_broadcast!(nodes[1], true);
21892190
connect_blocks(&nodes[1], ANTI_REORG_DELAY - 1);
21902191
check_added_monitors!(nodes[1], 1);
@@ -2658,8 +2659,8 @@ fn test_temporary_error_during_shutdown() {
26582659
assert_eq!(txn_a, txn_b);
26592660
assert_eq!(txn_a.len(), 1);
26602661
check_spends!(txn_a[0], funding_tx);
2661-
check_closed_event!(nodes[1], 1, ClosureReason::CooperativeClosure);
2662-
check_closed_event!(nodes[0], 1, ClosureReason::CooperativeClosure);
2662+
check_closed_event!(nodes[1], 1, ClosureReason::CooperativeClosure, [nodes[0].node.get_our_node_id()], 100000);
2663+
check_closed_event!(nodes[0], 1, ClosureReason::CooperativeClosure, [nodes[1].node.get_our_node_id()], 100000);
26632664
}
26642665

26652666
#[test]
@@ -2688,7 +2689,8 @@ fn test_permanent_error_during_sending_shutdown() {
26882689
if let MessageSendEvent::HandleError { .. } = msg_events[2] {} else { panic!(); }
26892690

26902691
check_added_monitors!(nodes[0], 2);
2691-
check_closed_event!(nodes[0], 1, ClosureReason::ProcessingError { err: "ChannelMonitor storage failure".to_string() });
2692+
check_closed_event!(nodes[0], 1, ClosureReason::ProcessingError { err: "ChannelMonitor storage failure".to_string() },
2693+
[nodes[1].node.get_our_node_id()], 100000);
26922694
}
26932695

26942696
#[test]
@@ -2719,7 +2721,8 @@ fn test_permanent_error_during_handling_shutdown() {
27192721
if let MessageSendEvent::HandleError { .. } = msg_events[2] {} else { panic!(); }
27202722

27212723
check_added_monitors!(nodes[1], 2);
2722-
check_closed_event!(nodes[1], 1, ClosureReason::ProcessingError { err: "ChannelMonitor storage failure".to_string() });
2724+
check_closed_event!(nodes[1], 1, ClosureReason::ProcessingError { err: "ChannelMonitor storage failure".to_string() },
2725+
[nodes[0].node.get_our_node_id()], 100000);
27232726
}
27242727

27252728
#[test]
@@ -2913,7 +2916,7 @@ fn do_test_outbound_reload_without_init_mon(use_0conf: bool) {
29132916
nodes[0].chain_source.watched_outputs.lock().unwrap().clear();
29142917

29152918
reload_node!(nodes[0], &nodes[0].node.encode(), &[], persister, new_chain_monitor, nodes_0_deserialized);
2916-
check_closed_event!(nodes[0], 1, ClosureReason::DisconnectedPeer);
2919+
check_closed_event!(nodes[0], 1, ClosureReason::DisconnectedPeer, [nodes[1].node.get_our_node_id()], 100000);
29172920
assert!(nodes[0].node.list_channels().is_empty());
29182921
}
29192922

@@ -3000,7 +3003,7 @@ fn do_test_inbound_reload_without_init_mon(use_0conf: bool, lock_commitment: boo
30003003

30013004
reload_node!(nodes[1], &nodes[1].node.encode(), &[], persister, new_chain_monitor, nodes_1_deserialized);
30023005

3003-
check_closed_event!(nodes[1], 1, ClosureReason::DisconnectedPeer);
3006+
check_closed_event!(nodes[1], 1, ClosureReason::DisconnectedPeer, [nodes[0].node.get_our_node_id()], 100000);
30043007
assert!(nodes[1].node.list_channels().is_empty());
30053008
}
30063009

lightning/src/ln/channelmanager.rs

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -9567,7 +9567,7 @@ mod tests {
95679567
nodes[0].node.force_close_broadcasting_latest_txn(&chan.2, &nodes[1].node.get_our_node_id()).unwrap();
95689568
check_closed_broadcast!(nodes[0], true);
95699569
check_added_monitors!(nodes[0], 1);
9570-
check_closed_event!(nodes[0], 1, ClosureReason::HolderForceClosed);
9570+
check_closed_event!(nodes[0], 1, ClosureReason::HolderForceClosed, [nodes[1].node.get_our_node_id()], 100000);
95719571

95729572
{
95739573
// Assert that nodes[1] is awaiting removal for nodes[0] once nodes[1] has been
@@ -9730,8 +9730,8 @@ mod tests {
97309730
}
97319731
let (_nodes_1_update, _none) = get_closing_signed_broadcast!(nodes[1].node, nodes[0].node.get_our_node_id());
97329732

9733-
check_closed_event!(nodes[0], 1, ClosureReason::CooperativeClosure);
9734-
check_closed_event!(nodes[1], 1, ClosureReason::CooperativeClosure);
9733+
check_closed_event!(nodes[0], 1, ClosureReason::CooperativeClosure, [nodes[1].node.get_our_node_id()], 1000000);
9734+
check_closed_event!(nodes[1], 1, ClosureReason::CooperativeClosure, [nodes[0].node.get_our_node_id()], 1000000);
97359735
}
97369736

97379737
fn check_not_connected_to_peer_error<T>(res_err: Result<T, APIError>, expected_public_key: PublicKey) {
@@ -10126,7 +10126,7 @@ mod tests {
1012610126
let open_channel_msg = get_event_msg!(nodes[0], MessageSendEvent::SendOpenChannel, nodes[1].node.get_our_node_id());
1012710127
assert!(!open_channel_msg.channel_type.unwrap().supports_anchors_zero_fee_htlc_tx());
1012810128

10129-
check_closed_event!(nodes[1], 1, ClosureReason::HolderForceClosed);
10129+
check_closed_event!(nodes[1], 1, ClosureReason::HolderForceClosed, [nodes[0].node.get_our_node_id()], 100000);
1013010130
}
1013110131

1013210132
#[test]

lightning/src/ln/functional_test_utils.rs

Lines changed: 17 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1399,14 +1399,23 @@ macro_rules! check_closed_broadcast {
13991399
}
14001400

14011401
/// Check that a channel's closing channel events has been issued
1402-
pub fn check_closed_event(node: &Node, events_count: usize, expected_reason: ClosureReason, is_check_discard_funding: bool) {
1402+
pub fn check_closed_event(node: &Node, events_count: usize, expected_reason: ClosureReason, is_check_discard_funding: bool,
1403+
expected_counterparty_node_ids: &[PublicKey], expected_channel_capacity: u64) {
14031404
let events = node.node.get_and_clear_pending_events();
14041405
assert_eq!(events.len(), events_count, "{:?}", events);
14051406
let mut issues_discard_funding = false;
1406-
for event in events {
1407+
for (idx, event) in events.into_iter().enumerate() {
14071408
match event {
1408-
Event::ChannelClosed { ref reason, .. } => {
1409+
Event::ChannelClosed { ref reason, counterparty_node_id,
1410+
channel_capacity, .. } => {
14091411
assert_eq!(*reason, expected_reason);
1412+
if let Some(counterparty_node_id) = counterparty_node_id {
1413+
assert_eq!(counterparty_node_id, expected_counterparty_node_ids[idx]);
1414+
}
1415+
1416+
if let Some(channel_capacity) = channel_capacity {
1417+
assert_eq!(channel_capacity, expected_channel_capacity);
1418+
}
14101419
},
14111420
Event::DiscardFunding { .. } => {
14121421
issues_discard_funding = true;
@@ -1422,11 +1431,12 @@ pub fn check_closed_event(node: &Node, events_count: usize, expected_reason: Clo
14221431
/// Don't use this, use the identically-named function instead.
14231432
#[macro_export]
14241433
macro_rules! check_closed_event {
1425-
($node: expr, $events: expr, $reason: expr) => {
1426-
check_closed_event!($node, $events, $reason, false);
1434+
($node: expr, $events: expr, $reason: expr, $counterparty_node_ids: expr, $channel_capacity: expr) => {
1435+
check_closed_event!($node, $events, $reason, false, $counterparty_node_ids, $channel_capacity);
14271436
};
1428-
($node: expr, $events: expr, $reason: expr, $is_check_discard_funding: expr) => {
1429-
$crate::ln::functional_test_utils::check_closed_event(&$node, $events, $reason, $is_check_discard_funding);
1437+
($node: expr, $events: expr, $reason: expr, $is_check_discard_funding: expr, $counterparty_node_ids: expr, $channel_capacity: expr) => {
1438+
$crate::ln::functional_test_utils::check_closed_event(&$node, $events, $reason,
1439+
$is_check_discard_funding, &$counterparty_node_ids, $channel_capacity);
14301440
}
14311441
}
14321442

0 commit comments

Comments
 (0)