Skip to content

Commit 6c52118

Browse files
committed
Test that we avoid banned nodes.
1 parent 1eb4cf4 commit 6c52118

File tree

1 file changed

+28
-1
lines changed

1 file changed

+28
-1
lines changed

lightning/src/routing/router.rs

Lines changed: 28 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1878,7 +1878,7 @@ mod tests {
18781878
use routing::router::{get_route, build_route_from_hops_internal, add_random_cltv_offset, default_node_features,
18791879
PaymentParameters, Route, RouteHint, RouteHintHop, RouteHop, RoutingFees,
18801880
DEFAULT_MAX_TOTAL_CLTV_EXPIRY_DELTA, MAX_PATH_LENGTH_ESTIMATE};
1881-
use routing::scoring::{ChannelUsage, Score};
1881+
use routing::scoring::{ChannelUsage, Score, ProbabilisticScorer, ProbabilisticScoringParameters};
18821882
use chain::transaction::OutPoint;
18831883
use chain::keysinterface::KeysInterface;
18841884
use ln::features::{ChannelFeatures, InitFeatures, InvoiceFeatures, NodeFeatures};
@@ -5713,6 +5713,33 @@ mod tests {
57135713
}
57145714
}
57155715
}
5716+
5717+
#[test]
5718+
fn avoids_banned_nodes() {
5719+
let (secp_ctx, network_graph, _, _, logger) = build_line_graph();
5720+
let (_, our_id, _, nodes) = get_nodes(&secp_ctx);
5721+
5722+
let keys_manager = test_utils::TestKeysInterface::new(&[0u8; 32], Network::Testnet);
5723+
let random_seed_bytes = keys_manager.get_secure_random_bytes();
5724+
5725+
let scorer_params = ProbabilisticScoringParameters::default();
5726+
let mut scorer = ProbabilisticScorer::new(scorer_params.clone(), Arc::clone(&network_graph), Arc::clone(&logger));
5727+
5728+
// First check we can get a route.
5729+
let payment_params = PaymentParameters::from_node_id(nodes[10]);
5730+
let route = get_route(&our_id, &payment_params, &network_graph.read_only(), None, 100, 42, Arc::clone(&logger), &scorer, &random_seed_bytes);
5731+
assert!(route.is_ok());
5732+
5733+
// Then check that we can't get a route if we ban an intermediate node.
5734+
scorer.add_banned(&NodeId::from_pubkey(&nodes[3]));
5735+
let route = get_route(&our_id, &payment_params, &network_graph.read_only(), None, 100, 42, Arc::clone(&logger), &scorer, &random_seed_bytes);
5736+
assert!(route.is_err());
5737+
5738+
// Finally make sure we can route again, when we remove the ban.
5739+
scorer.remove_banned(&NodeId::from_pubkey(&nodes[3]));
5740+
let route = get_route(&our_id, &payment_params, &network_graph.read_only(), None, 100, 42, Arc::clone(&logger), &scorer, &random_seed_bytes);
5741+
assert!(route.is_ok());
5742+
}
57165743
}
57175744

57185745
#[cfg(all(test, not(feature = "no-std")))]

0 commit comments

Comments
 (0)