mirror of
https://github.com/lightningnetwork/lnd.git
synced 2025-03-11 01:29:19 +01:00
channeldb/test: test with postgres
This commit is contained in:
parent
7c048efa21
commit
d997bbf6b3
13 changed files with 152 additions and 3 deletions
3
.github/workflows/main.yml
vendored
3
.github/workflows/main.yml
vendored
|
@ -206,7 +206,8 @@ jobs:
|
|||
matrix:
|
||||
unit_type:
|
||||
- btcd unit-cover
|
||||
- unit tags="kvdb_etcd kvdb_postgres"
|
||||
- unit tags="kvdb_etcd"
|
||||
- unit tags="kvdb_postgres"
|
||||
- travis-race
|
||||
steps:
|
||||
- name: git checkout
|
||||
|
|
|
@ -25,6 +25,11 @@ import (
|
|||
func TestOpenWithCreate(t *testing.T) {
|
||||
t.Parallel()
|
||||
|
||||
// Checking for db file existence is not possible with postgres.
|
||||
if kvdb.PostgresBackend {
|
||||
t.Skip()
|
||||
}
|
||||
|
||||
// First, create a temporary directory to be used for the duration of
|
||||
// this test.
|
||||
tempDirName, err := ioutil.TempDir("", "channeldb")
|
||||
|
|
11
channeldb/setup_test.go
Normal file
11
channeldb/setup_test.go
Normal file
|
@ -0,0 +1,11 @@
|
|||
package channeldb
|
||||
|
||||
import (
|
||||
"testing"
|
||||
|
||||
"github.com/lightningnetwork/lnd/kvdb"
|
||||
)
|
||||
|
||||
func TestMain(m *testing.M) {
|
||||
kvdb.RunTests(m)
|
||||
}
|
11
contractcourt/setup_test.go
Normal file
11
contractcourt/setup_test.go
Normal file
|
@ -0,0 +1,11 @@
|
|||
package contractcourt
|
||||
|
||||
import (
|
||||
"testing"
|
||||
|
||||
"github.com/lightningnetwork/lnd/kvdb"
|
||||
)
|
||||
|
||||
func TestMain(m *testing.M) {
|
||||
kvdb.RunTests(m)
|
||||
}
|
|
@ -460,6 +460,8 @@ messages directly. There is no routing/path finding involved.
|
|||
|
||||
* [Fixed flake that occurred with the switch dust forwarding test under the data race unit build.](https://github.com/lightningnetwork/lnd/pull/5828)
|
||||
|
||||
* [Run channeldb tests on postgres](https://github.com/lightningnetwork/lnd/pull/5550)
|
||||
|
||||
## Database
|
||||
|
||||
* [Ensure single writer for legacy
|
||||
|
|
|
@ -5,7 +5,9 @@ package kvdb
|
|||
|
||||
import (
|
||||
"context"
|
||||
"crypto/sha256"
|
||||
"encoding/binary"
|
||||
"encoding/hex"
|
||||
"fmt"
|
||||
"io/ioutil"
|
||||
"os"
|
||||
|
@ -245,7 +247,20 @@ func updateLastCompactionDate(dbFile string) error {
|
|||
func GetTestBackend(path, name string) (Backend, func(), error) {
|
||||
empty := func() {}
|
||||
|
||||
if TestBackend == BoltBackendName {
|
||||
switch {
|
||||
case PostgresBackend:
|
||||
key := filepath.Join(path, name)
|
||||
keyHash := sha256.Sum256([]byte(key))
|
||||
|
||||
f, err := NewPostgresFixture("test_" + hex.EncodeToString(keyHash[:]))
|
||||
if err != nil {
|
||||
return nil, func() {}, err
|
||||
}
|
||||
return f.DB(), func() {
|
||||
_ = f.DB().Close()
|
||||
}, nil
|
||||
|
||||
case TestBackend == BoltBackendName:
|
||||
db, err := GetBoltBackend(&BoltBackendConfig{
|
||||
DBPath: path,
|
||||
DBFileName: name,
|
||||
|
@ -256,7 +271,8 @@ func GetTestBackend(path, name string) (Backend, func(), error) {
|
|||
return nil, nil, err
|
||||
}
|
||||
return db, empty, nil
|
||||
} else if TestBackend == EtcdBackendName {
|
||||
|
||||
case TestBackend == EtcdBackendName:
|
||||
etcdConfig, cancel, err := StartEtcdTestBackend(path, 0, 0, "")
|
||||
if err != nil {
|
||||
return nil, empty, err
|
||||
|
@ -265,6 +281,7 @@ func GetTestBackend(path, name string) (Backend, func(), error) {
|
|||
EtcdBackendName, context.TODO(), etcdConfig,
|
||||
)
|
||||
return backend, cancel, err
|
||||
|
||||
}
|
||||
|
||||
return nil, nil, fmt.Errorf("unknown backend")
|
||||
|
|
19
kvdb/kvdb_no_postgres.go
Normal file
19
kvdb/kvdb_no_postgres.go
Normal file
|
@ -0,0 +1,19 @@
|
|||
// +build !kvdb_postgres
|
||||
|
||||
package kvdb
|
||||
|
||||
import (
|
||||
"errors"
|
||||
|
||||
"github.com/lightningnetwork/lnd/kvdb/postgres"
|
||||
)
|
||||
|
||||
const PostgresBackend = false
|
||||
|
||||
func NewPostgresFixture(dbName string) (postgres.Fixture, error) {
|
||||
return nil, errors.New("postgres backend not available")
|
||||
}
|
||||
|
||||
func StartEmbeddedPostgres() (func() error, error) {
|
||||
return nil, errors.New("postgres backend not available")
|
||||
}
|
15
kvdb/kvdb_postgres.go
Normal file
15
kvdb/kvdb_postgres.go
Normal file
|
@ -0,0 +1,15 @@
|
|||
// +build kvdb_postgres
|
||||
|
||||
package kvdb
|
||||
|
||||
import "github.com/lightningnetwork/lnd/kvdb/postgres"
|
||||
|
||||
const PostgresBackend = true
|
||||
|
||||
func NewPostgresFixture(dbName string) (postgres.Fixture, error) {
|
||||
return postgres.NewFixture(dbName)
|
||||
}
|
||||
|
||||
func StartEmbeddedPostgres() (func() error, error) {
|
||||
return postgres.StartEmbeddedPostgres()
|
||||
}
|
|
@ -95,6 +95,10 @@ type fixture struct {
|
|||
Db walletdb.DB
|
||||
}
|
||||
|
||||
func (b *fixture) DB() walletdb.DB {
|
||||
return b.Db
|
||||
}
|
||||
|
||||
// Dump returns the raw contents of the database.
|
||||
func (b *fixture) Dump() (map[string]interface{}, error) {
|
||||
dbConn, err := sql.Open("pgx", b.Dsn)
|
||||
|
|
8
kvdb/postgres/fixture_interface.go
Normal file
8
kvdb/postgres/fixture_interface.go
Normal file
|
@ -0,0 +1,8 @@
|
|||
package postgres
|
||||
|
||||
import "github.com/btcsuite/btcwallet/walletdb"
|
||||
|
||||
type Fixture interface {
|
||||
DB() walletdb.DB
|
||||
Dump() (map[string]interface{}, error)
|
||||
}
|
34
kvdb/test_utils.go
Normal file
34
kvdb/test_utils.go
Normal file
|
@ -0,0 +1,34 @@
|
|||
package kvdb
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"os"
|
||||
"testing"
|
||||
)
|
||||
|
||||
// RunTests is a helper function to run the tests in a package with
|
||||
// initialization and tear-down of a test kvdb backend.
|
||||
func RunTests(m *testing.M) {
|
||||
var close func() error
|
||||
if PostgresBackend {
|
||||
var err error
|
||||
close, err = StartEmbeddedPostgres()
|
||||
if err != nil {
|
||||
fmt.Printf("Error: %v\n", err)
|
||||
os.Exit(1)
|
||||
}
|
||||
}
|
||||
|
||||
// os.Exit() does not respect defer statements
|
||||
code := m.Run()
|
||||
|
||||
if close != nil {
|
||||
err := close()
|
||||
if err != nil {
|
||||
fmt.Printf("Error: %v\n", err)
|
||||
}
|
||||
}
|
||||
|
||||
os.Exit(code)
|
||||
|
||||
}
|
11
routing/setup_test.go
Normal file
11
routing/setup_test.go
Normal file
|
@ -0,0 +1,11 @@
|
|||
package routing
|
||||
|
||||
import (
|
||||
"testing"
|
||||
|
||||
"github.com/lightningnetwork/lnd/kvdb"
|
||||
)
|
||||
|
||||
func TestMain(m *testing.M) {
|
||||
kvdb.RunTests(m)
|
||||
}
|
11
sweep/setup_test.go
Normal file
11
sweep/setup_test.go
Normal file
|
@ -0,0 +1,11 @@
|
|||
package sweep
|
||||
|
||||
import (
|
||||
"testing"
|
||||
|
||||
"github.com/lightningnetwork/lnd/kvdb"
|
||||
)
|
||||
|
||||
func TestMain(m *testing.M) {
|
||||
kvdb.RunTests(m)
|
||||
}
|
Loading…
Add table
Reference in a new issue