diff --git a/lightning/src/ln/functional_tests_splice.rs b/lightning/src/ln/functional_tests_splice.rs index c8329393dfc..936b22c3031 100644 --- a/lightning/src/ln/functional_tests_splice.rs +++ b/lightning/src/ln/functional_tests_splice.rs @@ -22,9 +22,7 @@ use crate::util::config::{ChannelHandshakeConfig, UserConfig}; fn test_v1_splice_in() { // Set up a network of 2 nodes let cfg = UserConfig { - channel_handshake_config: ChannelHandshakeConfig { - ..Default::default() - }, + channel_handshake_config: ChannelHandshakeConfig { ..Default::default() }, ..Default::default() }; let chanmon_cfgs = create_chanmon_cfgs(2); @@ -43,27 +41,69 @@ fn test_v1_splice_in() { let push_msat = 0; let channel_reserve_amnt_sat = 1_000; - let expected_funded_channel_id = "ae3367da2c13bc1ceb86bf56418f62828f7ce9d6bfb15a46af5ba1f1ed8b124f"; + let expected_funded_channel_id = + "ae3367da2c13bc1ceb86bf56418f62828f7ce9d6bfb15a46af5ba1f1ed8b124f"; // Have initiator_node initiate a channel to acceptor_node with aforementioned parameters - let channel_id_temp1 = initiator_node.node.create_channel(acceptor_node.node.get_our_node_id(), channel_value_sat, push_msat, 42, None, None).unwrap(); + let channel_id_temp1 = initiator_node + .node + .create_channel( + acceptor_node.node.get_our_node_id(), + channel_value_sat, + push_msat, + 42, + None, + None, + ) + .unwrap(); // Extract the channel open message from initiator_node to acceptor_node - let open_channel_message = get_event_msg!(initiator_node, MessageSendEvent::SendOpenChannel, acceptor_node.node.get_our_node_id()); - - let _res = acceptor_node.node.handle_open_channel(initiator_node.node.get_our_node_id(), &open_channel_message.clone()); + let open_channel_message = get_event_msg!( + initiator_node, + MessageSendEvent::SendOpenChannel, + acceptor_node.node.get_our_node_id() + ); + + let _res = acceptor_node + .node + .handle_open_channel(initiator_node.node.get_our_node_id(), &open_channel_message.clone()); // Extract the accept channel message from acceptor_node to initiator_node - let accept_channel_message = get_event_msg!(acceptor_node, MessageSendEvent::SendAcceptChannel, initiator_node.node.get_our_node_id()); - let _res = initiator_node.node.handle_accept_channel(acceptor_node.node.get_our_node_id(), &accept_channel_message.clone()); + let accept_channel_message = get_event_msg!( + acceptor_node, + MessageSendEvent::SendAcceptChannel, + initiator_node.node.get_our_node_id() + ); + let _res = initiator_node.node.handle_accept_channel( + acceptor_node.node.get_our_node_id(), + &accept_channel_message.clone(), + ); // Note: FundingGenerationReady emitted, checked and used below - let (_channel_id_temp2, funding_tx, _funding_output) = create_funding_transaction(&initiator_node, &acceptor_node.node.get_our_node_id(), channel_value_sat, 42); + let (_channel_id_temp2, funding_tx, _funding_output) = create_funding_transaction( + &initiator_node, + &acceptor_node.node.get_our_node_id(), + channel_value_sat, + 42, + ); // Funding transation created, provide it - let _res = initiator_node.node.funding_transaction_generated(channel_id_temp1, acceptor_node.node.get_our_node_id(), funding_tx.clone()).unwrap(); - - let funding_created_message = get_event_msg!(initiator_node, MessageSendEvent::SendFundingCreated, acceptor_node.node.get_our_node_id()); - - let _res = acceptor_node.node.handle_funding_created(initiator_node.node.get_our_node_id(), &funding_created_message); + let _res = initiator_node + .node + .funding_transaction_generated( + channel_id_temp1, + acceptor_node.node.get_our_node_id(), + funding_tx.clone(), + ) + .unwrap(); + + let funding_created_message = get_event_msg!( + initiator_node, + MessageSendEvent::SendFundingCreated, + acceptor_node.node.get_our_node_id() + ); + + let _res = acceptor_node + .node + .handle_funding_created(initiator_node.node.get_our_node_id(), &funding_created_message); assert_eq!(initiator_node.node.list_channels().len(), 1); { @@ -77,15 +117,26 @@ fn test_v1_splice_in() { assert!(!channel.is_channel_ready); } - let funding_signed_message = get_event_msg!(acceptor_node, MessageSendEvent::SendFundingSigned, initiator_node.node.get_our_node_id()); - let _res = initiator_node.node.handle_funding_signed(acceptor_node.node.get_our_node_id(), &funding_signed_message); + let funding_signed_message = get_event_msg!( + acceptor_node, + MessageSendEvent::SendFundingSigned, + initiator_node.node.get_our_node_id() + ); + let _res = initiator_node + .node + .handle_funding_signed(acceptor_node.node.get_our_node_id(), &funding_signed_message); // Take new channel ID let channel_id2 = funding_signed_message.channel_id; assert_eq!(channel_id2.to_string(), expected_funded_channel_id); // Check that funding transaction has been broadcasted - assert_eq!(chanmon_cfgs[initiator_node_index].tx_broadcaster.txn_broadcasted.lock().unwrap().len(), 1); - let broadcasted_funding_tx = chanmon_cfgs[initiator_node_index].tx_broadcaster.txn_broadcasted.lock().unwrap()[0].clone(); + assert_eq!( + chanmon_cfgs[initiator_node_index].tx_broadcaster.txn_broadcasted.lock().unwrap().len(), + 1 + ); + let broadcasted_funding_tx = + chanmon_cfgs[initiator_node_index].tx_broadcaster.txn_broadcasted.lock().unwrap()[0] + .clone(); check_added_monitors!(initiator_node, 1); let _ev = get_event!(initiator_node, Event::ChannelPending); @@ -94,18 +145,38 @@ fn test_v1_splice_in() { // Simulate confirmation of the funding tx confirm_transaction(&initiator_node, &broadcasted_funding_tx); - let channel_ready_message = get_event_msg!(initiator_node, MessageSendEvent::SendChannelReady, acceptor_node.node.get_our_node_id()); + let channel_ready_message = get_event_msg!( + initiator_node, + MessageSendEvent::SendChannelReady, + acceptor_node.node.get_our_node_id() + ); confirm_transaction(&acceptor_node, &broadcasted_funding_tx); - let channel_ready_message2 = get_event_msg!(acceptor_node, MessageSendEvent::SendChannelReady, initiator_node.node.get_our_node_id()); - - let _res = acceptor_node.node.handle_channel_ready(initiator_node.node.get_our_node_id(), &channel_ready_message); + let channel_ready_message2 = get_event_msg!( + acceptor_node, + MessageSendEvent::SendChannelReady, + initiator_node.node.get_our_node_id() + ); + + let _res = acceptor_node + .node + .handle_channel_ready(initiator_node.node.get_our_node_id(), &channel_ready_message); let _ev = get_event!(acceptor_node, Event::ChannelReady); - let _channel_update = get_event_msg!(acceptor_node, MessageSendEvent::SendChannelUpdate, initiator_node.node.get_our_node_id()); - - let _res = initiator_node.node.handle_channel_ready(acceptor_node.node.get_our_node_id(), &channel_ready_message2); + let _channel_update = get_event_msg!( + acceptor_node, + MessageSendEvent::SendChannelUpdate, + initiator_node.node.get_our_node_id() + ); + + let _res = initiator_node + .node + .handle_channel_ready(acceptor_node.node.get_our_node_id(), &channel_ready_message2); let _ev = get_event!(initiator_node, Event::ChannelReady); - let _channel_update = get_event_msg!(initiator_node, MessageSendEvent::SendChannelUpdate, acceptor_node.node.get_our_node_id()); + let _channel_update = get_event_msg!( + initiator_node, + MessageSendEvent::SendChannelUpdate, + acceptor_node.node.get_our_node_id() + ); // check channel capacity and other parameters assert_eq!(initiator_node.node.list_channels().len(), 1); @@ -115,7 +186,10 @@ fn test_v1_splice_in() { assert!(channel.is_usable); assert!(channel.is_channel_ready); assert_eq!(channel.channel_value_satoshis, channel_value_sat); - assert_eq!(channel.outbound_capacity_msat, 1000 * (channel_value_sat - channel_reserve_amnt_sat)); + assert_eq!( + channel.outbound_capacity_msat, + 1000 * (channel_value_sat - channel_reserve_amnt_sat) + ); assert_eq!(channel.funding_txo.unwrap().txid, funding_tx.compute_txid()); assert_eq!(channel.confirmations.unwrap(), 10); } @@ -143,13 +217,32 @@ fn test_v1_splice_in() { let locktime = 0; // TODO // Initiate splice-in (on initiator_node) - let _res = initiator_node.node.splice_channel(&channel_id2, &acceptor_node.node.get_our_node_id(), splice_in_sats as i64, Vec::new(), funding_feerate_perkw, locktime).unwrap(); + let _res = initiator_node + .node + .splice_channel( + &channel_id2, + &acceptor_node.node.get_our_node_id(), + splice_in_sats as i64, + Vec::new(), + funding_feerate_perkw, + locktime, + ) + .unwrap(); // Extract the splice message from node0 to node1 - let splice_msg = get_event_msg!(initiator_node, MessageSendEvent::SendSpliceInit, acceptor_node.node.get_our_node_id()); - - let _res = acceptor_node.node.handle_splice_init(initiator_node.node.get_our_node_id(), &splice_msg); + let splice_msg = get_event_msg!( + initiator_node, + MessageSendEvent::SendSpliceInit, + acceptor_node.node.get_our_node_id() + ); + + let _res = + acceptor_node.node.handle_splice_init(initiator_node.node.get_our_node_id(), &splice_msg); // Extract the splice_ack message from node1 to node0 - let splice_ack_msg = get_event_msg!(acceptor_node, MessageSendEvent::SendSpliceAck, initiator_node.node.get_our_node_id()); + let splice_ack_msg = get_event_msg!( + acceptor_node, + MessageSendEvent::SendSpliceAck, + initiator_node.node.get_our_node_id() + ); // still pre-splice channel: capacity not updated, channel usable, and funding tx set assert_eq!(acceptor_node.node.list_channels().len(), 1); @@ -164,7 +257,9 @@ fn test_v1_splice_in() { assert!(channel.confirmations.unwrap() > 0); } - let _res = initiator_node.node.handle_splice_ack(acceptor_node.node.get_our_node_id(), &splice_ack_msg); + let _res = initiator_node + .node + .handle_splice_ack(acceptor_node.node.get_our_node_id(), &splice_ack_msg); // still pre-splice channel: capacity not updated, channel usable, and funding tx set assert_eq!(initiator_node.node.list_channels().len(), 1); @@ -174,7 +269,10 @@ fn test_v1_splice_in() { assert!(channel.is_usable); assert!(channel.is_channel_ready); assert_eq!(channel.channel_value_satoshis, channel_value_sat); - assert_eq!(channel.outbound_capacity_msat, 1000 * (channel_value_sat - channel_reserve_amnt_sat)); + assert_eq!( + channel.outbound_capacity_msat, + 1000 * (channel_value_sat - channel_reserve_amnt_sat) + ); assert!(channel.funding_txo.is_some()); assert!(channel.confirmations.unwrap() > 0); } @@ -185,9 +283,23 @@ fn test_v1_splice_in() { // === Close channel, cooperatively initiator_node.node.close_channel(&channel_id2, &acceptor_node.node.get_our_node_id()).unwrap(); - let node0_shutdown_message = get_event_msg!(initiator_node, MessageSendEvent::SendShutdown, acceptor_node.node.get_our_node_id()); - acceptor_node.node.handle_shutdown(initiator_node.node.get_our_node_id(), &node0_shutdown_message); - let nodes_1_shutdown = get_event_msg!(acceptor_node, MessageSendEvent::SendShutdown, initiator_node.node.get_our_node_id()); + let node0_shutdown_message = get_event_msg!( + initiator_node, + MessageSendEvent::SendShutdown, + acceptor_node.node.get_our_node_id() + ); + acceptor_node + .node + .handle_shutdown(initiator_node.node.get_our_node_id(), &node0_shutdown_message); + let nodes_1_shutdown = get_event_msg!( + acceptor_node, + MessageSendEvent::SendShutdown, + initiator_node.node.get_our_node_id() + ); initiator_node.node.handle_shutdown(acceptor_node.node.get_our_node_id(), &nodes_1_shutdown); - let _ = get_event_msg!(initiator_node, MessageSendEvent::SendClosingSigned, acceptor_node.node.get_our_node_id()); + let _ = get_event_msg!( + initiator_node, + MessageSendEvent::SendClosingSigned, + acceptor_node.node.get_our_node_id() + ); }