Skip to content

Commit f73e2cc

Browse files
committed
Add/update test for update_fee
1 parent c6cf1be commit f73e2cc

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
@@ -3048,7 +3048,7 @@ mod tests {
30483048
}
30493049

30503050
#[test]
3051-
fn test_update_fee() {
3051+
fn test_update_fee_vanilla() {
30523052
let nodes = create_network(2);
30533053
let chan = create_announced_chan_between_nodes(&nodes, 0, 1);
30543054
let channel_id = chan.2;
@@ -3061,6 +3061,14 @@ mod tests {
30613061
}}
30623062
}
30633063

3064+
macro_rules! check_added_monitors_and_clear {
3065+
($node: expr) => {{
3066+
let mut added_monitors = $node.chan_monitor.added_monitors.lock().unwrap();
3067+
assert_eq!(added_monitors.len(), 1);
3068+
added_monitors.clear();
3069+
}}
3070+
}
3071+
30643072
let feerate = get_feerate!(nodes[0]);
30653073
nodes[0].node.update_fee(channel_id, feerate+20).unwrap();
30663074

@@ -3075,42 +3083,103 @@ mod tests {
30753083
nodes[1].node.handle_update_fee(&nodes[0].node.get_our_node_id(), update_msg.unwrap()).unwrap();
30763084

30773085
let (revoke_msg, commitment_signed) = nodes[1].node.handle_commitment_signed(&nodes[0].node.get_our_node_id(), commitment_signed).unwrap();
3078-
{
3079-
let mut added_monitors = nodes[0].chan_monitor.added_monitors.lock().unwrap();
3080-
assert_eq!(added_monitors.len(), 1);
3081-
added_monitors.clear();
3082-
}
3083-
{
3084-
let mut added_monitors = nodes[1].chan_monitor.added_monitors.lock().unwrap();
3085-
assert_eq!(added_monitors.len(), 1);
3086-
added_monitors.clear();
3087-
}
30883086
let commitment_signed = commitment_signed.unwrap();
3087+
check_added_monitors_and_clear!(nodes[0]);
3088+
check_added_monitors_and_clear!(nodes[1]);
3089+
30893090
let resp_option = nodes[0].node.handle_revoke_and_ack(&nodes[1].node.get_our_node_id(), &revoke_msg).unwrap();
3090-
{
3091-
let mut added_monitors = nodes[0].chan_monitor.added_monitors.lock().unwrap();
3092-
assert_eq!(added_monitors.len(), 1);
3093-
added_monitors.clear();
3094-
}
30953091
assert!(resp_option.is_none());
3092+
check_added_monitors_and_clear!(nodes[0]);
30963093

30973094
let (revoke_msg, commitment_signed) = nodes[0].node.handle_commitment_signed(&nodes[1].node.get_our_node_id(), &commitment_signed).unwrap();
30983095
assert!(commitment_signed.is_none());
3099-
{
3100-
let mut added_monitors = nodes[0].chan_monitor.added_monitors.lock().unwrap();
3101-
assert_eq!(added_monitors.len(), 1);
3102-
added_monitors.clear();
3103-
}
3096+
check_added_monitors_and_clear!(nodes[0]);
3097+
31043098
let resp_option = nodes[1].node.handle_revoke_and_ack(&nodes[0].node.get_our_node_id(), &revoke_msg).unwrap();
3105-
{
3106-
let mut added_monitors = nodes[1].chan_monitor.added_monitors.lock().unwrap();
3107-
assert_eq!(added_monitors.len(), 1);
3108-
added_monitors.clear();
3099+
assert!(resp_option.is_none());
3100+
check_added_monitors_and_clear!(nodes[1]);
3101+
}
3102+
3103+
#[test]
3104+
fn test_update_fee() {
3105+
let nodes = create_network(2);
3106+
let chan = create_announced_chan_between_nodes(&nodes, 0, 1);
3107+
let channel_id = chan.2;
3108+
3109+
macro_rules! get_feerate {
3110+
($node: expr) => {{
3111+
let chan_lock = $node.node.channel_state.lock().unwrap();
3112+
let chan = chan_lock.by_id.get(&channel_id).unwrap();
3113+
chan.get_feerate()
3114+
}}
31093115
}
3116+
3117+
macro_rules! check_added_monitors_and_clear {
3118+
($node: expr) => {{
3119+
let mut added_monitors = $node.chan_monitor.added_monitors.lock().unwrap();
3120+
assert_eq!(added_monitors.len(), 1);
3121+
added_monitors.clear();
3122+
}}
3123+
}
3124+
3125+
let feerate = get_feerate!(nodes[0]);
3126+
nodes[0].node.update_fee(channel_id, feerate+20).unwrap();
3127+
3128+
let events_0 = nodes[0].node.get_and_clear_pending_events();
3129+
assert_eq!(events_0.len(), 1);
3130+
let (update_msg, commitment_signed) = match events_0[0] {
3131+
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 } } => {
3132+
(update_fee.as_ref(), commitment_signed)
3133+
},
3134+
_ => panic!("Unexpected event"),
3135+
};
3136+
nodes[1].node.handle_update_fee(&nodes[0].node.get_our_node_id(), update_msg.unwrap()).unwrap();
3137+
3138+
let (revoke_msg, commitment_signed) = nodes[1].node.handle_commitment_signed(&nodes[0].node.get_our_node_id(), commitment_signed).unwrap();
3139+
let commitment_signed_0 = commitment_signed.unwrap();
3140+
check_added_monitors_and_clear!(nodes[0]);
3141+
check_added_monitors_and_clear!(nodes[1]);
3142+
3143+
let resp_option = nodes[0].node.handle_revoke_and_ack(&nodes[1].node.get_our_node_id(), &revoke_msg).unwrap();
3144+
assert!(resp_option.is_none());
3145+
check_added_monitors_and_clear!(nodes[0]);
3146+
3147+
nodes[0].node.update_fee(channel_id, feerate+30).unwrap();
3148+
let events_0 = nodes[0].node.get_and_clear_pending_events();
3149+
assert_eq!(events_0.len(), 1);
3150+
let (update_msg, commitment_signed) = match events_0[0] {
3151+
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 } } => {
3152+
(update_fee.as_ref(), commitment_signed)
3153+
},
3154+
_ => panic!("Unexpected event"),
3155+
};
3156+
nodes[1].node.handle_update_fee(&nodes[0].node.get_our_node_id(), update_msg.unwrap()).unwrap();
3157+
3158+
let (revoke_msg, commitment_signed) = nodes[1].node.handle_commitment_signed(&nodes[0].node.get_our_node_id(), commitment_signed).unwrap();
3159+
assert!(commitment_signed.is_none());
3160+
check_added_monitors_and_clear!(nodes[0]);
3161+
check_added_monitors_and_clear!(nodes[1]);
3162+
let (revoke_msg_0, commitment_signed) = nodes[0].node.handle_commitment_signed(&nodes[1].node.get_our_node_id(), &commitment_signed_0).unwrap();
3163+
assert!(commitment_signed.is_none());
3164+
check_added_monitors_and_clear!(nodes[0]);
3165+
3166+
let resp_option = nodes[0].node.handle_revoke_and_ack(&nodes[1].node.get_our_node_id(), &revoke_msg).unwrap();
3167+
assert!(resp_option.is_none());
3168+
check_added_monitors_and_clear!(nodes[0]);
3169+
3170+
let resp_option = nodes[1].node.handle_revoke_and_ack(&nodes[0].node.get_our_node_id(), &revoke_msg_0).unwrap();
3171+
let commitment_signed = resp_option.unwrap().commitment_signed;
3172+
check_added_monitors_and_clear!(nodes[1]);
3173+
3174+
let (revoke_msg, commitment_signed) = nodes[0].node.handle_commitment_signed(&nodes[1].node.get_our_node_id(), &commitment_signed).unwrap();
3175+
assert!(commitment_signed.is_none());
3176+
check_added_monitors_and_clear!(nodes[0]);
3177+
let resp_option = nodes[1].node.handle_revoke_and_ack(&nodes[0].node.get_our_node_id(), &revoke_msg).unwrap();
31103178
assert!(resp_option.is_none());
3179+
check_added_monitors_and_clear!(nodes[1]);
31113180

3112-
assert_eq!(get_feerate!(nodes[0]), feerate + 20);
3113-
assert_eq!(get_feerate!(nodes[1]), feerate + 20);
3181+
assert_eq!(get_feerate!(nodes[0]), feerate + 30);
3182+
assert_eq!(get_feerate!(nodes[1]), feerate + 30);
31143183
close_channel(&nodes[0], &nodes[1], &chan.2, chan.3, true);
31153184
}
31163185

0 commit comments

Comments
 (0)