Skip to content

Commit fe561cf

Browse files
committed
more test coverage
1 parent 30ac6ea commit fe561cf

File tree

1 file changed

+53
-5
lines changed

1 file changed

+53
-5
lines changed

lightning/src/routing/scoring.rs

Lines changed: 53 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -2203,7 +2203,54 @@ mod bucketed_history {
22032203
Some((cumulative_success_prob * (1024.0 * 1024.0 * 1024.0)) as u64)
22042204
}
22052205
}
2206+
2207+
#[cfg(test)]
2208+
mod tests {
2209+
use crate::routing::scoring::ProbabilisticScoringFeeParameters;
2210+
2211+
use super::{HistoricalBucketRangeTracker, HistoricalLiquidityTracker};
2212+
#[test]
2213+
fn historical_liquidity_bucket_merge() {
2214+
let mut bucket1 = HistoricalBucketRangeTracker::new();
2215+
bucket1.track_datapoint(100, 1000);
2216+
assert_eq!(bucket1.buckets, [0u16,0,0,0,0,0,0,0,0,0,0,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]);
2217+
2218+
let mut bucket2 = HistoricalBucketRangeTracker::new();
2219+
bucket2.track_datapoint(0, 1000);
2220+
assert_eq!(bucket2.buckets, [32u16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]);
2221+
2222+
bucket1.merge(&bucket2);
2223+
assert_eq!(bucket1.buckets, [16u16,0,0,0,0,0,0,0,0,0,0,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]);
2224+
}
2225+
2226+
#[test]
2227+
fn historical_liquidity_tracker_merge() {
2228+
let params = ProbabilisticScoringFeeParameters::default();
2229+
2230+
let probability1: Option<u64>;
2231+
let mut tracker1 = HistoricalLiquidityTracker::new();
2232+
{
2233+
let mut directed_tracker1 = tracker1.as_directed_mut(true);
2234+
directed_tracker1.track_datapoint(100, 200, 1000);
2235+
probability1 = directed_tracker1.calculate_success_probability_times_billion(&params, 500, 1000);
2236+
}
2237+
2238+
let mut tracker2 = HistoricalLiquidityTracker::new();
2239+
{
2240+
let mut directed_tracker2 = tracker2.as_directed_mut(true);
2241+
directed_tracker2.track_datapoint(200, 300, 1000);
2242+
}
2243+
2244+
tracker1.merge(&tracker2);
2245+
2246+
let directed_tracker1 = tracker1.as_directed(true);
2247+
let probability = directed_tracker1.calculate_success_probability_times_billion(&params, 500, 1000);
2248+
2249+
assert_ne!(probability1, probability);
2250+
}
2251+
}
22062252
}
2253+
22072254
use bucketed_history::{LegacyHistoricalBucketRangeTracker, HistoricalBucketRangeTracker, DirectedHistoricalLiquidityTracker, HistoricalLiquidityTracker};
22082255

22092256
impl<G: Deref<Target = NetworkGraph<L>>, L: Deref> Writeable for ProbabilisticScorer<G, L> where L::Target: Logger {
@@ -2300,7 +2347,7 @@ impl Readable for ChannelLiquidity {
23002347

23012348
#[cfg(test)]
23022349
mod tests {
2303-
use super::{ChannelLiquidity, HistoricalLiquidityTracker, ProbabilisticScoringFeeParameters, ProbabilisticScoringDecayParameters, ProbabilisticScorer};
2350+
use super::{ChannelLiquidity, HistoricalLiquidityTracker, ProbabilisticScorer, ProbabilisticScoringDecayParameters, ProbabilisticScoringFeeParameters};
23042351
use crate::blinded_path::BlindedHop;
23052352
use crate::util::config::UserConfig;
23062353

@@ -3835,8 +3882,7 @@ use std::rc::Rc;
38353882
short_channel_id: 42,
38363883
});
38373884
let penalty = combined_scorer.channel_penalty_msat(&candidate, usage, &params);
3838-
assert_eq!(penalty, 100000021275);
3839-
3885+
38403886
let mut external_liquidity = ChannelLiquidity::new(Duration::ZERO);
38413887
let logger_rc = Rc::new(&logger); // Why necessary and not above for the network graph?
38423888
external_liquidity.as_directed_mut(&source_node_id(), &target_node_id(), 1_000).
@@ -3847,8 +3893,10 @@ use std::rc::Rc;
38473893
external_scores.insert(42, external_liquidity);
38483894
combined_scorer.merge(external_scores);
38493895

3850-
let penalty = combined_scorer.channel_penalty_msat(&candidate, usage, &params);
3851-
assert_eq!(penalty, 100000021275);
3896+
let penalty_after_merge = combined_scorer.channel_penalty_msat(&candidate, usage, &params);
3897+
3898+
// Since the external source observed a successful payment, the penalty should be lower after the merge.
3899+
assert!(penalty_after_merge < penalty);
38523900
}
38533901
}
38543902

0 commit comments

Comments
 (0)