1
0
Fork 0
mirror of https://github.com/anyproto/any-sync.git synced 2025-06-07 21:47:02 +09:00
any-sync/client/filestorage/badgerfilestore/badgerfilestore_test.go
2022-12-21 21:23:47 +03:00

101 lines
2.3 KiB
Go

package badgerfilestore
import (
"context"
"github.com/dgraph-io/badger/v3"
blocks "github.com/ipfs/go-block-format"
"github.com/ipfs/go-cid"
"github.com/stretchr/testify/assert"
"github.com/stretchr/testify/require"
"os"
"testing"
"time"
)
var ctx = context.Background()
func TestBadgerStorage_Add(t *testing.T) {
tmpDir, err := os.MkdirTemp("", "badgerfilestore_*")
require.NoError(t, err)
defer os.RemoveAll(tmpDir)
db, err := badger.Open(badger.DefaultOptions(tmpDir))
require.NoError(t, err)
defer db.Close()
s := NewBadgerStorage(db)
bs := []blocks.Block{
blocks.NewBlock([]byte("1")),
blocks.NewBlock([]byte("2")),
blocks.NewBlock([]byte("3")),
}
assert.NoError(t, s.Add(ctx, bs))
}
func TestBadgerStorage_Get(t *testing.T) {
tmpDir, err := os.MkdirTemp("", "badgerfilestore_*")
require.NoError(t, err)
defer os.RemoveAll(tmpDir)
db, err := badger.Open(badger.DefaultOptions(tmpDir))
require.NoError(t, err)
defer db.Close()
s := NewBadgerStorage(db)
bs := []blocks.Block{
blocks.NewBlock([]byte("1")),
blocks.NewBlock([]byte("2")),
blocks.NewBlock([]byte("3")),
}
require.NoError(t, s.Add(ctx, bs))
cids := make([]cid.Cid, 0, len(bs))
for _, b := range bs {
cids = append(cids, b.Cid())
}
cids = append(cids, blocks.NewBlock([]byte("4")).Cid())
b, err := s.Get(ctx, bs[0].Cid())
require.NoError(t, err)
assert.Equal(t, bs[0].RawData(), b.RawData())
ecids, err := s.ExistsCids(ctx, cids)
require.NoError(t, err)
assert.Len(t, ecids, 3)
}
func TestBadgerStorage_GetMany(t *testing.T) {
tmpDir, err := os.MkdirTemp("", "badgerfilestore_*")
require.NoError(t, err)
defer os.RemoveAll(tmpDir)
db, err := badger.Open(badger.DefaultOptions(tmpDir))
require.NoError(t, err)
defer db.Close()
s := NewBadgerStorage(db)
bs := []blocks.Block{
blocks.NewBlock([]byte("1")),
blocks.NewBlock([]byte("2")),
blocks.NewBlock([]byte("3")),
}
require.NoError(t, s.Add(ctx, bs))
cids := make([]cid.Cid, 0, len(bs))
for _, b := range bs {
cids = append(cids, b.Cid())
}
res := s.GetMany(ctx, cids)
var resB []blocks.Block
for i := 0; i < len(bs); i++ {
select {
case b := <-res:
resB = append(resB, b)
case <-time.After(time.Second):
t.Error("timeout")
return
}
}
assert.Len(t, resB, 3)
_, ok := <-res
assert.False(t, ok)
}