Skip to content

Commit 6cef57b

Browse files
committed
Make generate_test_routes deterministic based on its seed
The intent of `generate_test_routes` is to be deterministic based on a seed which is printed at the start. That way if a test fails, the seed can be trivially hard-coded and the test can be replicated. Sadly, it was not, as it used an iterator over an `IndexedMap` with key order randomization. Luckily, `IndexedMap` already supports sorted iteration, so we simply use it here.
1 parent 233aa39 commit 6cef57b

File tree

1 file changed

+9
-5
lines changed

1 file changed

+9
-5
lines changed

lightning/src/routing/router.rs

+9-5
Original file line numberDiff line numberDiff line change
@@ -8843,16 +8843,20 @@ pub(crate) mod bench_utils {
88438843
let payer = payer_pubkey();
88448844
let random_seed_bytes = [42; 32];
88458845

8846-
let nodes = graph.read_only().nodes().clone();
8846+
let mut nodes = graph.read_only().nodes().clone();
88478847
let mut route_endpoints = Vec::new();
88488848
for _ in 0..route_count {
88498849
loop {
88508850
seed = seed.overflowing_mul(6364136223846793005).0.overflowing_add(1).0;
8851-
let src = PublicKey::from_slice(nodes.unordered_keys()
8852-
.skip((seed as usize) % nodes.len()).next().unwrap().as_slice()).unwrap();
8851+
let src_idx = (seed as usize) % nodes.len();
8852+
let src_key = nodes.range(..).skip(src_idx).next().unwrap().0;
8853+
let src = PublicKey::from_slice(src_key.as_slice()).unwrap();
8854+
88538855
seed = seed.overflowing_mul(6364136223846793005).0.overflowing_add(1).0;
8854-
let dst = PublicKey::from_slice(nodes.unordered_keys()
8855-
.skip((seed as usize) % nodes.len()).next().unwrap().as_slice()).unwrap();
8856+
let dst_idx = (seed as usize) % nodes.len();
8857+
let dst_key = nodes.range(..).skip(dst_idx).next().unwrap().0;
8858+
let dst = PublicKey::from_slice(dst_key.as_slice()).unwrap();
8859+
88568860
let params = PaymentParameters::from_node_id(dst, 42)
88578861
.with_bolt11_features(features.clone()).unwrap();
88588862
let first_hop = first_hop(src);

0 commit comments

Comments
 (0)