Skip to content

Commit f7f68ea

Browse files
committed
Add anchors coverage to chanmon_claim_value_coop_close
1 parent 22ca252 commit f7f68ea

File tree

1 file changed

+17
-5
lines changed

1 file changed

+17
-5
lines changed

lightning/src/ln/monitor_tests.rs

Lines changed: 17 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -151,15 +151,19 @@ fn revoked_output_htlc_resolution_timing() {
151151
expect_payment_failed!(nodes[1], payment_hash_1, false);
152152
}
153153

154-
#[test]
155-
fn chanmon_claim_value_coop_close() {
154+
fn do_chanmon_claim_value_coop_close(anchors: bool) {
156155
// Tests `get_claimable_balances` returns the correct values across a simple cooperative claim.
157156
// Specifically, this tests that the channel non-HTLC balances show up in
158157
// `get_claimable_balances` until the cooperative claims have confirmed and generated a
159158
// `SpendableOutputs` event, and no longer.
160159
let chanmon_cfgs = create_chanmon_cfgs(2);
161160
let node_cfgs = create_node_cfgs(2, &chanmon_cfgs);
162-
let node_chanmgrs = create_node_chanmgrs(2, &node_cfgs, &[None, None]);
161+
let mut user_config = test_default_channel_config();
162+
if anchors {
163+
user_config.channel_handshake_config.negotiate_anchors_zero_fee_htlc_tx = true;
164+
user_config.manually_accept_inbound_channels = true;
165+
}
166+
let node_chanmgrs = create_node_chanmgrs(2, &node_cfgs, &[Some(user_config), Some(user_config)]);
163167
let nodes = create_network(2, &node_cfgs, &node_chanmgrs);
164168

165169
let (_, _, chan_id, funding_tx) =
@@ -170,8 +174,10 @@ fn chanmon_claim_value_coop_close() {
170174
let chan_feerate = get_feerate!(nodes[0], nodes[1], chan_id) as u64;
171175
let channel_type_features = get_channel_type_features!(nodes[0], nodes[1], chan_id);
172176

177+
let commitment_tx_fee = chan_feerate * channel::commitment_tx_base_weight(&channel_type_features) / 1000;
178+
let anchor_outputs_value = if anchors { channel::ANCHOR_OUTPUT_VALUE_SATOSHI * 2 } else { 0 };
173179
assert_eq!(vec![Balance::ClaimableOnChannelClose {
174-
amount_satoshis: 1_000_000 - 1_000 - chan_feerate * channel::commitment_tx_base_weight(&channel_type_features) / 1000
180+
amount_satoshis: 1_000_000 - 1_000 - commitment_tx_fee - anchor_outputs_value
175181
}],
176182
nodes[0].chain_monitor.chain_monitor.get_monitor(funding_outpoint).unwrap().get_claimable_balances());
177183
assert_eq!(vec![Balance::ClaimableOnChannelClose { amount_satoshis: 1_000, }],
@@ -206,7 +212,7 @@ fn chanmon_claim_value_coop_close() {
206212
assert!(nodes[1].chain_monitor.chain_monitor.get_and_clear_pending_events().is_empty());
207213

208214
assert_eq!(vec![Balance::ClaimableAwaitingConfirmations {
209-
amount_satoshis: 1_000_000 - 1_000 - chan_feerate * channel::commitment_tx_base_weight(&channel_type_features) / 1000,
215+
amount_satoshis: 1_000_000 - 1_000 - commitment_tx_fee - anchor_outputs_value,
210216
confirmation_height: nodes[0].best_block_info().1 + ANTI_REORG_DELAY - 1,
211217
}],
212218
nodes[0].chain_monitor.chain_monitor.get_monitor(funding_outpoint).unwrap().get_claimable_balances());
@@ -231,6 +237,12 @@ fn chanmon_claim_value_coop_close() {
231237
check_closed_event!(nodes[1], 1, ClosureReason::CooperativeClosure, [nodes[0].node.get_our_node_id()], 1000000);
232238
}
233239

240+
#[test]
241+
fn chanmon_claim_value_coop_close() {
242+
do_chanmon_claim_value_coop_close(false);
243+
do_chanmon_claim_value_coop_close(true);
244+
}
245+
234246
fn sorted_vec<T: Ord>(mut v: Vec<T>) -> Vec<T> {
235247
v.sort_unstable();
236248
v

0 commit comments

Comments
 (0)