@@ -3048,7 +3048,7 @@ mod tests {
3048
3048
}
3049
3049
3050
3050
#[ test]
3051
- fn test_update_fee ( ) {
3051
+ fn test_update_fee_vanilla ( ) {
3052
3052
let nodes = create_network ( 2 ) ;
3053
3053
let chan = create_announced_chan_between_nodes ( & nodes, 0 , 1 ) ;
3054
3054
let channel_id = chan. 2 ;
@@ -3061,6 +3061,14 @@ mod tests {
3061
3061
} }
3062
3062
}
3063
3063
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
+
3064
3072
let feerate = get_feerate ! ( nodes[ 0 ] ) ;
3065
3073
nodes[ 0 ] . node . update_fee ( channel_id, feerate+20 ) . unwrap ( ) ;
3066
3074
@@ -3075,42 +3083,103 @@ mod tests {
3075
3083
nodes[ 1 ] . node . handle_update_fee ( & nodes[ 0 ] . node . get_our_node_id ( ) , update_msg. unwrap ( ) ) . unwrap ( ) ;
3076
3084
3077
3085
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
- }
3088
3086
let commitment_signed = commitment_signed. unwrap ( ) ;
3087
+ check_added_monitors_and_clear ! ( nodes[ 0 ] ) ;
3088
+ check_added_monitors_and_clear ! ( nodes[ 1 ] ) ;
3089
+
3089
3090
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
- }
3095
3091
assert ! ( resp_option. is_none( ) ) ;
3092
+ check_added_monitors_and_clear ! ( nodes[ 0 ] ) ;
3096
3093
3097
3094
let ( revoke_msg, commitment_signed) = nodes[ 0 ] . node . handle_commitment_signed ( & nodes[ 1 ] . node . get_our_node_id ( ) , & commitment_signed) . unwrap ( ) ;
3098
3095
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
+
3104
3098
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
+ } }
3109
3115
}
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 ( ) ;
3110
3178
assert ! ( resp_option. is_none( ) ) ;
3179
+ check_added_monitors_and_clear ! ( nodes[ 1 ] ) ;
3111
3180
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 ) ;
3114
3183
close_channel ( & nodes[ 0 ] , & nodes[ 1 ] , & chan. 2 , chan. 3 , true ) ;
3115
3184
}
3116
3185
0 commit comments