Skip to content

Commit 514b29e

Browse files
Add test for configurable in-flight limit
1 parent 8fdf3c3 commit 514b29e

File tree

1 file changed

+73
-0
lines changed

1 file changed

+73
-0
lines changed

lightning/src/ln/channel.rs

Lines changed: 73 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6672,6 +6672,79 @@ mod tests {
66726672
}
66736673
}
66746674

6675+
#[test]
6676+
fn test_configured_holder_max_htlc_value_in_flight() {
6677+
let feeest = TestFeeEstimator{fee_est: 15000};
6678+
let logger = test_utils::TestLogger::new();
6679+
let secp_ctx = Secp256k1::new();
6680+
let seed = [42; 32];
6681+
let network = Network::Testnet;
6682+
let keys_provider = test_utils::TestKeysInterface::new(&seed, network);
6683+
let outbound_node_id = PublicKey::from_secret_key(&secp_ctx, &SecretKey::from_slice(&[42; 32]).unwrap());
6684+
let inbound_node_id = PublicKey::from_secret_key(&secp_ctx, &SecretKey::from_slice(&[7; 32]).unwrap());
6685+
6686+
let mut config_2_percent = UserConfig::default();
6687+
config_2_percent.own_channel_config.max_inbound_htlc_value_in_flight_percent_of_channel = 2;
6688+
let mut config_99_percent = UserConfig::default();
6689+
config_99_percent.own_channel_config.max_inbound_htlc_value_in_flight_percent_of_channel = 99;
6690+
let mut config_0_percent = UserConfig::default();
6691+
config_0_percent.own_channel_config.max_inbound_htlc_value_in_flight_percent_of_channel = 0;
6692+
let mut config_101_percent = UserConfig::default();
6693+
config_101_percent.own_channel_config.max_inbound_htlc_value_in_flight_percent_of_channel = 101;
6694+
6695+
// Test that `new_outbound` creates a channel with the correct value for
6696+
// `holder_max_htlc_value_in_flight_msat`, when configured with a valid percentage value,
6697+
// which is set to the lower bound + 1 (2%) of the `channel_value`.
6698+
let chan_1 = Channel::<EnforcingSigner>::new_outbound(&&feeest, &&keys_provider, outbound_node_id, &InitFeatures::known(), 10000000, 100000, 42, &config_2_percent, 0, 42).unwrap();
6699+
let chan_1_value_msat = chan_1.channel_value_satoshis * 1000;
6700+
assert_eq!(chan_1.holder_max_htlc_value_in_flight_msat, (chan_1_value_msat as f64 * 0.02) as u64);
6701+
6702+
// Test with the upper bound - 1 of valid values (99%).
6703+
let chan_2 = Channel::<EnforcingSigner>::new_outbound(&&feeest, &&keys_provider, outbound_node_id, &InitFeatures::known(), 10000000, 100000, 42, &config_99_percent, 0, 42).unwrap();
6704+
let chan_2_value_msat = chan_2.channel_value_satoshis * 1000;
6705+
assert_eq!(chan_2.holder_max_htlc_value_in_flight_msat, (chan_2_value_msat as f64 * 0.99) as u64);
6706+
6707+
let chan_1_open_channel_msg = chan_1.get_open_channel(genesis_block(network).header.block_hash());
6708+
6709+
// Test that `new_from_req` creates a channel with the correct value for
6710+
// `holder_max_htlc_value_in_flight_msat`, when configured with a valid percentage value,
6711+
// which is set to the lower bound - 1 (2%) of the `channel_value`.
6712+
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();
6713+
let chan_3_value_msat = chan_3.channel_value_satoshis * 1000;
6714+
assert_eq!(chan_3.holder_max_htlc_value_in_flight_msat, (chan_3_value_msat as f64 * 0.02) as u64);
6715+
6716+
// Test with the upper bound - 1 of valid values (99%).
6717+
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();
6718+
let chan_4_value_msat = chan_4.channel_value_satoshis * 1000;
6719+
assert_eq!(chan_4.holder_max_htlc_value_in_flight_msat, (chan_4_value_msat as f64 * 0.99) as u64);
6720+
6721+
// Test that `new_outbound` uses the lower bound of the configurable percentage values (1%)
6722+
// if `max_inbound_htlc_value_in_flight_percent_of_channel` is set to a value less than 1.
6723+
let chan_5 = Channel::<EnforcingSigner>::new_outbound(&&feeest, &&keys_provider, outbound_node_id, &InitFeatures::known(), 10000000, 100000, 42, &config_0_percent, 0, 42).unwrap();
6724+
let chan_5_value_msat = chan_5.channel_value_satoshis * 1000;
6725+
assert_eq!(chan_5.holder_max_htlc_value_in_flight_msat, (chan_5_value_msat as f64 * 0.01) as u64);
6726+
6727+
// Test that `new_outbound` uses the upper bound of the configurable percentage values
6728+
// (100%) if `max_inbound_htlc_value_in_flight_percent_of_channel` is set to a larger value
6729+
// than 100.
6730+
let chan_6 = Channel::<EnforcingSigner>::new_outbound(&&feeest, &&keys_provider, outbound_node_id, &InitFeatures::known(), 10000000, 100000, 42, &config_101_percent, 0, 42).unwrap();
6731+
let chan_6_value_msat = chan_6.channel_value_satoshis * 1000;
6732+
assert_eq!(chan_6.holder_max_htlc_value_in_flight_msat, chan_6_value_msat);
6733+
6734+
// Test that `new_from_req` uses the lower bound of the configurable percentage values (1%)
6735+
// if `max_inbound_htlc_value_in_flight_percent_of_channel` is set to a value less than 1.
6736+
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();
6737+
let chan_7_value_msat = chan_7.channel_value_satoshis * 1000;
6738+
assert_eq!(chan_7.holder_max_htlc_value_in_flight_msat, (chan_7_value_msat as f64 * 0.01) as u64);
6739+
6740+
// Test that `new_from_req` uses the upper bound of the configurable percentage values
6741+
// (100%) if `max_inbound_htlc_value_in_flight_percent_of_channel` is set to a larger value
6742+
// than 100.
6743+
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();
6744+
let chan_8_value_msat = chan_8.channel_value_satoshis * 1000;
6745+
assert_eq!(chan_8.holder_max_htlc_value_in_flight_msat, chan_8_value_msat);
6746+
}
6747+
66756748
#[test]
66766749
fn channel_update() {
66776750
let feeest = TestFeeEstimator{fee_est: 15000};

0 commit comments

Comments
 (0)