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