frostfs-node/pkg/local_object_storage/blobovnicza/sizes_test.go

51 lines
977 B
Go

package blobovnicza
import (
"fmt"
"testing"
"github.com/stretchr/testify/require"
)
func TestSizes(t *testing.T) {
for _, item := range []struct {
sz uint64 // object size
upperBound uint64 // upper bound of expected range
}{
{
sz: 0,
upperBound: firstBucketBound,
},
{
sz: firstBucketBound,
upperBound: firstBucketBound,
},
{
sz: firstBucketBound + 1,
upperBound: 2 * firstBucketBound,
},
{
sz: 2 * firstBucketBound,
upperBound: 2 * firstBucketBound,
},
{
sz: 2*firstBucketBound + 1,
upperBound: 4 * firstBucketBound,
},
} {
key := bucketForSize(item.sz)
require.Equal(t, bucketKeyFromBounds(item.upperBound), key)
}
}
func BenchmarkUpperBound(b *testing.B) {
for _, size := range []uint64{1, 1023, 65 * 1024, 40 * 1024 * 1024} {
b.Run(fmt.Sprintf("size=%d", size), func(b *testing.B) {
for i := 0; i < b.N; i++ {
_ = upperPowerOfTwo(size)
}
})
}
}