Skip to content

Commit 81b1af7

Browse files
author
Antoine Riard
committed
Add test_announce_disable_channels
1 parent fc48cea commit 81b1af7

File tree

1 file changed

+59
-0
lines changed

1 file changed

+59
-0
lines changed

src/ln/functional_tests.rs

Lines changed: 59 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6171,3 +6171,62 @@ fn test_data_loss_protect() {
61716171
assert_eq!(spend_txn.len(), 1);
61726172
check_spends!(spend_txn[0], node_txn[0].clone());
61736173
}
6174+
6175+
#[test]
6176+
fn test_announce_disable_channels() {
6177+
// Create 2 channels between A and B. Disconnect B. Call timer_chan_freshness_every_min and check for generated
6178+
// ChannelUpdate. Reconnect B, reestablish and check there is non-generated ChannelUpdate.
6179+
6180+
let nodes = create_network(2, &[None, None]);
6181+
6182+
let short_id_1 = create_announced_chan_between_nodes(&nodes, 0, 1, LocalFeatures::new(), LocalFeatures::new()).0.contents.short_channel_id;
6183+
let short_id_2 = create_announced_chan_between_nodes(&nodes, 1, 0, LocalFeatures::new(), LocalFeatures::new()).0.contents.short_channel_id;
6184+
let short_id_3 = create_announced_chan_between_nodes(&nodes, 0, 1, LocalFeatures::new(), LocalFeatures::new()).0.contents.short_channel_id;
6185+
6186+
// Disconnect peers
6187+
nodes[0].node.peer_disconnected(&nodes[1].node.get_our_node_id(), false);
6188+
nodes[1].node.peer_disconnected(&nodes[0].node.get_our_node_id(), false);
6189+
6190+
nodes[0].node.timer_chan_freshness_every_min();
6191+
let msg_events = nodes[0].node.get_and_clear_pending_msg_events();
6192+
assert_eq!(msg_events.len(), 3);
6193+
for e in msg_events {
6194+
match e {
6195+
MessageSendEvent::BroadcastChannelUpdate { ref msg } => {
6196+
let short_id = msg.contents.short_channel_id;
6197+
// Check generated channel_update match list in PendingChannelUpdate
6198+
if short_id != short_id_1 && short_id != short_id_2 && short_id != short_id_3 {
6199+
panic!("Generated ChannelUpdate for wrong chan!");
6200+
}
6201+
},
6202+
_ => panic!("Unexpected event"),
6203+
}
6204+
}
6205+
// Reconnect peers
6206+
nodes[0].node.peer_connected(&nodes[1].node.get_our_node_id());
6207+
let reestablish_1 = get_chan_reestablish_msgs!(nodes[0], nodes[1]);
6208+
assert_eq!(reestablish_1.len(), 3);
6209+
nodes[1].node.peer_connected(&nodes[0].node.get_our_node_id());
6210+
let reestablish_2 = get_chan_reestablish_msgs!(nodes[1], nodes[0]);
6211+
assert_eq!(reestablish_2.len(), 3);
6212+
6213+
// Reestablish chan_1
6214+
nodes[0].node.handle_channel_reestablish(&nodes[1].node.get_our_node_id(), &reestablish_2[0]).unwrap();
6215+
handle_chan_reestablish_msgs!(nodes[0], nodes[1]);
6216+
nodes[1].node.handle_channel_reestablish(&nodes[0].node.get_our_node_id(), &reestablish_1[0]).unwrap();
6217+
handle_chan_reestablish_msgs!(nodes[1], nodes[0]);
6218+
// Reestablish chan_2
6219+
nodes[0].node.handle_channel_reestablish(&nodes[1].node.get_our_node_id(), &reestablish_2[1]).unwrap();
6220+
handle_chan_reestablish_msgs!(nodes[0], nodes[1]);
6221+
nodes[1].node.handle_channel_reestablish(&nodes[0].node.get_our_node_id(), &reestablish_1[1]).unwrap();
6222+
handle_chan_reestablish_msgs!(nodes[1], nodes[0]);
6223+
// Reestablish chan_3
6224+
nodes[0].node.handle_channel_reestablish(&nodes[1].node.get_our_node_id(), &reestablish_2[2]).unwrap();
6225+
handle_chan_reestablish_msgs!(nodes[0], nodes[1]);
6226+
nodes[1].node.handle_channel_reestablish(&nodes[0].node.get_our_node_id(), &reestablish_1[2]).unwrap();
6227+
handle_chan_reestablish_msgs!(nodes[1], nodes[0]);
6228+
6229+
nodes[0].node.timer_chan_freshness_every_min();
6230+
let msg_events = nodes[0].node.get_and_clear_pending_msg_events();
6231+
assert_eq!(msg_events.len(), 0);
6232+
}

0 commit comments

Comments
 (0)