itest: utilize more options when paying with satoshi

This commit is contained in:
George Tsagkarelis 2025-04-25 17:44:25 +02:00
parent 16b5b84fd5
commit 3e26bd261d
No known key found for this signature in database
GPG key ID: E08DEA9B12B66AF6
2 changed files with 22 additions and 16 deletions

View file

@ -1388,7 +1388,7 @@ func sendKeySendPayment(t *testing.T, src, dst *HarnessNode,
stream, err := src.RouterClient.SendPaymentV2(ctxt, req)
require.NoError(t, err)
result, err := getFinalPaymentResult(stream)
result, err := getPaymentResult(stream, false)
require.NoError(t, err)
require.Equal(t, lnrpc.Payment_SUCCEEDED, result.Status)
}
@ -1448,6 +1448,12 @@ func payPayReqWithSatoshi(t *testing.T, payer *HarnessNode, payReq string,
ctxt, cancel := context.WithTimeout(ctxb, defaultTimeout)
defer cancel()
shardSize := uint64(0)
if cfg.smallShards {
shardSize = 80_000_000
}
sendReq := &routerrpc.SendPaymentRequest{
PaymentRequest: payReq,
TimeoutSeconds: int32(PaymentTimeout.Seconds()),
@ -1455,6 +1461,7 @@ func payPayReqWithSatoshi(t *testing.T, payer *HarnessNode, payReq string,
MaxParts: cfg.maxShards,
OutgoingChanIds: cfg.outgoingChanIDs,
AllowSelfPayment: cfg.allowSelfPayment,
MaxShardSizeMsat: shardSize,
}
if cfg.smallShards {
@ -1464,17 +1471,9 @@ func payPayReqWithSatoshi(t *testing.T, payer *HarnessNode, payReq string,
stream, err := payer.RouterClient.SendPaymentV2(ctxt, sendReq)
require.NoError(t, err)
if cfg.payStatus == lnrpc.Payment_IN_FLIGHT {
t.Logf("Waiting for initial stream response...")
result, err := stream.Recv()
require.NoError(t, err)
require.Equal(t, cfg.payStatus, result.Status)
return
}
result, err := getFinalPaymentResult(stream)
result, err := getPaymentResult(
stream, cfg.payStatus == lnrpc.Payment_IN_FLIGHT,
)
if cfg.errSubStr != "" {
require.ErrorContains(t, err, cfg.errSubStr)
} else {

View file

@ -416,13 +416,13 @@ func payNode(invoiceCtx, paymentCtx context.Context, t *harnessTest,
stream, err := from.SendPaymentV2(paymentCtx, sendReq)
require.NoError(t.t, err)
result, err := getFinalPaymentResult(stream)
result, err := getPaymentResult(stream, false)
require.NoError(t.t, err)
require.Equal(t.t, result.Status, lnrpc.Payment_SUCCEEDED)
}
func getFinalPaymentResult(stream routerrpc.Router_SendPaymentV2Client) (
*lnrpc.Payment, error) {
func getPaymentResult(stream routerrpc.Router_SendPaymentV2Client,
isHodl bool) (*lnrpc.Payment, error) {
for {
payment, err := stream.Recv()
@ -430,7 +430,14 @@ func getFinalPaymentResult(stream routerrpc.Router_SendPaymentV2Client) (
return nil, err
}
if payment.Status != lnrpc.Payment_IN_FLIGHT {
// If this is a hodl payment, then we'll return the first
// expected response. Otherwise, we'll wait until the in flight
// clears to we can observe the other payment states.
switch {
case isHodl:
return payment, nil
case payment.Status != lnrpc.Payment_IN_FLIGHT:
return payment, nil
}
}