@@ -2167,14 +2167,21 @@ macro_rules! expect_payment_path_successful {
2167
2167
2168
2168
pub fn expect_payment_forwarded < CM : AChannelManager , H : NodeHolder < CM =CM > > (
2169
2169
event : Event , node : & H , prev_node : & H , next_node : & H , expected_fee : Option < u64 > ,
2170
- upstream_force_closed : bool , downstream_force_closed : bool
2171
- ) {
2170
+ upstream_force_closed : bool , downstream_force_closed : bool , allow_1_msat_fee_overpay : bool ,
2171
+ ) -> Option < u64 > {
2172
2172
match event {
2173
2173
Event :: PaymentForwarded {
2174
2174
fee_earned_msat, prev_channel_id, claim_from_onchain_tx, next_channel_id,
2175
2175
outbound_amount_forwarded_msat : _
2176
2176
} => {
2177
- assert_eq ! ( fee_earned_msat, expected_fee) ;
2177
+ if allow_1_msat_fee_overpay {
2178
+ // Aggregating fees for blinded paths may result in a rounding error, causing slight
2179
+ // overpayment in fees.
2180
+ assert ! ( fee_earned_msat. unwrap( ) == expected_fee. unwrap( )
2181
+ || fee_earned_msat. unwrap( ) == expected_fee. unwrap( ) + 1 ) ;
2182
+ } else {
2183
+ assert_eq ! ( fee_earned_msat, expected_fee) ;
2184
+ }
2178
2185
if !upstream_force_closed {
2179
2186
// Is the event prev_channel_id in one of the channels between the two nodes?
2180
2187
assert ! ( node. node( ) . list_channels( ) . iter( ) . any( |x| x. counterparty. node_id == prev_node. node( ) . get_our_node_id( ) && x. channel_id == prev_channel_id. unwrap( ) ) ) ;
@@ -2185,6 +2192,7 @@ pub fn expect_payment_forwarded<CM: AChannelManager, H: NodeHolder<CM=CM>>(
2185
2192
assert ! ( node. node( ) . list_channels( ) . iter( ) . any( |x| x. counterparty. node_id == next_node. node( ) . get_our_node_id( ) && x. channel_id == next_channel_id. unwrap( ) ) ) ;
2186
2193
}
2187
2194
assert_eq ! ( claim_from_onchain_tx, downstream_force_closed) ;
2195
+ fee_earned_msat
2188
2196
} ,
2189
2197
_ => panic ! ( "Unexpected event" ) ,
2190
2198
}
@@ -2196,7 +2204,7 @@ macro_rules! expect_payment_forwarded {
2196
2204
assert_eq!( events. len( ) , 1 ) ;
2197
2205
$crate:: ln:: functional_test_utils:: expect_payment_forwarded(
2198
2206
events. pop( ) . unwrap( ) , & $node, & $prev_node, & $next_node, $expected_fee,
2199
- $upstream_force_closed, $downstream_force_closed) ;
2207
+ $upstream_force_closed, $downstream_force_closed, false ) ;
2200
2208
}
2201
2209
}
2202
2210
0 commit comments