forked from TrueCloudLab/frostfs-api-go
Use checksum structure in storagegroup package
Signed-off-by: Alex Vanin <alexey@nspcc.ru>
This commit is contained in:
parent
6787648027
commit
4405492640
5 changed files with 21 additions and 9 deletions
|
@ -15,7 +15,9 @@ func StorageGroupToGRPCMessage(s *StorageGroup) *sg.StorageGroup {
|
||||||
m := new(sg.StorageGroup)
|
m := new(sg.StorageGroup)
|
||||||
|
|
||||||
m.SetValidationDataSize(s.GetValidationDataSize())
|
m.SetValidationDataSize(s.GetValidationDataSize())
|
||||||
m.SetValidationHash(s.GetValidationHash())
|
m.SetValidationHash(
|
||||||
|
refs.ChecksumToGRPCMessage(s.GetValidationHash()),
|
||||||
|
)
|
||||||
m.SetExpirationEpoch(s.GetExpirationEpoch())
|
m.SetExpirationEpoch(s.GetExpirationEpoch())
|
||||||
|
|
||||||
members := s.GetMembers()
|
members := s.GetMembers()
|
||||||
|
@ -39,7 +41,9 @@ func StorageGroupFromGRPCMessage(m *sg.StorageGroup) *StorageGroup {
|
||||||
s := new(StorageGroup)
|
s := new(StorageGroup)
|
||||||
|
|
||||||
s.SetValidationDataSize(m.GetValidationDataSize())
|
s.SetValidationDataSize(m.GetValidationDataSize())
|
||||||
s.SetValidationHash(m.GetValidationHash())
|
s.SetValidationHash(
|
||||||
|
refs.ChecksumFromGRPCMessage(m.GetValidationHash()),
|
||||||
|
)
|
||||||
s.SetExpirationEpoch(m.GetExpirationEpoch())
|
s.SetExpirationEpoch(m.GetExpirationEpoch())
|
||||||
|
|
||||||
memberMsg := m.GetMembers()
|
memberMsg := m.GetMembers()
|
||||||
|
|
|
@ -12,7 +12,7 @@ func (m *StorageGroup) SetValidationDataSize(v uint64) {
|
||||||
}
|
}
|
||||||
|
|
||||||
// SetValidationHash sets total homomorphic hash of the storage group payloads.
|
// SetValidationHash sets total homomorphic hash of the storage group payloads.
|
||||||
func (m *StorageGroup) SetValidationHash(v []byte) {
|
func (m *StorageGroup) SetValidationHash(v *refs.Checksum) {
|
||||||
if m != nil {
|
if m != nil {
|
||||||
m.ValidationHash = v
|
m.ValidationHash = v
|
||||||
}
|
}
|
||||||
|
|
|
@ -34,7 +34,7 @@ func (s *StorageGroup) StableMarshal(buf []byte) ([]byte, error) {
|
||||||
|
|
||||||
offset += n
|
offset += n
|
||||||
|
|
||||||
n, err = proto.BytesMarshal(hashField, buf[offset:], s.hash)
|
n, err = proto.NestedStructureMarshal(hashField, buf[offset:], s.hash)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
@ -67,7 +67,7 @@ func (s *StorageGroup) StableSize() (size int) {
|
||||||
}
|
}
|
||||||
|
|
||||||
size += proto.UInt64Size(sizeField, s.size)
|
size += proto.UInt64Size(sizeField, s.size)
|
||||||
size += proto.BytesSize(hashField, s.hash)
|
size += proto.NestedStructureSize(hashField, s.hash)
|
||||||
size += proto.UInt64Size(expirationField, s.exp)
|
size += proto.UInt64Size(expirationField, s.exp)
|
||||||
|
|
||||||
for i := range s.members {
|
for i := range s.members {
|
||||||
|
|
|
@ -21,7 +21,7 @@ func TestStorageGroup_StableMarshal(t *testing.T) {
|
||||||
|
|
||||||
t.Run("non empty", func(t *testing.T) {
|
t.Run("non empty", func(t *testing.T) {
|
||||||
storageGroupFrom.SetValidationDataSize(300)
|
storageGroupFrom.SetValidationDataSize(300)
|
||||||
storageGroupFrom.SetValidationHash([]byte("Homomorphic hash value"))
|
storageGroupFrom.SetValidationHash(generateChecksum("Homomorphic hash"))
|
||||||
storageGroupFrom.SetExpirationEpoch(100)
|
storageGroupFrom.SetExpirationEpoch(100)
|
||||||
storageGroupFrom.SetMembers([]*refs.ObjectID{ownerID1, ownerID2})
|
storageGroupFrom.SetMembers([]*refs.ObjectID{ownerID1, ownerID2})
|
||||||
|
|
||||||
|
@ -35,3 +35,11 @@ func TestStorageGroup_StableMarshal(t *testing.T) {
|
||||||
require.Equal(t, storageGroupFrom, storageGroupTo)
|
require.Equal(t, storageGroupFrom, storageGroupTo)
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func generateChecksum(data string) *refs.Checksum {
|
||||||
|
checksum := new(refs.Checksum)
|
||||||
|
checksum.SetType(refs.TillichZemor)
|
||||||
|
checksum.SetSum([]byte(data))
|
||||||
|
|
||||||
|
return checksum
|
||||||
|
}
|
||||||
|
|
|
@ -9,7 +9,7 @@ import (
|
||||||
type StorageGroup struct {
|
type StorageGroup struct {
|
||||||
size uint64
|
size uint64
|
||||||
|
|
||||||
hash []byte
|
hash *refs.Checksum
|
||||||
|
|
||||||
exp uint64
|
exp uint64
|
||||||
|
|
||||||
|
@ -33,7 +33,7 @@ func (s *StorageGroup) SetValidationDataSize(v uint64) {
|
||||||
}
|
}
|
||||||
|
|
||||||
// GetValidationHash of unified storage group structure.
|
// GetValidationHash of unified storage group structure.
|
||||||
func (s *StorageGroup) GetValidationHash() []byte {
|
func (s *StorageGroup) GetValidationHash() *refs.Checksum {
|
||||||
if s != nil {
|
if s != nil {
|
||||||
return s.hash
|
return s.hash
|
||||||
}
|
}
|
||||||
|
@ -42,7 +42,7 @@ func (s *StorageGroup) GetValidationHash() []byte {
|
||||||
}
|
}
|
||||||
|
|
||||||
// SetValidationHash into unified storage group structure.
|
// SetValidationHash into unified storage group structure.
|
||||||
func (s *StorageGroup) SetValidationHash(v []byte) {
|
func (s *StorageGroup) SetValidationHash(v *refs.Checksum) {
|
||||||
if s != nil {
|
if s != nil {
|
||||||
s.hash = v
|
s.hash = v
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue