2022-08-22 14:16:35 +00:00
|
|
|
package blobstortest
|
|
|
|
|
|
|
|
import (
|
2023-03-13 11:37:35 +00:00
|
|
|
"context"
|
2022-08-22 14:16:35 +00:00
|
|
|
"testing"
|
|
|
|
|
2023-03-07 13:38:26 +00:00
|
|
|
"git.frostfs.info/TrueCloudLab/frostfs-node/pkg/local_object_storage/blobstor/common"
|
|
|
|
apistatus "git.frostfs.info/TrueCloudLab/frostfs-sdk-go/client/status"
|
|
|
|
oidtest "git.frostfs.info/TrueCloudLab/frostfs-sdk-go/object/id/test"
|
2022-08-22 14:16:35 +00:00
|
|
|
"github.com/stretchr/testify/require"
|
|
|
|
)
|
|
|
|
|
|
|
|
func TestDelete(t *testing.T, cons Constructor, min, max uint64) {
|
|
|
|
s := cons(t)
|
|
|
|
require.NoError(t, s.Open(false))
|
|
|
|
require.NoError(t, s.Init())
|
|
|
|
t.Cleanup(func() { require.NoError(t, s.Close()) })
|
|
|
|
|
|
|
|
objects := prepare(t, 4, s, min, max)
|
|
|
|
|
|
|
|
t.Run("delete non-existent", func(t *testing.T) {
|
|
|
|
var prm common.DeletePrm
|
|
|
|
prm.Address = oidtest.Address()
|
|
|
|
|
|
|
|
_, err := s.Delete(prm)
|
|
|
|
require.Error(t, err, new(apistatus.ObjectNotFound))
|
|
|
|
})
|
|
|
|
|
|
|
|
t.Run("with storage ID", func(t *testing.T) {
|
|
|
|
var prm common.DeletePrm
|
|
|
|
prm.Address = objects[0].addr
|
|
|
|
prm.StorageID = objects[0].storageID
|
|
|
|
|
|
|
|
_, err := s.Delete(prm)
|
|
|
|
require.NoError(t, err)
|
|
|
|
|
|
|
|
t.Run("exists fail", func(t *testing.T) {
|
|
|
|
prm := common.ExistsPrm{Address: oidtest.Address()}
|
2023-03-13 11:37:35 +00:00
|
|
|
res, err := s.Exists(context.Background(), prm)
|
2022-08-22 14:16:35 +00:00
|
|
|
require.NoError(t, err)
|
|
|
|
require.False(t, res.Exists)
|
|
|
|
})
|
|
|
|
t.Run("get fail", func(t *testing.T) {
|
|
|
|
prm := common.GetPrm{Address: oidtest.Address()}
|
2023-03-13 11:37:35 +00:00
|
|
|
_, err := s.Get(context.Background(), prm)
|
2022-08-22 14:16:35 +00:00
|
|
|
require.ErrorAs(t, err, new(apistatus.ObjectNotFound))
|
|
|
|
})
|
|
|
|
t.Run("getrange fail", func(t *testing.T) {
|
|
|
|
prm := common.GetRangePrm{Address: oidtest.Address()}
|
2023-03-13 11:37:35 +00:00
|
|
|
_, err := s.GetRange(context.Background(), prm)
|
2022-08-22 14:16:35 +00:00
|
|
|
require.ErrorAs(t, err, new(apistatus.ObjectNotFound))
|
|
|
|
})
|
|
|
|
})
|
|
|
|
t.Run("without storage ID", func(t *testing.T) {
|
|
|
|
var prm common.DeletePrm
|
|
|
|
prm.Address = objects[1].addr
|
|
|
|
|
|
|
|
_, err := s.Delete(prm)
|
|
|
|
require.NoError(t, err)
|
|
|
|
})
|
|
|
|
|
|
|
|
t.Run("delete twice", func(t *testing.T) {
|
|
|
|
var prm common.DeletePrm
|
|
|
|
prm.Address = objects[2].addr
|
|
|
|
prm.StorageID = objects[2].storageID
|
|
|
|
|
|
|
|
_, err := s.Delete(prm)
|
|
|
|
require.NoError(t, err)
|
|
|
|
|
|
|
|
_, err = s.Delete(prm)
|
|
|
|
require.ErrorAs(t, err, new(apistatus.ObjectNotFound))
|
|
|
|
})
|
|
|
|
|
|
|
|
t.Run("non-deleted object is still available", func(t *testing.T) {
|
|
|
|
var prm common.GetPrm
|
|
|
|
prm.Address = objects[3].addr
|
|
|
|
prm.Raw = true
|
|
|
|
|
2023-03-13 11:37:35 +00:00
|
|
|
res, err := s.Get(context.Background(), prm)
|
2022-08-22 14:16:35 +00:00
|
|
|
require.NoError(t, err)
|
|
|
|
require.Equal(t, objects[3].raw, res.RawData)
|
|
|
|
})
|
|
|
|
}
|