@@ -3894,35 +3894,47 @@ mod tests {
38943894
38953895 let mut combined_scorer = CombinedScorer :: new ( scorer) ;
38963896
3897+ // Verify that the combined_scorer has the correct liquidity range after a failed 600 msat payment.
3898+ let liquidity_range = combined_scorer. scorer . estimated_channel_liquidity_range ( 42 , & target_node_id ( ) ) ;
3899+ assert_eq ! ( liquidity_range. unwrap( ) , ( 0 , 600 ) ) ;
3900+
38973901 let source = source_node_id ( ) ;
38983902 let usage = ChannelUsage {
38993903 amount_msat : 750 ,
39003904 inflight_htlc_msat : 0 ,
39013905 effective_capacity : EffectiveCapacity :: Total { capacity_msat : 1_000 , htlc_maximum_msat : 1_000 } ,
39023906 } ;
3903- let network_graph = network_graph. read_only ( ) ;
3904- let channel = network_graph. channel ( 42 ) . unwrap ( ) ;
3905- let ( info, _) = channel. as_directed_from ( & source) . unwrap ( ) ;
3906- let candidate = CandidateRouteHop :: PublicHop ( PublicHopCandidate {
3907- info,
3908- short_channel_id : 42 ,
3909- } ) ;
3910- let penalty = combined_scorer. channel_penalty_msat ( & candidate, usage, & params) ;
39113907
3912- let mut external_liquidity = ChannelLiquidity :: new ( Duration :: ZERO ) ;
3913- let logger_rc = Rc :: new ( & logger) ; // Why necessary and not above for the network graph?
3914- external_liquidity. as_directed_mut ( & source_node_id ( ) , & target_node_id ( ) , 1_000 ) .
3915- successful ( 1000 , Duration :: ZERO , format_args ! ( "test channel" ) , logger_rc. as_ref ( ) ) ;
3916-
3917- let mut external_scores = ChannelLiquidities :: new ( ) ;
3918-
3919- external_scores. insert ( 42 , external_liquidity) ;
3920- combined_scorer. merge ( external_scores, Duration :: ZERO ) ;
3908+ {
3909+ let network_graph = network_graph. read_only ( ) ;
3910+ let channel = network_graph. channel ( 42 ) . unwrap ( ) ;
3911+ let ( info, _) = channel. as_directed_from ( & source) . unwrap ( ) ;
3912+ let candidate = CandidateRouteHop :: PublicHop ( PublicHopCandidate {
3913+ info,
3914+ short_channel_id : 42 ,
3915+ } ) ;
3916+
3917+ let penalty = combined_scorer. channel_penalty_msat ( & candidate, usage, & params) ;
3918+
3919+ let mut external_liquidity = ChannelLiquidity :: new ( Duration :: ZERO ) ;
3920+ let logger_rc = Rc :: new ( & logger) ; // Why necessary and not above for the network graph?
3921+ external_liquidity. as_directed_mut ( & source_node_id ( ) , & target_node_id ( ) , 1_000 ) .
3922+ successful ( 1000 , Duration :: ZERO , format_args ! ( "test channel" ) , logger_rc. as_ref ( ) ) ;
39213923
3922- let penalty_after_merge = combined_scorer . channel_penalty_msat ( & candidate , usage , & params ) ;
3924+ let mut external_scores = ChannelLiquidities :: new ( ) ;
39233925
3924- // Since the external source observed a successful payment, the penalty should be lower after the merge.
3925- assert ! ( penalty_after_merge < penalty) ;
3926+ external_scores. insert ( 42 , external_liquidity) ;
3927+ combined_scorer. merge ( external_scores, Duration :: ZERO ) ;
3928+
3929+ let penalty_after_merge = combined_scorer. channel_penalty_msat ( & candidate, usage, & params) ;
3930+
3931+ // Since the external source observed a successful payment, the penalty should be lower after the merge.
3932+ assert ! ( penalty_after_merge < penalty) ;
3933+ }
3934+
3935+ // Verify that after the merge with a successful payment, the liquidity range is increased.
3936+ let liquidity_range = combined_scorer. scorer . estimated_channel_liquidity_range ( 42 , & target_node_id ( ) ) ;
3937+ assert_eq ! ( liquidity_range. unwrap( ) , ( 0 , 300 ) ) ;
39263938 }
39273939}
39283940
0 commit comments