frostfs-node/pkg/local_object_storage/internal/testutil/generators_test.go

71 lines
1.6 KiB
Go

package testutil
import (
"encoding/binary"
"testing"
"github.com/stretchr/testify/require"
"golang.org/x/exp/slices"
)
func TestOverwriteObjGenerator(t *testing.T) {
gen := &OverwriteObjGenerator{
ObjSize: 10,
MaxObjects: 4,
}
for i := 0; i < 40; i++ {
obj := gen.Next()
id, isSet := obj.ID()
i := binary.LittleEndian.Uint64(id[:])
require.True(t, isSet)
require.Equal(t, gen.ObjSize, uint64(len(obj.Payload())))
require.True(t, 1 <= i && i <= gen.MaxObjects)
}
}
func TestRandObjGenerator(t *testing.T) {
gen := &RandObjGenerator{ObjSize: 10}
for i := 0; i < 10; i++ {
obj := gen.Next()
require.Equal(t, gen.ObjSize, uint64(len(obj.Payload())))
}
}
func TestSeqObjGenerator(t *testing.T) {
gen := &SeqObjGenerator{ObjSize: 10}
var addrs []string
for i := 1; i <= 10; i++ {
obj := gen.Next()
id, isSet := obj.ID()
addrs = append(addrs, AddressFromObject(t, obj).EncodeToString())
require.True(t, isSet)
require.Equal(t, gen.ObjSize, uint64(len(obj.Payload())))
require.Equal(t, uint64(i), binary.LittleEndian.Uint64(id[:]))
}
require.True(t, slices.IsSorted(addrs))
}
func TestRandAddrGenerator(t *testing.T) {
gen := RandAddrGenerator(5)
for i := 0; i < 50; i++ {
addr := gen.Next()
id := addr.Object()
k := binary.LittleEndian.Uint64(id[:])
require.True(t, 1 <= k && k <= uint64(gen))
}
}
func TestSeqAddrGenerator(t *testing.T) {
gen := &SeqAddrGenerator{MaxID: 10}
for i := 1; i <= 20; i++ {
addr := gen.Next()
id := addr.Object()
require.Equal(t, uint64((i-1)%int(gen.MaxID)+1), binary.LittleEndian.Uint64(id[:]))
}
}