mirror of
https://github.com/fluencelabs/tendermint
synced 2025-05-28 21:51:22 +00:00
fixes from @melekes
This commit is contained in:
parent
318982c0ba
commit
d4aeca8ce3
@ -3,7 +3,7 @@ package db
|
||||
import (
|
||||
"fmt"
|
||||
"os"
|
||||
"path"
|
||||
"path/filepath"
|
||||
"testing"
|
||||
|
||||
"github.com/stretchr/testify/assert"
|
||||
@ -12,7 +12,7 @@ import (
|
||||
)
|
||||
|
||||
func cleanupDBDir(dir, name string) {
|
||||
os.RemoveAll(path.Join(dir, name) + ".db")
|
||||
os.RemoveAll(filepath.Join(dir, name) + ".db")
|
||||
}
|
||||
|
||||
func testBackendGetSetDelete(t *testing.T, backend string) {
|
||||
@ -45,15 +45,6 @@ func TestBackendsGetSetDelete(t *testing.T) {
|
||||
}
|
||||
}
|
||||
|
||||
func assertPanics(t *testing.T, dbType, name string, fn func()) {
|
||||
defer func() {
|
||||
r := recover()
|
||||
assert.NotNil(t, r, cmn.Fmt("expecting %s.%s to panic", dbType, name))
|
||||
}()
|
||||
|
||||
fn()
|
||||
}
|
||||
|
||||
func TestBackendsNilKeys(t *testing.T) {
|
||||
// test all backends
|
||||
for dbType, creator := range backends {
|
||||
@ -62,12 +53,13 @@ func TestBackendsNilKeys(t *testing.T) {
|
||||
defer cleanupDBDir("", name)
|
||||
assert.Nil(t, err)
|
||||
|
||||
assertPanics(t, dbType, "get", func() { db.Get(nil) })
|
||||
assertPanics(t, dbType, "has", func() { db.Has(nil) })
|
||||
assertPanics(t, dbType, "set", func() { db.Set(nil, []byte("abc")) })
|
||||
assertPanics(t, dbType, "setsync", func() { db.SetSync(nil, []byte("abc")) })
|
||||
assertPanics(t, dbType, "delete", func() { db.Delete(nil) })
|
||||
assertPanics(t, dbType, "deletesync", func() { db.DeleteSync(nil) })
|
||||
panicMsg := "expecting %s.%s to panic"
|
||||
assert.Panics(t, func() { db.Get(nil) }, panicMsg, dbType, "get")
|
||||
assert.Panics(t, func() { db.Has(nil) }, panicMsg, dbType, "has")
|
||||
assert.Panics(t, func() { db.Set(nil, []byte("abc")) }, panicMsg, dbType, "set")
|
||||
assert.Panics(t, func() { db.SetSync(nil, []byte("abc")) }, panicMsg, dbType, "setsync")
|
||||
assert.Panics(t, func() { db.Delete(nil) }, panicMsg, dbType, "delete")
|
||||
assert.Panics(t, func() { db.DeleteSync(nil) }, panicMsg, dbType, "deletesync")
|
||||
|
||||
db.Close()
|
||||
}
|
||||
|
@ -4,7 +4,7 @@ package db
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"path"
|
||||
"path/filepath"
|
||||
|
||||
"github.com/jmhodges/levigo"
|
||||
)
|
||||
@ -27,7 +27,7 @@ type CLevelDB struct {
|
||||
}
|
||||
|
||||
func NewCLevelDB(name string, dir string) (*CLevelDB, error) {
|
||||
dbPath := path.Join(dir, name+".db")
|
||||
dbPath := filepath.Join(dir, name+".db")
|
||||
|
||||
opts := levigo.NewOptions()
|
||||
opts.SetCache(levigo.NewLRUCache(1 << 30))
|
||||
|
13
db/fsdb.go
13
db/fsdb.go
@ -5,7 +5,6 @@ import (
|
||||
"io/ioutil"
|
||||
"net/url"
|
||||
"os"
|
||||
"path"
|
||||
"path/filepath"
|
||||
"sort"
|
||||
"sync"
|
||||
@ -54,7 +53,7 @@ func (db *FSDB) Get(key []byte) []byte {
|
||||
if os.IsNotExist(err) {
|
||||
return nil
|
||||
} else if err != nil {
|
||||
panic(errors.Wrap(err, fmt.Sprintf("Getting key %s (0x%X)", string(key), key)))
|
||||
panic(errors.Wrapf(err, "Getting key %s (0x%X)", string(key), key))
|
||||
}
|
||||
return value
|
||||
}
|
||||
@ -69,7 +68,7 @@ func (db *FSDB) Has(key []byte) bool {
|
||||
if os.IsNotExist(err) {
|
||||
return false
|
||||
} else if err != nil {
|
||||
panic(errors.Wrap(err, fmt.Sprintf("Getting key %s (0x%X)", string(key), key)))
|
||||
panic(errors.Wrapf(err, "Getting key %s (0x%X)", string(key), key))
|
||||
}
|
||||
return true
|
||||
}
|
||||
@ -99,7 +98,7 @@ func (db *FSDB) SetNoLock(key []byte, value []byte) {
|
||||
path := db.nameToPath(key)
|
||||
err := write(path, value)
|
||||
if err != nil {
|
||||
panic(errors.Wrap(err, fmt.Sprintf("Setting key %s (0x%X)", string(key), key)))
|
||||
panic(errors.Wrapf(err, "Setting key %s (0x%X)", string(key), key))
|
||||
}
|
||||
}
|
||||
|
||||
@ -127,7 +126,7 @@ func (db *FSDB) DeleteNoLock(key []byte) {
|
||||
if os.IsNotExist(err) {
|
||||
return
|
||||
} else if err != nil {
|
||||
panic(errors.Wrap(err, fmt.Sprintf("Removing key %s (0x%X)", string(key), key)))
|
||||
panic(errors.Wrapf(err, "Removing key %s (0x%X)", string(key), key))
|
||||
}
|
||||
}
|
||||
|
||||
@ -172,7 +171,7 @@ func (db *FSDB) Iterator(start, end []byte) Iterator {
|
||||
// Not the best, but probably not a bottleneck depending.
|
||||
keys, err := list(db.dir, start, end)
|
||||
if err != nil {
|
||||
panic(errors.Wrap(err, fmt.Sprintf("Listing keys in %s", db.dir)))
|
||||
panic(errors.Wrapf(err, "Listing keys in %s", db.dir))
|
||||
}
|
||||
sort.Strings(keys)
|
||||
it.keys = keys
|
||||
@ -186,7 +185,7 @@ func (db *FSDB) ReverseIterator(start, end []byte) Iterator {
|
||||
|
||||
func (db *FSDB) nameToPath(name []byte) string {
|
||||
n := url.PathEscape(string(name))
|
||||
return path.Join(db.dir, n)
|
||||
return filepath.Join(db.dir, n)
|
||||
}
|
||||
|
||||
// Read some bytes to a file.
|
||||
|
@ -2,7 +2,7 @@ package db
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"path"
|
||||
"path/filepath"
|
||||
|
||||
"github.com/syndtr/goleveldb/leveldb"
|
||||
"github.com/syndtr/goleveldb/leveldb/errors"
|
||||
@ -27,7 +27,7 @@ type GoLevelDB struct {
|
||||
}
|
||||
|
||||
func NewGoLevelDB(name string, dir string) (*GoLevelDB, error) {
|
||||
dbPath := path.Join(dir, name+".db")
|
||||
dbPath := filepath.Join(dir, name+".db")
|
||||
db, err := leveldb.OpenFile(dbPath, nil)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
@ -170,13 +170,17 @@ func (mBatch *goLevelDBBatch) Write() {
|
||||
// Iterator
|
||||
|
||||
func (db *GoLevelDB) Iterator(start, end []byte) Iterator {
|
||||
itr := &goLevelDBIterator{
|
||||
source: db.db.NewIterator(nil, nil),
|
||||
itr := db.db.NewIterator(nil, nil)
|
||||
if len(start) > 0 {
|
||||
itr.Seek(start)
|
||||
} else {
|
||||
itr.First()
|
||||
}
|
||||
return &goLevelDBIterator{
|
||||
source: itr,
|
||||
start: start,
|
||||
end: end,
|
||||
}
|
||||
itr.source.Seek(start)
|
||||
return itr
|
||||
}
|
||||
|
||||
func (db *GoLevelDB) ReverseIterator(start, end []byte) Iterator {
|
||||
|
Loading…
x
Reference in New Issue
Block a user