forked from TrueCloudLab/frostfs-node
82 lines
2 KiB
Go
82 lines
2 KiB
Go
package writecachebitcask
|
|
|
|
import (
|
|
"context"
|
|
"testing"
|
|
|
|
"git.frostfs.info/TrueCloudLab/frostfs-node/pkg/local_object_storage/blobstor/common"
|
|
"git.frostfs.info/TrueCloudLab/frostfs-node/pkg/local_object_storage/blobstor/teststore"
|
|
"git.frostfs.info/TrueCloudLab/frostfs-node/pkg/local_object_storage/internal/testutil"
|
|
meta "git.frostfs.info/TrueCloudLab/frostfs-node/pkg/local_object_storage/metabase"
|
|
"git.frostfs.info/TrueCloudLab/frostfs-sdk-go/client"
|
|
oid "git.frostfs.info/TrueCloudLab/frostfs-sdk-go/object/id"
|
|
"github.com/stretchr/testify/require"
|
|
)
|
|
|
|
func TestAPI(t *testing.T) {
|
|
ctx := context.Background()
|
|
|
|
bs := teststore.New(
|
|
teststore.WithPut(func(pp common.PutPrm) (common.PutRes, error) { return common.PutRes{}, nil }),
|
|
)
|
|
|
|
c := New(
|
|
WithPath(t.TempDir()),
|
|
WithBlobstor(bs),
|
|
WithMetabase(testMetabase{}),
|
|
)
|
|
|
|
require.NoError(t, c.Open(false))
|
|
require.NoError(t, c.Init())
|
|
|
|
obj := testutil.GenerateObject()
|
|
addr := testutil.AddressFromObject(t, obj)
|
|
data, err := obj.Marshal()
|
|
require.NoError(t, err)
|
|
|
|
// Get nonexistent object
|
|
{
|
|
_, gotErr := c.Get(ctx, oid.Address{})
|
|
require.True(t, client.IsErrObjectNotFound(gotErr))
|
|
}
|
|
|
|
// Put an object
|
|
{
|
|
_, err := c.Put(ctx, common.PutPrm{
|
|
Address: addr,
|
|
Object: obj,
|
|
RawData: data,
|
|
})
|
|
|
|
require.NoError(t, err)
|
|
}
|
|
|
|
// Get the object previously put
|
|
{
|
|
gotObj, err := c.Get(ctx, addr)
|
|
require.NoError(t, err)
|
|
gotData, err := gotObj.Marshal()
|
|
require.NoError(t, err)
|
|
require.Equal(t, data, gotData)
|
|
}
|
|
|
|
// Delete the object previously put
|
|
{
|
|
require.NoError(t, c.Delete(ctx, addr))
|
|
require.True(t, client.IsErrObjectNotFound(c.Delete(ctx, addr)))
|
|
}
|
|
|
|
// Get the object previously deleted
|
|
{
|
|
_, gotErr := c.Get(ctx, addr)
|
|
require.True(t, client.IsErrObjectNotFound(gotErr))
|
|
}
|
|
|
|
require.NoError(t, c.Close())
|
|
}
|
|
|
|
type testMetabase struct{}
|
|
|
|
func (testMetabase) UpdateStorageID(meta.UpdateStorageIDPrm) (meta.UpdateStorageIDRes, error) {
|
|
return meta.UpdateStorageIDRes{}, nil
|
|
}
|