@@ -188,6 +188,13 @@ func expandSeriesIterator(it SeriesIterator) (r []tsdbutil.Sample, err error) {
188188 return r , it .Err ()
189189}
190190
191+ func expandChunkIterator (it ChunkIterator ) (chks []chunks.Meta ) {
192+ for it .Next () {
193+ chks = append (chks , it .At ())
194+ }
195+ return chks
196+ }
197+
191198type seriesSamples struct {
192199 lset map [string ]string
193200 chunks [][]sample
@@ -661,8 +668,9 @@ type itSeries struct {
661668 si SeriesIterator
662669}
663670
664- func (s itSeries ) Iterator () SeriesIterator { return s .si }
665- func (s itSeries ) Labels () labels.Labels { return labels.Labels {} }
671+ func (s itSeries ) Iterator () SeriesIterator { return s .si }
672+ func (s itSeries ) Labels () labels.Labels { return labels.Labels {} }
673+ func (s itSeries ) ChunkIterator () ChunkIterator { return nil }
666674
667675func TestSeriesIterator (t * testing.T ) {
668676 itcases := []struct {
@@ -1044,6 +1052,46 @@ func TestSeriesIterator(t *testing.T) {
10441052 })
10451053}
10461054
1055+ func TestChunkIterator (t * testing.T ) {
1056+ it := & chunkIterator {}
1057+ testutil .Equals (t , []chunks.Meta (nil ), expandChunkIterator (it ))
1058+ testutil .Equals (t , false , it .Next ())
1059+
1060+ chks := []chunks.Meta {
1061+ tsdbutil .ChunkFromSamples ([]tsdbutil.Sample {sample {1 , 1 }, sample {1 , 2 }}),
1062+ tsdbutil .ChunkFromSamples ([]tsdbutil.Sample {sample {2 , 1 }, sample {2 , 2 }}),
1063+ tsdbutil .ChunkFromSamples ([]tsdbutil.Sample {sample {3 , 1 }, sample {3 , 2 }}),
1064+ }
1065+ it = & chunkIterator {chunks : chks }
1066+ testutil .Equals (t , chks , expandChunkIterator (it ))
1067+ testutil .Equals (t , false , it .Next ())
1068+ }
1069+
1070+ func TestChainedChunkIterator (t * testing.T ) {
1071+ it := & chainedChunkIterator {}
1072+ testutil .Equals (t , []chunks.Meta (nil ), expandChunkIterator (it ))
1073+ testutil .Equals (t , false , it .Next ())
1074+
1075+ chks1 := []chunks.Meta {
1076+ tsdbutil .ChunkFromSamples ([]tsdbutil.Sample {sample {1 , 1 }, sample {1 , 2 }}),
1077+ tsdbutil .ChunkFromSamples ([]tsdbutil.Sample {sample {2 , 1 }, sample {2 , 2 }}),
1078+ tsdbutil .ChunkFromSamples ([]tsdbutil.Sample {sample {3 , 1 }, sample {3 , 2 }}),
1079+ }
1080+ chks2 := []chunks.Meta (nil )
1081+ chks3 := []chunks.Meta {
1082+ tsdbutil .ChunkFromSamples ([]tsdbutil.Sample {sample {4 , 1 }, sample {4 , 2 }}),
1083+ tsdbutil .ChunkFromSamples ([]tsdbutil.Sample {sample {5 , 1 }, sample {5 , 2 }}),
1084+ }
1085+
1086+ it = & chainedChunkIterator {chain : []ChunkIterator {
1087+ & chunkIterator {chunks : chks1 },
1088+ & chunkIterator {chunks : chks2 },
1089+ & chunkIterator {chunks : chks3 },
1090+ }}
1091+ testutil .Equals (t , append (chks1 , chks3 ... ), expandChunkIterator (it ))
1092+ testutil .Equals (t , false , it .Next ())
1093+ }
1094+
10471095// Regression for: https://github.com/prometheus/tsdb/pull/97
10481096func TestChunkSeriesIterator_DoubleSeek (t * testing.T ) {
10491097 chkMetas := []chunks.Meta {
@@ -1439,8 +1487,9 @@ func newSeries(l map[string]string, s []tsdbutil.Sample) Series {
14391487 iterator : func () SeriesIterator { return newListSeriesIterator (s ) },
14401488 }
14411489}
1442- func (m * mockSeries ) Labels () labels.Labels { return m .labels () }
1443- func (m * mockSeries ) Iterator () SeriesIterator { return m .iterator () }
1490+ func (m * mockSeries ) Labels () labels.Labels { return m .labels () }
1491+ func (m * mockSeries ) Iterator () SeriesIterator { return m .iterator () }
1492+ func (m * mockSeries ) ChunkIterator () ChunkIterator { return nil }
14441493
14451494type listSeriesIterator struct {
14461495 list []tsdbutil.Sample
0 commit comments