@@ -16,7 +16,7 @@ use crate::chain::channelmonitor::{ANTI_REORG_DELAY, LATENCY_GRACE_PERIOD_BLOCKS
1616use crate :: chain:: keysinterface:: EntropySource ;
1717use crate :: chain:: transaction:: OutPoint ;
1818use crate :: ln:: channel:: EXPIRE_PREV_CONFIG_TICKS ;
19- use crate :: ln:: channelmanager:: { BREAKDOWN_TIMEOUT , ChannelManager , MPP_TIMEOUT_TICKS , MIN_CLTV_EXPIRY_DELTA , PaymentId , PaymentSendFailure , IDEMPOTENCY_TIMEOUT_TICKS } ;
19+ use crate :: ln:: channelmanager:: { BREAKDOWN_TIMEOUT , ChannelManager , MPP_TIMEOUT_TICKS , MIN_CLTV_EXPIRY_DELTA , PaymentId , PaymentSendFailure , IDEMPOTENCY_TIMEOUT_TICKS , RecentPaymentDetails } ;
2020use crate :: ln:: msgs;
2121use crate :: ln:: msgs:: ChannelMessageHandler ;
2222use crate :: routing:: gossip:: RoutingFees ;
@@ -1267,7 +1267,11 @@ fn test_trivial_inflight_htlc_tracking(){
12671267 let ( _, _, chan_2_id, _) = create_announced_chan_between_nodes ( & nodes, 1 , 2 ) ;
12681268
12691269 // Send and claim the payment. Inflight HTLCs should be empty.
1270- send_payment ( & nodes[ 0 ] , & vec ! ( & nodes[ 1 ] , & nodes[ 2 ] ) [ ..] , 500000 ) ;
1270+ let ( route, payment_hash, payment_preimage, payment_secret) = get_route_and_payment_hash ! ( nodes[ 0 ] , nodes[ 2 ] , 500000 ) ;
1271+ nodes[ 0 ] . node . send_payment ( & route, payment_hash, & Some ( payment_secret) , PaymentId ( payment_hash. 0 ) ) . unwrap ( ) ;
1272+ check_added_monitors ! ( nodes[ 0 ] , 1 ) ;
1273+ pass_along_route ( & nodes[ 0 ] , & [ & vec ! ( & nodes[ 1 ] , & nodes[ 2 ] ) [ ..] ] , 500000 , payment_hash, payment_secret) ;
1274+ claim_payment ( & nodes[ 0 ] , & vec ! ( & nodes[ 1 ] , & nodes[ 2 ] ) [ ..] , payment_preimage) ;
12711275 {
12721276 let inflight_htlcs = node_chanmgrs[ 0 ] . compute_inflight_htlcs ( ) ;
12731277
@@ -1291,10 +1295,19 @@ fn test_trivial_inflight_htlc_tracking(){
12911295
12921296 assert_eq ! ( chan_1_used_liquidity, None ) ;
12931297 assert_eq ! ( chan_2_used_liquidity, None ) ;
1298+
1299+ let pending_payments = nodes[ 0 ] . node . list_recent_payments ( ) ;
1300+ assert_eq ! ( pending_payments. len( ) , 1 ) ;
1301+ assert_eq ! ( pending_payments[ 0 ] , RecentPaymentDetails :: Fulfilled { payment_hash: Some ( payment_hash) } ) ;
1302+ }
1303+
1304+ // Remove fulfilled payment
1305+ for _ in 0 ..=IDEMPOTENCY_TIMEOUT_TICKS {
1306+ nodes[ 0 ] . node . timer_tick_occurred ( ) ;
12941307 }
12951308
12961309 // Send the payment, but do not claim it. Our inflight HTLCs should contain the pending payment.
1297- let ( payment_preimage, _ , _) = route_payment ( & nodes[ 0 ] , & vec ! ( & nodes[ 1 ] , & nodes[ 2 ] ) [ ..] , 500000 ) ;
1310+ let ( payment_preimage, payment_hash , _) = route_payment ( & nodes[ 0 ] , & vec ! ( & nodes[ 1 ] , & nodes[ 2 ] ) [ ..] , 500000 ) ;
12981311 {
12991312 let inflight_htlcs = node_chanmgrs[ 0 ] . compute_inflight_htlcs ( ) ;
13001313
@@ -1319,10 +1332,20 @@ fn test_trivial_inflight_htlc_tracking(){
13191332 // First hop accounts for expected 1000 msat fee
13201333 assert_eq ! ( chan_1_used_liquidity, Some ( 501000 ) ) ;
13211334 assert_eq ! ( chan_2_used_liquidity, Some ( 500000 ) ) ;
1335+
1336+ let pending_payments = nodes[ 0 ] . node . list_recent_payments ( ) ;
1337+ assert_eq ! ( pending_payments. len( ) , 1 ) ;
1338+ assert_eq ! ( pending_payments[ 0 ] , RecentPaymentDetails :: Pending { payment_hash, total_msat: 500000 } ) ;
13221339 }
13231340
13241341 // Now, let's claim the payment. This should result in the used liquidity to return `None`.
13251342 claim_payment ( & nodes[ 0 ] , & [ & nodes[ 1 ] , & nodes[ 2 ] ] , payment_preimage) ;
1343+
1344+ // Remove fulfilled payment
1345+ for _ in 0 ..=IDEMPOTENCY_TIMEOUT_TICKS {
1346+ nodes[ 0 ] . node . timer_tick_occurred ( ) ;
1347+ }
1348+
13261349 {
13271350 let inflight_htlcs = node_chanmgrs[ 0 ] . compute_inflight_htlcs ( ) ;
13281351
@@ -1346,6 +1369,9 @@ fn test_trivial_inflight_htlc_tracking(){
13461369
13471370 assert_eq ! ( chan_1_used_liquidity, None ) ;
13481371 assert_eq ! ( chan_2_used_liquidity, None ) ;
1372+
1373+ let pending_payments = nodes[ 0 ] . node . list_recent_payments ( ) ;
1374+ assert_eq ! ( pending_payments. len( ) , 0 ) ;
13491375 }
13501376}
13511377
0 commit comments