Rebroadcast channel_announcements when we broadcast a node_announce
[rust-lightning] / lightning / src / ln / functional_test_utils.rs
index bf1a24d36852b2450af13218ee3025a7b2bf78e8..590f95e22f80852c1371a1dc091ecd2cbc32ac3f 100644 (file)
@@ -615,8 +615,22 @@ pub fn create_announced_chan_between_nodes_with_value<'a, 'b, 'c, 'd>(nodes: &'a
 pub fn update_nodes_with_chan_announce<'a, 'b, 'c, 'd>(nodes: &'a Vec<Node<'b, 'c, 'd>>, a: usize, b: usize, ann: &msgs::ChannelAnnouncement, upd_1: &msgs::ChannelUpdate, upd_2: &msgs::ChannelUpdate) {
        nodes[a].node.broadcast_node_announcement([0, 0, 0], [0; 32], Vec::new());
        let a_events = nodes[a].node.get_and_clear_pending_msg_events();
-       assert_eq!(a_events.len(), 1);
-       let a_node_announcement = match a_events[0] {
+       assert!(a_events.len() >= 2);
+
+       // ann should be re-generated by broadcast_node_announcement - check that we have it.
+       let mut found_ann_1 = false;
+       for event in a_events.iter() {
+               match event {
+                       MessageSendEvent::BroadcastChannelAnnouncement { ref msg, .. } => {
+                               if msg == ann { found_ann_1 = true; }
+                       },
+                       MessageSendEvent::BroadcastNodeAnnouncement { .. } => {},
+                       _ => panic!("Unexpected event {:?}", event),
+               }
+       }
+       assert!(found_ann_1);
+
+       let a_node_announcement = match a_events.last().unwrap() {
                MessageSendEvent::BroadcastNodeAnnouncement { ref msg } => {
                        (*msg).clone()
                },
@@ -625,8 +639,22 @@ pub fn update_nodes_with_chan_announce<'a, 'b, 'c, 'd>(nodes: &'a Vec<Node<'b, '
 
        nodes[b].node.broadcast_node_announcement([1, 1, 1], [1; 32], Vec::new());
        let b_events = nodes[b].node.get_and_clear_pending_msg_events();
-       assert_eq!(b_events.len(), 1);
-       let b_node_announcement = match b_events[0] {
+       assert!(b_events.len() >= 2);
+
+       // ann should be re-generated by broadcast_node_announcement - check that we have it.
+       let mut found_ann_2 = false;
+       for event in b_events.iter() {
+               match event {
+                       MessageSendEvent::BroadcastChannelAnnouncement { ref msg, .. } => {
+                               if msg == ann { found_ann_2 = true; }
+                       },
+                       MessageSendEvent::BroadcastNodeAnnouncement { .. } => {},
+                       _ => panic!("Unexpected event"),
+               }
+       }
+       assert!(found_ann_2);
+
+       let b_node_announcement = match b_events.last().unwrap() {
                MessageSendEvent::BroadcastNodeAnnouncement { ref msg } => {
                        (*msg).clone()
                },