mirror of
https://github.com/prometheus/prometheus.git
synced 2024-11-10 07:34:04 -08:00
chunks: add randomized test
This commit is contained in:
parent
fa181a34c1
commit
f392c01c12
|
@ -4,6 +4,7 @@ import (
|
||||||
"fmt"
|
"fmt"
|
||||||
"io"
|
"io"
|
||||||
"math/rand"
|
"math/rand"
|
||||||
|
"reflect"
|
||||||
"testing"
|
"testing"
|
||||||
|
|
||||||
"github.com/stretchr/testify/require"
|
"github.com/stretchr/testify/require"
|
||||||
|
@ -14,6 +15,58 @@ type pair struct {
|
||||||
v float64
|
v float64
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func TestChunk(t *testing.T) {
|
||||||
|
for enc, nc := range map[Encoding]func(sz int) Chunk{
|
||||||
|
EncXOR: func(sz int) Chunk { return NewXORChunk(sz) },
|
||||||
|
} {
|
||||||
|
t.Run(fmt.Sprintf("%s", enc), func(t *testing.T) {
|
||||||
|
for range make([]struct{}, 10000) {
|
||||||
|
c := nc(rand.Intn(512))
|
||||||
|
testChunk(t, c)
|
||||||
|
}
|
||||||
|
})
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func testChunk(t *testing.T, c Chunk) {
|
||||||
|
app, err := c.Appender()
|
||||||
|
if err != nil {
|
||||||
|
t.Fatal(err)
|
||||||
|
}
|
||||||
|
|
||||||
|
var exp []pair
|
||||||
|
var (
|
||||||
|
ts = int64(1234123324)
|
||||||
|
v = 1243535.123
|
||||||
|
)
|
||||||
|
for {
|
||||||
|
ts += int64(rand.Intn(10000) + 1)
|
||||||
|
v = rand.Float64()
|
||||||
|
|
||||||
|
err := app.Append(ts, v)
|
||||||
|
if err != nil {
|
||||||
|
if err == ErrChunkFull {
|
||||||
|
break
|
||||||
|
}
|
||||||
|
t.Fatal(err)
|
||||||
|
}
|
||||||
|
exp = append(exp, pair{t: ts, v: v})
|
||||||
|
}
|
||||||
|
|
||||||
|
it := c.Iterator()
|
||||||
|
var res []pair
|
||||||
|
for it.Next() {
|
||||||
|
ts, v := it.Values()
|
||||||
|
res = append(res, pair{t: ts, v: v})
|
||||||
|
}
|
||||||
|
if it.Err() != nil {
|
||||||
|
t.Fatal(it.Err())
|
||||||
|
}
|
||||||
|
if !reflect.DeepEqual(exp, res) {
|
||||||
|
t.Fatalf("unexpected result\n\ngot: %v\n\nexp: %v", res, exp)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
func benchmarkIterator(b *testing.B, newChunk func(int) Chunk) {
|
func benchmarkIterator(b *testing.B, newChunk func(int) Chunk) {
|
||||||
var (
|
var (
|
||||||
t = int64(1234123324)
|
t = int64(1234123324)
|
||||||
|
|
Loading…
Reference in a new issue