@@ -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