Skip to content

Commit

Permalink
itest: fix flake in testPaymentFailureReasonCanceled
Browse files Browse the repository at this point in the history
Fix the case,
```
--- FAIL: TestLightningNetworkDaemon/tranche01/46-of-191/bitcoind/payment_failure_reason_canceled (20.86s)
        harness.go:2113:
            	Error Trace:	/home/runner/work/lnd/lnd/lntest/harness.go:2113
            	            				/home/runner/work/lnd/lnd/itest/lnd_payment_test.go:1183
            	            				/home/runner/work/lnd/lnd/itest/lnd_payment_test.go:1138
            	            				/home/runner/work/lnd/lnd/lntest/harness.go:396
            	            				/home/runner/work/lnd/lnd/itest/lnd_test.go:139
            	Error:      	err from HTLC interceptor stream
            	Test:       	TestLightningNetworkDaemon/tranche01/46-of-191/bitcoind/payment_failure_reason_canceled
            	Messages:   	received err from HTLC interceptor stream: rpc error: code = Unknown desc = interceptor already exists
```
  • Loading branch information
yyforyongyu committed Oct 29, 2024
1 parent 2153582 commit 785e058
Showing 1 changed file with 8 additions and 9 deletions.
17 changes: 8 additions & 9 deletions itest/lnd_payment_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -1113,12 +1113,16 @@ func testPaymentFailureReasonCanceled(ht *lntest.HarnessTest) {
// Make sure Alice is aware of channel Bob=>Carol.
ht.AssertTopologyChannelOpen(alice, cpBC)

// Connect the interceptor.
interceptor, cancelInterceptor := bob.RPC.HtlcInterceptor()
defer cancelInterceptor()

// First we check that the payment is successful when bob resumes the
// htlc even though the payment context was canceled before invoice
// settlement.
sendPaymentInterceptAndCancel(
ht, ts, cpAB, routerrpc.ResolveHoldForwardAction_RESUME,
lnrpc.Payment_SUCCEEDED,
lnrpc.Payment_SUCCEEDED, interceptor,
)

// Next we check that the context cancellation results in the expected
Expand All @@ -1128,7 +1132,7 @@ func testPaymentFailureReasonCanceled(ht *lntest.HarnessTest) {
// htlc fail case before the htlc resume case.
sendPaymentInterceptAndCancel(
ht, ts, cpAB, routerrpc.ResolveHoldForwardAction_FAIL,
lnrpc.Payment_FAILED,
lnrpc.Payment_FAILED, interceptor,
)

// Finally, close channels.
Expand All @@ -1139,14 +1143,12 @@ func testPaymentFailureReasonCanceled(ht *lntest.HarnessTest) {
func sendPaymentInterceptAndCancel(ht *lntest.HarnessTest,
ts *interceptorTestScenario, cpAB *lnrpc.ChannelPoint,
interceptorAction routerrpc.ResolveHoldForwardAction,
expectedPaymentStatus lnrpc.Payment_PaymentStatus) {
expectedPaymentStatus lnrpc.Payment_PaymentStatus,
interceptor rpc.InterceptorClient) {

// Prepare the test cases.
alice, bob, carol := ts.alice, ts.bob, ts.carol

// Connect the interceptor.
interceptor, cancelInterceptor := bob.RPC.HtlcInterceptor()

// Prepare the test cases.
addResponse := carol.RPC.AddInvoice(&lnrpc.Invoice{
ValueMsat: 1000,
Expand Down Expand Up @@ -1208,9 +1210,6 @@ func sendPaymentInterceptAndCancel(ht *lntest.HarnessTest,
// should've been made, and we observe FAILURE_REASON_CANCELED.
expectedReason := lnrpc.PaymentFailureReason_FAILURE_REASON_CANCELED
ht.AssertPaymentFailureReason(alice, preimage, expectedReason)

// Cancel the context, which will disconnect the above interceptor.
cancelInterceptor()
}

// testSendToRouteFailHTLCTimeout is similar to
Expand Down

0 comments on commit 785e058

Please sign in to comment.