2023-03-03 09:33:08 +00:00
|
|
|
package memstore
|
|
|
|
|
|
|
|
import (
|
2023-03-13 11:37:35 +00:00
|
|
|
"context"
|
2023-03-03 09:33:08 +00:00
|
|
|
"testing"
|
|
|
|
|
|
|
|
"git.frostfs.info/TrueCloudLab/frostfs-node/pkg/core/object"
|
|
|
|
"git.frostfs.info/TrueCloudLab/frostfs-node/pkg/local_object_storage/blobstor/common"
|
|
|
|
"git.frostfs.info/TrueCloudLab/frostfs-node/pkg/local_object_storage/blobstor/internal/blobstortest"
|
|
|
|
"git.frostfs.info/TrueCloudLab/frostfs-node/pkg/util/logger"
|
|
|
|
objectSDK "git.frostfs.info/TrueCloudLab/frostfs-sdk-go/object"
|
|
|
|
"github.com/stretchr/testify/require"
|
|
|
|
"go.uber.org/zap/zaptest"
|
|
|
|
)
|
|
|
|
|
|
|
|
func TestSimpleLifecycle(t *testing.T) {
|
|
|
|
s := New(
|
|
|
|
WithRootPath("memstore"),
|
|
|
|
WithLogger(&logger.Logger{Logger: zaptest.NewLogger(t)}),
|
|
|
|
)
|
|
|
|
t.Cleanup(func() { _ = s.Close() })
|
|
|
|
require.NoError(t, s.Open(false))
|
|
|
|
require.NoError(t, s.Init())
|
|
|
|
|
|
|
|
obj := blobstortest.NewObject(1024)
|
|
|
|
addr := object.AddressOf(obj)
|
|
|
|
d, err := obj.Marshal()
|
|
|
|
require.NoError(t, err)
|
|
|
|
|
|
|
|
{
|
|
|
|
_, err := s.Put(common.PutPrm{Address: addr, RawData: d, DontCompress: true})
|
|
|
|
require.NoError(t, err)
|
|
|
|
}
|
|
|
|
|
|
|
|
{
|
2023-03-13 11:37:35 +00:00
|
|
|
resp, err := s.Exists(context.Background(), common.ExistsPrm{Address: addr})
|
2023-03-03 09:33:08 +00:00
|
|
|
require.NoError(t, err)
|
|
|
|
require.True(t, resp.Exists)
|
|
|
|
}
|
|
|
|
|
|
|
|
{
|
2023-03-13 11:37:35 +00:00
|
|
|
resp, err := s.Get(context.Background(), common.GetPrm{Address: addr})
|
2023-03-03 09:33:08 +00:00
|
|
|
require.NoError(t, err)
|
|
|
|
require.Equal(t, obj.Payload(), resp.Object.Payload())
|
|
|
|
}
|
|
|
|
|
|
|
|
{
|
|
|
|
var objRange objectSDK.Range
|
|
|
|
objRange.SetOffset(256)
|
|
|
|
objRange.SetLength(512)
|
2023-03-13 11:37:35 +00:00
|
|
|
resp, err := s.GetRange(context.Background(), common.GetRangePrm{
|
2023-03-03 09:33:08 +00:00
|
|
|
Address: addr,
|
|
|
|
Range: objRange,
|
|
|
|
})
|
|
|
|
require.NoError(t, err)
|
|
|
|
require.Equal(t, obj.Payload()[objRange.GetOffset():objRange.GetOffset()+objRange.GetLength()], resp.Data)
|
|
|
|
}
|
|
|
|
|
|
|
|
{
|
|
|
|
_, err := s.Delete(common.DeletePrm{Address: addr})
|
|
|
|
require.NoError(t, err)
|
|
|
|
}
|
|
|
|
|
|
|
|
{
|
2023-03-13 11:37:35 +00:00
|
|
|
resp, err := s.Exists(context.Background(), common.ExistsPrm{Address: addr})
|
2023-03-03 09:33:08 +00:00
|
|
|
require.NoError(t, err)
|
|
|
|
require.False(t, resp.Exists)
|
|
|
|
}
|
|
|
|
}
|