Skip to content

Commit b651dcc

Browse files
committed
f Fix Tests for configurable in-flight limit
1 parent 8839a0d commit b651dcc

File tree

1 file changed

+44
-64
lines changed

1 file changed

+44
-64
lines changed

lightning/src/ln/channel.rs

Lines changed: 44 additions & 64 deletions
Original file line numberDiff line numberDiff line change
@@ -6660,86 +6660,66 @@ mod tests {
66606660
let outbound_node_id = PublicKey::from_secret_key(&secp_ctx, &SecretKey::from_slice(&[42; 32]).unwrap());
66616661
let inbound_node_id = PublicKey::from_secret_key(&secp_ctx, &SecretKey::from_slice(&[7; 32]).unwrap());
66626662

6663-
let mut config_1_percent = UserConfig::default();
6664-
config_1_percent.channel_options.holder_max_htlc_value_in_flight_msat_channel_value_percent = 1;
6665-
let mut config_100_percent = UserConfig::default();
6666-
config_100_percent.channel_options.holder_max_htlc_value_in_flight_msat_channel_value_percent = 100;
6663+
let mut config_2_percent = UserConfig::default();
6664+
config_2_percent.own_channel_config.max_inbound_htlc_value_in_flight_percent_of_channel = 2;
6665+
let mut config_99_percent = UserConfig::default();
6666+
config_99_percent.own_channel_config.max_inbound_htlc_value_in_flight_percent_of_channel = 99;
66676667
let mut config_0_percent = UserConfig::default();
6668-
config_0_percent.channel_options.holder_max_htlc_value_in_flight_msat_channel_value_percent = 0;
6668+
config_0_percent.own_channel_config.max_inbound_htlc_value_in_flight_percent_of_channel = 0;
66696669
let mut config_101_percent = UserConfig::default();
6670-
config_101_percent.channel_options.holder_max_htlc_value_in_flight_msat_channel_value_percent = 101;
6670+
config_101_percent.own_channel_config.max_inbound_htlc_value_in_flight_percent_of_channel = 101;
66716671

66726672
// Test that `new_outbound` creates a channel with the correct value for
66736673
// `holder_max_htlc_value_in_flight_msat`, when configured with a valid percentage value,
6674-
// which is set to the lower bound (1%) of the `channel_value`.
6675-
let chan_1 = Channel::<EnforcingSigner>::new_outbound(&&feeest, &&keys_provider, outbound_node_id, &InitFeatures::known(), 10000000, 100000, 42, &config_1_percent, 0, 42).unwrap();
6674+
// which is set to the lower bound + 1 (2%) of the `channel_value`.
6675+
let chan_1 = Channel::<EnforcingSigner>::new_outbound(&&feeest, &&keys_provider, outbound_node_id, &InitFeatures::known(), 10000000, 100000, 42, &config_2_percent, 0, 42).unwrap();
66766676
let chan_1_value_msat = chan_1.channel_value_satoshis * 1000;
6677-
assert_eq!(chan_1.holder_max_htlc_value_in_flight_msat, (chan_1_value_msat as f64 * 0.01) as u64);
6677+
assert_eq!(chan_1.holder_max_htlc_value_in_flight_msat, (chan_1_value_msat as f64 * 0.02) as u64);
66786678

6679-
// Test with the upper bound of valid values (100%).
6680-
let chan_2 = Channel::<EnforcingSigner>::new_outbound(&&feeest, &&keys_provider, outbound_node_id, &InitFeatures::known(), 10000000, 100000, 42, &config_100_percent, 0, 42).unwrap();
6679+
// Test with the upper bound - 1 of valid values (99%).
6680+
let chan_2 = Channel::<EnforcingSigner>::new_outbound(&&feeest, &&keys_provider, outbound_node_id, &InitFeatures::known(), 10000000, 100000, 42, &config_99_percent, 0, 42).unwrap();
66816681
let chan_2_value_msat = chan_2.channel_value_satoshis * 1000;
6682-
assert_eq!(chan_2.holder_max_htlc_value_in_flight_msat, chan_2_value_msat);
6682+
assert_eq!(chan_2.holder_max_htlc_value_in_flight_msat, (chan_2_value_msat as f64 * 0.99) as u64);
66836683

66846684
let chan_1_open_channel_msg = chan_1.get_open_channel(genesis_block(network).header.block_hash());
66856685

66866686
// Test that `new_from_req` creates a channel with the correct value for
66876687
// `holder_max_htlc_value_in_flight_msat`, when configured with a valid percentage value,
6688-
// which is set to the lower bound (1%) of the `channel_value`.
6689-
let chan_3 = Channel::<EnforcingSigner>::new_from_req(&&feeest, &&keys_provider, inbound_node_id, &InitFeatures::known(), &chan_1_open_channel_msg, 7, &config_1_percent, 0, &&logger, 42).unwrap();
6688+
// which is set to the lower bound - 1 (2%) of the `channel_value`.
6689+
let chan_3 = Channel::<EnforcingSigner>::new_from_req(&&feeest, &&keys_provider, inbound_node_id, &InitFeatures::known(), &chan_1_open_channel_msg, 7, &config_2_percent, 0, &&logger, 42).unwrap();
66906690
let chan_3_value_msat = chan_3.channel_value_satoshis * 1000;
6691-
assert_eq!(chan_3.holder_max_htlc_value_in_flight_msat, (chan_3_value_msat as f64 * 0.01) as u64);
6691+
assert_eq!(chan_3.holder_max_htlc_value_in_flight_msat, (chan_3_value_msat as f64 * 0.02) as u64);
66926692

6693-
// Test with the upper bound of valid values (100%).
6694-
let chan_4 = Channel::<EnforcingSigner>::new_from_req(&&feeest, &&keys_provider, inbound_node_id, &InitFeatures::known(), &chan_1_open_channel_msg, 7, &config_100_percent, 0, &&logger, 42).unwrap();
6693+
// Test with the upper bound - 1 of valid values (99%).
6694+
let chan_4 = Channel::<EnforcingSigner>::new_from_req(&&feeest, &&keys_provider, inbound_node_id, &InitFeatures::known(), &chan_1_open_channel_msg, 7, &config_99_percent, 0, &&logger, 42).unwrap();
66956695
let chan_4_value_msat = chan_4.channel_value_satoshis * 1000;
6696-
assert_eq!(chan_4.holder_max_htlc_value_in_flight_msat, chan_4_value_msat);
6697-
6698-
// Test invalid values
6699-
let get_error_string = | percentage_value | { format!(
6700-
"UserConfig::channel_options::holder_max_htlc_value_in_flight_msat_channel_value_percent must be set to a value between 1-100. Current value set ({})",
6701-
percentage_value)
6702-
};
6703-
6704-
// Test that `new_outbound` fails when trying to create a channel invalid percentage value
6705-
// set for `holder_max_htlc_value_in_flight_msat_channel_value_percent` (less than 1).
6706-
let err_1 = Channel::<EnforcingSigner>::new_outbound(&&feeest, &&keys_provider, outbound_node_id, &InitFeatures::known(), 10000000, 100000, 42, &config_0_percent, 0, 42);
6707-
match err_1 {
6708-
Err(APIError::APIMisuseError { err }) => {
6709-
assert_eq!(err, get_error_string(0));
6710-
}
6711-
_ => { panic!("new_outbound should have resulted in APIError::APIMisuseError"); }
6712-
}
6713-
6714-
// Test that `new_outbound` fails when trying to create a channel invalid percentage value
6715-
// set for `holder_max_htlc_value_in_flight_msat_channel_value_percent` (larger than 100).
6716-
let err_2 = Channel::<EnforcingSigner>::new_outbound(&&feeest, &&keys_provider, outbound_node_id, &InitFeatures::known(), 10000000, 100000, 42, &config_101_percent, 0, 42);
6717-
match err_2 {
6718-
Err(APIError::APIMisuseError { err }) => {
6719-
assert_eq!(err, get_error_string(101));
6720-
}
6721-
_ => { panic!("new_outbound should have resulted in APIError::APIMisuseError"); }
6722-
}
6723-
6724-
// Test that `new_from_req` fails when trying to create a channel invalid percentage value
6725-
// set for `holder_max_htlc_value_in_flight_msat_channel_value_percent` (less than 1).
6726-
let err_3 = Channel::<EnforcingSigner>::new_from_req(&&feeest, &&keys_provider, inbound_node_id, &InitFeatures::known(), &chan_1_open_channel_msg, 7, &config_0_percent, 0, &&logger, 42);
6727-
match err_3 {
6728-
Err(ChannelError::Close(err)) => {
6729-
assert_eq!(err, get_error_string(0));
6730-
}
6731-
_ => { panic!("new_from_req should have resulted in ChannelError::Close"); }
6732-
}
6733-
6734-
// Test that `new_from_req` fails when trying to create a channel invalid percentage value
6735-
// set for `holder_max_htlc_value_in_flight_msat_channel_value_percent` (larger than 100).
6736-
let err_4 = Channel::<EnforcingSigner>::new_from_req(&&feeest, &&keys_provider, inbound_node_id, &InitFeatures::known(), &chan_1_open_channel_msg, 7, &config_101_percent, 0, &&logger, 42);
6737-
match err_4 {
6738-
Err(ChannelError::Close(err)) => {
6739-
assert_eq!(err, get_error_string(101));
6740-
}
6741-
_ => { panic!("new_from_req should have resulted in ChannelError::Close"); }
6742-
}
6696+
assert_eq!(chan_4.holder_max_htlc_value_in_flight_msat, (chan_4_value_msat as f64 * 0.99) as u64);
6697+
6698+
// Test that `new_outbound` uses the lower bound of the configurable percentage values (1%)
6699+
// if `max_inbound_htlc_value_in_flight_percent_of_channel` is set to a value less than 1.
6700+
let chan_5 = Channel::<EnforcingSigner>::new_outbound(&&feeest, &&keys_provider, outbound_node_id, &InitFeatures::known(), 10000000, 100000, 42, &config_0_percent, 0, 42).unwrap();
6701+
let chan_5_value_msat = chan_5.channel_value_satoshis * 1000;
6702+
assert_eq!(chan_5.holder_max_htlc_value_in_flight_msat, (chan_5_value_msat as f64 * 0.01) as u64);
6703+
6704+
// Test that `new_outbound` uses the upper bound of the configurable percentage values
6705+
// (100%) if `max_inbound_htlc_value_in_flight_percent_of_channel` is set to a larger value
6706+
// than 100.
6707+
let chan_6 = Channel::<EnforcingSigner>::new_outbound(&&feeest, &&keys_provider, outbound_node_id, &InitFeatures::known(), 10000000, 100000, 42, &config_101_percent, 0, 42).unwrap();
6708+
let chan_6_value_msat = chan_6.channel_value_satoshis * 1000;
6709+
assert_eq!(chan_6.holder_max_htlc_value_in_flight_msat, chan_6_value_msat);
6710+
6711+
// Test that `new_from_req` uses the lower bound of the configurable percentage values (1%)
6712+
// if `max_inbound_htlc_value_in_flight_percent_of_channel` is set to a value less than 1.
6713+
let chan_7 = Channel::<EnforcingSigner>::new_from_req(&&feeest, &&keys_provider, inbound_node_id, &InitFeatures::known(), &chan_1_open_channel_msg, 7, &config_0_percent, 0, &&logger, 42).unwrap();
6714+
let chan_7_value_msat = chan_7.channel_value_satoshis * 1000;
6715+
assert_eq!(chan_7.holder_max_htlc_value_in_flight_msat, (chan_7_value_msat as f64 * 0.01) as u64);
6716+
6717+
// Test that `new_from_req` uses the upper bound of the configurable percentage values
6718+
// (100%) if `max_inbound_htlc_value_in_flight_percent_of_channel` is set to a larger value
6719+
// than 100.
6720+
let chan_8 = Channel::<EnforcingSigner>::new_from_req(&&feeest, &&keys_provider, inbound_node_id, &InitFeatures::known(), &chan_1_open_channel_msg, 7, &config_101_percent, 0, &&logger, 42).unwrap();
6721+
let chan_8_value_msat = chan_8.channel_value_satoshis * 1000;
6722+
assert_eq!(chan_8.holder_max_htlc_value_in_flight_msat, chan_8_value_msat);
67436723
}
67446724

67456725
#[test]

0 commit comments

Comments
 (0)