Skip to content

Commit b936eb3

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 b936eb3

File tree

1 file changed

+6
-4
lines changed

1 file changed

+6
-4
lines changed

lightning/src/routing/router.rs

+6-4
Original file line numberDiff line numberDiff line change
@@ -8848,11 +8848,13 @@ pub(crate) mod bench_utils {
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_key = nodes.range(..).skip((seed as usize) % nodes.len()..).next().unwrap();
8852+
let src = PublicKey::from_slice(src_key.as_slice()).unwrap();
8853+
88538854
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();
8855+
let dst_key = nodes.range(..).skip((seed as usize) % nodes.len()..).next().unwrap();
8856+
let dst = PublicKey::from_slice(dst_key.as_slice()).unwrap();
8857+
88568858
let params = PaymentParameters::from_node_id(dst, 42)
88578859
.with_bolt11_features(features.clone()).unwrap();
88588860
let first_hop = first_hop(src);

0 commit comments

Comments
 (0)