Merge pull request #140 from tendermint/sdk2-hashers-and-simple-map
Sdk2 hashers and simple map
This commit is contained in:
commit
95b53c80e1
|
@ -15,7 +15,7 @@ func cleanupDBDir(dir, name string) {
|
||||||
os.RemoveAll(filepath.Join(dir, name) + ".db")
|
os.RemoveAll(filepath.Join(dir, name) + ".db")
|
||||||
}
|
}
|
||||||
|
|
||||||
func testBackendGetSetDelete(t *testing.T, backend string) {
|
func testBackendGetSetDelete(t *testing.T, backend dbBackendType) {
|
||||||
// Default
|
// Default
|
||||||
dir, dirname := cmn.Tempdir(fmt.Sprintf("test_backend_%s_", backend))
|
dir, dirname := cmn.Tempdir(fmt.Sprintf("test_backend_%s_", backend))
|
||||||
defer dir.Close()
|
defer dir.Close()
|
||||||
|
@ -141,9 +141,9 @@ func TestBackendsNilKeys(t *testing.T) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func TestGoLevelDBBackendStr(t *testing.T) {
|
func TestGoLevelDBBackend(t *testing.T) {
|
||||||
name := cmn.Fmt("test_%x", cmn.RandStr(12))
|
name := cmn.Fmt("test_%x", cmn.RandStr(12))
|
||||||
db := NewDB(name, GoLevelDBBackendStr, "")
|
db := NewDB(name, GoLevelDBBackend, "")
|
||||||
defer cleanupDBDir("", name)
|
defer cleanupDBDir("", name)
|
||||||
|
|
||||||
_, ok := db.(*GoLevelDB)
|
_, ok := db.(*GoLevelDB)
|
||||||
|
|
|
@ -14,8 +14,8 @@ func init() {
|
||||||
dbCreator := func(name string, dir string) (DB, error) {
|
dbCreator := func(name string, dir string) (DB, error) {
|
||||||
return NewCLevelDB(name, dir)
|
return NewCLevelDB(name, dir)
|
||||||
}
|
}
|
||||||
registerDBCreator(LevelDBBackendStr, dbCreator, true)
|
registerDBCreator(LevelDBBackend, dbCreator, true)
|
||||||
registerDBCreator(CLevelDBBackendStr, dbCreator, false)
|
registerDBCreator(CLevelDBBackend, dbCreator, false)
|
||||||
}
|
}
|
||||||
|
|
||||||
var _ DB = (*CLevelDB)(nil)
|
var _ DB = (*CLevelDB)(nil)
|
||||||
|
|
|
@ -86,9 +86,9 @@ func bytes2Int64(buf []byte) int64 {
|
||||||
}
|
}
|
||||||
*/
|
*/
|
||||||
|
|
||||||
func TestCLevelDBBackendStr(t *testing.T) {
|
func TestCLevelDBBackend(t *testing.T) {
|
||||||
name := cmn.Fmt("test_%x", cmn.RandStr(12))
|
name := cmn.Fmt("test_%x", cmn.RandStr(12))
|
||||||
db := NewDB(name, LevelDBBackendStr, "")
|
db := NewDB(name, LevelDBBackend, "")
|
||||||
defer cleanupDBDir("", name)
|
defer cleanupDBDir("", name)
|
||||||
|
|
||||||
_, ok := db.(*CLevelDB)
|
_, ok := db.(*CLevelDB)
|
||||||
|
|
|
@ -45,7 +45,7 @@ func checkValuePanics(t *testing.T, itr Iterator) {
|
||||||
assert.Panics(t, func() { itr.Key() }, "checkValuePanics expected panic but didn't")
|
assert.Panics(t, func() { itr.Key() }, "checkValuePanics expected panic but didn't")
|
||||||
}
|
}
|
||||||
|
|
||||||
func newTempDB(t *testing.T, backend string) (db DB) {
|
func newTempDB(t *testing.T, backend dbBackendType) (db DB) {
|
||||||
dir, dirname := cmn.Tempdir("test_go_iterator")
|
dir, dirname := cmn.Tempdir("test_go_iterator")
|
||||||
db = NewDB("testdb", backend, dirname)
|
db = NewDB("testdb", backend, dirname)
|
||||||
dir.Close()
|
dir.Close()
|
||||||
|
|
18
db/db.go
18
db/db.go
|
@ -5,19 +5,21 @@ import "fmt"
|
||||||
//----------------------------------------
|
//----------------------------------------
|
||||||
// Main entry
|
// Main entry
|
||||||
|
|
||||||
|
type dbBackendType string
|
||||||
|
|
||||||
const (
|
const (
|
||||||
LevelDBBackendStr = "leveldb" // legacy, defaults to goleveldb unless +gcc
|
LevelDBBackend dbBackendType = "leveldb" // legacy, defaults to goleveldb unless +gcc
|
||||||
CLevelDBBackendStr = "cleveldb"
|
CLevelDBBackend dbBackendType = "cleveldb"
|
||||||
GoLevelDBBackendStr = "goleveldb"
|
GoLevelDBBackend dbBackendType = "goleveldb"
|
||||||
MemDBBackendStr = "memdb"
|
MemDBBackend dbBackendType = "memdb"
|
||||||
FSDBBackendStr = "fsdb" // using the filesystem naively
|
FSDBBackend dbBackendType = "fsdb" // using the filesystem naively
|
||||||
)
|
)
|
||||||
|
|
||||||
type dbCreator func(name string, dir string) (DB, error)
|
type dbCreator func(name string, dir string) (DB, error)
|
||||||
|
|
||||||
var backends = map[string]dbCreator{}
|
var backends = map[dbBackendType]dbCreator{}
|
||||||
|
|
||||||
func registerDBCreator(backend string, creator dbCreator, force bool) {
|
func registerDBCreator(backend dbBackendType, creator dbCreator, force bool) {
|
||||||
_, ok := backends[backend]
|
_, ok := backends[backend]
|
||||||
if !force && ok {
|
if !force && ok {
|
||||||
return
|
return
|
||||||
|
@ -25,7 +27,7 @@ func registerDBCreator(backend string, creator dbCreator, force bool) {
|
||||||
backends[backend] = creator
|
backends[backend] = creator
|
||||||
}
|
}
|
||||||
|
|
||||||
func NewDB(name string, backend string, dir string) DB {
|
func NewDB(name string, backend dbBackendType, dir string) DB {
|
||||||
db, err := backends[backend](name, dir)
|
db, err := backends[backend](name, dir)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
panic(fmt.Sprintf("Error initializing DB: %v", err))
|
panic(fmt.Sprintf("Error initializing DB: %v", err))
|
||||||
|
|
|
@ -19,7 +19,7 @@ const (
|
||||||
)
|
)
|
||||||
|
|
||||||
func init() {
|
func init() {
|
||||||
registerDBCreator(FSDBBackendStr, func(name string, dir string) (DB, error) {
|
registerDBCreator(FSDBBackend, func(name string, dir string) (DB, error) {
|
||||||
dbPath := filepath.Join(dir, name+".db")
|
dbPath := filepath.Join(dir, name+".db")
|
||||||
return NewFSDB(dbPath), nil
|
return NewFSDB(dbPath), nil
|
||||||
}, false)
|
}, false)
|
||||||
|
|
|
@ -17,8 +17,8 @@ func init() {
|
||||||
dbCreator := func(name string, dir string) (DB, error) {
|
dbCreator := func(name string, dir string) (DB, error) {
|
||||||
return NewGoLevelDB(name, dir)
|
return NewGoLevelDB(name, dir)
|
||||||
}
|
}
|
||||||
registerDBCreator(LevelDBBackendStr, dbCreator, false)
|
registerDBCreator(LevelDBBackend, dbCreator, false)
|
||||||
registerDBCreator(GoLevelDBBackendStr, dbCreator, false)
|
registerDBCreator(GoLevelDBBackend, dbCreator, false)
|
||||||
}
|
}
|
||||||
|
|
||||||
var _ DB = (*GoLevelDB)(nil)
|
var _ DB = (*GoLevelDB)(nil)
|
||||||
|
|
|
@ -7,7 +7,7 @@ import (
|
||||||
)
|
)
|
||||||
|
|
||||||
func init() {
|
func init() {
|
||||||
registerDBCreator(MemDBBackendStr, func(name string, dir string) (DB, error) {
|
registerDBCreator(MemDBBackend, func(name string, dir string) (DB, error) {
|
||||||
return NewMemDB(), nil
|
return NewMemDB(), nil
|
||||||
}, false)
|
}, false)
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue