Skip to content

Commit d0006a8

Browse files
committed
Have TestRouter wrap DefaultRouter
TestRouter checks route and scoring expectations before delegating to the standalone find_route function. Refactor it to wrap DefaultRouter and delegate to it instead. This allows TestRouter to implement create_blinded_payment_paths by delegating to DefaultRouter.
1 parent cb2a3cb commit d0006a8

File tree

4 files changed

+40
-27
lines changed

4 files changed

+40
-27
lines changed

lightning/src/ln/functional_test_utils.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -620,7 +620,7 @@ impl<'a, 'b, 'c> Drop for Node<'a, 'b, 'c> {
620620
node_signer: self.keys_manager,
621621
signer_provider: self.keys_manager,
622622
fee_estimator: &test_utils::TestFeeEstimator { sat_per_kw: Mutex::new(253) },
623-
router: &test_utils::TestRouter::new(Arc::new(network_graph), &scorer),
623+
router: &test_utils::TestRouter::new(Arc::new(network_graph), &self.logger, &scorer),
624624
chain_monitor: self.chain_monitor,
625625
tx_broadcaster: &broadcaster,
626626
logger: &self.logger,
@@ -2875,7 +2875,7 @@ pub fn create_node_cfgs_with_persisters<'a>(node_count: usize, chanmon_cfgs: &'a
28752875
logger: &chanmon_cfgs[i].logger,
28762876
tx_broadcaster: &chanmon_cfgs[i].tx_broadcaster,
28772877
fee_estimator: &chanmon_cfgs[i].fee_estimator,
2878-
router: test_utils::TestRouter::new(network_graph.clone(), &chanmon_cfgs[i].scorer),
2878+
router: test_utils::TestRouter::new(network_graph.clone(), &chanmon_cfgs[i].logger, &chanmon_cfgs[i].scorer),
28792879
message_router: test_utils::TestMessageRouter::new(network_graph.clone()),
28802880
chain_monitor,
28812881
keys_manager: &chanmon_cfgs[i].keys_manager,

lightning/src/ln/functional_tests.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5530,7 +5530,7 @@ fn test_key_derivation_params() {
55305530
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);
55315531
let network_graph = Arc::new(NetworkGraph::new(Network::Testnet, &chanmon_cfgs[0].logger));
55325532
let scorer = RwLock::new(test_utils::TestScorer::new());
5533-
let router = test_utils::TestRouter::new(network_graph.clone(), &scorer);
5533+
let router = test_utils::TestRouter::new(network_graph.clone(), &chanmon_cfgs[0].logger, &scorer);
55345534
let message_router = test_utils::TestMessageRouter::new(network_graph.clone());
55355535
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, message_router, chain_monitor, keys_manager: &keys_manager, network_graph, node_seed: seed, override_init_features: alloc::rc::Rc::new(core::cell::RefCell::new(None)) };
55365536
let mut node_cfgs = create_node_cfgs(3, &chanmon_cfgs);

lightning/src/ln/outbound_payment.rs

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1876,7 +1876,7 @@ mod tests {
18761876
let logger = test_utils::TestLogger::new();
18771877
let network_graph = Arc::new(NetworkGraph::new(Network::Testnet, &logger));
18781878
let scorer = RwLock::new(test_utils::TestScorer::new());
1879-
let router = test_utils::TestRouter::new(network_graph, &scorer);
1879+
let router = test_utils::TestRouter::new(network_graph, &logger, &scorer);
18801880
let secp_ctx = Secp256k1::new();
18811881
let keys_manager = test_utils::TestKeysInterface::new(&[0; 32], Network::Testnet);
18821882

@@ -1920,7 +1920,7 @@ mod tests {
19201920
let logger = test_utils::TestLogger::new();
19211921
let network_graph = Arc::new(NetworkGraph::new(Network::Testnet, &logger));
19221922
let scorer = RwLock::new(test_utils::TestScorer::new());
1923-
let router = test_utils::TestRouter::new(network_graph, &scorer);
1923+
let router = test_utils::TestRouter::new(network_graph, &logger, &scorer);
19241924
let secp_ctx = Secp256k1::new();
19251925
let keys_manager = test_utils::TestKeysInterface::new(&[0; 32], Network::Testnet);
19261926

@@ -1959,7 +1959,7 @@ mod tests {
19591959
let logger = test_utils::TestLogger::new();
19601960
let network_graph = Arc::new(NetworkGraph::new(Network::Testnet, &logger));
19611961
let scorer = RwLock::new(test_utils::TestScorer::new());
1962-
let router = test_utils::TestRouter::new(network_graph, &scorer);
1962+
let router = test_utils::TestRouter::new(network_graph, &logger, &scorer);
19631963
let secp_ctx = Secp256k1::new();
19641964
let keys_manager = test_utils::TestKeysInterface::new(&[0; 32], Network::Testnet);
19651965

@@ -2166,7 +2166,7 @@ mod tests {
21662166
let logger = test_utils::TestLogger::new();
21672167
let network_graph = Arc::new(NetworkGraph::new(Network::Testnet, &logger));
21682168
let scorer = RwLock::new(test_utils::TestScorer::new());
2169-
let router = test_utils::TestRouter::new(network_graph, &scorer);
2169+
let router = test_utils::TestRouter::new(network_graph, &logger, &scorer);
21702170
let keys_manager = test_utils::TestKeysInterface::new(&[0; 32], Network::Testnet);
21712171

21722172
let pending_events = Mutex::new(VecDeque::new());
@@ -2217,7 +2217,7 @@ mod tests {
22172217
let logger = test_utils::TestLogger::new();
22182218
let network_graph = Arc::new(NetworkGraph::new(Network::Testnet, &logger));
22192219
let scorer = RwLock::new(test_utils::TestScorer::new());
2220-
let router = test_utils::TestRouter::new(network_graph, &scorer);
2220+
let router = test_utils::TestRouter::new(network_graph, &logger, &scorer);
22212221
let keys_manager = test_utils::TestKeysInterface::new(&[0; 32], Network::Testnet);
22222222

22232223
let pending_events = Mutex::new(VecDeque::new());
@@ -2276,7 +2276,7 @@ mod tests {
22762276
let logger = test_utils::TestLogger::new();
22772277
let network_graph = Arc::new(NetworkGraph::new(Network::Testnet, &logger));
22782278
let scorer = RwLock::new(test_utils::TestScorer::new());
2279-
let router = test_utils::TestRouter::new(network_graph, &scorer);
2279+
let router = test_utils::TestRouter::new(network_graph, &logger, &scorer);
22802280
let keys_manager = test_utils::TestKeysInterface::new(&[0; 32], Network::Testnet);
22812281

22822282
let pending_events = Mutex::new(VecDeque::new());
@@ -2335,7 +2335,7 @@ mod tests {
23352335
let logger = test_utils::TestLogger::new();
23362336
let network_graph = Arc::new(NetworkGraph::new(Network::Testnet, &logger));
23372337
let scorer = RwLock::new(test_utils::TestScorer::new());
2338-
let router = test_utils::TestRouter::new(network_graph, &scorer);
2338+
let router = test_utils::TestRouter::new(network_graph, &logger, &scorer);
23392339
let keys_manager = test_utils::TestKeysInterface::new(&[0; 32], Network::Testnet);
23402340

23412341
let pending_events = Mutex::new(VecDeque::new());

lightning/src/util/test_utils.rs

Lines changed: 30 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,7 @@ use crate::offers::invoice_request::UnsignedInvoiceRequest;
3535
use crate::onion_message::{DefaultMessageRouter, Destination, MessageRouter, OnionMessagePath};
3636
use crate::routing::gossip::{EffectiveCapacity, NetworkGraph, NodeId, RoutingFees};
3737
use crate::routing::utxo::{UtxoLookup, UtxoLookupError, UtxoResult};
38-
use crate::routing::router::{find_route, InFlightHtlcs, Path, Route, RouteParameters, RouteHintHop, Router, ScorerAccountingForInFlightHtlcs};
38+
use crate::routing::router::{find_route, DefaultRouter, InFlightHtlcs, Path, Route, RouteParameters, RouteHintHop, Router, ScorerAccountingForInFlightHtlcs};
3939
use crate::routing::scoring::{ChannelUsage, ScoreUpdate, ScoreLookUp};
4040
use crate::sync::RwLock;
4141
use crate::util::config::UserConfig;
@@ -103,14 +103,29 @@ impl chaininterface::FeeEstimator for TestFeeEstimator {
103103
}
104104

105105
pub struct TestRouter<'a> {
106+
pub router: DefaultRouter<
107+
Arc<NetworkGraph<&'a TestLogger>>,
108+
&'a TestLogger,
109+
&'a RwLock<TestScorer>,
110+
(),
111+
TestScorer,
112+
>,
106113
pub network_graph: Arc<NetworkGraph<&'a TestLogger>>,
107114
pub next_routes: Mutex<VecDeque<(RouteParameters, Result<Route, LightningError>)>>,
108115
pub scorer: &'a RwLock<TestScorer>,
109116
}
110117

111118
impl<'a> TestRouter<'a> {
112-
pub fn new(network_graph: Arc<NetworkGraph<&'a TestLogger>>, scorer: &'a RwLock<TestScorer>) -> Self {
113-
Self { network_graph, next_routes: Mutex::new(VecDeque::new()), scorer }
119+
pub fn new(
120+
network_graph: Arc<NetworkGraph<&'a TestLogger>>, logger: &'a TestLogger,
121+
scorer: &'a RwLock<TestScorer>
122+
) -> Self {
123+
Self {
124+
router: DefaultRouter::new(network_graph.clone(), logger, [42u8; 32], scorer, ()),
125+
network_graph,
126+
next_routes: Mutex::new(VecDeque::new()),
127+
scorer,
128+
}
114129
}
115130

116131
pub fn expect_find_route(&self, query: RouteParameters, result: Result<Route, LightningError>) {
@@ -184,38 +199,36 @@ impl<'a> Router for TestRouter<'a> {
184199
}
185200
return find_route_res;
186201
}
187-
let logger = TestLogger::new();
188-
find_route(
189-
payer, params, &self.network_graph, first_hops, &logger,
190-
&ScorerAccountingForInFlightHtlcs::new(self.scorer.read().unwrap(), &inflight_htlcs), &Default::default(),
191-
&[42; 32]
192-
)
202+
203+
self.router.find_route(payer, params, first_hops, inflight_htlcs)
193204
}
194205

195206
fn create_blinded_payment_paths<
196207
ES: EntropySource + ?Sized, T: secp256k1::Signing + secp256k1::Verification
197208
>(
198-
&self, _recipient: PublicKey, _first_hops: Vec<ChannelDetails>, _tlvs: ReceiveTlvs,
199-
_amount_msats: u64, _entropy_source: &ES, _secp_ctx: &Secp256k1<T>
209+
&self, recipient: PublicKey, first_hops: Vec<ChannelDetails>, tlvs: ReceiveTlvs,
210+
amount_msats: u64, entropy_source: &ES, secp_ctx: &Secp256k1<T>
200211
) -> Result<Vec<(BlindedPayInfo, BlindedPath)>, ()> {
201-
unreachable!()
212+
self.router.create_blinded_payment_paths(
213+
recipient, first_hops, tlvs, amount_msats, entropy_source, secp_ctx
214+
)
202215
}
203216
}
204217

205218
impl<'a> MessageRouter for TestRouter<'a> {
206219
fn find_path(
207-
&self, _sender: PublicKey, _peers: Vec<PublicKey>, _destination: Destination
220+
&self, sender: PublicKey, peers: Vec<PublicKey>, destination: Destination
208221
) -> Result<OnionMessagePath, ()> {
209-
unreachable!()
222+
self.router.find_path(sender, peers, destination)
210223
}
211224

212225
fn create_blinded_paths<
213226
ES: EntropySource + ?Sized, T: secp256k1::Signing + secp256k1::Verification
214227
>(
215-
&self, _recipient: PublicKey, _peers: Vec<PublicKey>, _entropy_source: &ES,
216-
_secp_ctx: &Secp256k1<T>
228+
&self, recipient: PublicKey, peers: Vec<PublicKey>, entropy_source: &ES,
229+
secp_ctx: &Secp256k1<T>
217230
) -> Result<Vec<BlindedPath>, ()> {
218-
unreachable!()
231+
self.router.create_blinded_paths(recipient, peers, entropy_source, secp_ctx)
219232
}
220233
}
221234

0 commit comments

Comments
 (0)