X-Git-Url: http://git.bitcoin.ninja/index.cgi?a=blobdiff_plain;f=lightning%2Fsrc%2Fonion_message%2Ffunctional_tests.rs;h=96e0c44b2ce8f31f77d1c5fcd936998b229be1eb;hb=942d77699ba4dc0d77087d418c63146c06fc3c44;hp=e7cf4e87d9f952703c1273c00de14800ea6e6f2e;hpb=408b12f0341e03db5ea61cdcdc8ed2be1af47076;p=rust-lightning diff --git a/lightning/src/onion_message/functional_tests.rs b/lightning/src/onion_message/functional_tests.rs index e7cf4e87..96e0c44b 100644 --- a/lightning/src/onion_message/functional_tests.rs +++ b/lightning/src/onion_message/functional_tests.rs @@ -110,7 +110,7 @@ fn create_nodes(num_messengers: u8) -> Vec { let i = idx as usize; let mut features = InitFeatures::empty(); features.set_onion_messages_optional(); - let init_msg = msgs::Init { features, remote_network_address: None }; + let init_msg = msgs::Init { features, networks: None, remote_network_address: None }; nodes[i].messenger.peer_connected(&nodes[i + 1].get_node_pk(), &init_msg.clone(), true).unwrap(); nodes[i + 1].messenger.peer_connected(&nodes[i].get_node_pk(), &init_msg.clone(), false).unwrap(); } @@ -284,3 +284,20 @@ fn peer_buffer_full() { let err = nodes[0].messenger.send_onion_message(&[], Destination::Node(nodes[1].get_node_pk()), OnionMessageContents::Custom(test_msg), None).unwrap_err(); assert_eq!(err, SendError::BufferFull); } + +#[test] +fn many_hops() { + // Check we can send over a route with many hops. This will exercise our logic for onion messages + // of size [`crate::onion_message::packet::BIG_PACKET_HOP_DATA_LEN`]. + let num_nodes: usize = 25; + let nodes = create_nodes(num_nodes as u8); + let test_msg = OnionMessageContents::Custom(TestCustomMessage {}); + + let mut intermediates = vec![]; + for i in 1..(num_nodes-1) { + intermediates.push(nodes[i].get_node_pk()); + } + + nodes[0].messenger.send_onion_message(&intermediates, Destination::Node(nodes[num_nodes-1].get_node_pk()), test_msg, None).unwrap(); + pass_along_path(&nodes); +}