Skip to content

Commit 7138c12

Browse files
author
Antoine Riard
committed
Add test_announce_disable_channels
1 parent 70a10a9 commit 7138c12

File tree

1 file changed

+58
-0
lines changed

1 file changed

+58
-0
lines changed

lightning/src/ln/functional_tests.rs

Lines changed: 58 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6256,3 +6256,61 @@ fn test_check_htlc_underpaying() {
62566256
}
62576257
nodes[1].node.get_and_clear_pending_events();
62586258
}
6259+
6260+
fn test_announce_disable_channels() {
6261+
// Create 2 channels between A and B. Disconnect B. Call timer_chan_freshness_every_min and check for generated
6262+
// ChannelUpdate. Reconnect B, reestablish and check there is non-generated ChannelUpdate.
6263+
6264+
let nodes = create_network(2, &[None, None]);
6265+
6266+
let short_id_1 = create_announced_chan_between_nodes(&nodes, 0, 1, LocalFeatures::new(), LocalFeatures::new()).0.contents.short_channel_id;
6267+
let short_id_2 = create_announced_chan_between_nodes(&nodes, 1, 0, LocalFeatures::new(), LocalFeatures::new()).0.contents.short_channel_id;
6268+
let short_id_3 = create_announced_chan_between_nodes(&nodes, 0, 1, LocalFeatures::new(), LocalFeatures::new()).0.contents.short_channel_id;
6269+
6270+
// Disconnect peers
6271+
nodes[0].node.peer_disconnected(&nodes[1].node.get_our_node_id(), false);
6272+
nodes[1].node.peer_disconnected(&nodes[0].node.get_our_node_id(), false);
6273+
6274+
nodes[0].node.timer_chan_freshness_every_min();
6275+
let msg_events = nodes[0].node.get_and_clear_pending_msg_events();
6276+
assert_eq!(msg_events.len(), 3);
6277+
for e in msg_events {
6278+
match e {
6279+
MessageSendEvent::BroadcastChannelUpdate { ref msg } => {
6280+
let short_id = msg.contents.short_channel_id;
6281+
// Check generated channel_update match list in PendingChannelUpdate
6282+
if short_id != short_id_1 && short_id != short_id_2 && short_id != short_id_3 {
6283+
panic!("Generated ChannelUpdate for wrong chan!");
6284+
}
6285+
},
6286+
_ => panic!("Unexpected event"),
6287+
}
6288+
}
6289+
// Reconnect peers
6290+
nodes[0].node.peer_connected(&nodes[1].node.get_our_node_id());
6291+
let reestablish_1 = get_chan_reestablish_msgs!(nodes[0], nodes[1]);
6292+
assert_eq!(reestablish_1.len(), 3);
6293+
nodes[1].node.peer_connected(&nodes[0].node.get_our_node_id());
6294+
let reestablish_2 = get_chan_reestablish_msgs!(nodes[1], nodes[0]);
6295+
assert_eq!(reestablish_2.len(), 3);
6296+
6297+
// Reestablish chan_1
6298+
nodes[0].node.handle_channel_reestablish(&nodes[1].node.get_our_node_id(), &reestablish_2[0]).unwrap();
6299+
handle_chan_reestablish_msgs!(nodes[0], nodes[1]);
6300+
nodes[1].node.handle_channel_reestablish(&nodes[0].node.get_our_node_id(), &reestablish_1[0]).unwrap();
6301+
handle_chan_reestablish_msgs!(nodes[1], nodes[0]);
6302+
// Reestablish chan_2
6303+
nodes[0].node.handle_channel_reestablish(&nodes[1].node.get_our_node_id(), &reestablish_2[1]).unwrap();
6304+
handle_chan_reestablish_msgs!(nodes[0], nodes[1]);
6305+
nodes[1].node.handle_channel_reestablish(&nodes[0].node.get_our_node_id(), &reestablish_1[1]).unwrap();
6306+
handle_chan_reestablish_msgs!(nodes[1], nodes[0]);
6307+
// Reestablish chan_3
6308+
nodes[0].node.handle_channel_reestablish(&nodes[1].node.get_our_node_id(), &reestablish_2[2]).unwrap();
6309+
handle_chan_reestablish_msgs!(nodes[0], nodes[1]);
6310+
nodes[1].node.handle_channel_reestablish(&nodes[0].node.get_our_node_id(), &reestablish_1[2]).unwrap();
6311+
handle_chan_reestablish_msgs!(nodes[1], nodes[0]);
6312+
6313+
nodes[0].node.timer_chan_freshness_every_min();
6314+
let msg_events = nodes[0].node.get_and_clear_pending_msg_events();
6315+
assert_eq!(msg_events.len(), 0);
6316+
}

0 commit comments

Comments
 (0)