@@ -3871,35 +3871,47 @@ mod tests {
38713871
38723872 let mut combined_scorer = CombinedScorer :: new ( scorer) ;
38733873
3874+ // Verify that the combined_scorer has the correct liquidity range after a failed 600 msat payment.
3875+ let liquidity_range = combined_scorer. scorer . estimated_channel_liquidity_range ( 42 , & target_node_id ( ) ) ;
3876+ assert_eq ! ( liquidity_range. unwrap( ) , ( 0 , 600 ) ) ;
3877+
38743878 let source = source_node_id ( ) ;
38753879 let usage = ChannelUsage {
38763880 amount_msat : 750 ,
38773881 inflight_htlc_msat : 0 ,
38783882 effective_capacity : EffectiveCapacity :: Total { capacity_msat : 1_000 , htlc_maximum_msat : 1_000 } ,
38793883 } ;
3880- let network_graph = network_graph. read_only ( ) ;
3881- let channel = network_graph. channel ( 42 ) . unwrap ( ) ;
3882- let ( info, _) = channel. as_directed_from ( & source) . unwrap ( ) ;
3883- let candidate = CandidateRouteHop :: PublicHop ( PublicHopCandidate {
3884- info,
3885- short_channel_id : 42 ,
3886- } ) ;
3887- let penalty = combined_scorer. channel_penalty_msat ( & candidate, usage, & params) ;
38883884
3889- let mut external_liquidity = ChannelLiquidity :: new ( Duration :: ZERO ) ;
3890- let logger_rc = Rc :: new ( & logger) ; // Why necessary and not above for the network graph?
3891- external_liquidity. as_directed_mut ( & source_node_id ( ) , & target_node_id ( ) , 1_000 ) .
3892- successful ( 1000 , Duration :: ZERO , format_args ! ( "test channel" ) , logger_rc. as_ref ( ) ) ;
3893-
3894- let mut external_scores = ChannelLiquidities :: new ( ) ;
3895-
3896- external_scores. insert ( 42 , external_liquidity) ;
3897- combined_scorer. merge ( external_scores, Duration :: ZERO ) ;
3885+ {
3886+ let network_graph = network_graph. read_only ( ) ;
3887+ let channel = network_graph. channel ( 42 ) . unwrap ( ) ;
3888+ let ( info, _) = channel. as_directed_from ( & source) . unwrap ( ) ;
3889+ let candidate = CandidateRouteHop :: PublicHop ( PublicHopCandidate {
3890+ info,
3891+ short_channel_id : 42 ,
3892+ } ) ;
3893+
3894+ let penalty = combined_scorer. channel_penalty_msat ( & candidate, usage, & params) ;
3895+
3896+ let mut external_liquidity = ChannelLiquidity :: new ( Duration :: ZERO ) ;
3897+ let logger_rc = Rc :: new ( & logger) ; // Why necessary and not above for the network graph?
3898+ external_liquidity. as_directed_mut ( & source_node_id ( ) , & target_node_id ( ) , 1_000 ) .
3899+ successful ( 1000 , Duration :: ZERO , format_args ! ( "test channel" ) , logger_rc. as_ref ( ) ) ;
38983900
3899- let penalty_after_merge = combined_scorer . channel_penalty_msat ( & candidate , usage , & params ) ;
3901+ let mut external_scores = ChannelLiquidities :: new ( ) ;
39003902
3901- // Since the external source observed a successful payment, the penalty should be lower after the merge.
3902- assert ! ( penalty_after_merge < penalty) ;
3903+ external_scores. insert ( 42 , external_liquidity) ;
3904+ combined_scorer. merge ( external_scores, Duration :: ZERO ) ;
3905+
3906+ let penalty_after_merge = combined_scorer. channel_penalty_msat ( & candidate, usage, & params) ;
3907+
3908+ // Since the external source observed a successful payment, the penalty should be lower after the merge.
3909+ assert ! ( penalty_after_merge < penalty) ;
3910+ }
3911+
3912+ // Verify that after the merge with a successful payment, the liquidity range is increased.
3913+ let liquidity_range = combined_scorer. scorer . estimated_channel_liquidity_range ( 42 , & target_node_id ( ) ) ;
3914+ assert_eq ! ( liquidity_range. unwrap( ) , ( 0 , 300 ) ) ;
39033915 }
39043916}
39053917
0 commit comments