itest: ensure that native SQL LND won't start if it has any KV invoices

This commit is contained in:
Andras Banki-Horvath 2024-03-19 15:18:53 +01:00
parent 2d3d11487c
commit 2fbffab421
No known key found for this signature in database
GPG key ID: 80E5375C094198D8
3 changed files with 45 additions and 2 deletions

View file

@ -578,4 +578,8 @@ var allTestCases = []*lntest.TestCase{
Name: "open channel locked balance", Name: "open channel locked balance",
TestFunc: testOpenChannelLockedBalance, TestFunc: testOpenChannelLockedBalance,
}, },
{
Name: "nativesql no migration",
TestFunc: testNativeSQLNoMigration,
},
} }

View file

@ -1,6 +1,7 @@
package itest package itest
import ( import (
"context"
"encoding/hex" "encoding/hex"
"fmt" "fmt"
"io/ioutil" "io/ioutil"
@ -1242,3 +1243,41 @@ func testSignVerifyMessageWithAddr(ht *lntest.HarnessTest) {
require.False(ht, respValid.Valid, "external signature did validate") require.False(ht, respValid.Valid, "external signature did validate")
} }
// testNativeSQLNoMigration tests that nodes that have invoices would not start
// up with native SQL enabled, as we don't currently support migration of KV
// invoices to the new SQL schema.
func testNativeSQLNoMigration(ht *lntest.HarnessTest) {
alice := ht.Alice
// Make sure we run the test with SQLite or Postgres.
if alice.Cfg.DBBackend != node.BackendSqlite &&
alice.Cfg.DBBackend != node.BackendPostgres {
ht.Skip("node not running with SQLite or Postgres")
}
// Skip the test if the node is already running with native SQL.
if alice.Cfg.NativeSQL {
ht.Skip("node already running with native SQL")
}
alice.RPC.AddInvoice(&lnrpc.Invoice{
Value: 10_000,
})
alice.SetExtraArgs([]string{"--db.use-native-sql"})
// Restart the node manually as we're really only interested in the
// startup error.
require.NoError(ht, alice.Stop())
require.NoError(ht, alice.StartLndCmd(context.Background()))
// We expect the node to fail to start up with native SQL enabled, as we
// have an invoice in the KV store.
require.Error(ht, alice.WaitForProcessExit())
// Reset the extra args and restart alice.
alice.SetExtraArgs(nil)
require.NoError(ht, alice.Start(ht.Context()))
}

View file

@ -629,7 +629,7 @@ func (hn *HarnessNode) cleanup() error {
// waitForProcessExit Launch a new goroutine which that bubbles up any // waitForProcessExit Launch a new goroutine which that bubbles up any
// potential fatal process errors to the goroutine running the tests. // potential fatal process errors to the goroutine running the tests.
func (hn *HarnessNode) waitForProcessExit() error { func (hn *HarnessNode) WaitForProcessExit() error {
var err error var err error
errChan := make(chan error, 1) errChan := make(chan error, 1)
@ -752,7 +752,7 @@ func (hn *HarnessNode) Stop() error {
} }
// Wait for lnd process to exit in the end. // Wait for lnd process to exit in the end.
return hn.waitForProcessExit() return hn.WaitForProcessExit()
} }
// CloseConn closes the grpc connection. // CloseConn closes the grpc connection.