paymentsdb: introduce a harness interface

The design of the sql and kv db are a bit different. A harness
interface is introduced which allows us to unit most of the test
and keep the backend specific tests at a minimum.
This commit is contained in:
ziggie committed 2026-02-25 08:02:17 +01:00
1 parent 570863ca26
commit 080fd78fb4
6 files changed
+162 -101

No files matched your search

+25 -17
View File
@@ -103,6 +103,14 @@ var (
}
)
// htlcStatus is a helper structure used in tests to track the status of an HTLC
// attempt, including whether it was settled or failed.
type htlcStatus struct {
*HTLCAttemptInfo
settle *lntypes.Preimage
failure *HTLCFailReason
}
// payment is a helper structure that holds basic information on a test payment,
// such as the payment id, the status and the total number of HTLCs attempted.
type payment struct {
@@ -446,7 +454,7 @@ func TestDeleteFailedAttempts(t *testing.T) {
// testDeleteFailedAttempts tests the DeleteFailedAttempts method with the
// given keepFailedPaymentAttempts flag as argument.
func testDeleteFailedAttempts(t *testing.T, keepFailedPaymentAttempts bool) {
paymentDB := NewTestDB(
paymentDB, _ := NewTestDB(
t, WithKeepFailedPaymentAttempts(keepFailedPaymentAttempts),
)
@@ -537,7 +545,7 @@ func testDeleteFailedAttempts(t *testing.T, keepFailedPaymentAttempts bool) {
func TestMPPRecordValidation(t *testing.T) {
t.Parallel()
paymentDB := NewTestDB(t)
paymentDB, _ := NewTestDB(t)
preimg, err := genPreimage(t)
require.NoError(t, err)
@@ -638,7 +646,7 @@ func TestMPPRecordValidation(t *testing.T) {
func TestDeleteSinglePayment(t *testing.T) {
t.Parallel()
paymentDB := NewTestDB(t)
paymentDB, _ := NewTestDB(t)
// Register four payments:
// All payments will have one failed HTLC attempt and one HTLC attempt
@@ -1581,7 +1589,7 @@ func TestEmptyRoutesGenerateSphinxPacket(t *testing.T) {
func TestSuccessesWithoutInFlight(t *testing.T) {
t.Parallel()
paymentDB := NewTestDB(t)
paymentDB, _ := NewTestDB(t)
preimg, err := genPreimage(t)
require.NoError(t, err)
@@ -1604,7 +1612,7 @@ func TestSuccessesWithoutInFlight(t *testing.T) {
func TestFailsWithoutInFlight(t *testing.T) {
t.Parallel()
paymentDB := NewTestDB(t)
paymentDB, _ := NewTestDB(t)
preimg, err := genPreimage(t)
require.NoError(t, err)
@@ -1624,7 +1632,7 @@ func TestFailsWithoutInFlight(t *testing.T) {
func TestDeletePayments(t *testing.T) {
t.Parallel()
paymentDB := NewTestDB(t)
paymentDB, _ := NewTestDB(t)
// Register three payments:
// 1. A payment with two failed attempts.
@@ -1682,7 +1690,7 @@ func TestDeletePayments(t *testing.T) {
func TestSwitchDoubleSend(t *testing.T) {
t.Parallel()
paymentDB := NewTestDB(t)
paymentDB, harness := NewTestDB(t)
preimg, err := genPreimage(t)
require.NoError(t, err)
@@ -1697,7 +1705,7 @@ func TestSwitchDoubleSend(t *testing.T) {
err = paymentDB.InitPayment(info.PaymentIdentifier, info)
require.NoError(t, err, "unable to send htlc message")
assertPaymentIndex(t, paymentDB, info.PaymentIdentifier)
harness.AssertPaymentIndex(t, info.PaymentIdentifier)
assertDBPaymentstatus(
t, paymentDB, info.PaymentIdentifier, StatusInitiated,
)
@@ -1760,7 +1768,7 @@ func TestSwitchDoubleSend(t *testing.T) {
func TestSwitchFail(t *testing.T) {
t.Parallel()
paymentDB := NewTestDB(t)
paymentDB, harness := NewTestDB(t)
preimg, err := genPreimage(t)
require.NoError(t, err)
@@ -1774,7 +1782,7 @@ func TestSwitchFail(t *testing.T) {
err = paymentDB.InitPayment(info.PaymentIdentifier, info)
require.NoError(t, err, "unable to send htlc message")
assertPaymentIndex(t, paymentDB, info.PaymentIdentifier)
harness.AssertPaymentIndex(t, info.PaymentIdentifier)
assertDBPaymentstatus(
t, paymentDB, info.PaymentIdentifier, StatusInitiated,
)
@@ -1808,8 +1816,8 @@ func TestSwitchFail(t *testing.T) {
// Check that our index has been updated, and the old index has been
// removed.
assertPaymentIndex(t, paymentDB, info.PaymentIdentifier)
assertNoIndex(t, paymentDB, payment.SequenceNum)
harness.AssertPaymentIndex(t, info.PaymentIdentifier)
harness.AssertNoIndex(t, payment.SequenceNum)
assertDBPaymentstatus(
t, paymentDB, info.PaymentIdentifier, StatusInitiated,
@@ -1926,7 +1934,7 @@ func TestMultiShard(t *testing.T) {
}
runSubTest := func(t *testing.T, test testCase) {
paymentDB := NewTestDB(t)
paymentDB, harness := NewTestDB(t)
preimg, err := genPreimage(t)
require.NoError(t, err)
@@ -1938,7 +1946,7 @@ func TestMultiShard(t *testing.T) {
err = paymentDB.InitPayment(info.PaymentIdentifier, info)
require.NoError(t, err)
assertPaymentIndex(t, paymentDB, info.PaymentIdentifier)
harness.AssertPaymentIndex(t, info.PaymentIdentifier)
assertDBPaymentstatus(
t, paymentDB, info.PaymentIdentifier, StatusInitiated,
)
@@ -2533,7 +2541,7 @@ func TestQueryPayments(t *testing.T) {
ctx := t.Context()
paymentDB := NewTestDB(t)
paymentDB, harness := NewTestDB(t)
// Make a preliminary query to make sure it's ok to
// query when we have no payments.
@@ -2592,8 +2600,8 @@ func TestQueryPayments(t *testing.T) {
)
// Verify the index is removed (KV store only).
assertNoIndex(
t, paymentDB, pmt.SequenceNum,
harness.AssertNoIndex(
t, pmt.SequenceNum,
)
// For the last payment, settle it so we have at least