mirror of
https://github.com/lightningnetwork/lnd.git
synced 2025-03-29 19:22:40 +01:00
Merge pull request #7395 from yyforyongyu/fix-unit-test-db
channeldb+invoices: fix unit test flakes
This commit is contained in:
commit
939614b70d
@ -6,6 +6,7 @@ import (
|
||||
"net"
|
||||
"reflect"
|
||||
"runtime"
|
||||
"sync/atomic"
|
||||
"testing"
|
||||
|
||||
"github.com/btcsuite/btcd/btcec/v2"
|
||||
@ -64,6 +65,11 @@ var (
|
||||
// dummyRemoteOutIndex specifics a default value for their output index
|
||||
// in this test.
|
||||
dummyRemoteOutIndex = uint32(1)
|
||||
|
||||
// uniqueOutputIndex is used to create a unique funding outpoint.
|
||||
//
|
||||
// NOTE: must be incremented when used.
|
||||
uniqueOutputIndex = atomic.Uint32{}
|
||||
)
|
||||
|
||||
// testChannelParams is a struct which details the specifics of how a channel
|
||||
@ -299,10 +305,15 @@ func createTestChannelState(t *testing.T, cdb *ChannelStateDB) *OpenChannel {
|
||||
|
||||
chanID := lnwire.NewShortChanIDFromInt(uint64(rand.Int63()))
|
||||
|
||||
// Increment the uniqueOutputIndex so we always get a unique value for
|
||||
// the funding outpoint.
|
||||
uniqueOutputIndex.Add(1)
|
||||
op := wire.OutPoint{Hash: key, Index: uniqueOutputIndex.Load()}
|
||||
|
||||
return &OpenChannel{
|
||||
ChanType: SingleFunderBit | FrozenBit,
|
||||
ChainHash: key,
|
||||
FundingOutpoint: wire.OutPoint{Hash: key, Index: rand.Uint32()},
|
||||
FundingOutpoint: op,
|
||||
ShortChannelID: chanID,
|
||||
IsInitiator: true,
|
||||
IsPending: true,
|
||||
|
@ -243,11 +243,13 @@ func TestFetchChannel(t *testing.T) {
|
||||
spew.Sdump(channelState), spew.Sdump(dbChannel))
|
||||
}
|
||||
|
||||
// If we attempt to query for a non-exist ante channel, then we should
|
||||
// If we attempt to query for a non-existent channel, then we should
|
||||
// get an error.
|
||||
channelState2 := createTestChannelState(t, cdb)
|
||||
require.NoError(t, err, "unable to create channel state")
|
||||
channelState2.FundingOutpoint.Index ^= 1
|
||||
|
||||
uniqueOutputIndex.Add(1)
|
||||
channelState2.FundingOutpoint.Index = uniqueOutputIndex.Load()
|
||||
|
||||
_, err = cdb.FetchChannel(nil, channelState2.FundingOutpoint)
|
||||
if err == nil {
|
||||
|
@ -1006,27 +1006,34 @@ func TestInvoiceExpiryWithRegistry(t *testing.T) {
|
||||
// Fwd time 1 day.
|
||||
testClock.SetTime(testTime.Add(24 * time.Hour))
|
||||
|
||||
// Give some time to the watcher to cancel everything.
|
||||
time.Sleep(500 * time.Millisecond)
|
||||
if err := registry.Stop(); err != nil {
|
||||
t.Fatalf("failed to stop invoice registry: %v", err)
|
||||
}
|
||||
|
||||
// Create the expected cancellation set before the final check.
|
||||
expectedCancellations = append(
|
||||
expectedCancellations, invoicesThatWillCancel...,
|
||||
)
|
||||
|
||||
// Retrospectively check that all invoices that were expected to be
|
||||
// canceled are indeed canceled.
|
||||
for i := range expectedCancellations {
|
||||
invoice, err := registry.LookupInvoice(expectedCancellations[i])
|
||||
if err != nil {
|
||||
t.Fatalf("cannot find invoice: %v", err)
|
||||
// canceled returns a bool to indicate whether all the invoices are
|
||||
// canceled.
|
||||
canceled := func() bool {
|
||||
for i := range expectedCancellations {
|
||||
invoice, err := registry.LookupInvoice(
|
||||
expectedCancellations[i],
|
||||
)
|
||||
require.NoError(t, err)
|
||||
|
||||
if invoice.State != invpkg.ContractCanceled {
|
||||
return false
|
||||
}
|
||||
}
|
||||
|
||||
require.Equal(t, invpkg.ContractCanceled, invoice.State)
|
||||
return true
|
||||
}
|
||||
|
||||
// Retrospectively check that all invoices that were expected to be
|
||||
// canceled are indeed canceled.
|
||||
require.Eventually(t, canceled, testTimeout, 10*time.Millisecond)
|
||||
|
||||
// Finally stop the registry.
|
||||
require.NoError(t, registry.Stop(), "failed to stop invoice registry")
|
||||
}
|
||||
|
||||
// TestOldInvoiceRemovalOnStart tests that we'll attempt to remove old canceled
|
||||
|
Loading…
x
Reference in New Issue
Block a user