Skip to content

Commit 84ea88f

Browse files
committed
Update tests for ChannelPending event
1 parent e937351 commit 84ea88f

File tree

7 files changed

+54
-5
lines changed

7 files changed

+54
-5
lines changed

lightning-background-processor/src/lib.rs

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -663,7 +663,7 @@ mod tests {
663663
use lightning::chain::channelmonitor::ANTI_REORG_DELAY;
664664
use lightning::chain::keysinterface::{InMemorySigner, KeysManager};
665665
use lightning::chain::transaction::OutPoint;
666-
use lightning::get_event_msg;
666+
use lightning::{get_event_msg, get_event};
667667
use lightning::ln::PaymentHash;
668668
use lightning::ln::channelmanager;
669669
use lightning::ln::channelmanager::{BREAKDOWN_TIMEOUT, ChainParameters, MIN_CLTV_EXPIRY_DELTA, PaymentId};
@@ -1012,7 +1012,10 @@ mod tests {
10121012
($node_a: expr, $node_b: expr, $temporary_channel_id: expr, $tx: expr) => {{
10131013
$node_a.node.funding_transaction_generated(&$temporary_channel_id, &$node_b.node.get_our_node_id(), $tx.clone()).unwrap();
10141014
$node_b.node.handle_funding_created(&$node_a.node.get_our_node_id(), &get_event_msg!($node_a, MessageSendEvent::SendFundingCreated, $node_b.node.get_our_node_id()));
1015+
get_event!($node_b, Event::ChannelPending);
1016+
10151017
$node_a.node.handle_funding_signed(&$node_b.node.get_our_node_id(), &get_event_msg!($node_b, MessageSendEvent::SendFundingSigned, $node_a.node.get_our_node_id()));
1018+
get_event!($node_a, Event::ChannelPending);
10161019
}}
10171020
}
10181021

lightning/src/ln/chanmon_update_fail_tests.rs

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1854,10 +1854,12 @@ fn do_during_funding_monitor_fail(confirm_a_first: bool, restore_b_before_conf:
18541854
let channel_id = OutPoint { txid: funding_created_msg.funding_txid, index: funding_created_msg.funding_output_index }.to_channel_id();
18551855
nodes[1].node.handle_funding_created(&nodes[0].node.get_our_node_id(), &funding_created_msg);
18561856
check_added_monitors!(nodes[1], 1);
1857+
expect_channel_pending_event(&nodes[1], &nodes[0].node.get_our_node_id());
18571858

18581859
chanmon_cfgs[0].persister.set_update_ret(ChannelMonitorUpdateStatus::InProgress);
18591860
nodes[0].node.handle_funding_signed(&nodes[1].node.get_our_node_id(), &get_event_msg!(nodes[1], MessageSendEvent::SendFundingSigned, nodes[0].node.get_our_node_id()));
18601861
check_added_monitors!(nodes[0], 1);
1862+
expect_channel_pending_event(&nodes[0], &nodes[1].node.get_our_node_id());
18611863
assert!(nodes[0].node.get_and_clear_pending_msg_events().is_empty());
18621864
assert!(nodes[0].node.get_and_clear_pending_events().is_empty());
18631865
chanmon_cfgs[0].persister.set_update_ret(ChannelMonitorUpdateStatus::Completed);
@@ -2808,6 +2810,7 @@ fn do_test_outbound_reload_without_init_mon(use_0conf: bool) {
28082810
let funding_created_msg = get_event_msg!(nodes[0], MessageSendEvent::SendFundingCreated, nodes[1].node.get_our_node_id());
28092811
nodes[1].node.handle_funding_created(&nodes[0].node.get_our_node_id(), &funding_created_msg);
28102812
check_added_monitors!(nodes[1], 1);
2813+
expect_channel_pending_event(&nodes[1], &nodes[0].node.get_our_node_id());
28112814

28122815
let bs_signed_locked = nodes[1].node.get_and_clear_pending_msg_events();
28132816
assert_eq!(bs_signed_locked.len(), if use_0conf { 2 } else { 1 });
@@ -2817,6 +2820,7 @@ fn do_test_outbound_reload_without_init_mon(use_0conf: bool) {
28172820

28182821
nodes[0].node.handle_funding_signed(&nodes[1].node.get_our_node_id(), &msg);
28192822
check_added_monitors!(nodes[0], 1);
2823+
expect_channel_pending_event(&nodes[0], &nodes[1].node.get_our_node_id());
28202824
}
28212825
_ => panic!("Unexpected event"),
28222826
}
@@ -2898,6 +2902,7 @@ fn do_test_inbound_reload_without_init_mon(use_0conf: bool, lock_commitment: boo
28982902
chanmon_cfgs[1].persister.set_update_ret(ChannelMonitorUpdateStatus::InProgress);
28992903
nodes[1].node.handle_funding_created(&nodes[0].node.get_our_node_id(), &funding_created_msg);
29002904
check_added_monitors!(nodes[1], 1);
2905+
expect_channel_pending_event(&nodes[1], &nodes[0].node.get_our_node_id());
29012906

29022907
// nodes[1] happily sends its funding_signed even though its awaiting the persistence of the
29032908
// initial ChannelMonitor, but it will decline to send its channel_ready even if the funding
@@ -2906,6 +2911,7 @@ fn do_test_inbound_reload_without_init_mon(use_0conf: bool, lock_commitment: boo
29062911

29072912
nodes[0].node.handle_funding_signed(&nodes[1].node.get_our_node_id(), &funding_signed_msg);
29082913
check_added_monitors!(nodes[0], 1);
2914+
expect_channel_pending_event(&nodes[0], &nodes[1].node.get_our_node_id());
29092915

29102916
let as_funding_tx = nodes[0].tx_broadcaster.txn_broadcasted.lock().unwrap().split_off(0);
29112917
if lock_commitment {

lightning/src/ln/channelmanager.rs

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8399,6 +8399,7 @@ mod tests {
83998399
assert_eq!(nodes_0_lock.len(), 1);
84008400
assert!(nodes_0_lock.contains_key(channel_id));
84018401
}
8402+
expect_channel_pending_event(&nodes[1], &nodes[0].node.get_our_node_id());
84028403

84038404
{
84048405
// Assert that `nodes[1]`'s `id_to_peer` map is populated with the channel as soon as
@@ -8411,6 +8412,7 @@ mod tests {
84118412
let funding_signed = get_event_msg!(nodes[1], MessageSendEvent::SendFundingSigned, nodes[0].node.get_our_node_id());
84128413
nodes[0].node.handle_funding_signed(&nodes[1].node.get_our_node_id(), &funding_signed);
84138414
check_added_monitors!(nodes[0], 1);
8415+
expect_channel_pending_event(&nodes[0], &nodes[1].node.get_our_node_id());
84148416
let (channel_ready, _) = create_chan_between_nodes_with_value_confirm(&nodes[0], &nodes[1], &tx);
84158417
let (announcement, nodes_0_update, nodes_1_update) = create_chan_between_nodes_with_value_b(&nodes[0], &nodes[1], &channel_ready);
84168418
update_nodes_with_chan_announce(&nodes, 0, 1, &announcement, &nodes_0_update, &nodes_1_update);
@@ -8553,10 +8555,13 @@ mod tests {
85538555

85548556
nodes[1].node.handle_funding_created(&nodes[0].node.get_our_node_id(), &funding_created_msg);
85558557
check_added_monitors!(nodes[1], 1);
8558+
expect_channel_pending_event(&nodes[1], &nodes[0].node.get_our_node_id());
8559+
85568560
let funding_signed = get_event_msg!(nodes[1], MessageSendEvent::SendFundingSigned, nodes[0].node.get_our_node_id());
85578561

85588562
nodes[0].node.handle_funding_signed(&nodes[1].node.get_our_node_id(), &funding_signed);
85598563
check_added_monitors!(nodes[0], 1);
8564+
expect_channel_pending_event(&nodes[0], &nodes[1].node.get_our_node_id());
85608565
}
85618566
open_channel_msg.temporary_channel_id = nodes[0].keys_manager.get_secure_random_bytes();
85628567
}

lightning/src/ln/functional_test_utils.rs

Lines changed: 21 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -881,6 +881,7 @@ pub fn sign_funding_transaction<'a, 'b, 'c>(node_a: &Node<'a, 'b, 'c>, node_b: &
881881
assert_eq!(added_monitors[0].0, funding_output);
882882
added_monitors.clear();
883883
}
884+
expect_channel_pending_event(&node_b, &node_a.node.get_our_node_id());
884885

885886
node_a.node.handle_funding_signed(&node_b.node.get_our_node_id(), &get_event_msg!(node_b, MessageSendEvent::SendFundingSigned, node_a.node.get_our_node_id()));
886887
{
@@ -889,6 +890,7 @@ pub fn sign_funding_transaction<'a, 'b, 'c>(node_a: &Node<'a, 'b, 'c>, node_b: &
889890
assert_eq!(added_monitors[0].0, funding_output);
890891
added_monitors.clear();
891892
}
893+
expect_channel_pending_event(&node_a, &node_b.node.get_our_node_id());
892894

893895
let events_4 = node_a.node.get_and_clear_pending_events();
894896
assert_eq!(events_4.len(), 0);
@@ -940,6 +942,8 @@ pub fn open_zero_conf_channel<'a, 'b, 'c, 'd>(initiator: &'a Node<'b, 'c, 'd>, r
940942
MessageSendEvent::SendFundingSigned { node_id, msg } => {
941943
assert_eq!(*node_id, initiator.node.get_our_node_id());
942944
initiator.node.handle_funding_signed(&receiver.node.get_our_node_id(), &msg);
945+
expect_channel_pending_event(&initiator, &receiver.node.get_our_node_id());
946+
expect_channel_pending_event(&receiver, &initiator.node.get_our_node_id());
943947
check_added_monitors!(initiator, 1);
944948

945949
assert_eq!(initiator.tx_broadcaster.txn_broadcasted.lock().unwrap().len(), 1);
@@ -953,11 +957,13 @@ pub fn open_zero_conf_channel<'a, 'b, 'c, 'd>(initiator: &'a Node<'b, 'c, 'd>, r
953957
MessageSendEvent::SendChannelReady { node_id, msg } => {
954958
assert_eq!(*node_id, initiator.node.get_our_node_id());
955959
initiator.node.handle_channel_ready(&receiver.node.get_our_node_id(), &msg);
960+
expect_channel_ready_event(&initiator, &receiver.node.get_our_node_id());
956961
}
957962
_ => panic!("Unexpected event"),
958963
}
959964

960965
receiver.node.handle_channel_ready(&initiator.node.get_our_node_id(), &as_channel_ready);
966+
expect_channel_ready_event(&receiver, &initiator.node.get_our_node_id());
961967

962968
let as_channel_update = get_event_msg!(initiator, MessageSendEvent::SendChannelUpdate, receiver.node.get_our_node_id());
963969
let bs_channel_update = get_event_msg!(receiver, MessageSendEvent::SendChannelUpdate, initiator.node.get_our_node_id());
@@ -968,9 +974,6 @@ pub fn open_zero_conf_channel<'a, 'b, 'c, 'd>(initiator: &'a Node<'b, 'c, 'd>, r
968974
assert_eq!(initiator.node.list_usable_channels().len(), initiator_channels + 1);
969975
assert_eq!(receiver.node.list_usable_channels().len(), receiver_channels + 1);
970976

971-
expect_channel_ready_event(&initiator, &receiver.node.get_our_node_id());
972-
expect_channel_ready_event(&receiver, &initiator.node.get_our_node_id());
973-
974977
(tx, as_channel_ready.channel_id)
975978
}
976979

@@ -1095,7 +1098,10 @@ pub fn create_unannounced_chan_between_nodes_with_value<'a, 'b, 'c, 'd>(nodes: &
10951098
check_added_monitors!(nodes[b], 1);
10961099

10971100
let cs_funding_signed = get_event_msg!(nodes[b], MessageSendEvent::SendFundingSigned, nodes[a].node.get_our_node_id());
1101+
expect_channel_pending_event(&nodes[b], &nodes[a].node.get_our_node_id());
1102+
10981103
nodes[a].node.handle_funding_signed(&nodes[b].node.get_our_node_id(), &cs_funding_signed);
1104+
expect_channel_pending_event(&nodes[a], &nodes[b].node.get_our_node_id());
10991105
check_added_monitors!(nodes[a], 1);
11001106

11011107
let conf_height = core::cmp::max(nodes[a].best_block_info().1 + 1, nodes[b].best_block_info().1 + 1);
@@ -1793,6 +1799,18 @@ macro_rules! expect_payment_forwarded {
17931799
}
17941800
}
17951801

1802+
#[cfg(any(test, feature = "_bench_unstable", feature = "_test_utils"))]
1803+
pub fn expect_channel_pending_event<'a, 'b, 'c, 'd>(node: &'a Node<'b, 'c, 'd>, expected_counterparty_node_id: &PublicKey) {
1804+
let events = node.node.get_and_clear_pending_events();
1805+
assert_eq!(events.len(), 1);
1806+
match events[0] {
1807+
crate::util::events::Event::ChannelPending{ ref counterparty_node_id, .. } => {
1808+
assert_eq!(*expected_counterparty_node_id, *counterparty_node_id);
1809+
},
1810+
_ => panic!("Unexpected event"),
1811+
}
1812+
}
1813+
17961814
#[cfg(any(test, feature = "_bench_unstable", feature = "_test_utils"))]
17971815
pub fn expect_channel_ready_event<'a, 'b, 'c, 'd>(node: &'a Node<'b, 'c, 'd>, expected_counterparty_node_id: &PublicKey) {
17981816
let events = node.node.get_and_clear_pending_events();
@@ -1805,7 +1823,6 @@ pub fn expect_channel_ready_event<'a, 'b, 'c, 'd>(node: &'a Node<'b, 'c, 'd>, ex
18051823
}
18061824
}
18071825

1808-
18091826
pub struct PaymentFailedConditions<'a> {
18101827
pub(crate) expected_htlc_error_data: Option<(u16, &'a [u8])>,
18111828
pub(crate) expected_blamed_scid: Option<u64>,

lightning/src/ln/functional_tests.rs

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -540,6 +540,8 @@ fn do_test_sanity_on_in_flight_opens(steps: u8) {
540540
assert_eq!(added_monitors[0].0, funding_output);
541541
added_monitors.clear();
542542
}
543+
expect_channel_pending_event(&nodes[1], &nodes[0].node.get_our_node_id());
544+
543545
let funding_signed = get_event_msg!(nodes[1], MessageSendEvent::SendFundingSigned, nodes[0].node.get_our_node_id());
544546

545547
if steps & 0x0f == 5 { return; }
@@ -551,6 +553,7 @@ fn do_test_sanity_on_in_flight_opens(steps: u8) {
551553
added_monitors.clear();
552554
}
553555

556+
expect_channel_pending_event(&nodes[0], &nodes[1].node.get_our_node_id());
554557
let events_4 = nodes[0].node.get_and_clear_pending_events();
555558
assert_eq!(events_4.len(), 0);
556559

@@ -8685,6 +8688,8 @@ fn test_duplicate_chan_id() {
86858688
assert_eq!(added_monitors[0].0, funding_output);
86868689
added_monitors.clear();
86878690
}
8691+
expect_channel_pending_event(&nodes[1], &nodes[0].node.get_our_node_id());
8692+
86888693
let funding_signed_msg = get_event_msg!(nodes[1], MessageSendEvent::SendFundingSigned, nodes[0].node.get_our_node_id());
86898694

86908695
let funding_outpoint = crate::chain::transaction::OutPoint { txid: funding_created_msg.funding_txid, index: funding_created_msg.funding_output_index };
@@ -8760,6 +8765,7 @@ fn test_duplicate_chan_id() {
87608765
assert_eq!(added_monitors[0].0, funding_output);
87618766
added_monitors.clear();
87628767
}
8768+
expect_channel_pending_event(&nodes[0], &nodes[1].node.get_our_node_id());
87638769

87648770
let events_4 = nodes[0].node.get_and_clear_pending_events();
87658771
assert_eq!(events_4.len(), 0);
@@ -8874,9 +8880,11 @@ fn test_invalid_funding_tx() {
88748880
nodes[0].node.funding_transaction_generated_unchecked(&temporary_channel_id, &nodes[1].node.get_our_node_id(), tx.clone(), 0).unwrap();
88758881
nodes[1].node.handle_funding_created(&nodes[0].node.get_our_node_id(), &get_event_msg!(nodes[0], MessageSendEvent::SendFundingCreated, nodes[1].node.get_our_node_id()));
88768882
check_added_monitors!(nodes[1], 1);
8883+
expect_channel_pending_event(&nodes[1], &nodes[0].node.get_our_node_id());
88778884

88788885
nodes[0].node.handle_funding_signed(&nodes[1].node.get_our_node_id(), &get_event_msg!(nodes[1], MessageSendEvent::SendFundingSigned, nodes[0].node.get_our_node_id()));
88798886
check_added_monitors!(nodes[0], 1);
8887+
expect_channel_pending_event(&nodes[0], &nodes[1].node.get_our_node_id());
88808888

88818889
let events_1 = nodes[0].node.get_and_clear_pending_events();
88828890
assert_eq!(events_1.len(), 0);
@@ -9407,9 +9415,11 @@ fn do_test_max_dust_htlc_exposure(dust_outbound_balance: bool, exposure_breach_e
94079415
nodes[0].node.funding_transaction_generated(&temporary_channel_id, &nodes[1].node.get_our_node_id(), tx.clone()).unwrap();
94089416
nodes[1].node.handle_funding_created(&nodes[0].node.get_our_node_id(), &get_event_msg!(nodes[0], MessageSendEvent::SendFundingCreated, nodes[1].node.get_our_node_id()));
94099417
check_added_monitors!(nodes[1], 1);
9418+
expect_channel_pending_event(&nodes[1], &nodes[0].node.get_our_node_id());
94109419

94119420
nodes[0].node.handle_funding_signed(&nodes[1].node.get_our_node_id(), &get_event_msg!(nodes[1], MessageSendEvent::SendFundingSigned, nodes[0].node.get_our_node_id()));
94129421
check_added_monitors!(nodes[0], 1);
9422+
expect_channel_pending_event(&nodes[0], &nodes[1].node.get_our_node_id());
94139423

94149424
let (channel_ready, channel_id) = create_chan_between_nodes_with_value_confirm(&nodes[0], &nodes[1], &tx);
94159425
let (announcement, as_update, bs_update) = create_chan_between_nodes_with_value_b(&nodes[0], &nodes[1], &channel_ready);

lightning/src/ln/priv_short_conf_tests.rs

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -362,7 +362,10 @@ fn test_inbound_scid_privacy() {
362362
check_added_monitors!(nodes[2], 1);
363363

364364
let cs_funding_signed = get_event_msg!(nodes[2], MessageSendEvent::SendFundingSigned, nodes[1].node.get_our_node_id());
365+
expect_channel_pending_event(&nodes[2], &nodes[1].node.get_our_node_id());
366+
365367
nodes[1].node.handle_funding_signed(&nodes[2].node.get_our_node_id(), &cs_funding_signed);
368+
expect_channel_pending_event(&nodes[1], &nodes[2].node.get_our_node_id());
366369
check_added_monitors!(nodes[1], 1);
367370

368371
let conf_height = core::cmp::max(nodes[1].best_block_info().1 + 1, nodes[2].best_block_info().1 + 1);
@@ -594,6 +597,7 @@ fn test_0conf_channel_with_async_monitor() {
594597

595598
chanmon_cfgs[1].persister.set_update_ret(ChannelMonitorUpdateStatus::InProgress);
596599
nodes[1].node.handle_funding_created(&nodes[0].node.get_our_node_id(), &funding_created);
600+
expect_channel_pending_event(&nodes[1], &nodes[0].node.get_our_node_id());
597601
check_added_monitors!(nodes[1], 1);
598602
assert!(nodes[1].node.get_and_clear_pending_events().is_empty());
599603

@@ -608,6 +612,7 @@ fn test_0conf_channel_with_async_monitor() {
608612
MessageSendEvent::SendFundingSigned { node_id, msg } => {
609613
assert_eq!(*node_id, nodes[0].node.get_our_node_id());
610614
nodes[0].node.handle_funding_signed(&nodes[1].node.get_our_node_id(), &msg);
615+
expect_channel_pending_event(&nodes[0], &nodes[1].node.get_our_node_id());
611616
check_added_monitors!(nodes[0], 1);
612617
}
613618
_ => panic!("Unexpected event"),

lightning/src/ln/reload_tests.rs

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -260,6 +260,9 @@ fn test_manager_serialize_deserialize_events() {
260260
}
261261
// Normally, this is where node_a would broadcast the funding transaction, but the test de/serializes first instead
262262

263+
expect_channel_pending_event(&node_a, &node_b.node.get_our_node_id());
264+
expect_channel_pending_event(&node_b, &node_a.node.get_our_node_id());
265+
263266
nodes.push(node_a);
264267
nodes.push(node_b);
265268

0 commit comments

Comments
 (0)