@@ -871,7 +871,7 @@ where L::Target: Logger {
871871 HashMap :: with_capacity ( network_nodes. len ( ) ) ;
872872
873873 // Keeping track of how much value we already collected across other paths. Helps to decide
874- // when we want to stop looking for new paths.
874+ // when we want to stop looking for new paths.
875875 let mut already_collected_value_msat = 0 ;
876876
877877 for ( _, channels) in first_hop_targets. iter_mut ( ) {
@@ -4013,7 +4013,8 @@ mod tests {
40134013 let scorer = test_utils:: TestScorer :: with_penalty ( 0 ) ;
40144014 let keys_manager = test_utils:: TestKeysInterface :: new ( & [ 0u8 ; 32 ] , Network :: Testnet ) ;
40154015 let random_seed_bytes = keys_manager. get_secure_random_bytes ( ) ;
4016- let payment_params = PaymentParameters :: from_node_id ( nodes[ 2 ] ) . with_features ( InvoiceFeatures :: known ( ) ) ;
4016+ let payment_params = PaymentParameters :: from_node_id ( nodes[ 2 ] )
4017+ . with_features ( InvoiceFeatures :: known ( ) ) ;
40174018
40184019 // We need a route consisting of 3 paths:
40194020 // From our node to node2 via node0, node7, node1 (three paths one hop each).
@@ -4106,15 +4107,39 @@ mod tests {
41064107 {
41074108 // Attempt to route more than available results in a failure.
41084109 if let Err ( LightningError { err, action : ErrorAction :: IgnoreError } ) = get_route (
4109- & our_id, & payment_params, & network_graph. read_only ( ) , None , 300_000 , 42 , Arc :: clone ( & logger) , & scorer, & random_seed_bytes) {
4110- assert_eq ! ( err, "Failed to find a sufficient route to the given destination" ) ;
4110+ & our_id, & payment_params, & network_graph. read_only ( ) , None , 300_000 , 42 ,
4111+ Arc :: clone ( & logger) , & scorer, & random_seed_bytes) {
4112+ assert_eq ! ( err, "Failed to find a sufficient route to the given destination" ) ;
4113+ } else { panic ! ( ) ; }
4114+ }
4115+
4116+ {
4117+ // Attempt to route while setting max_mpp_path_count to 0 results in a failure..
4118+ let zero_payment_params = payment_params. clone ( ) . with_max_mpp_path_count ( 0 ) ;
4119+ if let Err ( LightningError { err, action : ErrorAction :: IgnoreError } ) = get_route (
4120+ & our_id, & zero_payment_params, & network_graph. read_only ( ) , None , 100 , 42 ,
4121+ Arc :: clone ( & logger) , & scorer, & random_seed_bytes) {
4122+ assert_eq ! ( err, "Can't find an MPP route with no paths allowed." ) ;
4123+ } else { panic ! ( ) ; }
4124+ }
4125+
4126+ {
4127+ // Attempt to route while setting max_mpp_path_count to 3 results in a failure..
4128+ // This is the case because the minimal_value_contribution_msat would require each path
4129+ // to account for 1/3 of the total value, which is violated by 2 out of 3 paths.
4130+ let fail_payment_params = payment_params. clone ( ) . with_max_mpp_path_count ( 3 ) ;
4131+ if let Err ( LightningError { err, action : ErrorAction :: IgnoreError } ) = get_route (
4132+ & our_id, & fail_payment_params, & network_graph. read_only ( ) , None , 250_000 , 42 ,
4133+ Arc :: clone ( & logger) , & scorer, & random_seed_bytes) {
4134+ assert_eq ! ( err, "Failed to find a sufficient route to the given destination" ) ;
41114135 } else { panic ! ( ) ; }
41124136 }
41134137
41144138 {
41154139 // Now, attempt to route 250 sats (just a bit below the capacity).
41164140 // Our algorithm should provide us with these 3 paths.
4117- let route = get_route ( & our_id, & payment_params, & network_graph. read_only ( ) , None , 250_000 , 42 , Arc :: clone ( & logger) , & scorer, & random_seed_bytes) . unwrap ( ) ;
4141+ let route = get_route ( & our_id, & payment_params, & network_graph. read_only ( ) , None ,
4142+ 250_000 , 42 , Arc :: clone ( & logger) , & scorer, & random_seed_bytes) . unwrap ( ) ;
41184143 assert_eq ! ( route. paths. len( ) , 3 ) ;
41194144 let mut total_amount_paid_msat = 0 ;
41204145 for path in & route. paths {
@@ -4127,7 +4152,8 @@ mod tests {
41274152
41284153 {
41294154 // Attempt to route an exact amount is also fine
4130- let route = get_route ( & our_id, & payment_params, & network_graph. read_only ( ) , None , 290_000 , 42 , Arc :: clone ( & logger) , & scorer, & random_seed_bytes) . unwrap ( ) ;
4155+ let route = get_route ( & our_id, & payment_params, & network_graph. read_only ( ) , None ,
4156+ 290_000 , 42 , Arc :: clone ( & logger) , & scorer, & random_seed_bytes) . unwrap ( ) ;
41314157 assert_eq ! ( route. paths. len( ) , 3 ) ;
41324158 let mut total_amount_paid_msat = 0 ;
41334159 for path in & route. paths {
0 commit comments