forked from TrueCloudLab/frostfs-node
Initial commit
Initial public review release v0.10.0
This commit is contained in:
commit
dadfd90dcd
276 changed files with 46331 additions and 0 deletions
95
lib/buckets/boltdb/methods_test.go
Normal file
95
lib/buckets/boltdb/methods_test.go
Normal file
|
@ -0,0 +1,95 @@
|
|||
package boltdb
|
||||
|
||||
import (
|
||||
"encoding/binary"
|
||||
"io/ioutil"
|
||||
"os"
|
||||
"strings"
|
||||
"testing"
|
||||
"time"
|
||||
|
||||
"github.com/nspcc-dev/neofs-node/lib/core"
|
||||
"github.com/pkg/errors"
|
||||
"github.com/spf13/viper"
|
||||
"github.com/stretchr/testify/require"
|
||||
)
|
||||
|
||||
var config = strings.NewReader(`
|
||||
storage:
|
||||
test_bucket:
|
||||
bucket: boltdb
|
||||
path: ./temp/storage/test_bucket
|
||||
perm: 0777
|
||||
`)
|
||||
|
||||
func TestBucket(t *testing.T) {
|
||||
file, err := ioutil.TempFile("", "test_bolt_db")
|
||||
require.NoError(t, err)
|
||||
require.NoError(t, file.Close())
|
||||
|
||||
v := viper.New()
|
||||
require.NoError(t, v.ReadConfig(config))
|
||||
|
||||
// -- //
|
||||
_, err = NewOptions("storage.test_bucket", v)
|
||||
require.EqualError(t, err, errEmptyPath.Error())
|
||||
|
||||
v.SetDefault("storage.test_bucket.path", file.Name())
|
||||
v.SetDefault("storage.test_bucket.timeout", time.Millisecond*100)
|
||||
// -- //
|
||||
|
||||
opts, err := NewOptions("storage.test_bucket", v)
|
||||
require.NoError(t, err)
|
||||
|
||||
db, err := NewBucket(&opts)
|
||||
require.NoError(t, err)
|
||||
|
||||
require.NotPanics(t, func() { db.Size() })
|
||||
|
||||
var (
|
||||
count = uint64(10)
|
||||
expected = []byte("test")
|
||||
)
|
||||
|
||||
for i := uint64(0); i < count; i++ {
|
||||
key := make([]byte, 8)
|
||||
binary.BigEndian.PutUint64(key, i)
|
||||
|
||||
require.False(t, db.Has(key))
|
||||
|
||||
val, err := db.Get(key)
|
||||
require.EqualError(t, errors.Cause(err), core.ErrNotFound.Error())
|
||||
require.Empty(t, val)
|
||||
|
||||
require.NoError(t, db.Set(key, expected))
|
||||
|
||||
require.True(t, db.Has(key))
|
||||
|
||||
val, err = db.Get(key)
|
||||
require.NoError(t, err)
|
||||
require.Equal(t, expected, val)
|
||||
|
||||
keys, err := db.List()
|
||||
require.NoError(t, err)
|
||||
require.Len(t, keys, 1)
|
||||
require.Equal(t, key, keys[0])
|
||||
|
||||
require.EqualError(t, db.Iterate(nil), core.ErrNilFilterHandler.Error())
|
||||
|
||||
items, err := core.ListBucketItems(db, func(_, _ []byte) bool { return true })
|
||||
require.NoError(t, err)
|
||||
require.Len(t, items, 1)
|
||||
require.Equal(t, key, items[0].Key)
|
||||
require.Equal(t, val, items[0].Val)
|
||||
|
||||
require.NoError(t, db.Del(key))
|
||||
require.False(t, db.Has(key))
|
||||
|
||||
val, err = db.Get(key)
|
||||
require.EqualError(t, errors.Cause(err), core.ErrNotFound.Error())
|
||||
require.Empty(t, val)
|
||||
}
|
||||
|
||||
require.NoError(t, db.Close())
|
||||
require.NoError(t, os.RemoveAll(file.Name()))
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue