| 111 | } |
| 112 | |
| 113 | func ConvertToChunks(t *testing.T, samples []cortexpb.Sample, histograms []*cortexpb.Histogram) []client.Chunk { |
| 114 | // We need to make sure that there is at least one chunk present, |
| 115 | // else no series will be selected. |
| 116 | var chk chunkenc.Chunk |
| 117 | if len(samples) > 0 { |
| 118 | chk = chunkenc.NewXORChunk() |
| 119 | appender, err := chk.Appender() |
| 120 | require.NoError(t, err) |
| 121 | |
| 122 | for _, s := range samples { |
| 123 | appender.Append(s.TimestampMs, s.Value) |
| 124 | } |
| 125 | } else if len(histograms) > 0 { |
| 126 | if histograms[0].IsFloatHistogram() { |
| 127 | chk = chunkenc.NewFloatHistogramChunk() |
| 128 | appender, err := chk.Appender() |
| 129 | require.NoError(t, err) |
| 130 | for _, h := range histograms { |
| 131 | _, _, _, err = appender.AppendFloatHistogram(nil, h.TimestampMs, cortexpb.FloatHistogramProtoToFloatHistogram(*h), true) |
| 132 | } |
| 133 | require.NoError(t, err) |
| 134 | } else { |
| 135 | chk = chunkenc.NewHistogramChunk() |
| 136 | appender, err := chk.Appender() |
| 137 | require.NoError(t, err) |
| 138 | for _, h := range histograms { |
| 139 | _, _, _, err = appender.AppendHistogram(nil, h.TimestampMs, cortexpb.HistogramProtoToHistogram(*h), true) |
| 140 | } |
| 141 | require.NoError(t, err) |
| 142 | } |
| 143 | } |
| 144 | |
| 145 | c := chunk.NewChunk(labels.EmptyLabels(), chk, model.Time(samples[0].TimestampMs), model.Time(samples[len(samples)-1].TimestampMs)) |
| 146 | clientChunks, err := chunkcompat.ToChunks([]chunk.Chunk{c}) |
| 147 | require.NoError(t, err) |
| 148 | |
| 149 | return clientChunks |
| 150 | } |