@@ -3890,35 +3890,47 @@ mod tests {
38903890
38913891 let mut combined_scorer = CombinedScorer :: new ( scorer) ;
38923892
3893+ // Verify that the combined_scorer has the correct liquidity range after a failed 600 msat payment.
3894+ let liquidity_range = combined_scorer. scorer . estimated_channel_liquidity_range ( 42 , & target_node_id ( ) ) ;
3895+ assert_eq ! ( liquidity_range. unwrap( ) , ( 0 , 600 ) ) ;
3896+
38933897 let source = source_node_id ( ) ;
38943898 let usage = ChannelUsage {
38953899 amount_msat : 750 ,
38963900 inflight_htlc_msat : 0 ,
38973901 effective_capacity : EffectiveCapacity :: Total { capacity_msat : 1_000 , htlc_maximum_msat : 1_000 } ,
38983902 } ;
3899- let network_graph = network_graph. read_only ( ) ;
3900- let channel = network_graph. channel ( 42 ) . unwrap ( ) ;
3901- let ( info, _) = channel. as_directed_from ( & source) . unwrap ( ) ;
3902- let candidate = CandidateRouteHop :: PublicHop ( PublicHopCandidate {
3903- info,
3904- short_channel_id : 42 ,
3905- } ) ;
3906- let penalty = combined_scorer. channel_penalty_msat ( & candidate, usage, & params) ;
39073903
3908- let mut external_liquidity = ChannelLiquidity :: new ( Duration :: ZERO ) ;
3909- let logger_rc = Rc :: new ( & logger) ; // Why necessary and not above for the network graph?
3910- external_liquidity. as_directed_mut ( & source_node_id ( ) , & target_node_id ( ) , 1_000 ) .
3911- successful ( 1000 , Duration :: ZERO , format_args ! ( "test channel" ) , logger_rc. as_ref ( ) ) ;
3912-
3913- let mut external_scores = ChannelLiquidities :: new ( ) ;
3914-
3915- external_scores. insert ( 42 , external_liquidity) ;
3916- combined_scorer. merge ( external_scores, Duration :: ZERO ) ;
3904+ {
3905+ let network_graph = network_graph. read_only ( ) ;
3906+ let channel = network_graph. channel ( 42 ) . unwrap ( ) ;
3907+ let ( info, _) = channel. as_directed_from ( & source) . unwrap ( ) ;
3908+ let candidate = CandidateRouteHop :: PublicHop ( PublicHopCandidate {
3909+ info,
3910+ short_channel_id : 42 ,
3911+ } ) ;
3912+
3913+ let penalty = combined_scorer. channel_penalty_msat ( & candidate, usage, & params) ;
3914+
3915+ let mut external_liquidity = ChannelLiquidity :: new ( Duration :: ZERO ) ;
3916+ let logger_rc = Rc :: new ( & logger) ; // Why necessary and not above for the network graph?
3917+ external_liquidity. as_directed_mut ( & source_node_id ( ) , & target_node_id ( ) , 1_000 ) .
3918+ successful ( 1000 , Duration :: ZERO , format_args ! ( "test channel" ) , logger_rc. as_ref ( ) ) ;
39173919
3918- let penalty_after_merge = combined_scorer . channel_penalty_msat ( & candidate , usage , & params ) ;
3920+ let mut external_scores = ChannelLiquidities :: new ( ) ;
39193921
3920- // Since the external source observed a successful payment, the penalty should be lower after the merge.
3921- assert ! ( penalty_after_merge < penalty) ;
3922+ external_scores. insert ( 42 , external_liquidity) ;
3923+ combined_scorer. merge ( external_scores, Duration :: ZERO ) ;
3924+
3925+ let penalty_after_merge = combined_scorer. channel_penalty_msat ( & candidate, usage, & params) ;
3926+
3927+ // Since the external source observed a successful payment, the penalty should be lower after the merge.
3928+ assert ! ( penalty_after_merge < penalty) ;
3929+ }
3930+
3931+ // Verify that after the merge with a successful payment, the liquidity range is increased.
3932+ let liquidity_range = combined_scorer. scorer . estimated_channel_liquidity_range ( 42 , & target_node_id ( ) ) ;
3933+ assert_eq ! ( liquidity_range. unwrap( ) , ( 0 , 300 ) ) ;
39223934 }
39233935}
39243936
0 commit comments