Skip to content

Commit cc2ab57

Browse files
committed
Add test for the change in previous commit
1 parent 5605ae7 commit cc2ab57

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
@@ -11639,6 +11639,56 @@ mod tests {
1163911639
}
1164011640
}
1164111641

11642+
#[test]
11643+
fn test_channel_update_cached() {
11644+
let chanmon_cfgs = create_chanmon_cfgs(3);
11645+
let node_cfgs = create_node_cfgs(3, &chanmon_cfgs);
11646+
let node_chanmgrs = create_node_chanmgrs(3, &node_cfgs, &[None, None, None]);
11647+
let nodes = create_network(3, &node_cfgs, &node_chanmgrs);
11648+
11649+
let chan = create_announced_chan_between_nodes(&nodes, 0, 1);
11650+
11651+
nodes[0].node.force_close_channel_with_peer(&chan.2, &nodes[1].node.get_our_node_id(), None, true).unwrap();
11652+
check_added_monitors!(nodes[0], 1);
11653+
check_closed_event!(nodes[0], 1, ClosureReason::HolderForceClosed, [nodes[1].node.get_our_node_id()], 100000);
11654+
11655+
{
11656+
// Assert that ChannelUpdate message has been added to node[0] pending broadcast messages
11657+
let pending_broadcast_messages= nodes[0].node.pending_broadcast_messages.lock().unwrap();
11658+
assert_eq!(pending_broadcast_messages.len(), 1);
11659+
}
11660+
11661+
// Confirm that the channel_update was not sent immediately to node[1] but was cached.
11662+
let node_1_events = nodes[1].node.get_and_clear_pending_msg_events();
11663+
assert_eq!(node_1_events.len(), 0);
11664+
11665+
// Test that we do not retrieve the pending broadcast messages when we are not connected to any peer
11666+
nodes[0].node.peer_disconnected(&nodes[1].node.get_our_node_id());
11667+
nodes[1].node.peer_disconnected(&nodes[0].node.get_our_node_id());
11668+
11669+
nodes[0].node.peer_disconnected(&nodes[2].node.get_our_node_id());
11670+
nodes[2].node.peer_disconnected(&nodes[0].node.get_our_node_id());
11671+
11672+
let node_0_events = nodes[0].node.get_and_clear_pending_msg_events();
11673+
assert_eq!(node_0_events.len(), 0);
11674+
11675+
// Now we reconnect to a peer
11676+
nodes[0].node.peer_connected(&nodes[2].node.get_our_node_id(), &msgs::Init {
11677+
features: nodes[2].node.init_features(), networks: None, remote_network_address: None
11678+
}, true).unwrap();
11679+
nodes[2].node.peer_connected(&nodes[0].node.get_our_node_id(), &msgs::Init {
11680+
features: nodes[0].node.init_features(), networks: None, remote_network_address: None
11681+
}, false).unwrap();
11682+
11683+
// Confirm that get_and_clear_pending_msg_events correctly captures pending broadcast messages
11684+
let node_0_events = nodes[0].node.get_and_clear_pending_msg_events();
11685+
assert_eq!(node_0_events.len(), 1);
11686+
match &node_0_events[0] {
11687+
MessageSendEvent::BroadcastChannelUpdate { .. } => (),
11688+
_ => panic!("Unexpected event"),
11689+
}
11690+
}
11691+
1164211692
#[test]
1164311693
fn test_drop_disconnected_peers_when_removing_channels() {
1164411694
let chanmon_cfgs = create_chanmon_cfgs(3);

0 commit comments

Comments
 (0)