Skip to content

Commit 7f75248

Browse files
committed
itest: add custom channels liquidity edge cases test
1 parent 80d456a commit 7f75248

File tree

3 files changed

+260
-19
lines changed

3 files changed

+260
-19
lines changed

itest/assets_test.go

Lines changed: 32 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ import (
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

544549
func 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

578584
func 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

619632
func 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

Comments
 (0)