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