storage: add boltDB unit tests
This commit is contained in:
parent
bfe5fd538e
commit
2cabd5b274
1 changed files with 89 additions and 0 deletions
89
pkg/core/storage/boltdb_store_test.go
Normal file
89
pkg/core/storage/boltdb_store_test.go
Normal file
|
@ -0,0 +1,89 @@
|
||||||
|
package storage
|
||||||
|
|
||||||
|
import (
|
||||||
|
"context"
|
||||||
|
"io/ioutil"
|
||||||
|
"os"
|
||||||
|
"reflect"
|
||||||
|
"testing"
|
||||||
|
|
||||||
|
"github.com/stretchr/testify/assert"
|
||||||
|
"github.com/stretchr/testify/require"
|
||||||
|
)
|
||||||
|
|
||||||
|
func TestBoltDBBatch(t *testing.T) {
|
||||||
|
boltDB := BoltDBStore{}
|
||||||
|
want := &BoltDBBatch{mem: map[*[]byte][]byte{}}
|
||||||
|
if got := boltDB.Batch(); !reflect.DeepEqual(got, want) {
|
||||||
|
t.Errorf("BoltDB Batch() = %v, want %v", got, want)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func TestBoltDBBatch_Len(t *testing.T) {
|
||||||
|
batch := &BoltDBBatch{mem: map[*[]byte][]byte{}}
|
||||||
|
want := len(map[*[]byte][]byte{})
|
||||||
|
assert.Equal(t, want, batch.Len())
|
||||||
|
}
|
||||||
|
|
||||||
|
func TestBoltDBBatch_PutBatchAndGet(t *testing.T) {
|
||||||
|
key := []byte("foo")
|
||||||
|
value := []byte("bar")
|
||||||
|
batch := &BoltDBBatch{mem: map[*[]byte][]byte{&key: value}}
|
||||||
|
|
||||||
|
boltDBStore := openStore(t)
|
||||||
|
|
||||||
|
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(context.Background(), BoltDBOptions{FilePath: testFileName})
|
||||||
|
require.NoError(t, err)
|
||||||
|
return boltDBStore
|
||||||
|
}
|
Loading…
Reference in a new issue