2021-02-16 07:57:43 +00:00
|
|
|
package meta_test
|
|
|
|
|
|
|
|
import (
|
|
|
|
"testing"
|
|
|
|
|
2022-03-03 14:19:05 +00:00
|
|
|
"github.com/nspcc-dev/neofs-node/pkg/core/object"
|
2021-02-16 07:57:43 +00:00
|
|
|
meta "github.com/nspcc-dev/neofs-node/pkg/local_object_storage/metabase"
|
2022-01-26 12:11:13 +00:00
|
|
|
addressSDK "github.com/nspcc-dev/neofs-sdk-go/object/address"
|
2021-02-16 07:57:43 +00:00
|
|
|
"github.com/stretchr/testify/require"
|
|
|
|
)
|
|
|
|
|
|
|
|
func TestDB_IterateOverGraveyard(t *testing.T) {
|
|
|
|
db := newDB(t)
|
|
|
|
|
|
|
|
// generate and put 2 objects
|
2022-03-03 14:19:05 +00:00
|
|
|
obj1 := generateObject(t)
|
|
|
|
obj2 := generateObject(t)
|
2021-02-16 07:57:43 +00:00
|
|
|
|
|
|
|
var err error
|
|
|
|
|
2022-03-03 14:19:05 +00:00
|
|
|
err = putBig(db, obj1)
|
2021-02-16 07:57:43 +00:00
|
|
|
require.NoError(t, err)
|
|
|
|
|
2022-03-03 14:19:05 +00:00
|
|
|
err = putBig(db, obj2)
|
2021-02-16 07:57:43 +00:00
|
|
|
require.NoError(t, err)
|
|
|
|
|
|
|
|
inhumePrm := new(meta.InhumePrm)
|
|
|
|
|
|
|
|
// inhume with tombstone
|
|
|
|
addrTombstone := generateAddress()
|
|
|
|
|
|
|
|
_, err = db.Inhume(inhumePrm.
|
2022-03-03 14:19:05 +00:00
|
|
|
WithAddresses(object.AddressOf(obj1)).
|
2021-02-16 07:57:43 +00:00
|
|
|
WithTombstoneAddress(addrTombstone),
|
|
|
|
)
|
|
|
|
require.NoError(t, err)
|
|
|
|
|
|
|
|
// inhume with GC mark
|
|
|
|
_, err = db.Inhume(inhumePrm.
|
2022-03-03 14:19:05 +00:00
|
|
|
WithAddresses(object.AddressOf(obj2)).
|
2021-02-16 07:57:43 +00:00
|
|
|
WithGCMark(),
|
|
|
|
)
|
|
|
|
|
|
|
|
var (
|
|
|
|
counterAll int
|
2022-01-26 12:11:13 +00:00
|
|
|
buriedTS, buriedGC []*addressSDK.Address
|
2021-02-16 07:57:43 +00:00
|
|
|
)
|
|
|
|
|
|
|
|
err = db.IterateOverGraveyard(func(g *meta.Grave) error {
|
|
|
|
if g.WithGCMark() {
|
|
|
|
buriedGC = append(buriedGC, g.Address())
|
|
|
|
} else {
|
|
|
|
buriedTS = append(buriedTS, g.Address())
|
|
|
|
}
|
|
|
|
|
|
|
|
counterAll++
|
|
|
|
|
|
|
|
return nil
|
|
|
|
})
|
|
|
|
|
|
|
|
require.NoError(t, err)
|
|
|
|
|
|
|
|
require.Equal(t, 2, counterAll)
|
2022-03-03 14:19:05 +00:00
|
|
|
require.Equal(t, []*addressSDK.Address{object.AddressOf(obj1)}, buriedTS)
|
|
|
|
require.Equal(t, []*addressSDK.Address{object.AddressOf(obj2)}, buriedGC)
|
2021-02-16 07:57:43 +00:00
|
|
|
}
|