73 lines
1.6 KiB
Go
73 lines
1.6 KiB
Go
|
package shard
|
||
|
|
||
|
import (
|
||
|
"context"
|
||
|
"os"
|
||
|
"testing"
|
||
|
|
||
|
"git.frostfs.info/TrueCloudLab/frostfs-node/pkg/local_object_storage/internal/testutil"
|
||
|
oidtest "git.frostfs.info/TrueCloudLab/frostfs-sdk-go/object/id/test"
|
||
|
"github.com/stretchr/testify/require"
|
||
|
)
|
||
|
|
||
|
func BenchmarkRefillMetabase(b *testing.B) {
|
||
|
b.Run("100 objects", func(b *testing.B) {
|
||
|
benchRefillMetabase(b, 100)
|
||
|
})
|
||
|
|
||
|
b.Run("1000 objects", func(b *testing.B) {
|
||
|
benchRefillMetabase(b, 1000)
|
||
|
})
|
||
|
|
||
|
b.Run("2000 objects", func(b *testing.B) {
|
||
|
benchRefillMetabase(b, 2000)
|
||
|
})
|
||
|
|
||
|
b.Run("5000 objects", func(b *testing.B) {
|
||
|
benchRefillMetabase(b, 5000)
|
||
|
})
|
||
|
}
|
||
|
|
||
|
func benchRefillMetabase(b *testing.B, objectsCount int) {
|
||
|
sh := newShard(b, false)
|
||
|
defer func() { require.NoError(b, sh.Close()) }()
|
||
|
|
||
|
var putPrm PutPrm
|
||
|
|
||
|
for i := 0; i < objectsCount/2; i++ {
|
||
|
obj := testutil.GenerateObject()
|
||
|
testutil.AddAttribute(obj, "foo", "bar")
|
||
|
testutil.AddPayload(obj, 1<<5) // blobvnicza tree obj
|
||
|
|
||
|
putPrm.SetObject(obj)
|
||
|
|
||
|
_, err := sh.Put(context.Background(), putPrm)
|
||
|
require.NoError(b, err)
|
||
|
}
|
||
|
|
||
|
for i := 0; i < objectsCount/2; i++ {
|
||
|
obj := testutil.GenerateObject()
|
||
|
testutil.AddAttribute(obj, "foo", "bar")
|
||
|
obj.SetID(oidtest.ID())
|
||
|
testutil.AddPayload(obj, 1<<20) // fstree obj
|
||
|
|
||
|
putPrm.SetObject(obj)
|
||
|
|
||
|
_, err := sh.Put(context.Background(), putPrm)
|
||
|
require.NoError(b, err)
|
||
|
}
|
||
|
|
||
|
require.NoError(b, sh.Close())
|
||
|
require.NoError(b, os.Remove(sh.metaBase.DumpInfo().Path))
|
||
|
|
||
|
require.NoError(b, sh.Open(context.Background()))
|
||
|
sh.cfg.refillMetabase = true
|
||
|
|
||
|
b.ReportAllocs()
|
||
|
b.ResetTimer()
|
||
|
|
||
|
require.NoError(b, sh.Init(context.Background()))
|
||
|
|
||
|
require.NoError(b, sh.Close())
|
||
|
}
|