Ekaterina Lebedeva
8a81af5a3b
All checks were successful
DCO action / DCO (pull_request) Successful in 1m38s
Build / Build Components (1.20) (pull_request) Successful in 4m22s
Build / Build Components (1.21) (pull_request) Successful in 4m25s
Vulncheck / Vulncheck (pull_request) Successful in 4m56s
Tests and linters / Lint (pull_request) Successful in 6m1s
Tests and linters / Tests (1.20) (pull_request) Successful in 7m43s
Tests and linters / Staticcheck (pull_request) Successful in 8m1s
Tests and linters / Tests (1.21) (pull_request) Successful in 8m14s
Tests and linters / Tests with -race (pull_request) Successful in 8m32s
Signed-off-by: Ekaterina Lebedeva <ekaterina.lebedeva@yadro.com>
55 lines
1.3 KiB
Go
55 lines
1.3 KiB
Go
package pilorama
|
|
|
|
import (
|
|
"context"
|
|
"os"
|
|
"path/filepath"
|
|
"runtime"
|
|
"sync/atomic"
|
|
"testing"
|
|
|
|
cidtest "git.frostfs.info/TrueCloudLab/frostfs-sdk-go/container/id/test"
|
|
"github.com/stretchr/testify/require"
|
|
)
|
|
|
|
func getTimestamp(reorder int, ts Timestamp) Timestamp {
|
|
base := ts / Timestamp(reorder)
|
|
rem := ts % Timestamp(reorder)
|
|
return base*Timestamp(reorder) + Timestamp(reorder) - rem
|
|
}
|
|
|
|
func BenchmarkCreate(b *testing.B) {
|
|
// Use `os.TempDir` because we construct multiple times in the same test.
|
|
tmpDir, err := os.MkdirTemp(os.TempDir(), "*")
|
|
require.NoError(b, err)
|
|
|
|
f := NewBoltForest(
|
|
WithPath(filepath.Join(tmpDir, "test.db")),
|
|
WithMaxBatchSize(runtime.GOMAXPROCS(0)))
|
|
require.NoError(b, f.Open(context.Background(), false))
|
|
require.NoError(b, f.Init())
|
|
b.Cleanup(func() {
|
|
require.NoError(b, f.Close())
|
|
require.NoError(b, os.RemoveAll(tmpDir))
|
|
})
|
|
|
|
cid := cidtest.ID()
|
|
treeID := "tree"
|
|
ctx := context.Background()
|
|
var index atomic.Int32
|
|
index.Store(-1)
|
|
b.SetParallelism(2)
|
|
b.RunParallel(func(pb *testing.PB) {
|
|
for pb.Next() {
|
|
i := index.Add(1)
|
|
op := &Move{
|
|
Meta: Meta{Time: getTimestamp(runtime.GOMAXPROCS(0)*2, Timestamp(i+1))},
|
|
Child: Node(i + 1),
|
|
Parent: RootID,
|
|
}
|
|
if err := f.TreeApply(ctx, cid, treeID, op, true); err != nil {
|
|
b.FailNow()
|
|
}
|
|
}
|
|
})
|
|
}
|