2021-01-27 19:01:08 +00:00
|
|
|
package loadstorage
|
|
|
|
|
|
|
|
import (
|
|
|
|
"math/rand"
|
|
|
|
"testing"
|
|
|
|
|
2023-03-07 13:38:26 +00:00
|
|
|
"git.frostfs.info/TrueCloudLab/frostfs-sdk-go/container"
|
|
|
|
cidtest "git.frostfs.info/TrueCloudLab/frostfs-sdk-go/container/id/test"
|
2021-01-27 19:01:08 +00:00
|
|
|
"github.com/stretchr/testify/require"
|
|
|
|
)
|
|
|
|
|
|
|
|
func TestStorage(t *testing.T) {
|
|
|
|
const epoch uint64 = 13
|
|
|
|
|
2022-06-28 07:01:05 +00:00
|
|
|
var a container.SizeEstimation
|
|
|
|
a.SetContainer(cidtest.ID())
|
2021-01-27 19:01:08 +00:00
|
|
|
a.SetEpoch(epoch)
|
|
|
|
|
|
|
|
const opinionsNum = 100
|
|
|
|
|
|
|
|
s := New(Prm{})
|
|
|
|
|
|
|
|
opinions := make([]uint64, opinionsNum)
|
|
|
|
for i := range opinions {
|
|
|
|
opinions[i] = rand.Uint64()
|
|
|
|
|
2022-06-28 07:01:05 +00:00
|
|
|
a.SetValue(opinions[i])
|
2021-01-27 19:01:08 +00:00
|
|
|
|
2022-06-28 07:01:05 +00:00
|
|
|
require.NoError(t, s.Put(a))
|
2021-01-27 19:01:08 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
iterCounter := 0
|
|
|
|
|
|
|
|
err := s.Iterate(
|
2022-06-28 07:01:05 +00:00
|
|
|
func(ai container.SizeEstimation) bool {
|
2021-01-27 19:01:08 +00:00
|
|
|
return ai.Epoch() == epoch
|
|
|
|
},
|
2022-06-28 07:01:05 +00:00
|
|
|
func(ai container.SizeEstimation) error {
|
2021-01-27 19:01:08 +00:00
|
|
|
iterCounter++
|
|
|
|
|
|
|
|
require.Equal(t, epoch, ai.Epoch())
|
2022-06-28 07:01:05 +00:00
|
|
|
require.Equal(t, a.Container(), ai.Container())
|
|
|
|
require.Equal(t, finalEstimation(opinions), ai.Value())
|
2021-01-27 19:01:08 +00:00
|
|
|
|
|
|
|
return nil
|
|
|
|
},
|
|
|
|
)
|
|
|
|
require.NoError(t, err)
|
|
|
|
require.Equal(t, 1, iterCounter)
|
|
|
|
}
|