lnd/kvdb/postgres/db_test.go
Elle Mouton 3dfaa88bb4
kvdb/postgres: remove old +build directive and cleanup
Due to the update of the kvdb package to go1.18, the `// +build`
directives are no longer required. They are removed in this commit in
order to simplify upcoming commits. Along the way, a few typos are fixed
and an unused struct is removed.
2023-01-23 09:05:11 +02:00

62 lines
1.3 KiB
Go

//go:build kvdb_postgres
package postgres
import (
"testing"
"time"
"github.com/btcsuite/btcwallet/walletdb"
"github.com/btcsuite/btcwallet/walletdb/walletdbtest"
"github.com/stretchr/testify/require"
"golang.org/x/net/context"
)
// TestInterface performs all interfaces tests for this database driver.
func TestInterface(t *testing.T) {
stop, err := StartEmbeddedPostgres()
require.NoError(t, err)
defer stop()
f, err := NewFixture("")
require.NoError(t, err)
// dbType is the database type name for this driver.
const dbType = "postgres"
ctx := context.Background()
cfg := &Config{
Dsn: f.Dsn,
}
walletdbtest.TestInterface(t, dbType, ctx, cfg, prefix)
}
// TestPanic tests recovery from panic conditions.
func TestPanic(t *testing.T) {
stop, err := StartEmbeddedPostgres()
require.NoError(t, err)
defer stop()
f, err := NewFixture("")
require.NoError(t, err)
err = f.Db.(*db).Update(func(tx walletdb.ReadWriteTx) error {
bucket, err := tx.CreateTopLevelBucket([]byte("test"))
require.NoError(t, err)
// Stop database server.
stop()
// Keep trying to get data until Get panics because the
// connection is lost.
for i := 0; i < 50; i++ {
bucket.Get([]byte("key"))
time.Sleep(100 * time.Millisecond)
}
return nil
}, func() {})
require.Contains(t, err.Error(), "terminating connection")
}