Skip to content

Commit 20e7ac6

Browse files
committed
fstree: add Get and Head bench tests
Signed-off-by: Andrey Butusov <[email protected]>
1 parent b5b8953 commit 20e7ac6

File tree

1 file changed

+99
-0
lines changed

1 file changed

+99
-0
lines changed
Lines changed: 99 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,99 @@
1+
package fstree_test
2+
3+
import (
4+
"testing"
5+
6+
"github.com/nspcc-dev/neofs-node/pkg/core/object"
7+
"github.com/nspcc-dev/neofs-node/pkg/local_object_storage/blobstor/compression"
8+
"github.com/nspcc-dev/neofs-node/pkg/local_object_storage/blobstor/fstree"
9+
objectSDK "github.com/nspcc-dev/neofs-sdk-go/object"
10+
oid "github.com/nspcc-dev/neofs-sdk-go/object/id"
11+
"github.com/stretchr/testify/require"
12+
)
13+
14+
func BenchmarkFSTree_Head(b *testing.B) {
15+
for _, size := range payloadSizes {
16+
b.Run(generateSizeLabel(size), func(b *testing.B) {
17+
fsTree := fstree.New(fstree.WithPath(b.TempDir()))
18+
19+
require.NoError(b, fsTree.Open(false))
20+
require.NoError(b, fsTree.Init())
21+
22+
testReadOp(b, fsTree, fsTree.Head, "Head", size)
23+
})
24+
}
25+
}
26+
27+
func BenchmarkFSTree_Get(b *testing.B) {
28+
for _, size := range payloadSizes {
29+
b.Run(generateSizeLabel(size), func(b *testing.B) {
30+
fsTree := fstree.New(fstree.WithPath(b.TempDir()))
31+
32+
require.NoError(b, fsTree.Open(false))
33+
require.NoError(b, fsTree.Init())
34+
35+
testReadOp(b, fsTree, fsTree.Get, "Get", size)
36+
})
37+
}
38+
}
39+
40+
func testReadOp(b *testing.B, fsTree *fstree.FSTree, read func(address oid.Address) (*objectSDK.Object, error),
41+
name string, payloadSize int) {
42+
b.Run(name+"_regular", func(b *testing.B) {
43+
obj := generateTestObject(payloadSize)
44+
addr := object.AddressOf(obj)
45+
46+
require.NoError(b, fsTree.Put(addr, obj.Marshal()))
47+
b.ReportAllocs()
48+
b.ResetTimer()
49+
for range b.N {
50+
_, err := read(addr)
51+
if err != nil {
52+
b.Fatal(err)
53+
}
54+
}
55+
})
56+
57+
b.Run(name+"_combined", func(b *testing.B) {
58+
const numObjects = 10
59+
60+
objMap := make(map[oid.Address][]byte, numObjects)
61+
addrs := make([]oid.Address, numObjects)
62+
for i := range numObjects {
63+
o := generateTestObject(payloadSize)
64+
objMap[object.AddressOf(o)] = o.Marshal()
65+
addrs[i] = object.AddressOf(o)
66+
}
67+
require.NoError(b, fsTree.PutBatch(objMap))
68+
69+
b.ReportAllocs()
70+
b.ResetTimer()
71+
for k := range b.N {
72+
_, err := read(addrs[k%numObjects])
73+
if err != nil {
74+
b.Fatal(err)
75+
}
76+
}
77+
})
78+
79+
b.Run(name+"_compressed", func(b *testing.B) {
80+
obj := generateTestObject(payloadSize)
81+
addr := object.AddressOf(obj)
82+
83+
compressConfig := &compression.Config{
84+
Enabled: true,
85+
}
86+
require.NoError(b, compressConfig.Init())
87+
fsTree.SetCompressor(compressConfig)
88+
require.NoError(b, fsTree.Put(addr, obj.Marshal()))
89+
90+
b.ReportAllocs()
91+
b.ResetTimer()
92+
for range b.N {
93+
_, err := read(addr)
94+
if err != nil {
95+
b.Fatal(err)
96+
}
97+
}
98+
})
99+
}

0 commit comments

Comments
 (0)