Skip to content

Commit d13061c

Browse files
Add test for configurable in-flight limit
1 parent 0beaaa7 commit d13061c

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
@@ -6680,6 +6680,79 @@ mod tests {
66806680
}
66816681
}
66826682

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

0 commit comments

Comments
 (0)