Skip to content

Commit c8ae6c1

Browse files
committed
Move open_zero_conf_channel utility to common test utils
1 parent 00f08c9 commit c8ae6c1

File tree

2 files changed

+68
-65
lines changed

2 files changed

+68
-65
lines changed

lightning/src/ln/functional_test_utils.rs

Lines changed: 66 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -669,6 +669,72 @@ pub fn sign_funding_transaction<'a, 'b, 'c>(node_a: &Node<'a, 'b, 'c>, node_b: &
669669
tx
670670
}
671671

672+
// Receiver must have been initialized with manually_accept_inbound_channels set to true.
673+
pub fn open_zero_conf_channel<'a, 'b, 'c, 'd>(initiator: &'a Node<'b, 'c, 'd>, receiver: &'a Node<'b, 'c, 'd>, initiator_config: Option<UserConfig>) -> (bitcoin::Transaction, [u8; 32]) {
674+
let initiator_channels = initiator.node.list_usable_channels().len();
675+
let receiver_channels = receiver.node.list_usable_channels().len();
676+
677+
initiator.node.create_channel(receiver.node.get_our_node_id(), 100_000, 10_001, 42, initiator_config).unwrap();
678+
let open_channel = get_event_msg!(initiator, MessageSendEvent::SendOpenChannel, receiver.node.get_our_node_id());
679+
680+
receiver.node.handle_open_channel(&initiator.node.get_our_node_id(), InitFeatures::known(), &open_channel);
681+
let events = receiver.node.get_and_clear_pending_events();
682+
assert_eq!(events.len(), 1);
683+
match events[0] {
684+
Event::OpenChannelRequest { temporary_channel_id, .. } => {
685+
receiver.node.accept_inbound_channel_from_trusted_peer_0conf(&temporary_channel_id, &initiator.node.get_our_node_id(), 0).unwrap();
686+
},
687+
_ => panic!("Unexpected event"),
688+
};
689+
690+
let accept_channel = get_event_msg!(receiver, MessageSendEvent::SendAcceptChannel, initiator.node.get_our_node_id());
691+
assert_eq!(accept_channel.minimum_depth, 0);
692+
initiator.node.handle_accept_channel(&receiver.node.get_our_node_id(), InitFeatures::known(), &accept_channel);
693+
694+
let (temporary_channel_id, tx, _) = create_funding_transaction(&initiator, &receiver.node.get_our_node_id(), 100_000, 42);
695+
initiator.node.funding_transaction_generated(&temporary_channel_id, &receiver.node.get_our_node_id(), tx.clone()).unwrap();
696+
let funding_created = get_event_msg!(initiator, MessageSendEvent::SendFundingCreated, receiver.node.get_our_node_id());
697+
698+
receiver.node.handle_funding_created(&initiator.node.get_our_node_id(), &funding_created);
699+
check_added_monitors!(receiver, 1);
700+
let bs_signed_locked = receiver.node.get_and_clear_pending_msg_events();
701+
assert_eq!(bs_signed_locked.len(), 2);
702+
let as_channel_ready;
703+
match &bs_signed_locked[0] {
704+
MessageSendEvent::SendFundingSigned { node_id, msg } => {
705+
assert_eq!(*node_id, initiator.node.get_our_node_id());
706+
initiator.node.handle_funding_signed(&receiver.node.get_our_node_id(), &msg);
707+
check_added_monitors!(initiator, 1);
708+
709+
assert_eq!(initiator.tx_broadcaster.txn_broadcasted.lock().unwrap().len(), 1);
710+
assert_eq!(initiator.tx_broadcaster.txn_broadcasted.lock().unwrap().split_off(0)[0], tx);
711+
712+
as_channel_ready = get_event_msg!(initiator, MessageSendEvent::SendChannelReady, receiver.node.get_our_node_id());
713+
}
714+
_ => panic!("Unexpected event"),
715+
}
716+
match &bs_signed_locked[1] {
717+
MessageSendEvent::SendChannelReady { node_id, msg } => {
718+
assert_eq!(*node_id, initiator.node.get_our_node_id());
719+
initiator.node.handle_channel_ready(&receiver.node.get_our_node_id(), &msg);
720+
}
721+
_ => panic!("Unexpected event"),
722+
}
723+
724+
receiver.node.handle_channel_ready(&initiator.node.get_our_node_id(), &as_channel_ready);
725+
726+
let as_channel_update = get_event_msg!(initiator, MessageSendEvent::SendChannelUpdate, receiver.node.get_our_node_id());
727+
let bs_channel_update = get_event_msg!(receiver, MessageSendEvent::SendChannelUpdate, initiator.node.get_our_node_id());
728+
729+
initiator.node.handle_channel_update(&receiver.node.get_our_node_id(), &bs_channel_update);
730+
receiver.node.handle_channel_update(&initiator.node.get_our_node_id(), &as_channel_update);
731+
732+
assert_eq!(initiator.node.list_usable_channels().len(), initiator_channels + 1);
733+
assert_eq!(receiver.node.list_usable_channels().len(), receiver_channels + 1);
734+
735+
(tx, as_channel_ready.channel_id)
736+
}
737+
672738
pub fn create_chan_between_nodes_with_value_init<'a, 'b, 'c>(node_a: &Node<'a, 'b, 'c>, node_b: &Node<'a, 'b, 'c>, channel_value: u64, push_msat: u64, a_flags: InitFeatures, b_flags: InitFeatures) -> Transaction {
673739
let create_chan_id = node_a.node.create_channel(node_b.node.get_our_node_id(), channel_value, push_msat, 42, None).unwrap();
674740
let open_channel_msg = get_event_msg!(node_a, MessageSendEvent::SendOpenChannel, node_b.node.get_our_node_id());

lightning/src/ln/priv_short_conf_tests.rs

Lines changed: 2 additions & 65 deletions
Original file line numberDiff line numberDiff line change
@@ -565,69 +565,6 @@ fn test_scid_alias_returned() {
565565
.blamed_chan_closed(false).expected_htlc_error_data(0x1000|12, &err_data));
566566
}
567567

568-
// Receiver must have been initialized with manually_accept_inbound_channels set to true.
569-
fn open_zero_conf_channel<'a, 'b, 'c, 'd>(initiator: &'a Node<'b, 'c, 'd>, receiver: &'a Node<'b, 'c, 'd>, initiator_config: Option<UserConfig>) -> bitcoin::Transaction {
570-
initiator.node.create_channel(receiver.node.get_our_node_id(), 100_000, 10_001, 42, initiator_config).unwrap();
571-
let open_channel = get_event_msg!(initiator, MessageSendEvent::SendOpenChannel, receiver.node.get_our_node_id());
572-
573-
receiver.node.handle_open_channel(&initiator.node.get_our_node_id(), InitFeatures::known(), &open_channel);
574-
let events = receiver.node.get_and_clear_pending_events();
575-
assert_eq!(events.len(), 1);
576-
match events[0] {
577-
Event::OpenChannelRequest { temporary_channel_id, .. } => {
578-
receiver.node.accept_inbound_channel_from_trusted_peer_0conf(&temporary_channel_id, &initiator.node.get_our_node_id(), 0).unwrap();
579-
},
580-
_ => panic!("Unexpected event"),
581-
};
582-
583-
let mut accept_channel = get_event_msg!(receiver, MessageSendEvent::SendAcceptChannel, initiator.node.get_our_node_id());
584-
assert_eq!(accept_channel.minimum_depth, 0);
585-
initiator.node.handle_accept_channel(&receiver.node.get_our_node_id(), InitFeatures::known(), &accept_channel);
586-
587-
let (temporary_channel_id, tx, _) = create_funding_transaction(&initiator, &receiver.node.get_our_node_id(), 100_000, 42);
588-
initiator.node.funding_transaction_generated(&temporary_channel_id, &receiver.node.get_our_node_id(), tx.clone()).unwrap();
589-
let funding_created = get_event_msg!(initiator, MessageSendEvent::SendFundingCreated, receiver.node.get_our_node_id());
590-
591-
receiver.node.handle_funding_created(&initiator.node.get_our_node_id(), &funding_created);
592-
check_added_monitors!(receiver, 1);
593-
let bs_signed_locked = receiver.node.get_and_clear_pending_msg_events();
594-
assert_eq!(bs_signed_locked.len(), 2);
595-
let as_channel_ready;
596-
match &bs_signed_locked[0] {
597-
MessageSendEvent::SendFundingSigned { node_id, msg } => {
598-
assert_eq!(*node_id, initiator.node.get_our_node_id());
599-
initiator.node.handle_funding_signed(&receiver.node.get_our_node_id(), &msg);
600-
check_added_monitors!(initiator, 1);
601-
602-
assert_eq!(initiator.tx_broadcaster.txn_broadcasted.lock().unwrap().len(), 1);
603-
assert_eq!(initiator.tx_broadcaster.txn_broadcasted.lock().unwrap().split_off(0)[0], tx);
604-
605-
as_channel_ready = get_event_msg!(initiator, MessageSendEvent::SendChannelReady, receiver.node.get_our_node_id());
606-
}
607-
_ => panic!("Unexpected event"),
608-
}
609-
match &bs_signed_locked[1] {
610-
MessageSendEvent::SendChannelReady { node_id, msg } => {
611-
assert_eq!(*node_id, initiator.node.get_our_node_id());
612-
initiator.node.handle_channel_ready(&receiver.node.get_our_node_id(), &msg);
613-
}
614-
_ => panic!("Unexpected event"),
615-
}
616-
617-
receiver.node.handle_channel_ready(&initiator.node.get_our_node_id(), &as_channel_ready);
618-
619-
let as_channel_update = get_event_msg!(initiator, MessageSendEvent::SendChannelUpdate, receiver.node.get_our_node_id());
620-
let bs_channel_update = get_event_msg!(receiver, MessageSendEvent::SendChannelUpdate, initiator.node.get_our_node_id());
621-
622-
initiator.node.handle_channel_update(&receiver.node.get_our_node_id(), &bs_channel_update);
623-
receiver.node.handle_channel_update(&initiator.node.get_our_node_id(), &as_channel_update);
624-
625-
assert_eq!(initiator.node.list_usable_channels().len(), 1);
626-
assert_eq!(receiver.node.list_usable_channels().len(), 1);
627-
628-
tx
629-
}
630-
631568
#[test]
632569
fn test_simple_0conf_channel() {
633570
// If our peer tells us they will accept our channel with 0 confs, and we funded the channel,
@@ -836,7 +773,7 @@ fn test_public_0conf_channel() {
836773

837774
// This is the default but we force it on anyway
838775
chan_config.channel_handshake_config.announced_channel = true;
839-
let tx = open_zero_conf_channel(&nodes[0], &nodes[1], Some(chan_config));
776+
let (tx, ..) = open_zero_conf_channel(&nodes[0], &nodes[1], Some(chan_config));
840777

841778
// We can use the channel immediately, but we can't announce it until we get 6+ confirmations
842779
send_payment(&nodes[0], &[&nodes[1]], 100_000);
@@ -889,7 +826,7 @@ fn test_0conf_channel_reorg() {
889826

890827
// This is the default but we force it on anyway
891828
chan_config.channel_handshake_config.announced_channel = true;
892-
let tx = open_zero_conf_channel(&nodes[0], &nodes[1], Some(chan_config));
829+
let (tx, ..) = open_zero_conf_channel(&nodes[0], &nodes[1], Some(chan_config));
893830

894831
// We can use the channel immediately, but we can't announce it until we get 6+ confirmations
895832
send_payment(&nodes[0], &[&nodes[1]], 100_000);

0 commit comments

Comments
 (0)