Skip to content

Commit be33a96

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 7ba4920 commit be33a96

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
@@ -632,7 +632,7 @@ impl<'a, 'b, 'c> Drop for Node<'a, 'b, 'c> {
632632
node_signer: self.keys_manager,
633633
signer_provider: self.keys_manager,
634634
fee_estimator: &test_utils::TestFeeEstimator { sat_per_kw: Mutex::new(253) },
635-
router: &test_utils::TestRouter::new(Arc::new(network_graph), &scorer),
635+
router: &test_utils::TestRouter::new(Arc::new(network_graph), &self.logger, &scorer),
636636
chain_monitor: self.chain_monitor,
637637
tx_broadcaster: &broadcaster,
638638
logger: &self.logger,
@@ -2912,7 +2912,7 @@ pub fn create_node_cfgs_with_persisters<'a>(node_count: usize, chanmon_cfgs: &'a
29122912
logger: &chanmon_cfgs[i].logger,
29132913
tx_broadcaster: &chanmon_cfgs[i].tx_broadcaster,
29142914
fee_estimator: &chanmon_cfgs[i].fee_estimator,
2915-
router: test_utils::TestRouter::new(network_graph.clone(), &chanmon_cfgs[i].scorer),
2915+
router: test_utils::TestRouter::new(network_graph.clone(), &chanmon_cfgs[i].logger, &chanmon_cfgs[i].scorer),
29162916
message_router: test_utils::TestMessageRouter::new(network_graph.clone()),
29172917
chain_monitor,
29182918
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
@@ -5537,7 +5537,7 @@ fn test_key_derivation_params() {
55375537
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);
55385538
let network_graph = Arc::new(NetworkGraph::new(Network::Testnet, &chanmon_cfgs[0].logger));
55395539
let scorer = RwLock::new(test_utils::TestScorer::new());
5540-
let router = test_utils::TestRouter::new(network_graph.clone(), &scorer);
5540+
let router = test_utils::TestRouter::new(network_graph.clone(), &chanmon_cfgs[0].logger, &scorer);
55415541
let message_router = test_utils::TestMessageRouter::new(network_graph.clone());
55425542
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)) };
55435543
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::{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;
@@ -104,14 +104,29 @@ impl chaininterface::FeeEstimator for TestFeeEstimator {
104104
}
105105

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

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

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

196207
fn create_blinded_payment_paths<
197208
ES: EntropySource + ?Sized, T: secp256k1::Signing + secp256k1::Verification
198209
>(
199-
&self, _recipient: PublicKey, _first_hops: Vec<ChannelDetails>, _tlvs: ReceiveTlvs,
200-
_amount_msats: u64, _entropy_source: &ES, _secp_ctx: &Secp256k1<T>
210+
&self, recipient: PublicKey, first_hops: Vec<ChannelDetails>, tlvs: ReceiveTlvs,
211+
amount_msats: u64, entropy_source: &ES, secp_ctx: &Secp256k1<T>
201212
) -> Result<Vec<(BlindedPayInfo, BlindedPath)>, ()> {
202-
unreachable!()
213+
self.router.create_blinded_payment_paths(
214+
recipient, first_hops, tlvs, amount_msats, entropy_source, secp_ctx
215+
)
203216
}
204217
}
205218

206219
impl<'a> MessageRouter for TestRouter<'a> {
207220
fn find_path(
208-
&self, _sender: PublicKey, _peers: Vec<PublicKey>, _destination: Destination
221+
&self, sender: PublicKey, peers: Vec<PublicKey>, destination: Destination
209222
) -> Result<OnionMessagePath, ()> {
210-
unreachable!()
223+
self.router.find_path(sender, peers, destination)
211224
}
212225

213226
fn create_blinded_paths<
214227
ES: EntropySource + ?Sized, T: secp256k1::Signing + secp256k1::Verification
215228
>(
216-
&self, _recipient: PublicKey, _peers: Vec<PublicKey>, _entropy_source: &ES,
217-
_secp_ctx: &Secp256k1<T>
229+
&self, recipient: PublicKey, peers: Vec<PublicKey>, entropy_source: &ES,
230+
secp_ctx: &Secp256k1<T>
218231
) -> Result<Vec<BlindedPath>, ()> {
219-
unreachable!()
232+
self.router.create_blinded_paths(recipient, peers, entropy_source, secp_ctx)
220233
}
221234
}
222235

0 commit comments

Comments
 (0)