Skip to content

Commit 7ec9f4d

Browse files
committed
Add/update test for update_fee
1 parent 896c314 commit 7ec9f4d

File tree

1 file changed

+96
-27
lines changed

1 file changed

+96
-27
lines changed

src/ln/channelmanager.rs

Lines changed: 96 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -3066,7 +3066,7 @@ mod tests {
30663066
}
30673067

30683068
#[test]
3069-
fn test_update_fee() {
3069+
fn test_update_fee_vanilla() {
30703070
let nodes = create_network(2);
30713071
let chan = create_announced_chan_between_nodes(&nodes, 0, 1);
30723072
let channel_id = chan.2;
@@ -3079,6 +3079,14 @@ mod tests {
30793079
}}
30803080
}
30813081

3082+
macro_rules! check_added_monitors_and_clear {
3083+
($node: expr) => {{
3084+
let mut added_monitors = $node.chan_monitor.added_monitors.lock().unwrap();
3085+
assert_eq!(added_monitors.len(), 1);
3086+
added_monitors.clear();
3087+
}}
3088+
}
3089+
30823090
let feerate = get_feerate!(nodes[0]);
30833091
nodes[0].node.update_fee(channel_id, feerate+20).unwrap();
30843092

@@ -3093,42 +3101,103 @@ mod tests {
30933101
nodes[1].node.handle_update_fee(&nodes[0].node.get_our_node_id(), update_msg.unwrap()).unwrap();
30943102

30953103
let (revoke_msg, commitment_signed) = nodes[1].node.handle_commitment_signed(&nodes[0].node.get_our_node_id(), commitment_signed).unwrap();
3096-
{
3097-
let mut added_monitors = nodes[0].chan_monitor.added_monitors.lock().unwrap();
3098-
assert_eq!(added_monitors.len(), 1);
3099-
added_monitors.clear();
3100-
}
3101-
{
3102-
let mut added_monitors = nodes[1].chan_monitor.added_monitors.lock().unwrap();
3103-
assert_eq!(added_monitors.len(), 1);
3104-
added_monitors.clear();
3105-
}
31063104
let commitment_signed = commitment_signed.unwrap();
3105+
check_added_monitors_and_clear!(nodes[0]);
3106+
check_added_monitors_and_clear!(nodes[1]);
3107+
31073108
let resp_option = nodes[0].node.handle_revoke_and_ack(&nodes[1].node.get_our_node_id(), &revoke_msg).unwrap();
3108-
{
3109-
let mut added_monitors = nodes[0].chan_monitor.added_monitors.lock().unwrap();
3110-
assert_eq!(added_monitors.len(), 1);
3111-
added_monitors.clear();
3112-
}
31133109
assert!(resp_option.is_none());
3110+
check_added_monitors_and_clear!(nodes[0]);
31143111

31153112
let (revoke_msg, commitment_signed) = nodes[0].node.handle_commitment_signed(&nodes[1].node.get_our_node_id(), &commitment_signed).unwrap();
31163113
assert!(commitment_signed.is_none());
3117-
{
3118-
let mut added_monitors = nodes[0].chan_monitor.added_monitors.lock().unwrap();
3119-
assert_eq!(added_monitors.len(), 1);
3120-
added_monitors.clear();
3121-
}
3114+
check_added_monitors_and_clear!(nodes[0]);
3115+
31223116
let resp_option = nodes[1].node.handle_revoke_and_ack(&nodes[0].node.get_our_node_id(), &revoke_msg).unwrap();
3123-
{
3124-
let mut added_monitors = nodes[1].chan_monitor.added_monitors.lock().unwrap();
3125-
assert_eq!(added_monitors.len(), 1);
3126-
added_monitors.clear();
3117+
assert!(resp_option.is_none());
3118+
check_added_monitors_and_clear!(nodes[1]);
3119+
}
3120+
3121+
#[test]
3122+
fn test_update_fee() {
3123+
let nodes = create_network(2);
3124+
let chan = create_announced_chan_between_nodes(&nodes, 0, 1);
3125+
let channel_id = chan.2;
3126+
3127+
macro_rules! get_feerate {
3128+
($node: expr) => {{
3129+
let chan_lock = $node.node.channel_state.lock().unwrap();
3130+
let chan = chan_lock.by_id.get(&channel_id).unwrap();
3131+
chan.get_feerate()
3132+
}}
31273133
}
3134+
3135+
macro_rules! check_added_monitors_and_clear {
3136+
($node: expr) => {{
3137+
let mut added_monitors = $node.chan_monitor.added_monitors.lock().unwrap();
3138+
assert_eq!(added_monitors.len(), 1);
3139+
added_monitors.clear();
3140+
}}
3141+
}
3142+
3143+
let feerate = get_feerate!(nodes[0]);
3144+
nodes[0].node.update_fee(channel_id, feerate+20).unwrap();
3145+
3146+
let events_0 = nodes[0].node.get_and_clear_pending_events();
3147+
assert_eq!(events_0.len(), 1);
3148+
let (update_msg, commitment_signed) = match events_0[0] {
3149+
Event::UpdateHTLCs { node_id:_, updates: msgs::CommitmentUpdate { update_add_htlcs:_, update_fulfill_htlcs:_, update_fail_htlcs:_, update_fail_malformed_htlcs:_, ref update_fee, ref commitment_signed } } => {
3150+
(update_fee.as_ref(), commitment_signed)
3151+
},
3152+
_ => panic!("Unexpected event"),
3153+
};
3154+
nodes[1].node.handle_update_fee(&nodes[0].node.get_our_node_id(), update_msg.unwrap()).unwrap();
3155+
3156+
let (revoke_msg, commitment_signed) = nodes[1].node.handle_commitment_signed(&nodes[0].node.get_our_node_id(), commitment_signed).unwrap();
3157+
let commitment_signed_0 = commitment_signed.unwrap();
3158+
check_added_monitors_and_clear!(nodes[0]);
3159+
check_added_monitors_and_clear!(nodes[1]);
3160+
3161+
let resp_option = nodes[0].node.handle_revoke_and_ack(&nodes[1].node.get_our_node_id(), &revoke_msg).unwrap();
3162+
assert!(resp_option.is_none());
3163+
check_added_monitors_and_clear!(nodes[0]);
3164+
3165+
nodes[0].node.update_fee(channel_id, feerate+30).unwrap();
3166+
let events_0 = nodes[0].node.get_and_clear_pending_events();
3167+
assert_eq!(events_0.len(), 1);
3168+
let (update_msg, commitment_signed) = match events_0[0] {
3169+
Event::UpdateHTLCs { node_id:_, updates: msgs::CommitmentUpdate { update_add_htlcs:_, update_fulfill_htlcs:_, update_fail_htlcs:_, update_fail_malformed_htlcs:_, ref update_fee, ref commitment_signed } } => {
3170+
(update_fee.as_ref(), commitment_signed)
3171+
},
3172+
_ => panic!("Unexpected event"),
3173+
};
3174+
nodes[1].node.handle_update_fee(&nodes[0].node.get_our_node_id(), update_msg.unwrap()).unwrap();
3175+
3176+
let (revoke_msg, commitment_signed) = nodes[1].node.handle_commitment_signed(&nodes[0].node.get_our_node_id(), commitment_signed).unwrap();
3177+
assert!(commitment_signed.is_none());
3178+
check_added_monitors_and_clear!(nodes[0]);
3179+
check_added_monitors_and_clear!(nodes[1]);
3180+
let (revoke_msg_0, commitment_signed) = nodes[0].node.handle_commitment_signed(&nodes[1].node.get_our_node_id(), &commitment_signed_0).unwrap();
3181+
assert!(commitment_signed.is_none());
3182+
check_added_monitors_and_clear!(nodes[0]);
3183+
3184+
let resp_option = nodes[0].node.handle_revoke_and_ack(&nodes[1].node.get_our_node_id(), &revoke_msg).unwrap();
3185+
assert!(resp_option.is_none());
3186+
check_added_monitors_and_clear!(nodes[0]);
3187+
3188+
let resp_option = nodes[1].node.handle_revoke_and_ack(&nodes[0].node.get_our_node_id(), &revoke_msg_0).unwrap();
3189+
let commitment_signed = resp_option.unwrap().commitment_signed;
3190+
check_added_monitors_and_clear!(nodes[1]);
3191+
3192+
let (revoke_msg, commitment_signed) = nodes[0].node.handle_commitment_signed(&nodes[1].node.get_our_node_id(), &commitment_signed).unwrap();
3193+
assert!(commitment_signed.is_none());
3194+
check_added_monitors_and_clear!(nodes[0]);
3195+
let resp_option = nodes[1].node.handle_revoke_and_ack(&nodes[0].node.get_our_node_id(), &revoke_msg).unwrap();
31283196
assert!(resp_option.is_none());
3197+
check_added_monitors_and_clear!(nodes[1]);
31293198

3130-
assert_eq!(get_feerate!(nodes[0]), feerate + 20);
3131-
assert_eq!(get_feerate!(nodes[1]), feerate + 20);
3199+
assert_eq!(get_feerate!(nodes[0]), feerate + 30);
3200+
assert_eq!(get_feerate!(nodes[1]), feerate + 30);
31323201
close_channel(&nodes[0], &nodes[1], &chan.2, chan.3, true);
31333202
}
31343203

0 commit comments

Comments
 (0)