mirror of
https://github.com/aljazceru/breez-lnd.git
synced 2025-12-17 06:04:20 +01:00
kvdb: add postgres
This commit is contained in:
184
kvdb/postgres_test.go
Normal file
184
kvdb/postgres_test.go
Normal file
@@ -0,0 +1,184 @@
|
||||
// +build kvdb_postgres
|
||||
|
||||
package kvdb
|
||||
|
||||
import (
|
||||
"testing"
|
||||
|
||||
"github.com/btcsuite/btcwallet/walletdb"
|
||||
"github.com/lightningnetwork/lnd/kvdb/postgres"
|
||||
"github.com/stretchr/testify/require"
|
||||
)
|
||||
|
||||
type m = map[string]interface{}
|
||||
|
||||
func TestPostgres(t *testing.T) {
|
||||
f := postgres.NewFixture(t)
|
||||
defer f.Cleanup()
|
||||
|
||||
tests := []struct {
|
||||
name string
|
||||
test func(*testing.T, walletdb.DB)
|
||||
expectedDb m
|
||||
}{
|
||||
{
|
||||
name: "read cursor empty interval",
|
||||
test: testReadCursorEmptyInterval,
|
||||
},
|
||||
{
|
||||
name: "read cursor non empty interval",
|
||||
test: testReadCursorNonEmptyInterval,
|
||||
},
|
||||
{
|
||||
name: "read write cursor",
|
||||
test: testReadWriteCursor,
|
||||
expectedDb: m{
|
||||
"test_kv": []m{
|
||||
m{"id": int64(1), "key": "apple", "parent_id": nil, "sequence": nil, "value": nil},
|
||||
m{"id": int64(4), "key": "da", "parent_id": int64(1), "sequence": nil, "value": "3"},
|
||||
m{"id": int64(6), "key": "a", "parent_id": int64(1), "sequence": nil, "value": "0"},
|
||||
m{"id": int64(7), "key": "f", "parent_id": int64(1), "sequence": nil, "value": "5"},
|
||||
m{"id": int64(3), "key": "c", "parent_id": int64(1), "sequence": nil, "value": "3"},
|
||||
m{"id": int64(9), "key": "cx", "parent_id": int64(1), "sequence": nil, "value": "x"},
|
||||
m{"id": int64(10), "key": "cy", "parent_id": int64(1), "sequence": nil, "value": "y"},
|
||||
},
|
||||
},
|
||||
},
|
||||
{
|
||||
name: "read write cursor with bucket and value",
|
||||
test: testReadWriteCursorWithBucketAndValue,
|
||||
expectedDb: m{
|
||||
"test_kv": []m{
|
||||
m{"id": int64(1), "key": "apple", "parent_id": nil, "sequence": nil, "value": nil},
|
||||
m{"id": int64(2), "key": "key", "parent_id": int64(1), "sequence": nil, "value": "val"},
|
||||
m{"id": int64(3), "key": "banana", "parent_id": int64(1), "sequence": nil, "value": nil},
|
||||
m{"id": int64(4), "key": "pear", "parent_id": int64(1), "sequence": nil, "value": nil},
|
||||
},
|
||||
},
|
||||
},
|
||||
{
|
||||
name: "bucket creation",
|
||||
test: testBucketCreation,
|
||||
expectedDb: m{
|
||||
"test_kv": []m{
|
||||
m{"id": int64(1), "key": "apple", "parent_id": nil, "sequence": nil, "value": nil},
|
||||
m{"id": int64(2), "key": "banana", "parent_id": int64(1), "sequence": nil, "value": nil},
|
||||
m{"id": int64(3), "key": "mango", "parent_id": int64(1), "sequence": nil, "value": nil},
|
||||
m{"id": int64(4), "key": "pear", "parent_id": int64(2), "sequence": nil, "value": nil},
|
||||
},
|
||||
},
|
||||
},
|
||||
{
|
||||
name: "bucket deletion",
|
||||
test: testBucketDeletion,
|
||||
expectedDb: m{
|
||||
"test_kv": []m{
|
||||
m{"id": int64(1), "key": "apple", "parent_id": nil, "sequence": nil, "value": nil},
|
||||
m{"id": int64(2), "key": "banana", "parent_id": int64(1), "sequence": nil, "value": nil},
|
||||
m{"id": int64(3), "key": "key1", "parent_id": int64(2), "sequence": nil, "value": "val1"},
|
||||
m{"id": int64(5), "key": "key3", "parent_id": int64(2), "sequence": nil, "value": "val3"},
|
||||
},
|
||||
},
|
||||
},
|
||||
{
|
||||
name: "bucket for each",
|
||||
test: testBucketForEach,
|
||||
expectedDb: m{
|
||||
"test_kv": []m{
|
||||
m{"id": int64(1), "key": "apple", "parent_id": nil, "sequence": nil, "value": nil},
|
||||
m{"id": int64(2), "key": "banana", "parent_id": int64(1), "sequence": nil, "value": nil},
|
||||
m{"id": int64(3), "key": "key1", "parent_id": int64(1), "sequence": nil, "value": "val1"},
|
||||
m{"id": int64(4), "key": "key1", "parent_id": int64(2), "sequence": nil, "value": "val1"},
|
||||
m{"id": int64(5), "key": "key2", "parent_id": int64(1), "sequence": nil, "value": "val2"},
|
||||
m{"id": int64(6), "key": "key2", "parent_id": int64(2), "sequence": nil, "value": "val2"},
|
||||
m{"id": int64(7), "key": "key3", "parent_id": int64(1), "sequence": nil, "value": "val3"},
|
||||
m{"id": int64(8), "key": "key3", "parent_id": int64(2), "sequence": nil, "value": "val3"},
|
||||
},
|
||||
},
|
||||
},
|
||||
{
|
||||
name: "bucket for each with error",
|
||||
test: testBucketForEachWithError,
|
||||
expectedDb: m{
|
||||
"test_kv": []m{
|
||||
m{"id": int64(1), "key": "apple", "parent_id": nil, "sequence": nil, "value": nil},
|
||||
m{"id": int64(2), "key": "banana", "parent_id": int64(1), "sequence": nil, "value": nil},
|
||||
m{"id": int64(3), "key": "pear", "parent_id": int64(1), "sequence": nil, "value": nil},
|
||||
m{"id": int64(4), "key": "key1", "parent_id": int64(1), "sequence": nil, "value": "val1"},
|
||||
m{"id": int64(5), "key": "key2", "parent_id": int64(1), "sequence": nil, "value": "val2"},
|
||||
},
|
||||
},
|
||||
},
|
||||
{
|
||||
name: "bucket sequence",
|
||||
test: testBucketSequence,
|
||||
expectedDb: m{
|
||||
"test_kv": []m{
|
||||
m{"id": int64(2), "key": "banana", "parent_id": int64(1), "sequence": nil, "value": nil},
|
||||
m{"id": int64(1), "key": "apple", "parent_id": nil, "sequence": int64(4), "value": nil},
|
||||
},
|
||||
},
|
||||
},
|
||||
{
|
||||
name: "key clash",
|
||||
test: testKeyClash,
|
||||
expectedDb: m{
|
||||
"test_kv": []m{
|
||||
m{"id": int64(1), "key": "apple", "parent_id": nil, "sequence": nil, "value": nil},
|
||||
m{"id": int64(2), "key": "key", "parent_id": int64(1), "sequence": nil, "value": "val"},
|
||||
m{"id": int64(3), "key": "banana", "parent_id": int64(1), "sequence": nil, "value": nil},
|
||||
},
|
||||
},
|
||||
},
|
||||
{
|
||||
name: "bucket create delete",
|
||||
test: testBucketCreateDelete,
|
||||
expectedDb: m{
|
||||
"test_kv": []m{
|
||||
m{"id": int64(1), "key": "apple", "parent_id": nil, "sequence": nil, "value": nil},
|
||||
m{"id": int64(3), "key": "banana", "parent_id": int64(1), "sequence": nil, "value": "value"},
|
||||
},
|
||||
},
|
||||
},
|
||||
{
|
||||
name: "tx manual commit",
|
||||
test: testTxManualCommit,
|
||||
expectedDb: m{
|
||||
"test_kv": []m{
|
||||
m{"id": int64(1), "key": "apple", "parent_id": nil, "sequence": nil, "value": nil},
|
||||
m{"id": int64(2), "key": "testKey", "parent_id": int64(1), "sequence": nil, "value": "testVal"},
|
||||
},
|
||||
},
|
||||
},
|
||||
{
|
||||
name: "tx rollback",
|
||||
test: testTxRollback,
|
||||
expectedDb: m{
|
||||
"test_kv": []m(nil),
|
||||
},
|
||||
},
|
||||
{
|
||||
name: "top level bucket creation",
|
||||
test: testTopLevelBucketCreation,
|
||||
},
|
||||
{
|
||||
name: "bucket operation",
|
||||
test: testBucketOperations,
|
||||
},
|
||||
{
|
||||
name: "sub bucket sequence",
|
||||
test: testSubBucketSequence,
|
||||
},
|
||||
}
|
||||
|
||||
for _, test := range tests {
|
||||
t.Run(test.name, func(t *testing.T) {
|
||||
test.test(t, f.NewBackend())
|
||||
|
||||
if test.expectedDb != nil {
|
||||
dump := f.Dump()
|
||||
require.Equal(t, test.expectedDb, dump)
|
||||
}
|
||||
})
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user