Fix zero copies number traversal #494

Merged
fyrchik merged 1 commit from alexvanin/frostfs-node:fix/zero-copies-numbers into master 2023-07-26 21:07:59 +00:00

View file

@ -208,3 +208,55 @@ func TestTraverserObjectScenarios(t *testing.T) {
require.True(t, tr.Success())
})
}
func TestTraverserRemValues(t *testing.T) {
selectors := []int{3, 4, 5}
replicas := []int{2, 3, 4}
nodes, cnr := testPlacement(t, selectors, replicas)
nodesCopy := copyVectors(nodes)
testCases := [...]struct {
name string
copyNumbers []uint32
expectedRem []int
}{
{
name: "zero copy numbers",
copyNumbers: []uint32{},
expectedRem: replicas,
},
{
name: "compatible zero copy numbers",
copyNumbers: []uint32{0},
expectedRem: replicas,
},
{
name: "copy numbers for all replicas",
copyNumbers: []uint32{1, 1, 1},
expectedRem: []int{1, 1, 1},
},
{
name: "single copy numbers for multiple replicas",
copyNumbers: []uint32{1},
expectedRem: []int{1}, // may be a bit unexpected
},
{
name: "multiple copy numbers for multiple replicas",
copyNumbers: []uint32{1, 1},
expectedRem: []int{1, 1, 4},
},
}
for _, testCase := range testCases {
t.Run(testCase.name, func(t *testing.T) {
tr, err := NewTraverser(
ForContainer(cnr),
UseBuilder(&testBuilder{vectors: nodesCopy}),
WithCopyNumbers(testCase.copyNumbers),
)
require.NoError(t, err)
require.Equal(t, testCase.expectedRem, tr.rem)
})
}
}