mirror of
https://github.com/prometheus/prometheus.git
synced 2025-03-05 20:59:13 -08:00
use test utils in index_test
This commit is contained in:
parent
a1a91ea96a
commit
945b6b01aa
|
@ -24,7 +24,6 @@ import (
|
||||||
"github.com/pkg/errors"
|
"github.com/pkg/errors"
|
||||||
"github.com/prometheus/tsdb/chunks"
|
"github.com/prometheus/tsdb/chunks"
|
||||||
"github.com/prometheus/tsdb/labels"
|
"github.com/prometheus/tsdb/labels"
|
||||||
"github.com/stretchr/testify/require"
|
|
||||||
)
|
)
|
||||||
|
|
||||||
type series struct {
|
type series struct {
|
||||||
|
@ -151,35 +150,35 @@ func (m mockIndex) LabelIndices() ([][]string, error) {
|
||||||
|
|
||||||
func TestIndexRW_Create_Open(t *testing.T) {
|
func TestIndexRW_Create_Open(t *testing.T) {
|
||||||
dir, err := ioutil.TempDir("", "test_index_create")
|
dir, err := ioutil.TempDir("", "test_index_create")
|
||||||
require.NoError(t, err)
|
Ok(t, err)
|
||||||
defer os.RemoveAll(dir)
|
defer os.RemoveAll(dir)
|
||||||
|
|
||||||
// An empty index must still result in a readable file.
|
// An empty index must still result in a readable file.
|
||||||
iw, err := newIndexWriter(dir)
|
iw, err := newIndexWriter(dir)
|
||||||
require.NoError(t, err, "create index writer")
|
Ok(t, err)
|
||||||
require.NoError(t, iw.Close(), "close index writer")
|
Ok(t, iw.Close())
|
||||||
|
|
||||||
ir, err := NewFileIndexReader(filepath.Join(dir, "index"))
|
ir, err := NewFileIndexReader(filepath.Join(dir, "index"))
|
||||||
require.NoError(t, err, "open index reader")
|
Ok(t, err)
|
||||||
require.NoError(t, ir.Close(), "close index reader")
|
Ok(t, ir.Close())
|
||||||
|
|
||||||
// Modify magic header must cause open to fail.
|
// Modify magic header must cause open to fail.
|
||||||
f, err := os.OpenFile(filepath.Join(dir, "index"), os.O_WRONLY, 0666)
|
f, err := os.OpenFile(filepath.Join(dir, "index"), os.O_WRONLY, 0666)
|
||||||
require.NoError(t, err)
|
Ok(t, err)
|
||||||
_, err = f.WriteAt([]byte{0, 0}, 0)
|
_, err = f.WriteAt([]byte{0, 0}, 0)
|
||||||
require.NoError(t, err)
|
Ok(t, err)
|
||||||
|
|
||||||
_, err = NewFileIndexReader(dir)
|
_, err = NewFileIndexReader(dir)
|
||||||
require.Error(t, err)
|
NotOk(t, err)
|
||||||
}
|
}
|
||||||
|
|
||||||
func TestIndexRW_Postings(t *testing.T) {
|
func TestIndexRW_Postings(t *testing.T) {
|
||||||
dir, err := ioutil.TempDir("", "test_index_postings")
|
dir, err := ioutil.TempDir("", "test_index_postings")
|
||||||
require.NoError(t, err)
|
Ok(t, err)
|
||||||
defer os.RemoveAll(dir)
|
defer os.RemoveAll(dir)
|
||||||
|
|
||||||
iw, err := newIndexWriter(dir)
|
iw, err := newIndexWriter(dir)
|
||||||
require.NoError(t, err, "create index writer")
|
Ok(t, err)
|
||||||
|
|
||||||
series := []labels.Labels{
|
series := []labels.Labels{
|
||||||
labels.FromStrings("a", "1", "b", "1"),
|
labels.FromStrings("a", "1", "b", "1"),
|
||||||
|
@ -196,25 +195,25 @@ func TestIndexRW_Postings(t *testing.T) {
|
||||||
"3": struct{}{},
|
"3": struct{}{},
|
||||||
"4": struct{}{},
|
"4": struct{}{},
|
||||||
})
|
})
|
||||||
require.NoError(t, err)
|
Ok(t, err)
|
||||||
|
|
||||||
// Postings lists are only written if a series with the respective
|
// Postings lists are only written if a series with the respective
|
||||||
// reference was added before.
|
// reference was added before.
|
||||||
require.NoError(t, iw.AddSeries(1, series[0]))
|
Ok(t, iw.AddSeries(1, series[0]))
|
||||||
require.NoError(t, iw.AddSeries(2, series[1]))
|
Ok(t, iw.AddSeries(2, series[1]))
|
||||||
require.NoError(t, iw.AddSeries(3, series[2]))
|
Ok(t, iw.AddSeries(3, series[2]))
|
||||||
require.NoError(t, iw.AddSeries(4, series[3]))
|
Ok(t, iw.AddSeries(4, series[3]))
|
||||||
|
|
||||||
err = iw.WritePostings("a", "1", newListPostings([]uint64{1, 2, 3, 4}))
|
err = iw.WritePostings("a", "1", newListPostings([]uint64{1, 2, 3, 4}))
|
||||||
require.NoError(t, err)
|
Ok(t, err)
|
||||||
|
|
||||||
require.NoError(t, iw.Close())
|
Ok(t, iw.Close())
|
||||||
|
|
||||||
ir, err := NewFileIndexReader(filepath.Join(dir, "index"))
|
ir, err := NewFileIndexReader(filepath.Join(dir, "index"))
|
||||||
require.NoError(t, err, "open index reader")
|
Ok(t, err)
|
||||||
|
|
||||||
p, err := ir.Postings("a", "1")
|
p, err := ir.Postings("a", "1")
|
||||||
require.NoError(t, err)
|
Ok(t, err)
|
||||||
|
|
||||||
var l labels.Labels
|
var l labels.Labels
|
||||||
var c []ChunkMeta
|
var c []ChunkMeta
|
||||||
|
@ -222,22 +221,22 @@ func TestIndexRW_Postings(t *testing.T) {
|
||||||
for i := 0; p.Next(); i++ {
|
for i := 0; p.Next(); i++ {
|
||||||
err := ir.Series(p.At(), &l, &c)
|
err := ir.Series(p.At(), &l, &c)
|
||||||
|
|
||||||
require.NoError(t, err)
|
Ok(t, err)
|
||||||
require.Equal(t, 0, len(c))
|
Equals(t, 0, len(c))
|
||||||
require.Equal(t, series[i], l)
|
Equals(t, series[i], l)
|
||||||
}
|
}
|
||||||
require.NoError(t, p.Err())
|
Ok(t, p.Err())
|
||||||
|
|
||||||
require.NoError(t, ir.Close())
|
Ok(t, ir.Close())
|
||||||
}
|
}
|
||||||
|
|
||||||
func TestPersistence_index_e2e(t *testing.T) {
|
func TestPersistence_index_e2e(t *testing.T) {
|
||||||
dir, err := ioutil.TempDir("", "test_persistence_e2e")
|
dir, err := ioutil.TempDir("", "test_persistence_e2e")
|
||||||
require.NoError(t, err)
|
Ok(t, err)
|
||||||
defer os.RemoveAll(dir)
|
defer os.RemoveAll(dir)
|
||||||
|
|
||||||
lbls, err := readPrometheusLabels("testdata/20k.series", 20000)
|
lbls, err := readPrometheusLabels("testdata/20k.series", 20000)
|
||||||
require.NoError(t, err)
|
Ok(t, err)
|
||||||
|
|
||||||
// Sort labels as the index writer expects series in sorted order.
|
// Sort labels as the index writer expects series in sorted order.
|
||||||
sort.Sort(labels.Slice(lbls))
|
sort.Sort(labels.Slice(lbls))
|
||||||
|
@ -271,9 +270,9 @@ func TestPersistence_index_e2e(t *testing.T) {
|
||||||
}
|
}
|
||||||
|
|
||||||
iw, err := newIndexWriter(dir)
|
iw, err := newIndexWriter(dir)
|
||||||
require.NoError(t, err)
|
Ok(t, err)
|
||||||
|
|
||||||
require.NoError(t, iw.AddSymbols(symbols))
|
Ok(t, iw.AddSymbols(symbols))
|
||||||
|
|
||||||
// Population procedure as done by compaction.
|
// Population procedure as done by compaction.
|
||||||
var (
|
var (
|
||||||
|
@ -286,7 +285,7 @@ func TestPersistence_index_e2e(t *testing.T) {
|
||||||
|
|
||||||
for i, s := range input {
|
for i, s := range input {
|
||||||
err = iw.AddSeries(uint64(i), s.labels, s.chunks...)
|
err = iw.AddSeries(uint64(i), s.labels, s.chunks...)
|
||||||
require.NoError(t, err)
|
Ok(t, err)
|
||||||
mi.AddSeries(uint64(i), s.labels, s.chunks...)
|
mi.AddSeries(uint64(i), s.labels, s.chunks...)
|
||||||
|
|
||||||
for _, l := range s.labels {
|
for _, l := range s.labels {
|
||||||
|
@ -304,8 +303,8 @@ func TestPersistence_index_e2e(t *testing.T) {
|
||||||
for k, v := range values {
|
for k, v := range values {
|
||||||
vals := v.slice()
|
vals := v.slice()
|
||||||
|
|
||||||
require.NoError(t, iw.WriteLabelIndex([]string{k}, vals))
|
Ok(t, iw.WriteLabelIndex([]string{k}, vals))
|
||||||
require.NoError(t, mi.WriteLabelIndex([]string{k}, vals))
|
Ok(t, mi.WriteLabelIndex([]string{k}, vals))
|
||||||
}
|
}
|
||||||
|
|
||||||
all := make([]uint64, len(lbls))
|
all := make([]uint64, len(lbls))
|
||||||
|
@ -313,24 +312,24 @@ func TestPersistence_index_e2e(t *testing.T) {
|
||||||
all[i] = uint64(i)
|
all[i] = uint64(i)
|
||||||
}
|
}
|
||||||
err = iw.WritePostings("", "", newListPostings(all))
|
err = iw.WritePostings("", "", newListPostings(all))
|
||||||
require.NoError(t, err)
|
Ok(t, err)
|
||||||
mi.WritePostings("", "", newListPostings(all))
|
mi.WritePostings("", "", newListPostings(all))
|
||||||
|
|
||||||
for l := range postings.m {
|
for l := range postings.m {
|
||||||
err = iw.WritePostings(l.Name, l.Value, postings.get(l.Name, l.Value))
|
err = iw.WritePostings(l.Name, l.Value, postings.get(l.Name, l.Value))
|
||||||
require.NoError(t, err)
|
Ok(t, err)
|
||||||
mi.WritePostings(l.Name, l.Value, postings.get(l.Name, l.Value))
|
mi.WritePostings(l.Name, l.Value, postings.get(l.Name, l.Value))
|
||||||
}
|
}
|
||||||
|
|
||||||
err = iw.Close()
|
err = iw.Close()
|
||||||
require.NoError(t, err)
|
Ok(t, err)
|
||||||
|
|
||||||
ir, err := NewFileIndexReader(filepath.Join(dir, "index"))
|
ir, err := NewFileIndexReader(filepath.Join(dir, "index"))
|
||||||
require.NoError(t, err)
|
Ok(t, err)
|
||||||
|
|
||||||
for p := range mi.postings.m {
|
for p := range mi.postings.m {
|
||||||
gotp, err := ir.Postings(p.Name, p.Value)
|
gotp, err := ir.Postings(p.Name, p.Value)
|
||||||
require.NoError(t, err)
|
Ok(t, err)
|
||||||
|
|
||||||
expp, err := mi.Postings(p.Name, p.Value)
|
expp, err := mi.Postings(p.Name, p.Value)
|
||||||
|
|
||||||
|
@ -338,39 +337,39 @@ func TestPersistence_index_e2e(t *testing.T) {
|
||||||
var chks, expchks []ChunkMeta
|
var chks, expchks []ChunkMeta
|
||||||
|
|
||||||
for gotp.Next() {
|
for gotp.Next() {
|
||||||
require.True(t, expp.Next())
|
Assert(t, expp.Next() == true, "")
|
||||||
|
|
||||||
ref := gotp.At()
|
ref := gotp.At()
|
||||||
|
|
||||||
err := ir.Series(ref, &lset, &chks)
|
err := ir.Series(ref, &lset, &chks)
|
||||||
require.NoError(t, err)
|
Ok(t, err)
|
||||||
|
|
||||||
err = mi.Series(expp.At(), &explset, &expchks)
|
err = mi.Series(expp.At(), &explset, &expchks)
|
||||||
require.Equal(t, explset, lset)
|
Equals(t, explset, lset)
|
||||||
require.Equal(t, expchks, chks)
|
Equals(t, expchks, chks)
|
||||||
}
|
}
|
||||||
require.False(t, expp.Next())
|
Assert(t, expp.Next() == false, "")
|
||||||
require.NoError(t, gotp.Err())
|
Ok(t, gotp.Err())
|
||||||
}
|
}
|
||||||
|
|
||||||
for k, v := range mi.labelIndex {
|
for k, v := range mi.labelIndex {
|
||||||
tplsExp, err := newStringTuples(v, 1)
|
tplsExp, err := newStringTuples(v, 1)
|
||||||
require.NoError(t, err)
|
Ok(t, err)
|
||||||
|
|
||||||
tplsRes, err := ir.LabelValues(k)
|
tplsRes, err := ir.LabelValues(k)
|
||||||
require.NoError(t, err)
|
Ok(t, err)
|
||||||
|
|
||||||
require.Equal(t, tplsExp.Len(), tplsRes.Len())
|
Equals(t, tplsExp.Len(), tplsRes.Len())
|
||||||
for i := 0; i < tplsExp.Len(); i++ {
|
for i := 0; i < tplsExp.Len(); i++ {
|
||||||
strsExp, err := tplsExp.At(i)
|
strsExp, err := tplsExp.At(i)
|
||||||
require.NoError(t, err)
|
Ok(t, err)
|
||||||
|
|
||||||
strsRes, err := tplsRes.At(i)
|
strsRes, err := tplsRes.At(i)
|
||||||
require.NoError(t, err)
|
Ok(t, err)
|
||||||
|
|
||||||
require.Equal(t, strsExp, strsRes)
|
Equals(t, strsExp, strsRes)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
require.NoError(t, ir.Close())
|
Ok(t, ir.Close())
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue