[#302] pkg/netmap: Document default values set in NewPlacementPolicy

Document field values of instance constructed via `NewPlacementPolicy`.
Assert the values in corresponding unit test.

Signed-off-by: Pavel Karpy <carpawell@nspcc.ru>
This commit is contained in:
Pavel Karpy 2021-06-08 18:20:48 +03:00 committed by Alex Vanin
parent 2176cb9f2b
commit 6fb7c79219
2 changed files with 32 additions and 0 deletions

View file

@ -8,6 +8,12 @@ import (
type PlacementPolicy netmap.PlacementPolicy
// NewPlacementPolicy creates and returns new PlacementPolicy instance.
//
// Defaults:
// - backupFactor: 0;
// - replicas nil;
// - selectors nil;
// - filters nil.
func NewPlacementPolicy() *PlacementPolicy {
return NewPlacementPolicyFromV2(new(netmap.PlacementPolicy))
}
@ -31,6 +37,10 @@ func (p *PlacementPolicy) Replicas() []*Replica {
rs := (*netmap.PlacementPolicy)(p).
GetReplicas()
if rs == nil {
return nil
}
res := make([]*Replica, 0, len(rs))
for i := range rs {
@ -73,6 +83,10 @@ func (p *PlacementPolicy) Selectors() []*Selector {
rs := (*netmap.PlacementPolicy)(p).
GetSelectors()
if rs == nil {
return nil
}
res := make([]*Selector, 0, len(rs))
for i := range rs {

View file

@ -151,6 +151,24 @@ func TestNewPlacementPolicy(t *testing.T) {
require.Nil(t, x.ToV2())
})
t.Run("default values", func(t *testing.T) {
pp := NewPlacementPolicy()
// check initial values
require.Nil(t, pp.Replicas())
require.Nil(t, pp.Filters())
require.Nil(t, pp.Selectors())
require.Zero(t, pp.ContainerBackupFactor())
// convert to v2 message
ppV2 := pp.ToV2()
require.Nil(t, ppV2.GetReplicas())
require.Nil(t, ppV2.GetFilters())
require.Nil(t, ppV2.GetSelectors())
require.Zero(t, ppV2.GetContainerBackupFactor())
})
}
func TestNewPlacementPolicyFromV2(t *testing.T) {