2022-07-06 14:09:50 +00:00
|
|
|
package meta_test
|
|
|
|
|
|
|
|
import (
|
|
|
|
"testing"
|
|
|
|
|
2023-03-07 13:38:26 +00:00
|
|
|
"git.frostfs.info/TrueCloudLab/frostfs-node/pkg/core/object"
|
2023-03-20 14:10:26 +00:00
|
|
|
"git.frostfs.info/TrueCloudLab/frostfs-node/pkg/local_object_storage/internal/testutil"
|
2023-03-07 13:38:26 +00:00
|
|
|
meta "git.frostfs.info/TrueCloudLab/frostfs-node/pkg/local_object_storage/metabase"
|
|
|
|
oid "git.frostfs.info/TrueCloudLab/frostfs-sdk-go/object/id"
|
2022-07-06 14:09:50 +00:00
|
|
|
"github.com/stretchr/testify/require"
|
|
|
|
)
|
|
|
|
|
2022-10-20 12:09:05 +00:00
|
|
|
func TestDB_StorageID(t *testing.T) {
|
2022-07-06 14:09:50 +00:00
|
|
|
db := newDB(t)
|
|
|
|
|
2023-03-20 14:10:26 +00:00
|
|
|
raw1 := testutil.GenerateObject()
|
|
|
|
raw2 := testutil.GenerateObject()
|
2022-07-06 14:09:50 +00:00
|
|
|
|
|
|
|
storageID := []byte{1, 2, 3, 4}
|
|
|
|
|
|
|
|
// check StorageID from empty database
|
|
|
|
fetchedStorageID, err := metaStorageID(db, object.AddressOf(raw1))
|
|
|
|
require.NoError(t, err)
|
|
|
|
require.Nil(t, fetchedStorageID)
|
|
|
|
|
|
|
|
// put one object with storageID
|
|
|
|
err = metaPut(db, raw1, storageID)
|
|
|
|
require.NoError(t, err)
|
|
|
|
|
|
|
|
// put one object without storageID
|
|
|
|
err = putBig(db, raw2)
|
|
|
|
require.NoError(t, err)
|
|
|
|
|
|
|
|
// check StorageID for object without storageID
|
|
|
|
fetchedStorageID, err = metaStorageID(db, object.AddressOf(raw2))
|
|
|
|
require.NoError(t, err)
|
|
|
|
require.Nil(t, fetchedStorageID)
|
|
|
|
|
|
|
|
// check StorageID for object with storageID
|
|
|
|
fetchedStorageID, err = metaStorageID(db, object.AddressOf(raw1))
|
|
|
|
require.NoError(t, err)
|
|
|
|
require.Equal(t, storageID, fetchedStorageID)
|
2022-10-20 12:09:05 +00:00
|
|
|
|
|
|
|
t.Run("update", func(t *testing.T) {
|
|
|
|
require.NoError(t, metaUpdateStorageID(db, object.AddressOf(raw2), storageID))
|
|
|
|
|
|
|
|
fetchedStorageID, err = metaStorageID(db, object.AddressOf(raw2))
|
|
|
|
require.NoError(t, err)
|
|
|
|
require.Equal(t, storageID, fetchedStorageID)
|
|
|
|
})
|
|
|
|
}
|
|
|
|
|
|
|
|
func metaUpdateStorageID(db *meta.DB, addr oid.Address, id []byte) error {
|
|
|
|
var sidPrm meta.UpdateStorageIDPrm
|
|
|
|
sidPrm.SetAddress(addr)
|
|
|
|
sidPrm.SetStorageID(id)
|
|
|
|
|
|
|
|
_, err := db.UpdateStorageID(sidPrm)
|
|
|
|
return err
|
2022-07-06 14:09:50 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
func metaStorageID(db *meta.DB, addr oid.Address) ([]byte, error) {
|
|
|
|
var sidPrm meta.StorageIDPrm
|
|
|
|
sidPrm.SetAddress(addr)
|
|
|
|
|
|
|
|
r, err := db.StorageID(sidPrm)
|
|
|
|
return r.StorageID(), err
|
|
|
|
}
|