@@ -56,6 +56,10 @@ const (
56
56
DefaultPushSat int64 = 1062
57
57
)
58
58
59
+ var (
60
+ NoScidOpt = fn .None [rfqmsg.SerialisedScid ]()
61
+ )
62
+
59
63
// createTestAssetNetwork sends asset funds from Charlie to Dave and Erin, so
60
64
// they can fund asset channels with Yara and Fabia, respectively. So the asset
61
65
// channels created are Charlie->Dave, Dave->Yara, Erin->Fabia. The channels
@@ -714,6 +718,9 @@ func sendAssetKeySendPayment(t *testing.T, src, dst *HarnessNode, amt uint64,
714
718
715
719
result , err := getAssetPaymentResult (stream , false )
716
720
require .NoError (t , err )
721
+ if result .Status == lnrpc .Payment_FAILED {
722
+ t .Logf ("Failure reason: %v" , result .FailureReason )
723
+ }
717
724
require .Equal (t , expectedStatus , result .Status )
718
725
719
726
expectedReason := failReason .UnwrapOr (
@@ -772,7 +779,9 @@ func createAndPayNormalInvoiceWithBtc(t *testing.T, src, dst *HarnessNode,
772
779
})
773
780
require .NoError (t , err )
774
781
775
- payInvoiceWithSatoshi (t , src , invoiceResp , lnrpc .Payment_SUCCEEDED )
782
+ payInvoiceWithSatoshi (
783
+ t , src , invoiceResp , lnrpc .Payment_SUCCEEDED , false ,
784
+ )
776
785
}
777
786
778
787
func createAndPayNormalInvoice (t * testing.T , src , rfqPeer , dst * HarnessNode ,
@@ -792,15 +801,15 @@ func createAndPayNormalInvoice(t *testing.T, src, rfqPeer, dst *HarnessNode,
792
801
793
802
numUnits , _ := payInvoiceWithAssets (
794
803
t , src , rfqPeer , invoiceResp .PaymentRequest , assetID , smallShards ,
795
- fn .None [lnrpc.Payment_PaymentStatus ](),
804
+ fn .None [lnrpc.Payment_PaymentStatus ](), NoScidOpt ,
796
805
)
797
806
798
807
return numUnits
799
808
}
800
809
801
810
func payInvoiceWithSatoshi (t * testing.T , payer * HarnessNode ,
802
811
invoice * lnrpc.AddInvoiceResponse ,
803
- expectedStatus lnrpc.Payment_PaymentStatus ) {
812
+ expectedStatus lnrpc.Payment_PaymentStatus , expectTimeout bool ) {
804
813
805
814
ctxb := context .Background ()
806
815
ctxt , cancel := context .WithTimeout (ctxb , defaultTimeout )
@@ -816,8 +825,12 @@ func payInvoiceWithSatoshi(t *testing.T, payer *HarnessNode,
816
825
require .NoError (t , err )
817
826
818
827
result , err := getPaymentResult (stream )
819
- require .NoError (t , err )
820
- require .Equal (t , expectedStatus , result .Status )
828
+ if expectTimeout {
829
+ require .ErrorContains (t , err , "context deadline exceeded" )
830
+ } else {
831
+ require .NoError (t , err )
832
+ require .Equal (t , expectedStatus , result .Status )
833
+ }
821
834
}
822
835
823
836
func payInvoiceWithSatoshiLastHop (t * testing.T , payer * HarnessNode ,
@@ -858,7 +871,8 @@ func payInvoiceWithSatoshiLastHop(t *testing.T, payer *HarnessNode,
858
871
859
872
func payInvoiceWithAssets (t * testing.T , payer , rfqPeer * HarnessNode ,
860
873
payReq string , assetID []byte , smallShards bool ,
861
- expectedPayStatus fn.Option [lnrpc.Payment_PaymentStatus ]) (uint64 ,
874
+ expectedPayStatus fn.Option [lnrpc.Payment_PaymentStatus ],
875
+ manualRfq fn.Option [rfqmsg.SerialisedScid ]) (uint64 ,
862
876
rfqmath.BigIntFixedPoint ) {
863
877
864
878
ctxb := context .Background ()
@@ -886,40 +900,52 @@ func payInvoiceWithAssets(t *testing.T, payer, rfqPeer *HarnessNode,
886
900
AssetId : assetID ,
887
901
PeerPubkey : rfqPeer .PubKey [:],
888
902
PaymentRequest : sendReq ,
903
+ Scid : uint64 (manualRfq .UnwrapOr (0 )),
889
904
})
890
905
require .NoError (t , err )
891
906
892
- // We want to receive the accepted quote message first, so we know how
893
- // many assets we're going to pay.
894
- quoteMsg , err := stream .Recv ()
895
- require .NoError (t , err )
896
- acceptedQuote := quoteMsg .GetAcceptedSellOrder ()
897
- require .NotNil (t , acceptedQuote )
907
+ var (
908
+ numUnits uint64
909
+ rateVal rfqmath.FixedPoint [rfqmath.BigInt ]
910
+ )
898
911
899
- peerPubKey := acceptedQuote .Peer
900
- require .Equal (t , peerPubKey , rfqPeer .PubKeyStr )
912
+ if manualRfq .IsNone () {
913
+ // We want to receive the accepted quote message first, so we know how
914
+ // many assets we're going to pay.
915
+ quoteMsg , err := stream .Recv ()
916
+ require .NoError (t , err )
917
+ acceptedQuote := quoteMsg .GetAcceptedSellOrder ()
918
+ require .NotNil (t , acceptedQuote )
901
919
902
- rpcRate := acceptedQuote .BidAssetRate
903
- rate , err := rfqrpc .UnmarshalFixedPoint (rpcRate )
904
- require .NoError (t , err )
920
+ peerPubKey := acceptedQuote .Peer
921
+ require .Equal (t , peerPubKey , rfqPeer .PubKeyStr )
905
922
906
- t .Logf ("Got quote for %v asset units per BTC" , rate )
923
+ rpcRate := acceptedQuote .BidAssetRate
924
+ rate , err := rfqrpc .UnmarshalFixedPoint (rpcRate )
925
+ require .NoError (t , err )
926
+
927
+ rateVal = * rate
907
928
908
- amountMsat := lnwire .MilliSatoshi (decodedInvoice .NumMsat )
909
- milliSatsFP := rfqmath .MilliSatoshiToUnits (amountMsat , * rate )
910
- numUnits := milliSatsFP .ScaleTo (0 ).ToUint64 ()
911
- msatPerUnit := float64 (decodedInvoice .NumMsat ) / float64 (numUnits )
912
- t .Logf ("Got quote for %v asset units at %3f msat/unit from peer %s " +
913
- "with SCID %d" , numUnits , msatPerUnit , peerPubKey ,
914
- acceptedQuote .Scid )
929
+ t .Logf ("Got quote for %v asset units per BTC" , rate )
930
+
931
+ amountMsat := lnwire .MilliSatoshi (decodedInvoice .NumMsat )
932
+ milliSatsFP := rfqmath .MilliSatoshiToUnits (amountMsat , * rate )
933
+ numUnits = milliSatsFP .ScaleTo (0 ).ToUint64 ()
934
+ msatPerUnit := float64 (decodedInvoice .NumMsat ) / float64 (numUnits )
935
+ t .Logf ("Got quote for %v asset units at %3f msat/unit from peer %s " +
936
+ "with SCID %d" , numUnits , msatPerUnit , peerPubKey ,
937
+ acceptedQuote .Scid )
938
+ }
915
939
916
940
expectedStatus := expectedPayStatus .UnwrapOr (lnrpc .Payment_SUCCEEDED )
917
941
918
- result , err := getAssetPaymentResult (stream , expectedPayStatus .IsSome ())
942
+ result , err := getAssetPaymentResult (
943
+ stream , expectedStatus == lnrpc .Payment_IN_FLIGHT ,
944
+ )
919
945
require .NoError (t , err )
920
946
require .Equal (t , expectedStatus , result .Status )
921
947
922
- return numUnits , * rate
948
+ return numUnits , rateVal
923
949
}
924
950
925
951
func createAssetInvoice (t * testing.T , dstRfqPeer , dst * HarnessNode ,
0 commit comments