Skip to content

Commit e2bef87

Browse files
committed
Add test for the change in previous commit
1 parent 6037643 commit e2bef87

File tree

1 file changed

+50
-0
lines changed

1 file changed

+50
-0
lines changed

lightning/src/ln/channelmanager.rs

Lines changed: 50 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11689,6 +11689,56 @@ mod tests {
1168911689
}
1169011690
}
1169111691

11692+
#[test]
11693+
fn test_channel_update_cached() {
11694+
let chanmon_cfgs = create_chanmon_cfgs(3);
11695+
let node_cfgs = create_node_cfgs(3, &chanmon_cfgs);
11696+
let node_chanmgrs = create_node_chanmgrs(3, &node_cfgs, &[None, None, None]);
11697+
let nodes = create_network(3, &node_cfgs, &node_chanmgrs);
11698+
11699+
let chan = create_announced_chan_between_nodes(&nodes, 0, 1);
11700+
11701+
nodes[0].node.force_close_channel_with_peer(&chan.2, &nodes[1].node.get_our_node_id(), None, true).unwrap();
11702+
check_added_monitors!(nodes[0], 1);
11703+
check_closed_event!(nodes[0], 1, ClosureReason::HolderForceClosed, [nodes[1].node.get_our_node_id()], 100000);
11704+
11705+
{
11706+
// Assert that ChannelUpdate message has been added to node[0] pending broadcast messages
11707+
let pending_broadcast_messages= nodes[0].node.pending_broadcast_messages.lock().unwrap();
11708+
assert_eq!(pending_broadcast_messages.len(), 1);
11709+
}
11710+
11711+
// Confirm that the channel_update was not sent immediately to node[1] but was cached.
11712+
let node_1_events = nodes[1].node.get_and_clear_pending_msg_events();
11713+
assert_eq!(node_1_events.len(), 0);
11714+
11715+
// Test that we do not retrieve the pending broadcast messages when we are not connected to any peer
11716+
nodes[0].node.peer_disconnected(&nodes[1].node.get_our_node_id());
11717+
nodes[1].node.peer_disconnected(&nodes[0].node.get_our_node_id());
11718+
11719+
nodes[0].node.peer_disconnected(&nodes[2].node.get_our_node_id());
11720+
nodes[2].node.peer_disconnected(&nodes[0].node.get_our_node_id());
11721+
11722+
let node_0_events = nodes[0].node.get_and_clear_pending_msg_events();
11723+
assert_eq!(node_0_events.len(), 0);
11724+
11725+
// Now we reconnect to a peer
11726+
nodes[0].node.peer_connected(&nodes[2].node.get_our_node_id(), &msgs::Init {
11727+
features: nodes[2].node.init_features(), networks: None, remote_network_address: None
11728+
}, true).unwrap();
11729+
nodes[2].node.peer_connected(&nodes[0].node.get_our_node_id(), &msgs::Init {
11730+
features: nodes[0].node.init_features(), networks: None, remote_network_address: None
11731+
}, false).unwrap();
11732+
11733+
// Confirm that get_and_clear_pending_msg_events correctly captures pending broadcast messages
11734+
let node_0_events = nodes[0].node.get_and_clear_pending_msg_events();
11735+
assert_eq!(node_0_events.len(), 1);
11736+
match &node_0_events[0] {
11737+
MessageSendEvent::BroadcastChannelUpdate { .. } => (),
11738+
_ => panic!("Unexpected event"),
11739+
}
11740+
}
11741+
1169211742
#[test]
1169311743
fn test_drop_disconnected_peers_when_removing_channels() {
1169411744
let chanmon_cfgs = create_chanmon_cfgs(3);

0 commit comments

Comments
 (0)