forked from TrueCloudLab/frostfs-node
[#1251] pilorama: Allow traversing multiple branches in parallel
Signed-off-by: Evgenii Stratonikov <e.stratonikov@yadro.com>
This commit is contained in:
parent
e5767c9002
commit
3940bc17c1
18 changed files with 571 additions and 328 deletions
|
@ -95,4 +95,61 @@ func testDuplicateDirectory(t *testing.T, f Forest) {
|
|||
require.Equal(t, []byte{4}, testGetByPath(t, "dir1/dir3/value3"))
|
||||
require.Equal(t, []byte{8}, testGetByPath(t, "dir1/dir3/value4"))
|
||||
require.Equal(t, []byte{10}, testGetByPath(t, "value0"))
|
||||
|
||||
testSortedByFilename := func(t *testing.T, root MultiNode, last *string, batchSize int) ([]MultiNodeInfo, *string) {
|
||||
res, last, err := f.TreeSortedByFilename(context.Background(), d.CID, treeID, root, last, batchSize)
|
||||
require.NoError(t, err)
|
||||
return res, last
|
||||
}
|
||||
|
||||
t.Run("test sorted listing, full children branch", func(t *testing.T) {
|
||||
t.Run("big batch size", func(t *testing.T) {
|
||||
res, _ := testSortedByFilename(t, MultiNode{RootID}, nil, 10)
|
||||
require.Equal(t, 3, len(res))
|
||||
require.Equal(t, MultiNode{1, 5}, res[0].Children)
|
||||
require.Equal(t, MultiNode{9}, res[1].Children)
|
||||
require.Equal(t, MultiNode{10}, res[2].Children)
|
||||
|
||||
t.Run("multi-root", func(t *testing.T) {
|
||||
res, _ := testSortedByFilename(t, MultiNode{1, 5}, nil, 10)
|
||||
require.Equal(t, 3, len(res))
|
||||
require.Equal(t, MultiNode{3, 7}, res[0].Children)
|
||||
require.Equal(t, MultiNode{2}, res[1].Children)
|
||||
require.Equal(t, MultiNode{6}, res[2].Children)
|
||||
})
|
||||
})
|
||||
t.Run("small batch size", func(t *testing.T) {
|
||||
res, last := testSortedByFilename(t, MultiNode{RootID}, nil, 1)
|
||||
require.Equal(t, 1, len(res))
|
||||
require.Equal(t, MultiNode{1, 5}, res[0].Children)
|
||||
|
||||
res, last = testSortedByFilename(t, MultiNode{RootID}, last, 1)
|
||||
require.Equal(t, 1, len(res))
|
||||
require.Equal(t, MultiNode{9}, res[0].Children)
|
||||
|
||||
res, last = testSortedByFilename(t, MultiNode{RootID}, last, 1)
|
||||
require.Equal(t, 1, len(res))
|
||||
require.Equal(t, MultiNode{10}, res[0].Children)
|
||||
|
||||
res, _ = testSortedByFilename(t, MultiNode{RootID}, last, 1)
|
||||
require.Equal(t, 0, len(res))
|
||||
|
||||
t.Run("multi-root", func(t *testing.T) {
|
||||
res, last := testSortedByFilename(t, MultiNode{1, 5}, nil, 1)
|
||||
require.Equal(t, 1, len(res))
|
||||
require.Equal(t, MultiNode{3, 7}, res[0].Children)
|
||||
|
||||
res, last = testSortedByFilename(t, MultiNode{1, 5}, last, 1)
|
||||
require.Equal(t, 1, len(res))
|
||||
require.Equal(t, MultiNode{2}, res[0].Children)
|
||||
|
||||
res, last = testSortedByFilename(t, MultiNode{1, 5}, last, 1)
|
||||
require.Equal(t, 1, len(res))
|
||||
require.Equal(t, MultiNode{6}, res[0].Children)
|
||||
|
||||
res, _ = testSortedByFilename(t, MultiNode{RootID}, last, 1)
|
||||
require.Equal(t, 0, len(res))
|
||||
})
|
||||
})
|
||||
})
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue