2020-11-26 14:26:53 +00:00
|
|
|
package blobovnicza
|
|
|
|
|
|
|
|
import (
|
2023-04-26 08:29:33 +00:00
|
|
|
"fmt"
|
2020-11-26 14:26:53 +00:00
|
|
|
"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,
|
|
|
|
},
|
|
|
|
} {
|
2023-08-16 08:12:19 +00:00
|
|
|
key, _ := bucketForSize(item.sz)
|
|
|
|
require.Equal(t, bucketKeyFromBounds(item.upperBound), key)
|
2020-11-26 14:26:53 +00:00
|
|
|
}
|
|
|
|
}
|
2023-04-26 08:29:33 +00:00
|
|
|
|
|
|
|
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)
|
|
|
|
}
|
|
|
|
})
|
|
|
|
}
|
|
|
|
}
|