Skip to content

Commit 42b5b02

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

File tree

1 file changed

+95
-27
lines changed

1 file changed

+95
-27
lines changed

src/ln/channelmanager.rs

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

3112-
assert_eq!(get_feerate!(nodes[0]), feerate + 20);
3113-
assert_eq!(get_feerate!(nodes[1]), feerate + 20);
3180+
assert_eq!(get_feerate!(nodes[0]), feerate + 30);
3181+
assert_eq!(get_feerate!(nodes[1]), feerate + 30);
31143182
close_channel(&nodes[0], &nodes[1], &chan.2, chan.3, true);
31153183
}
31163184

0 commit comments

Comments
 (0)