Skip to content

Commit 96070dd

Browse files
committed
Replace get_route with get_route_and_payment_hash
The interface for get_route will change to take a scorer. Using get_route_and_payment_hash whenever possible allows for keeping the scorer inside get_route_and_payment_hash rather than at every call site. Replace get_route with get_route_and_payment_hash wherever possible. Additionally, update get_route_and_payment_hash to use the known invoice features and the sending node's logger.
1 parent 3fc0352 commit 96070dd

8 files changed

+129
-379
lines changed

lightning/src/ln/chanmon_update_fail_tests.rs

Lines changed: 24 additions & 91 deletions
Large diffs are not rendered by default.

lightning/src/ln/channelmanager.rs

Lines changed: 2 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -5943,12 +5943,9 @@ mod tests {
59435943
let node_chanmgrs = create_node_chanmgrs(2, &node_cfgs, &[None, None]);
59445944
let nodes = create_network(2, &node_cfgs, &node_chanmgrs);
59455945
create_announced_chan_between_nodes(&nodes, 0, 1, InitFeatures::known(), InitFeatures::known());
5946-
let logger = test_utils::TestLogger::new();
59475946

59485947
// First, send a partial MPP payment.
5949-
let net_graph_msg_handler = &nodes[0].net_graph_msg_handler;
5950-
let route = get_route(&nodes[0].node.get_our_node_id(), &net_graph_msg_handler.network_graph, &nodes[1].node.get_our_node_id(), Some(InvoiceFeatures::known()), None, &Vec::new(), 100_000, TEST_FINAL_CLTV, &logger).unwrap();
5951-
let (payment_preimage, our_payment_hash, payment_secret) = get_payment_preimage_hash!(&nodes[1]);
5948+
let (route, our_payment_hash, payment_preimage, payment_secret) = get_route_and_payment_hash!(&nodes[0], nodes[1], 100_000);
59525949
let payment_id = PaymentId([42; 32]);
59535950
// Use the utility function send_payment_along_path to send the payment with MPP data which
59545951
// indicates there are more HTLCs coming.
@@ -6201,12 +6198,9 @@ mod tests {
62016198
let chan_2_id = create_announced_chan_between_nodes(&nodes, 0, 2, InitFeatures::known(), InitFeatures::known()).0.contents.short_channel_id;
62026199
let chan_3_id = create_announced_chan_between_nodes(&nodes, 1, 3, InitFeatures::known(), InitFeatures::known()).0.contents.short_channel_id;
62036200
let chan_4_id = create_announced_chan_between_nodes(&nodes, 2, 3, InitFeatures::known(), InitFeatures::known()).0.contents.short_channel_id;
6204-
let logger = test_utils::TestLogger::new();
62056201

62066202
// Marshall an MPP route.
6207-
let (_, payment_hash, _) = get_payment_preimage_hash!(&nodes[3]);
6208-
let net_graph_msg_handler = &nodes[0].net_graph_msg_handler;
6209-
let mut route = get_route(&nodes[0].node.get_our_node_id(), &net_graph_msg_handler.network_graph, &nodes[3].node.get_our_node_id(), Some(InvoiceFeatures::known()), None, &[], 100000, TEST_FINAL_CLTV, &logger).unwrap();
6203+
let (mut route, payment_hash, _, _) = get_route_and_payment_hash!(&nodes[0], nodes[3], 100000);
62106204
let path = route.paths[0].clone();
62116205
route.paths.push(path);
62126206
route.paths[0][0].pubkey = nodes[1].node.get_our_node_id();

lightning/src/ln/functional_test_utils.rs

Lines changed: 16 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -972,12 +972,17 @@ macro_rules! commitment_signed_dance {
972972
#[macro_export]
973973
macro_rules! get_payment_preimage_hash {
974974
($dest_node: expr) => {
975+
{
976+
get_payment_preimage_hash!($dest_node, None)
977+
}
978+
};
979+
($dest_node: expr, $min_value_msat: expr) => {
975980
{
976981
let mut payment_count = $dest_node.network_payment_count.borrow_mut();
977982
let payment_preimage = PaymentPreimage([*payment_count; 32]);
978983
*payment_count += 1;
979984
let payment_hash = PaymentHash(Sha256::hash(&payment_preimage.0[..]).into_inner());
980-
let payment_secret = $dest_node.node.create_inbound_payment_for_hash(payment_hash, None, 7200, 0).unwrap();
985+
let payment_secret = $dest_node.node.create_inbound_payment_for_hash(payment_hash, $min_value_msat, 7200, 0).unwrap();
981986
(payment_preimage, payment_hash, payment_secret)
982987
}
983988
}
@@ -986,13 +991,17 @@ macro_rules! get_payment_preimage_hash {
986991
#[cfg(test)]
987992
macro_rules! get_route_and_payment_hash {
988993
($send_node: expr, $recv_node: expr, $recv_value: expr) => {{
989-
let (payment_preimage, payment_hash, payment_secret) = get_payment_preimage_hash!($recv_node);
994+
get_route_and_payment_hash!($send_node, $recv_node, vec![], $recv_value, TEST_FINAL_CLTV)
995+
}};
996+
($send_node: expr, $recv_node: expr, $last_hops: expr, $recv_value: expr, $cltv: expr) => {{
997+
let (payment_preimage, payment_hash, payment_secret) = get_payment_preimage_hash!($recv_node, Some($recv_value));
990998
let net_graph_msg_handler = &$send_node.net_graph_msg_handler;
991-
let route = get_route(&$send_node.node.get_our_node_id(),
992-
&net_graph_msg_handler.network_graph,
993-
&$recv_node.node.get_our_node_id(), None,
994-
Some(&$send_node.node.list_usable_channels().iter().map(|a| a).collect::<Vec<_>>()),
995-
&Vec::new(), $recv_value, TEST_FINAL_CLTV, $send_node.logger).unwrap();
999+
let route = ::routing::router::get_route(
1000+
&$send_node.node.get_our_node_id(), &net_graph_msg_handler.network_graph,
1001+
&$recv_node.node.get_our_node_id(), Some(::ln::features::InvoiceFeatures::known()),
1002+
Some(&$send_node.node.list_usable_channels().iter().collect::<Vec<_>>()),
1003+
&$last_hops, $recv_value, $cltv, $send_node.logger
1004+
).unwrap();
9961005
(route, payment_hash, payment_preimage, payment_secret)
9971006
}}
9981007
}

lightning/src/ln/functional_tests.rs

Lines changed: 77 additions & 243 deletions
Large diffs are not rendered by default.

lightning/src/ln/monitor_tests.rs

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,6 @@ use ln::features::InitFeatures;
1717
use ln::msgs::{ChannelMessageHandler, ErrorAction};
1818
use util::events::{Event, MessageSendEvent, MessageSendEventsProvider, ClosureReason};
1919
use routing::network_graph::NetworkUpdate;
20-
use routing::router::get_route;
2120

2221
use bitcoin::hashes::sha256::Hash as Sha256;
2322
use bitcoin::hashes::Hash;

lightning/src/ln/onion_route_tests.rs

Lines changed: 5 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -15,12 +15,11 @@ use chain::channelmonitor::{CLTV_CLAIM_BUFFER, LATENCY_GRACE_PERIOD_BLOCKS};
1515
use ln::{PaymentPreimage, PaymentHash, PaymentSecret};
1616
use ln::channelmanager::{HTLCForwardInfo, CLTV_FAR_FAR_AWAY};
1717
use ln::onion_utils;
18-
use routing::router::{Route, get_route};
1918
use routing::network_graph::NetworkUpdate;
20-
use ln::features::{InitFeatures, InvoiceFeatures};
19+
use routing::router::Route;
20+
use ln::features::InitFeatures;
2121
use ln::msgs;
2222
use ln::msgs::{ChannelMessageHandler, ChannelUpdate, OptionalField};
23-
use util::test_utils;
2423
use util::events::{Event, MessageSendEvent, MessageSendEventsProvider};
2524
use util::ser::{Writeable, Writer};
2625
use util::config::UserConfig;
@@ -267,11 +266,9 @@ fn test_fee_failures() {
267266
let node_chanmgrs = create_node_chanmgrs(3, &node_cfgs, &[Some(config), Some(config), Some(config)]);
268267
let mut nodes = create_network(3, &node_cfgs, &node_chanmgrs);
269268
let channels = [create_announced_chan_between_nodes(&nodes, 0, 1, InitFeatures::known(), InitFeatures::known()), create_announced_chan_between_nodes(&nodes, 1, 2, InitFeatures::known(), InitFeatures::known())];
270-
let logger = test_utils::TestLogger::new();
271-
let route = get_route(&nodes[0].node.get_our_node_id(), &nodes[0].net_graph_msg_handler.network_graph, &nodes[2].node.get_our_node_id(), Some(InvoiceFeatures::known()), None, &Vec::new(), 40_000, TEST_FINAL_CLTV, &logger).unwrap();
272269

273270
// positive case
274-
let (payment_preimage_success, payment_hash_success, payment_secret_success) = get_payment_preimage_hash!(nodes[2]);
271+
let (route, payment_hash_success, payment_preimage_success, payment_secret_success) = get_route_and_payment_hash!(nodes[0], nodes[2], 40_000);
275272
nodes[0].node.send_payment(&route, payment_hash_success, &Some(payment_secret_success)).unwrap();
276273
check_added_monitors!(nodes[0], 1);
277274
pass_along_route(&nodes[0], &[&[&nodes[1], &nodes[2]]], 40_000, payment_hash_success, payment_secret_success);
@@ -324,10 +321,8 @@ fn test_onion_failure() {
324321
*node.keys_manager.override_session_priv.lock().unwrap() = Some([3; 32]);
325322
}
326323
let channels = [create_announced_chan_between_nodes(&nodes, 0, 1, InitFeatures::known(), InitFeatures::known()), create_announced_chan_between_nodes(&nodes, 1, 2, InitFeatures::known(), InitFeatures::known())];
327-
let (_, payment_hash, payment_secret) = get_payment_preimage_hash!(nodes[2]);
328-
let logger = test_utils::TestLogger::new();
329-
let route = get_route(&nodes[0].node.get_our_node_id(), &nodes[0].net_graph_msg_handler.network_graph, &nodes[2].node.get_our_node_id(), Some(InvoiceFeatures::known()), None, &Vec::new(), 40000, TEST_FINAL_CLTV, &logger).unwrap();
330-
// positve case
324+
let (route, payment_hash, _, payment_secret) = get_route_and_payment_hash!(nodes[0], nodes[2], 40000);
325+
// positive case
331326
send_payment(&nodes[0], &vec!(&nodes[1], &nodes[2])[..], 40000);
332327

333328
// intermediate node failure

lightning/src/ln/payment_tests.rs

Lines changed: 4 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -13,11 +13,9 @@
1313
1414
use ln::{PaymentPreimage, PaymentHash};
1515
use ln::channelmanager::{PaymentId, PaymentSendFailure};
16-
use routing::router::get_route;
17-
use ln::features::{InitFeatures, InvoiceFeatures};
16+
use ln::features::InitFeatures;
1817
use ln::msgs;
1918
use ln::msgs::ChannelMessageHandler;
20-
use util::test_utils;
2119
use util::events::{Event, MessageSendEvent, MessageSendEventsProvider};
2220
use util::errors::APIError;
2321

@@ -40,10 +38,7 @@ fn retry_single_path_payment() {
4038
// Rebalance to find a route
4139
send_payment(&nodes[2], &vec!(&nodes[1])[..], 3_000_000);
4240

43-
let logger = test_utils::TestLogger::new();
44-
let (payment_preimage, payment_hash, payment_secret) = get_payment_preimage_hash!(nodes[2]);
45-
let net_graph_msg_handler = &nodes[0].net_graph_msg_handler;
46-
let route = get_route(&nodes[0].node.get_our_node_id(), &net_graph_msg_handler.network_graph, &nodes[2].node.get_our_node_id(), Some(InvoiceFeatures::known()), None, &Vec::new(), 100_000, TEST_FINAL_CLTV, &logger).unwrap();
41+
let (route, payment_hash, payment_preimage, payment_secret) = get_route_and_payment_hash!(nodes[0], nodes[2], 100_000);
4742

4843
// Rebalance so that the first hop fails.
4944
send_payment(&nodes[1], &vec!(&nodes[2])[..], 2_000_000);
@@ -95,13 +90,10 @@ fn mpp_retry() {
9590
let chan_2_id = create_announced_chan_between_nodes(&nodes, 0, 2, InitFeatures::known(), InitFeatures::known()).0.contents.short_channel_id;
9691
let chan_3_id = create_announced_chan_between_nodes(&nodes, 1, 3, InitFeatures::known(), InitFeatures::known()).0.contents.short_channel_id;
9792
let chan_4_id = create_announced_chan_between_nodes(&nodes, 3, 2, InitFeatures::known(), InitFeatures::known()).0.contents.short_channel_id;
98-
let logger = test_utils::TestLogger::new();
9993
// Rebalance
10094
send_payment(&nodes[3], &vec!(&nodes[2])[..], 1_500_000);
10195

102-
let (payment_preimage, payment_hash, payment_secret) = get_payment_preimage_hash!(&nodes[3]);
103-
let net_graph_msg_handler = &nodes[0].net_graph_msg_handler;
104-
let mut route = get_route(&nodes[0].node.get_our_node_id(), &net_graph_msg_handler.network_graph, &nodes[3].node.get_our_node_id(), Some(InvoiceFeatures::known()), None, &[], 1_000_000, TEST_FINAL_CLTV, &logger).unwrap();
96+
let (mut route, payment_hash, payment_preimage, payment_secret) = get_route_and_payment_hash!(nodes[0], nodes[3], 1_000_000);
10597
let path = route.paths[0].clone();
10698
route.paths.push(path);
10799
route.paths[0][0].pubkey = nodes[1].node.get_our_node_id();
@@ -186,10 +178,7 @@ fn retry_expired_payment() {
186178
// Rebalance to find a route
187179
send_payment(&nodes[2], &vec!(&nodes[1])[..], 3_000_000);
188180

189-
let logger = test_utils::TestLogger::new();
190-
let (_payment_preimage, payment_hash, payment_secret) = get_payment_preimage_hash!(nodes[2]);
191-
let net_graph_msg_handler = &nodes[0].net_graph_msg_handler;
192-
let route = get_route(&nodes[0].node.get_our_node_id(), &net_graph_msg_handler.network_graph, &nodes[2].node.get_our_node_id(), Some(InvoiceFeatures::known()), None, &Vec::new(), 100_000, TEST_FINAL_CLTV, &logger).unwrap();
181+
let (route, payment_hash, _, payment_secret) = get_route_and_payment_hash!(nodes[0], nodes[2], 100_000);
193182

194183
// Rebalance so that the first hop fails.
195184
send_payment(&nodes[1], &vec!(&nodes[2])[..], 2_000_000);

lightning/src/ln/shutdown_tests.rs

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -165,11 +165,8 @@ fn htlc_fail_async_shutdown() {
165165
let mut nodes = create_network(3, &node_cfgs, &node_chanmgrs);
166166
let chan_1 = create_announced_chan_between_nodes(&nodes, 0, 1, InitFeatures::known(), InitFeatures::known());
167167
let chan_2 = create_announced_chan_between_nodes(&nodes, 1, 2, InitFeatures::known(), InitFeatures::known());
168-
let logger = test_utils::TestLogger::new();
169168

170-
let (_, our_payment_hash, our_payment_secret) = get_payment_preimage_hash!(nodes[2]);
171-
let net_graph_msg_handler = &nodes[0].net_graph_msg_handler;
172-
let route = get_route(&nodes[0].node.get_our_node_id(), &net_graph_msg_handler.network_graph, &nodes[2].node.get_our_node_id(), Some(InvoiceFeatures::known()), None, &[], 100000, TEST_FINAL_CLTV, &logger).unwrap();
169+
let (route, our_payment_hash, _, our_payment_secret) = get_route_and_payment_hash!(nodes[0], nodes[2], 100000);
173170
nodes[0].node.send_payment(&route, our_payment_hash, &Some(our_payment_secret)).unwrap();
174171
check_added_monitors!(nodes[0], 1);
175172
let updates = get_htlc_update_msgs!(nodes[0], nodes[1].node.get_our_node_id());

0 commit comments

Comments
 (0)