forked from TrueCloudLab/frostfs-node
[#1377] oid, cid: Upgrade SDK package
Signed-off-by: Leonard Lyubich <leonard@nspcc.ru>
This commit is contained in:
parent
f65898a354
commit
f15e6e888f
118 changed files with 1455 additions and 886 deletions
|
@ -3,7 +3,6 @@ package engine
|
|||
import (
|
||||
"crypto/sha256"
|
||||
"fmt"
|
||||
"math/rand"
|
||||
"os"
|
||||
"path/filepath"
|
||||
"testing"
|
||||
|
@ -17,7 +16,7 @@ import (
|
|||
cidtest "github.com/nspcc-dev/neofs-sdk-go/container/id/test"
|
||||
"github.com/nspcc-dev/neofs-sdk-go/object"
|
||||
objecttest "github.com/nspcc-dev/neofs-sdk-go/object/address/test"
|
||||
oidSDK "github.com/nspcc-dev/neofs-sdk-go/object/id"
|
||||
oidtest "github.com/nspcc-dev/neofs-sdk-go/object/id/test"
|
||||
"github.com/nspcc-dev/neofs-sdk-go/owner"
|
||||
ownertest "github.com/nspcc-dev/neofs-sdk-go/owner/test"
|
||||
"github.com/nspcc-dev/neofs-sdk-go/version"
|
||||
|
@ -137,17 +136,7 @@ func testEngineFromShardOpts(t *testing.T, num int, extraOpts func(int) []shard.
|
|||
return engine
|
||||
}
|
||||
|
||||
func testOID() *oidSDK.ID {
|
||||
cs := [sha256.Size]byte{}
|
||||
_, _ = rand.Read(cs[:])
|
||||
|
||||
id := oidSDK.NewID()
|
||||
id.SetSHA256(cs)
|
||||
|
||||
return id
|
||||
}
|
||||
|
||||
func generateObjectWithCID(t testing.TB, cid *cid.ID) *object.Object {
|
||||
func generateObjectWithCID(t testing.TB, cnr cid.ID) *object.Object {
|
||||
var ver version.Version
|
||||
ver.SetMajor(2)
|
||||
ver.SetMinor(1)
|
||||
|
@ -159,9 +148,9 @@ func generateObjectWithCID(t testing.TB, cid *cid.ID) *object.Object {
|
|||
csumTZ.SetTillichZemor(tz.Sum(csum.Value()))
|
||||
|
||||
obj := object.New()
|
||||
obj.SetID(testOID())
|
||||
obj.SetID(oidtest.ID())
|
||||
obj.SetOwnerID(ownertest.ID())
|
||||
obj.SetContainerID(cid)
|
||||
obj.SetContainerID(cnr)
|
||||
obj.SetVersion(&ver)
|
||||
obj.SetPayloadChecksum(csum)
|
||||
obj.SetPayloadHomomorphicHash(csumTZ)
|
||||
|
|
|
@ -95,8 +95,11 @@ func (e *StorageEngine) get(prm *GetPrm) (*GetRes, error) {
|
|||
|
||||
util.MergeSplitInfo(siErr.SplitInfo(), outSI)
|
||||
|
||||
_, withLink := outSI.Link()
|
||||
_, withLast := outSI.LastPart()
|
||||
|
||||
// stop iterating over shards if SplitInfo structure is complete
|
||||
if outSI.Link() != nil && outSI.LastPart() != nil {
|
||||
if withLink && withLast {
|
||||
return true
|
||||
}
|
||||
|
||||
|
|
|
@ -102,8 +102,11 @@ func (e *StorageEngine) head(prm *HeadPrm) (*HeadRes, error) {
|
|||
|
||||
util.MergeSplitInfo(siErr.SplitInfo(), outSI)
|
||||
|
||||
_, withLink := outSI.Link()
|
||||
_, withLast := outSI.LastPart()
|
||||
|
||||
// stop iterating over shards if SplitInfo structure is complete
|
||||
if outSI.Link() != nil && outSI.LastPart() != nil {
|
||||
if withLink && withLast {
|
||||
return true
|
||||
}
|
||||
|
||||
|
|
|
@ -22,20 +22,25 @@ func TestHeadRaw(t *testing.T) {
|
|||
|
||||
parentAddr := addressSDK.NewAddress()
|
||||
parentAddr.SetContainerID(cid)
|
||||
parentAddr.SetObjectID(parent.ID())
|
||||
|
||||
idParent, _ := parent.ID()
|
||||
parentAddr.SetObjectID(idParent)
|
||||
|
||||
child := generateObjectWithCID(t, cid)
|
||||
child.SetParent(parent)
|
||||
child.SetParentID(parent.ID())
|
||||
child.SetParentID(idParent)
|
||||
child.SetSplitID(splitID)
|
||||
|
||||
link := generateObjectWithCID(t, cid)
|
||||
link.SetParent(parent)
|
||||
link.SetParentID(parent.ID())
|
||||
link.SetChildren(*child.ID())
|
||||
link.SetParentID(idParent)
|
||||
|
||||
idChild, _ := child.ID()
|
||||
link.SetChildren(idChild)
|
||||
link.SetSplitID(splitID)
|
||||
|
||||
t.Run("virtual object split in different shards", func(t *testing.T) {
|
||||
t.Skip("not working, see neofs-sdk-go#242")
|
||||
s1 := testNewShard(t, 1)
|
||||
s2 := testNewShard(t, 2)
|
||||
|
||||
|
@ -63,7 +68,13 @@ func TestHeadRaw(t *testing.T) {
|
|||
|
||||
// SplitInfoError should contain info from both shards
|
||||
require.Equal(t, splitID, si.SplitInfo().SplitID())
|
||||
require.Equal(t, child.ID(), si.SplitInfo().LastPart())
|
||||
require.Equal(t, link.ID(), si.SplitInfo().Link())
|
||||
|
||||
id1, _ := child.ID()
|
||||
id2, _ := si.SplitInfo().LastPart()
|
||||
require.Equal(t, id1, id2)
|
||||
|
||||
id1, _ = link.ID()
|
||||
id2, _ = si.SplitInfo().Link()
|
||||
require.Equal(t, id1, id2)
|
||||
})
|
||||
}
|
||||
|
|
|
@ -14,24 +14,26 @@ import (
|
|||
func TestStorageEngine_Inhume(t *testing.T) {
|
||||
defer os.RemoveAll(t.Name())
|
||||
|
||||
cid := cidtest.ID()
|
||||
cnr := cidtest.ID()
|
||||
splitID := objectSDK.NewSplitID()
|
||||
|
||||
fs := objectSDK.SearchFilters{}
|
||||
fs.AddRootFilter()
|
||||
|
||||
tombstoneID := object.AddressOf(generateObjectWithCID(t, cid))
|
||||
parent := generateObjectWithCID(t, cid)
|
||||
tombstoneID := object.AddressOf(generateObjectWithCID(t, cnr))
|
||||
parent := generateObjectWithCID(t, cnr)
|
||||
|
||||
child := generateObjectWithCID(t, cid)
|
||||
child := generateObjectWithCID(t, cnr)
|
||||
child.SetParent(parent)
|
||||
child.SetParentID(parent.ID())
|
||||
idParent, _ := parent.ID()
|
||||
child.SetParentID(idParent)
|
||||
child.SetSplitID(splitID)
|
||||
|
||||
link := generateObjectWithCID(t, cid)
|
||||
link := generateObjectWithCID(t, cnr)
|
||||
link.SetParent(parent)
|
||||
link.SetParentID(parent.ID())
|
||||
link.SetChildren(*child.ID())
|
||||
link.SetParentID(idParent)
|
||||
idChild, _ := child.ID()
|
||||
link.SetChildren(idChild)
|
||||
link.SetSplitID(splitID)
|
||||
|
||||
t.Run("delete small object", func(t *testing.T) {
|
||||
|
@ -45,12 +47,13 @@ func TestStorageEngine_Inhume(t *testing.T) {
|
|||
_, err = e.Inhume(inhumePrm)
|
||||
require.NoError(t, err)
|
||||
|
||||
addrs, err := Select(e, cid, fs)
|
||||
addrs, err := Select(e, &cnr, fs)
|
||||
require.NoError(t, err)
|
||||
require.Empty(t, addrs)
|
||||
})
|
||||
|
||||
t.Run("delete big object", func(t *testing.T) {
|
||||
t.Skip("not working, see neofs-sdk-go#242")
|
||||
s1 := testNewShard(t, 1)
|
||||
s2 := testNewShard(t, 2)
|
||||
|
||||
|
@ -69,7 +72,7 @@ func TestStorageEngine_Inhume(t *testing.T) {
|
|||
_, err = e.Inhume(inhumePrm)
|
||||
require.NoError(t, err)
|
||||
|
||||
addrs, err := Select(e, cid, fs)
|
||||
addrs, err := Select(e, &cnr, fs)
|
||||
require.NoError(t, err)
|
||||
require.Empty(t, addrs)
|
||||
})
|
||||
|
|
|
@ -27,7 +27,7 @@ func (e *StorageEngine) Lock(idCnr cid.ID, locker oid.ID, locked []oid.ID) error
|
|||
|
||||
func (e *StorageEngine) lock(idCnr cid.ID, locker oid.ID, locked []oid.ID) error {
|
||||
var addr address.Address
|
||||
addr.SetContainerID(&idCnr)
|
||||
addr.SetContainerID(idCnr)
|
||||
|
||||
for i := range locked {
|
||||
switch e.lockSingle(idCnr, locker, locked[i], true) {
|
||||
|
@ -56,8 +56,8 @@ func (e *StorageEngine) lockSingle(idCnr cid.ID, locker, locked oid.ID, checkExi
|
|||
var errIrregular apistatus.LockNonRegularObject
|
||||
|
||||
var addrLocked address.Address
|
||||
addrLocked.SetContainerID(&idCnr)
|
||||
addrLocked.SetObjectID(&locked)
|
||||
addrLocked.SetContainerID(idCnr)
|
||||
addrLocked.SetObjectID(locked)
|
||||
|
||||
e.iterateOverSortedShards(&addrLocked, func(_ int, sh hashedShard) (stop bool) {
|
||||
defer func() {
|
||||
|
|
|
@ -79,13 +79,14 @@ func TestLockUserScenario(t *testing.T) {
|
|||
// 1.
|
||||
obj := generateObjectWithCID(t, cnr)
|
||||
|
||||
objAddr.SetObjectID(obj.ID())
|
||||
id, _ := obj.ID()
|
||||
objAddr.SetObjectID(id)
|
||||
|
||||
err = Put(e, obj)
|
||||
require.NoError(t, err)
|
||||
|
||||
// 2.
|
||||
err = e.Lock(*cnr, *lockerID, []oid.ID{*obj.ID()})
|
||||
err = e.Lock(cnr, lockerID, []oid.ID{id})
|
||||
require.NoError(t, err)
|
||||
|
||||
// 3.
|
||||
|
@ -172,7 +173,10 @@ func TestLockExpiration(t *testing.T) {
|
|||
err = Put(e, lock)
|
||||
require.NoError(t, err)
|
||||
|
||||
err = e.Lock(*cnr, *lock.ID(), []oid.ID{*obj.ID()})
|
||||
id, _ := obj.ID()
|
||||
idLock, _ := lock.ID()
|
||||
|
||||
err = e.Lock(cnr, idLock, []oid.ID{id})
|
||||
require.NoError(t, err)
|
||||
|
||||
_, err = e.Inhume(new(InhumePrm).WithTarget(objecttest.Address(), objectcore.AddressOf(obj)))
|
||||
|
|
|
@ -114,8 +114,11 @@ func (e *StorageEngine) getRange(prm *RngPrm) (*RngRes, error) {
|
|||
|
||||
util.MergeSplitInfo(siErr.SplitInfo(), outSI)
|
||||
|
||||
_, withLink := outSI.Link()
|
||||
_, withLast := outSI.LastPart()
|
||||
|
||||
// stop iterating over shards if SplitInfo structure is complete
|
||||
if outSI.Link() != nil && outSI.LastPart() != nil {
|
||||
if withLink && withLast {
|
||||
return true
|
||||
}
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue