Merge pull request #56 from tendermint/memdb-fix-close
db: fix MemDB.Close
This commit is contained in:
commit
a55ec427bd
|
@ -52,9 +52,11 @@ func (db *MemDB) DeleteSync(key []byte) {
|
|||
}
|
||||
|
||||
func (db *MemDB) Close() {
|
||||
db.mtx.Lock()
|
||||
defer db.mtx.Unlock()
|
||||
db = nil
|
||||
// Close is a noop since for an in-memory
|
||||
// database, we don't have a destination
|
||||
// to flush contents to nor do we want
|
||||
// any data loss on invoking Close()
|
||||
// See the discussion in https://github.com/tendermint/tmlibs/pull/56
|
||||
}
|
||||
|
||||
func (db *MemDB) Print() {
|
||||
|
|
|
@ -4,6 +4,7 @@ import (
|
|||
"testing"
|
||||
|
||||
"github.com/stretchr/testify/assert"
|
||||
"github.com/stretchr/testify/require"
|
||||
)
|
||||
|
||||
func TestMemDbIterator(t *testing.T) {
|
||||
|
@ -26,3 +27,22 @@ func TestMemDbIterator(t *testing.T) {
|
|||
}
|
||||
assert.Equal(t, i, len(db.db), "iterator didnt cover whole db")
|
||||
}
|
||||
|
||||
func TestMemDBClose(t *testing.T) {
|
||||
db := NewMemDB()
|
||||
copyDB := func(orig map[string][]byte) map[string][]byte {
|
||||
copy := make(map[string][]byte)
|
||||
for k, v := range orig {
|
||||
copy[k] = v
|
||||
}
|
||||
return copy
|
||||
}
|
||||
k, v := []byte("foo"), []byte("bar")
|
||||
db.Set(k, v)
|
||||
require.Equal(t, db.Get(k), v, "expecting a successful get")
|
||||
copyBefore := copyDB(db.db)
|
||||
db.Close()
|
||||
require.Equal(t, db.Get(k), v, "Close is a noop, expecting a successful get")
|
||||
copyAfter := copyDB(db.db)
|
||||
require.Equal(t, copyBefore, copyAfter, "Close is a noop and shouldn't modify any internal data")
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue