X-Git-Url: http://git.bitcoin.ninja/index.cgi?a=blobdiff_plain;f=lightning%2Fsrc%2Fonion_message%2Ffunctional_tests.rs;h=98fcdb680ee03abd1f2c8f3730c0b740bb75977f;hb=64c58a565b9a4165d795ae7db608e1dc149829ca;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..98fcdb68 100644 --- a/lightning/src/onion_message/functional_tests.rs +++ b/lightning/src/onion_message/functional_tests.rs @@ -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); +}