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