99 "fmt"
1010 "os"
1111 "testing"
12+ "time"
1213
1314 "github.com/btcsuite/btcd/btcec/v2"
1415 "github.com/btcsuite/btcd/btcec/v2/schnorr"
@@ -45,6 +46,9 @@ import (
4546 "gopkg.in/macaroon.v2"
4647)
4748
49+ // PaymentTimeout is the default payment timeout we use in our tests.
50+ const PaymentTimeout = 6 * time .Second
51+
4852// createTestAssetNetwork sends asset funds from Charlie to Dave and Erin, so
4953// they can fund asset channels with Yara and Fabia, respectively. So the asset
5054// channels created are Charlie->Dave, Dave->Yara, Erin->Fabia. The channels
@@ -429,9 +433,10 @@ func assertPendingChannels(t *testing.T, node *HarnessNode, assetID []byte,
429433
430434 require .NotZero (t , pendingJSON .Assets [0 ].Capacity )
431435
432- pendingLocalBalance , pendingRemoteBalance := getAssetChannelBalance (
433- t , node , assetID , true ,
434- )
436+ pendingLocalBalance , pendingRemoteBalance , _ , _ :=
437+ getAssetChannelBalance (
438+ t , node , assetID , true ,
439+ )
435440 require .EqualValues (t , localSum , pendingLocalBalance )
436441 require .EqualValues (t , remoteSum , pendingRemoteBalance )
437442}
@@ -542,7 +547,7 @@ func getChannelCustomData(src, dst *HarnessNode) (*rfqmsg.JsonAssetChanInfo,
542547}
543548
544549func getAssetChannelBalance (t * testing.T , node * HarnessNode , assetID []byte ,
545- pending bool ) (uint64 , uint64 ) {
550+ pending bool ) (uint64 , uint64 , uint64 , uint64 ) {
546551
547552 ctxb := context .Background ()
548553 ctxt , cancel := context .WithTimeout (ctxb , defaultTimeout )
@@ -572,11 +577,14 @@ func getAssetChannelBalance(t *testing.T, node *HarnessNode, assetID []byte,
572577 remoteSum += balances [assetIDString ].RemoteBalance
573578 }
574579
575- return localSum , remoteSum
580+ return localSum , remoteSum , balance .LocalBalance .Sat ,
581+ balance .RemoteBalance .Sat
576582}
577583
578584func sendAssetKeySendPayment (t * testing.T , src , dst * HarnessNode , amt uint64 ,
579- assetID []byte , btcAmt fn.Option [int64 ]) {
585+ assetID []byte , btcAmt fn.Option [int64 ],
586+ expectedStatus lnrpc.Payment_PaymentStatus ,
587+ failReason fn.Option [lnrpc.PaymentFailureReason ]) {
580588
581589 ctxb := context .Background ()
582590 ctxt , cancel := context .WithTimeout (ctxb , defaultTimeout )
@@ -601,7 +609,7 @@ func sendAssetKeySendPayment(t *testing.T, src, dst *HarnessNode, amt uint64,
601609 Amt : btcAmt .UnwrapOr (500 ),
602610 DestCustomRecords : customRecords ,
603611 PaymentHash : hash [:],
604- TimeoutSeconds : 3 ,
612+ TimeoutSeconds : int32 ( PaymentTimeout . Seconds ()) ,
605613 }
606614
607615 stream , err := srcTapd .SendPayment (ctxt , & tchrpc.SendPaymentRequest {
@@ -613,7 +621,12 @@ func sendAssetKeySendPayment(t *testing.T, src, dst *HarnessNode, amt uint64,
613621
614622 result , err := getAssetPaymentResult (stream )
615623 require .NoError (t , err )
616- require .Equal (t , lnrpc .Payment_SUCCEEDED , result .Status )
624+ require .Equal (t , expectedStatus , result .Status )
625+
626+ expectedReason := failReason .UnwrapOr (
627+ lnrpc .PaymentFailureReason_FAILURE_REASON_NONE ,
628+ )
629+ require .Equal (t , result .FailureReason , expectedReason )
617630}
618631
619632func sendKeySendPayment (t * testing.T , src , dst * HarnessNode ,
@@ -640,7 +653,7 @@ func sendKeySendPayment(t *testing.T, src, dst *HarnessNode,
640653 Amt : int64 (amt ),
641654 DestCustomRecords : customRecords ,
642655 PaymentHash : hash [:],
643- TimeoutSeconds : 3 ,
656+ TimeoutSeconds : int32 ( PaymentTimeout . Seconds ()) ,
644657 }
645658
646659 stream , err := src .RouterClient .SendPaymentV2 (ctxt , req )
@@ -698,7 +711,7 @@ func payInvoiceWithSatoshi(t *testing.T, payer *HarnessNode,
698711
699712 sendReq := & routerrpc.SendPaymentRequest {
700713 PaymentRequest : invoice .PaymentRequest ,
701- TimeoutSeconds : 2 ,
714+ TimeoutSeconds : int32 ( PaymentTimeout . Seconds ()) ,
702715 MaxShardSizeMsat : 80_000_000 ,
703716 FeeLimitMsat : 1_000_000 ,
704717 }
@@ -727,7 +740,7 @@ func payInvoiceWithAssets(t *testing.T, payer, rfqPeer *HarnessNode,
727740
728741 sendReq := & routerrpc.SendPaymentRequest {
729742 PaymentRequest : invoice .PaymentRequest ,
730- TimeoutSeconds : 2 ,
743+ TimeoutSeconds : int32 ( PaymentTimeout . Seconds ()) ,
731744 FeeLimitMsat : 1_000_000 ,
732745 }
733746
@@ -1422,10 +1435,15 @@ func logBalance(t *testing.T, nodes []*HarnessNode, assetID []byte,
14221435
14231436 t .Helper ()
14241437
1438+ time .Sleep (time .Millisecond * 250 )
1439+
14251440 for _ , node := range nodes {
1426- local , remote := getAssetChannelBalance (t , node , assetID , false )
1427- t .Logf ("%-7s balance: local=%-9d remote=%-9d (%v)" ,
1428- node .Cfg .Name , local , remote , occasion )
1441+ local , remote , localSat , remoteSat :=
1442+ getAssetChannelBalance (t , node , assetID , false )
1443+
1444+ t .Logf ("%-7s balance: local=%-9d remote=%-9d, localSat=%-9d, " +
1445+ "remoteSat=%-9d (%v)" , node .Cfg .Name , local , remote ,
1446+ localSat , remoteSat , occasion )
14291447 }
14301448}
14311449
0 commit comments