tendermint/db/backend_test.go

81 lines
1.9 KiB
Go
Raw Normal View History

package db
import (
"fmt"
2017-12-12 15:42:47 -08:00
"os"
"testing"
2017-12-12 15:42:47 -08:00
"github.com/stretchr/testify/assert"
"github.com/stretchr/testify/require"
cmn "github.com/tendermint/tmlibs/common"
)
2017-12-12 15:42:47 -08:00
func testBackendGetSetDelete(t *testing.T, backend string) {
// Default
dir, dirname := cmn.Tempdir(fmt.Sprintf("test_backend_%s_", backend))
defer dir.Close()
db := NewDB("testdb", backend, dirname)
2017-12-12 16:22:08 -08:00
key := []byte("abc")
require.Nil(t, db.Get(key))
// Set empty ("")
2017-12-12 16:22:08 -08:00
db.Set(key, []byte(""))
require.NotNil(t, db.Get(key))
require.Empty(t, db.Get(key))
// Set empty (nil)
2017-12-12 16:22:08 -08:00
db.Set(key, nil)
require.NotNil(t, db.Get(key))
require.Empty(t, db.Get(key))
// Delete
2017-12-12 16:22:08 -08:00
db.Delete(key)
require.Nil(t, db.Get(key))
}
2017-12-12 15:42:47 -08:00
func TestBackendsGetSetDelete(t *testing.T) {
for dbType, _ := range backends {
testBackendGetSetDelete(t, dbType)
}
}
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 {
name := cmn.Fmt("test_%x", cmn.RandStr(12))
db, err := creator(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) })
db.Close()
2017-12-12 16:08:22 -08:00
err = os.RemoveAll(name + ".db")
assert.Nil(t, err)
2017-12-12 15:42:47 -08:00
}
}
2017-12-12 16:08:22 -08:00
func TestGoLevelDBBackendStr(t *testing.T) {
2017-12-12 15:42:47 -08:00
name := cmn.Fmt("test_%x", cmn.RandStr(12))
db := NewDB(name, LevelDBBackendStr, "")
2017-12-12 16:08:22 -08:00
defer os.RemoveAll(name + ".db")
if _, ok := backends[CLevelDBBackendStr]; !ok {
_, ok := db.(*GoLevelDB)
assert.True(t, ok)
}
}