neoneo-go/pkg/core/storage/boltdb_store_test.go

80 lines
1.7 KiB
Go
Raw Normal View History

2019-09-14 07:29:08 +00:00
package storage
import (
"io/ioutil"
"os"
"testing"
"github.com/stretchr/testify/assert"
"github.com/stretchr/testify/require"
)
func TestBoltDBBatch_PutBatchAndGet(t *testing.T) {
key := []byte("foo")
keycopy := make([]byte, len(key))
copy(keycopy, key)
2019-09-14 07:29:08 +00:00
value := []byte("bar")
valuecopy := make([]byte, len(value))
copy(valuecopy, value)
2019-09-14 07:29:08 +00:00
boltDBStore := openStore(t)
batch := boltDBStore.Batch()
2019-09-14 07:29:08 +00:00
batch.Put(keycopy, valuecopy)
copy(valuecopy, key)
copy(keycopy, value)
2019-09-14 07:29:08 +00:00
errPut := boltDBStore.PutBatch(batch)
assert.Nil(t, errPut, "Error while PutBatch")
result, err := boltDBStore.Get(key)
assert.Nil(t, err)
assert.Equal(t, value, result)
require.NoError(t, boltDBStore.Close())
}
func TestBoltDBBatch_PutAndGet(t *testing.T) {
key := []byte("foo")
value := []byte("bar")
boltDBStore := openStore(t)
errPut := boltDBStore.Put(key, value)
assert.Nil(t, errPut, "Error while Put")
result, err := boltDBStore.Get(key)
assert.Nil(t, err)
assert.Equal(t, value, result)
require.NoError(t, boltDBStore.Close())
}
func TestBoltDBStore_Seek(t *testing.T) {
key := []byte("foo")
value := []byte("bar")
boltDBStore := openStore(t)
errPut := boltDBStore.Put(key, value)
assert.Nil(t, errPut, "Error while Put")
boltDBStore.Seek(key, func(k, v []byte) {
assert.Equal(t, value, v)
})
require.NoError(t, boltDBStore.Close())
}
func openStore(t *testing.T) *BoltDBStore {
testFileName := "test_bolt_db"
file, err := ioutil.TempFile("", testFileName)
defer func() {
err := os.RemoveAll(testFileName)
require.NoError(t, err)
}()
require.NoError(t, err)
require.NoError(t, file.Close())
boltDBStore, err := NewBoltDBStore(BoltDBOptions{FilePath: testFileName})
2019-09-14 07:29:08 +00:00
require.NoError(t, err)
return boltDBStore
}