Skip to content

Commit c510289

Browse files
authored
Merge pull request #1000 from ziggie1984/update-walletdb-for-wddrmgr
wtxmgr: update walletdb package and tests in wtxmgr
2 parents 1045730 + 0a7b113 commit c510289

File tree

6 files changed

+102
-22
lines changed

6 files changed

+102
-22
lines changed

wtxmgr/example_test.go

Lines changed: 9 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,6 @@ package wtxmgr
66

77
import (
88
"fmt"
9-
"testing"
109

1110
"github.com/btcsuite/btcd/chaincfg"
1211
"github.com/btcsuite/btcd/chaincfg/chainhash"
@@ -44,13 +43,13 @@ var exampleBlock100 = makeBlockMeta(100)
4443

4544
// This example demonstrates reporting the Store balance given an unmined and
4645
// mined transaction given 0, 1, and 6 block confirmations.
47-
func ExampleStore_Balance(t *testing.T) {
48-
s, db, teardown, err := testStore(t)
49-
defer teardown()
46+
func ExampleStore_Balance() {
47+
s, db, cleanup, err := exampleStore()
5048
if err != nil {
5149
fmt.Println(err)
5250
return
5351
}
52+
defer cleanup()
5453

5554
// Prints balances for 0 block confirmations, 1 confirmation, and 6
5655
// confirmations.
@@ -115,13 +114,13 @@ func ExampleStore_Balance(t *testing.T) {
115114
// 10 BTC, 10 BTC, 10 BTC
116115
}
117116

118-
func ExampleStore_Rollback(t *testing.T) {
119-
s, db, teardown, err := testStore(t)
120-
defer teardown()
117+
func ExampleStore_Rollback() {
118+
s, db, cleanup, err := exampleStore()
121119
if err != nil {
122120
fmt.Println(err)
123121
return
124122
}
123+
defer cleanup()
125124

126125
err = walletdb.Update(db, func(tx walletdb.ReadWriteTx) error {
127126
ns := tx.ReadWriteBucket(namespaceKey)
@@ -158,14 +157,14 @@ func ExampleStore_Rollback(t *testing.T) {
158157
// -1
159158
}
160159

161-
func Example_basicUsage(t *testing.T) {
160+
func Example_basicUsage() {
162161
// Open the database.
163-
db, dbTeardown, err := testDB(t)
164-
defer dbTeardown()
162+
db, cleanup, err := exampleDB()
165163
if err != nil {
166164
fmt.Println(err)
167165
return
168166
}
167+
defer cleanup()
169168

170169
// Open a read-write transaction to operate on the database.
171170
dbtx, err := db.BeginReadWriteTx()

wtxmgr/go.mod

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,17 +5,21 @@ require (
55
github.com/btcsuite/btcd/btcutil v1.1.0
66
github.com/btcsuite/btcd/chaincfg/chainhash v1.0.1
77
github.com/btcsuite/btclog v0.0.0-20170628155309-84c8d2346e9f
8-
github.com/btcsuite/btcwallet/walletdb v1.4.4
8+
github.com/btcsuite/btcwallet/walletdb v1.5.1
99
github.com/lightningnetwork/lnd/clock v1.0.1
10+
github.com/stretchr/testify v1.9.0
1011
)
1112

1213
require (
1314
github.com/btcsuite/btcd/btcec/v2 v2.1.3 // indirect
15+
github.com/davecgh/go-spew v1.1.1 // indirect
1416
github.com/decred/dcrd/crypto/blake256 v1.0.1 // indirect
1517
github.com/decred/dcrd/dcrec/secp256k1/v4 v4.3.0 // indirect
18+
github.com/pmezard/go-difflib v1.0.0 // indirect
1619
go.etcd.io/bbolt v1.3.11 // indirect
1720
golang.org/x/crypto v0.22.0 // indirect
1821
golang.org/x/sys v0.19.0 // indirect
22+
gopkg.in/yaml.v3 v3.0.1 // indirect
1923
)
2024

2125
go 1.22

wtxmgr/go.sum

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -14,8 +14,8 @@ github.com/btcsuite/btcd/chaincfg/chainhash v1.0.1/go.mod h1:7SFka0XMvUgj3hfZtyd
1414
github.com/btcsuite/btclog v0.0.0-20170628155309-84c8d2346e9f h1:bAs4lUbRJpnnkd9VhRV3jjAVU7DJVjMaK+IsvSeZvFo=
1515
github.com/btcsuite/btclog v0.0.0-20170628155309-84c8d2346e9f/go.mod h1:TdznJufoqS23FtqVCzL0ZqgP5MqXbb4fg/WgDys70nA=
1616
github.com/btcsuite/btcutil v0.0.0-20190425235716-9e5f4b9a998d/go.mod h1:+5NJ2+qvTyV9exUAL/rxXi3DcLg2Ts+ymUAY5y4NvMg=
17-
github.com/btcsuite/btcwallet/walletdb v1.4.4 h1:BDel6iT/ltYSIYKs0YbjwnEDi7xR3yzABIsQxN2F1L8=
18-
github.com/btcsuite/btcwallet/walletdb v1.4.4/go.mod h1:jk/hvpLFINF0C1kfTn0bfx2GbnFT+Nvnj6eblZALfjs=
17+
github.com/btcsuite/btcwallet/walletdb v1.5.1 h1:HgMhDNCrtEFPC+8q0ei5DQ5U9Tl4RCspA22DEKXlopI=
18+
github.com/btcsuite/btcwallet/walletdb v1.5.1/go.mod h1:jk/hvpLFINF0C1kfTn0bfx2GbnFT+Nvnj6eblZALfjs=
1919
github.com/btcsuite/go-socks v0.0.0-20170105172521-4720035b7bfd/go.mod h1:HHNXQzUsZCxOoE+CPiyCTO6x34Zs86zZUiwtpXoGdtg=
2020
github.com/btcsuite/goleveldb v0.0.0-20160330041536-7834afc9e8cd/go.mod h1:F+uVaaLLH7j4eDXPRvw78tMflu7Ie2bzYOH4Y8rRKBY=
2121
github.com/btcsuite/goleveldb v1.0.0/go.mod h1:QiK9vBlgftBg6rWQIj6wFzbPfRjiykIEhBH4obrXJ/I=
@@ -107,6 +107,7 @@ google.golang.org/protobuf v0.0.0-20200228230310-ab0ca4ff8a60/go.mod h1:cfTl7dwQ
107107
google.golang.org/protobuf v1.20.1-0.20200309200217-e05f789c0967/go.mod h1:A+miEFZTKqfCUM6K7xSMQL9OKL/b6hQv+e19PK+JZNE=
108108
google.golang.org/protobuf v1.21.0/go.mod h1:47Nbq4nVaFHyn7ilMalzfO3qCViNmqZ2kzikPIcrTAo=
109109
google.golang.org/protobuf v1.23.0/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU=
110+
gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405 h1:yhCVgyC4o1eVCa2tZl7eS0r+SDo693bJlVdllGtEeKM=
110111
gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
111112
gopkg.in/fsnotify.v1 v1.4.7/go.mod h1:Tz8NjZHkW78fSQdbUxIjBTcgA1z1m8ZHf0WmKUhAMys=
112113
gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7/go.mod h1:dt/ZhP58zS4L8KSrWDmTeBkI65Dw0HsyUHuEVlX15mw=

wtxmgr/migrations_test.go

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ import (
66
"testing"
77

88
"github.com/btcsuite/btcwallet/walletdb"
9+
"github.com/stretchr/testify/require"
910
)
1011

1112
// applyMigration is a helper function that allows us to assert the state of the
@@ -18,11 +19,14 @@ func applyMigration(t *testing.T,
1819
t.Helper()
1920

2021
// We'll start by setting up our transaction store backed by a database.
21-
store, db, teardown, err := testStore()
22+
store, db, err := testStore(t)
2223
if err != nil {
2324
t.Fatalf("unable to create test store: %v", err)
2425
}
25-
defer teardown()
26+
defer func() {
27+
err := db.Close()
28+
require.NoError(t, err)
29+
}()
2630

2731
// First, we'll run the beforeMigration closure, which contains the
2832
// database modifications/assertions needed before proceeding with the

wtxmgr/query_test.go

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -250,11 +250,14 @@ func TestStoreQueries(t *testing.T) {
250250
var tests []queryTest
251251

252252
// Create the store and test initial state.
253-
s, db, teardown, err := testStore()
254-
defer teardown()
253+
s, db, err := testStore(t)
255254
if err != nil {
256255
t.Fatal(err)
257256
}
257+
defer func() {
258+
db.Close()
259+
}()
260+
258261
lastState := newQueryState()
259262
tests = append(tests, queryTest{
260263
desc: "initial store",
@@ -528,11 +531,13 @@ func TestStoreQueries(t *testing.T) {
528531
func TestPreviousPkScripts(t *testing.T) {
529532
t.Parallel()
530533

531-
s, db, teardown, err := testStore()
532-
defer teardown()
534+
s, db, err := testStore(t)
533535
if err != nil {
534536
t.Fatal(err)
535537
}
538+
defer func() {
539+
db.Close()
540+
}()
536541

537542
// Invalid scripts but sufficient for testing.
538543
var (

wtxmgr/tx_test.go

Lines changed: 70 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ import (
88
"bytes"
99
"encoding/hex"
1010
"fmt"
11+
"os"
1112
"path/filepath"
1213
"testing"
1314
"time"
@@ -50,12 +51,35 @@ var (
5051
defaultDBTimeout = 10 * time.Second
5152
)
5253

53-
func testDB(t *testing.T) (walletdb.DB, error) {
54-
tmpDir := t.TempDir()
54+
// exampleDB creates a new database in a temporary directory.
55+
//
56+
// NOTE: This is used for golang example functions.
57+
func exampleDB() (walletdb.DB, func(), error) {
58+
tmpDir, err := os.MkdirTemp("", "example_*")
59+
if err != nil {
60+
return nil, nil, err
61+
}
62+
5563
db, err := walletdb.Create(
5664
"bdb", filepath.Join(tmpDir, "db"), true, defaultDBTimeout,
65+
false,
5766
)
58-
return db, err
67+
if err != nil {
68+
err = os.RemoveAll(tmpDir)
69+
70+
return nil, nil, err
71+
}
72+
73+
return db, func() {
74+
err := db.Close()
75+
if err != nil {
76+
panic(err)
77+
}
78+
err = os.RemoveAll(tmpDir)
79+
if err != nil {
80+
panic(err)
81+
}
82+
}, nil
5983
}
6084

6185
var namespaceKey = []byte("txstore")
@@ -65,6 +89,7 @@ func testStore(t *testing.T) (*Store, walletdb.DB, error) {
6589

6690
db, err := walletdb.Create(
6791
"bdb", filepath.Join(tmpDir, "db"), true, defaultDBTimeout,
92+
false,
6893
)
6994
if err != nil {
7095
return nil, nil, err
@@ -87,6 +112,48 @@ func testStore(t *testing.T) (*Store, walletdb.DB, error) {
87112
return s, db, err
88113
}
89114

115+
// exampleStore creates a new store and database in a temporary directory.
116+
//
117+
// NOTE: This is used for golang example functions.
118+
func exampleStore() (*Store, walletdb.DB, func(), error) {
119+
tmpDir, err := os.MkdirTemp("", "example_*")
120+
if err != nil {
121+
return nil, nil, nil, err
122+
}
123+
124+
db, err := walletdb.Create(
125+
"bdb", filepath.Join(tmpDir, "db"), true, defaultDBTimeout,
126+
false,
127+
)
128+
if err != nil {
129+
err = os.RemoveAll(tmpDir)
130+
131+
return nil, nil, nil, err
132+
}
133+
134+
var s *Store
135+
err = walletdb.Update(db, func(tx walletdb.ReadWriteTx) error {
136+
ns, err := tx.CreateTopLevelBucket(namespaceKey)
137+
if err != nil {
138+
return err
139+
}
140+
if err := Create(ns); err != nil {
141+
return err
142+
}
143+
s, err = Open(ns, &chaincfg.TestNet3Params)
144+
return err
145+
})
146+
if err != nil {
147+
os.RemoveAll(tmpDir)
148+
return nil, nil, nil, err
149+
}
150+
151+
return s, db, func() {
152+
db.Close()
153+
os.RemoveAll(tmpDir)
154+
}, nil
155+
}
156+
90157
func serializeTx(tx *btcutil.Tx) []byte {
91158
var buf bytes.Buffer
92159
err := tx.MsgTx().Serialize(&buf)

0 commit comments

Comments
 (0)