|
|
|
@ -4,11 +4,13 @@ import (
|
|
|
|
|
"crypto/sha256"
|
|
|
|
|
"io/ioutil"
|
|
|
|
|
"os"
|
|
|
|
|
"path/filepath"
|
|
|
|
|
"reflect"
|
|
|
|
|
"testing"
|
|
|
|
|
"time"
|
|
|
|
|
|
|
|
|
|
"github.com/btcsuite/btcd/chaincfg"
|
|
|
|
|
"github.com/coreos/bbolt"
|
|
|
|
|
"github.com/lightninglabs/loop/test"
|
|
|
|
|
"github.com/lightningnetwork/lnd/lntypes"
|
|
|
|
|
)
|
|
|
|
@ -293,3 +295,72 @@ func TestLoopInStore(t *testing.T) {
|
|
|
|
|
}
|
|
|
|
|
checkSwap(StateFailInsufficientValue)
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// TestVersionNew tests that a new database is initialized with the current
|
|
|
|
|
// version.
|
|
|
|
|
func TestVersionNew(t *testing.T) {
|
|
|
|
|
tempDirName, err := ioutil.TempDir("", "clientstore")
|
|
|
|
|
if err != nil {
|
|
|
|
|
t.Fatal(err)
|
|
|
|
|
}
|
|
|
|
|
defer os.RemoveAll(tempDirName)
|
|
|
|
|
|
|
|
|
|
store, err := NewBoltSwapStore(tempDirName, &chaincfg.MainNetParams)
|
|
|
|
|
if err != nil {
|
|
|
|
|
t.Fatal(err)
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
ver, err := getDBVersion(store.db)
|
|
|
|
|
if err != nil {
|
|
|
|
|
t.Fatal(err)
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if ver != latestDBVersion {
|
|
|
|
|
t.Fatal("db not at latest version")
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// TestVersionNew tests that an existing version zero database is migrated to
|
|
|
|
|
// the latest version.
|
|
|
|
|
func TestVersionMigrated(t *testing.T) {
|
|
|
|
|
tempDirName, err := ioutil.TempDir("", "clientstore")
|
|
|
|
|
if err != nil {
|
|
|
|
|
t.Fatal(err)
|
|
|
|
|
}
|
|
|
|
|
defer os.RemoveAll(tempDirName)
|
|
|
|
|
|
|
|
|
|
createVersionZeroDb(t, tempDirName)
|
|
|
|
|
|
|
|
|
|
store, err := NewBoltSwapStore(tempDirName, &chaincfg.MainNetParams)
|
|
|
|
|
if err != nil {
|
|
|
|
|
t.Fatal(err)
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
ver, err := getDBVersion(store.db)
|
|
|
|
|
if err != nil {
|
|
|
|
|
t.Fatal(err)
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if ver != latestDBVersion {
|
|
|
|
|
t.Fatal("db not at latest version")
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// createVersionZeroDb creates a database with an empty meta bucket. In version
|
|
|
|
|
// zero, there was no version key specified yet.
|
|
|
|
|
func createVersionZeroDb(t *testing.T, dbPath string) {
|
|
|
|
|
path := filepath.Join(dbPath, dbFileName)
|
|
|
|
|
bdb, err := bbolt.Open(path, 0600, nil)
|
|
|
|
|
if err != nil {
|
|
|
|
|
t.Fatal(err)
|
|
|
|
|
}
|
|
|
|
|
defer bdb.Close()
|
|
|
|
|
|
|
|
|
|
err = bdb.Update(func(tx *bbolt.Tx) error {
|
|
|
|
|
_, err := tx.CreateBucket(metaBucketKey)
|
|
|
|
|
return err
|
|
|
|
|
})
|
|
|
|
|
if err != nil {
|
|
|
|
|
t.Fatal(err)
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|