Skip to content

Commit c7144ac

Browse files
test_utils: parameterize TestRouter by TestScorer
This allows us set scoring expectations and ensure in-flight htlcs are factored into scoring
1 parent ce2ed44 commit c7144ac

10 files changed

+154
-69
lines changed

lightning-invoice/src/utils.rs

+2-2
Original file line numberDiff line numberDiff line change
@@ -691,7 +691,7 @@ mod test {
691691
let first_hops = nodes[0].node.list_usable_channels();
692692
let network_graph = &node_cfgs[0].network_graph;
693693
let logger = test_utils::TestLogger::new();
694-
let scorer = test_utils::TestScorer::with_penalty(0);
694+
let scorer = test_utils::TestScorer::new();
695695
let random_seed_bytes = chanmon_cfgs[1].keys_manager.get_secure_random_bytes();
696696
let route = find_route(
697697
&nodes[0].node.get_our_node_id(), &route_params, &network_graph,
@@ -1055,7 +1055,7 @@ mod test {
10551055
let first_hops = nodes[0].node.list_usable_channels();
10561056
let network_graph = &node_cfgs[0].network_graph;
10571057
let logger = test_utils::TestLogger::new();
1058-
let scorer = test_utils::TestScorer::with_penalty(0);
1058+
let scorer = test_utils::TestScorer::new();
10591059
let random_seed_bytes = chanmon_cfgs[1].keys_manager.get_secure_random_bytes();
10601060
let route = find_route(
10611061
&nodes[0].node.get_our_node_id(), &params, &network_graph,

lightning/src/ln/channelmanager.rs

+6-5
Original file line numberDiff line numberDiff line change
@@ -7962,7 +7962,7 @@ mod tests {
79627962
let node_chanmgrs = create_node_chanmgrs(2, &node_cfgs, &[None, None]);
79637963
let nodes = create_network(2, &node_cfgs, &node_chanmgrs);
79647964
create_announced_chan_between_nodes(&nodes, 0, 1);
7965-
let scorer = test_utils::TestScorer::with_penalty(0);
7965+
let scorer = test_utils::TestScorer::new();
79667966
let random_seed_bytes = chanmon_cfgs[1].keys_manager.get_secure_random_bytes();
79677967

79687968
// To start (1), send a regular payment but don't claim it.
@@ -8070,7 +8070,7 @@ mod tests {
80708070
};
80718071
let network_graph = nodes[0].network_graph.clone();
80728072
let first_hops = nodes[0].node.list_usable_channels();
8073-
let scorer = test_utils::TestScorer::with_penalty(0);
8073+
let scorer = test_utils::TestScorer::new();
80748074
let random_seed_bytes = chanmon_cfgs[1].keys_manager.get_secure_random_bytes();
80758075
let route = find_route(
80768076
&payer_pubkey, &route_params, &network_graph, Some(&first_hops.iter().collect::<Vec<_>>()),
@@ -8115,7 +8115,7 @@ mod tests {
81158115
};
81168116
let network_graph = nodes[0].network_graph.clone();
81178117
let first_hops = nodes[0].node.list_usable_channels();
8118-
let scorer = test_utils::TestScorer::with_penalty(0);
8118+
let scorer = test_utils::TestScorer::new();
81198119
let random_seed_bytes = chanmon_cfgs[1].keys_manager.get_secure_random_bytes();
81208120
let route = find_route(
81218121
&payer_pubkey, &route_params, &network_graph, Some(&first_hops.iter().collect::<Vec<_>>()),
@@ -8585,7 +8585,8 @@ pub mod bench {
85858585
let tx_broadcaster = test_utils::TestBroadcaster{txn_broadcasted: Mutex::new(Vec::new()), blocks: Arc::new(Mutex::new(Vec::new()))};
85868586
let fee_estimator = test_utils::TestFeeEstimator { sat_per_kw: Mutex::new(253) };
85878587
let logger_a = test_utils::TestLogger::with_id("node a".to_owned());
8588-
let router = test_utils::TestRouter::new(Arc::new(NetworkGraph::new(genesis_hash, &logger_a)));
8588+
let scorer = Mutex::new(test_utils::TestScorer::new());
8589+
let router = test_utils::TestRouter::new(Arc::new(NetworkGraph::new(genesis_hash, &logger_a)), &scorer);
85898590

85908591
let mut config: UserConfig = Default::default();
85918592
config.channel_handshake_config.minimum_depth = 1;
@@ -8676,7 +8677,7 @@ pub mod bench {
86768677
let usable_channels = $node_a.list_usable_channels();
86778678
let payment_params = PaymentParameters::from_node_id($node_b.get_our_node_id(), TEST_FINAL_CLTV)
86788679
.with_features($node_b.invoice_features());
8679-
let scorer = test_utils::TestScorer::with_penalty(0);
8680+
let scorer = test_utils::TestScorer::new();
86808681
let seed = [3u8; 32];
86818682
let keys_manager = KeysManager::new(&seed, 42, 42);
86828683
let random_seed_bytes = keys_manager.get_secure_random_bytes();

lightning/src/ln/functional_test_utils.rs

+8-5
Original file line numberDiff line numberDiff line change
@@ -305,6 +305,7 @@ pub struct TestChanMonCfg {
305305
pub persister: test_utils::TestPersister,
306306
pub logger: test_utils::TestLogger,
307307
pub keys_manager: test_utils::TestKeysInterface,
308+
pub scorer: Mutex<test_utils::TestScorer>,
308309
}
309310

310311
pub struct NodeCfg<'a> {
@@ -427,6 +428,7 @@ impl<'a, 'b, 'c> Drop for Node<'a, 'b, 'c> {
427428
channel_monitors.insert(monitor.get_funding_txo().0, monitor);
428429
}
429430

431+
let scorer = Mutex::new(test_utils::TestScorer::new());
430432
let mut w = test_utils::TestVecWriter(Vec::new());
431433
self.node.write(&mut w).unwrap();
432434
<(BlockHash, ChannelManager<&test_utils::TestChainMonitor, &test_utils::TestBroadcaster, &test_utils::TestKeysInterface, &test_utils::TestKeysInterface, &test_utils::TestKeysInterface, &test_utils::TestFeeEstimator, &test_utils::TestRouter, &test_utils::TestLogger>)>::read(&mut io::Cursor::new(w.0), ChannelManagerReadArgs {
@@ -435,7 +437,7 @@ impl<'a, 'b, 'c> Drop for Node<'a, 'b, 'c> {
435437
node_signer: self.keys_manager,
436438
signer_provider: self.keys_manager,
437439
fee_estimator: &test_utils::TestFeeEstimator { sat_per_kw: Mutex::new(253) },
438-
router: &test_utils::TestRouter::new(Arc::new(network_graph)),
440+
router: &test_utils::TestRouter::new(Arc::new(network_graph), &scorer),
439441
chain_monitor: self.chain_monitor,
440442
tx_broadcaster: &broadcaster,
441443
logger: &self.logger,
@@ -1566,7 +1568,7 @@ macro_rules! get_payment_preimage_hash {
15661568
macro_rules! get_route {
15671569
($send_node: expr, $payment_params: expr, $recv_value: expr, $cltv: expr) => {{
15681570
use $crate::chain::keysinterface::EntropySource;
1569-
let scorer = $crate::util::test_utils::TestScorer::with_penalty(0);
1571+
let scorer = $crate::util::test_utils::TestScorer::new();
15701572
let keys_manager = $crate::util::test_utils::TestKeysInterface::new(&[0u8; 32], bitcoin::network::constants::Network::Testnet);
15711573
let random_seed_bytes = keys_manager.get_secure_random_bytes();
15721574
$crate::routing::router::get_route(
@@ -2120,7 +2122,7 @@ pub fn route_over_limit<'a, 'b, 'c>(origin_node: &Node<'a, 'b, 'c>, expected_rou
21202122
let payment_params = PaymentParameters::from_node_id(expected_route.last().unwrap().node.get_our_node_id(), TEST_FINAL_CLTV)
21212123
.with_features(expected_route.last().unwrap().node.invoice_features());
21222124
let network_graph = origin_node.network_graph.read_only();
2123-
let scorer = test_utils::TestScorer::with_penalty(0);
2125+
let scorer = test_utils::TestScorer::new();
21242126
let seed = [0u8; 32];
21252127
let keys_manager = test_utils::TestKeysInterface::new(&seed, Network::Testnet);
21262128
let random_seed_bytes = keys_manager.get_secure_random_bytes();
@@ -2285,8 +2287,9 @@ pub fn create_chanmon_cfgs(node_count: usize) -> Vec<TestChanMonCfg> {
22852287
let persister = test_utils::TestPersister::new();
22862288
let seed = [i as u8; 32];
22872289
let keys_manager = test_utils::TestKeysInterface::new(&seed, Network::Testnet);
2290+
let scorer = Mutex::new(test_utils::TestScorer::new());
22882291

2289-
chan_mon_cfgs.push(TestChanMonCfg { tx_broadcaster, fee_estimator, chain_source, logger, persister, keys_manager });
2292+
chan_mon_cfgs.push(TestChanMonCfg { tx_broadcaster, fee_estimator, chain_source, logger, persister, keys_manager, scorer });
22902293
}
22912294

22922295
chan_mon_cfgs
@@ -2304,7 +2307,7 @@ pub fn create_node_cfgs<'a>(node_count: usize, chanmon_cfgs: &'a Vec<TestChanMon
23042307
logger: &chanmon_cfgs[i].logger,
23052308
tx_broadcaster: &chanmon_cfgs[i].tx_broadcaster,
23062309
fee_estimator: &chanmon_cfgs[i].fee_estimator,
2307-
router: test_utils::TestRouter::new(network_graph.clone()),
2310+
router: test_utils::TestRouter::new(network_graph.clone(), &chanmon_cfgs[i].scorer),
23082311
chain_monitor,
23092312
keys_manager: &chanmon_cfgs[i].keys_manager,
23102313
node_seed: seed,

lightning/src/ln/functional_tests.rs

+6-5
Original file line numberDiff line numberDiff line change
@@ -5257,7 +5257,8 @@ fn test_key_derivation_params() {
52575257
let keys_manager = test_utils::TestKeysInterface::new(&seed, Network::Testnet);
52585258
let chain_monitor = test_utils::TestChainMonitor::new(Some(&chanmon_cfgs[0].chain_source), &chanmon_cfgs[0].tx_broadcaster, &chanmon_cfgs[0].logger, &chanmon_cfgs[0].fee_estimator, &chanmon_cfgs[0].persister, &keys_manager);
52595259
let network_graph = Arc::new(NetworkGraph::new(chanmon_cfgs[0].chain_source.genesis_hash, &chanmon_cfgs[0].logger));
5260-
let router = test_utils::TestRouter::new(network_graph.clone());
5260+
let scorer = Mutex::new(test_utils::TestScorer::new());
5261+
let router = test_utils::TestRouter::new(network_graph.clone(), &scorer);
52615262
let node = NodeCfg { chain_source: &chanmon_cfgs[0].chain_source, logger: &chanmon_cfgs[0].logger, tx_broadcaster: &chanmon_cfgs[0].tx_broadcaster, fee_estimator: &chanmon_cfgs[0].fee_estimator, router, chain_monitor, keys_manager: &keys_manager, network_graph, node_seed: seed, override_init_features: alloc::rc::Rc::new(core::cell::RefCell::new(None)) };
52625263
let mut node_cfgs = create_node_cfgs(3, &chanmon_cfgs);
52635264
node_cfgs.remove(0);
@@ -6925,7 +6926,7 @@ fn test_check_htlc_underpaying() {
69256926
// Create some initial channels
69266927
create_announced_chan_between_nodes(&nodes, 0, 1);
69276928

6928-
let scorer = test_utils::TestScorer::with_penalty(0);
6929+
let scorer = test_utils::TestScorer::new();
69296930
let random_seed_bytes = chanmon_cfgs[1].keys_manager.get_secure_random_bytes();
69306931
let payment_params = PaymentParameters::from_node_id(nodes[1].node.get_our_node_id(), TEST_FINAL_CLTV).with_features(nodes[1].node.invoice_features());
69316932
let route = get_route(&nodes[0].node.get_our_node_id(), &payment_params, &nodes[0].network_graph.read_only(), None, 10_000, TEST_FINAL_CLTV, nodes[0].logger, &scorer, &random_seed_bytes).unwrap();
@@ -7175,7 +7176,7 @@ fn test_bump_penalty_txn_on_revoked_htlcs() {
71757176
let chan = create_announced_chan_between_nodes_with_value(&nodes, 0, 1, 1000000, 59000000);
71767177
// Lock HTLC in both directions (using a slightly lower CLTV delay to provide timely RBF bumps)
71777178
let payment_params = PaymentParameters::from_node_id(nodes[1].node.get_our_node_id(), 50).with_features(nodes[1].node.invoice_features());
7178-
let scorer = test_utils::TestScorer::with_penalty(0);
7179+
let scorer = test_utils::TestScorer::new();
71797180
let random_seed_bytes = chanmon_cfgs[1].keys_manager.get_secure_random_bytes();
71807181
let route = get_route(&nodes[0].node.get_our_node_id(), &payment_params, &nodes[0].network_graph.read_only(), None,
71817182
3_000_000, 50, nodes[0].logger, &scorer, &random_seed_bytes).unwrap();
@@ -9186,7 +9187,7 @@ fn test_keysend_payments_to_public_node() {
91869187
final_value_msat: 10000,
91879188
final_cltv_expiry_delta: 40,
91889189
};
9189-
let scorer = test_utils::TestScorer::with_penalty(0);
9190+
let scorer = test_utils::TestScorer::new();
91909191
let random_seed_bytes = chanmon_cfgs[1].keys_manager.get_secure_random_bytes();
91919192
let route = find_route(&payer_pubkey, &route_params, &network_graph, None, nodes[0].logger, &scorer, &random_seed_bytes).unwrap();
91929193

@@ -9221,7 +9222,7 @@ fn test_keysend_payments_to_private_node() {
92219222
};
92229223
let network_graph = nodes[0].network_graph.clone();
92239224
let first_hops = nodes[0].node.list_usable_channels();
9224-
let scorer = test_utils::TestScorer::with_penalty(0);
9225+
let scorer = test_utils::TestScorer::new();
92259226
let random_seed_bytes = chanmon_cfgs[1].keys_manager.get_secure_random_bytes();
92269227
let route = find_route(
92279228
&payer_pubkey, &route_params, &network_graph, Some(&first_hops.iter().collect::<Vec<_>>()),

lightning/src/ln/onion_route_tests.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -928,7 +928,7 @@ macro_rules! get_phantom_route {
928928
htlc_maximum_msat: None,
929929
}
930930
])]);
931-
let scorer = test_utils::TestScorer::with_penalty(0);
931+
let scorer = test_utils::TestScorer::new();
932932
let network_graph = $nodes[0].network_graph.read_only();
933933
(get_route(
934934
&$nodes[0].node.get_our_node_id(), &payment_params, &network_graph,

lightning/src/ln/outbound_payment.rs

+5-3
Original file line numberDiff line numberDiff line change
@@ -1202,7 +1202,7 @@ mod tests {
12021202
use crate::ln::outbound_payment::{OutboundPayments, Retry};
12031203
use crate::routing::gossip::NetworkGraph;
12041204
use crate::routing::router::{InFlightHtlcs, PaymentParameters, Route, RouteParameters};
1205-
use crate::sync::Arc;
1205+
use crate::sync::{Arc, Mutex};
12061206
use crate::util::errors::APIError;
12071207
use crate::util::test_utils;
12081208

@@ -1218,7 +1218,8 @@ mod tests {
12181218
let logger = test_utils::TestLogger::new();
12191219
let genesis_hash = genesis_block(Network::Testnet).header.block_hash();
12201220
let network_graph = Arc::new(NetworkGraph::new(genesis_hash, &logger));
1221-
let router = test_utils::TestRouter::new(network_graph);
1221+
let scorer = Mutex::new(test_utils::TestScorer::new());
1222+
let router = test_utils::TestRouter::new(network_graph, &scorer);
12221223
let secp_ctx = Secp256k1::new();
12231224
let keys_manager = test_utils::TestKeysInterface::new(&[0; 32], Network::Testnet);
12241225

@@ -1257,7 +1258,8 @@ mod tests {
12571258
let logger = test_utils::TestLogger::new();
12581259
let genesis_hash = genesis_block(Network::Testnet).header.block_hash();
12591260
let network_graph = Arc::new(NetworkGraph::new(genesis_hash, &logger));
1260-
let router = test_utils::TestRouter::new(network_graph);
1261+
let scorer = Mutex::new(test_utils::TestScorer::new());
1262+
let router = test_utils::TestRouter::new(network_graph, &scorer);
12611263
let secp_ctx = Secp256k1::new();
12621264
let keys_manager = test_utils::TestKeysInterface::new(&[0; 32], Network::Testnet);
12631265

lightning/src/ln/payment_tests.rs

+2-2
Original file line numberDiff line numberDiff line change
@@ -921,7 +921,7 @@ fn get_ldk_payment_preimage() {
921921

922922
let payment_params = PaymentParameters::from_node_id(nodes[1].node.get_our_node_id(), TEST_FINAL_CLTV)
923923
.with_features(nodes[1].node.invoice_features());
924-
let scorer = test_utils::TestScorer::with_penalty(0);
924+
let scorer = test_utils::TestScorer::new();
925925
let keys_manager = test_utils::TestKeysInterface::new(&[0u8; 32], Network::Testnet);
926926
let random_seed_bytes = keys_manager.get_secure_random_bytes();
927927
let route = get_route(
@@ -1442,7 +1442,7 @@ fn do_test_intercepted_payment(test: InterceptTest) {
14421442
let node_chanmgrs = create_node_chanmgrs(3, &node_cfgs, &[None, Some(intercept_forwards_config), Some(zero_conf_chan_config)]);
14431443

14441444
let nodes = create_network(3, &node_cfgs, &node_chanmgrs);
1445-
let scorer = test_utils::TestScorer::with_penalty(0);
1445+
let scorer = test_utils::TestScorer::new();
14461446
let random_seed_bytes = chanmon_cfgs[0].keys_manager.get_secure_random_bytes();
14471447

14481448
let _ = create_announced_chan_between_nodes(&nodes, 0, 1).2;

lightning/src/ln/shutdown_tests.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -76,7 +76,7 @@ fn updates_shutdown_wait() {
7676
let chan_1 = create_announced_chan_between_nodes(&nodes, 0, 1);
7777
let chan_2 = create_announced_chan_between_nodes(&nodes, 1, 2);
7878
let logger = test_utils::TestLogger::new();
79-
let scorer = test_utils::TestScorer::with_penalty(0);
79+
let scorer = test_utils::TestScorer::new();
8080
let keys_manager = test_utils::TestKeysInterface::new(&[0u8; 32], Network::Testnet);
8181
let random_seed_bytes = keys_manager.get_secure_random_bytes();
8282

0 commit comments

Comments
 (0)