mirror of
https://github.com/prometheus/prometheus.git
synced 2025-03-05 20:59:13 -08:00
Merge pull request #13215 from fpetkovski/float-histogram-reuse
Enable reusing memory when converting between histogram types
This commit is contained in:
commit
db915b07cb
|
@ -282,50 +282,49 @@ func (h *Histogram) Compact(maxEmptyBuckets int) *Histogram {
|
||||||
return h
|
return h
|
||||||
}
|
}
|
||||||
|
|
||||||
// ToFloat returns a FloatHistogram representation of the Histogram. It is a
|
// ToFloat returns a FloatHistogram representation of the Histogram. It is a deep
|
||||||
// deep copy (e.g. spans are not shared).
|
// copy (e.g. spans are not shared). The function accepts a FloatHistogram as an
|
||||||
func (h *Histogram) ToFloat() *FloatHistogram {
|
// argument whose memory will be reused and overwritten if provided. If this
|
||||||
var (
|
// argument is nil, a new FloatHistogram will be allocated.
|
||||||
positiveSpans, negativeSpans []Span
|
func (h *Histogram) ToFloat(fh *FloatHistogram) *FloatHistogram {
|
||||||
positiveBuckets, negativeBuckets []float64
|
if fh == nil {
|
||||||
)
|
fh = &FloatHistogram{}
|
||||||
if len(h.PositiveSpans) != 0 {
|
|
||||||
positiveSpans = make([]Span, len(h.PositiveSpans))
|
|
||||||
copy(positiveSpans, h.PositiveSpans)
|
|
||||||
}
|
}
|
||||||
if len(h.NegativeSpans) != 0 {
|
fh.CounterResetHint = h.CounterResetHint
|
||||||
negativeSpans = make([]Span, len(h.NegativeSpans))
|
fh.Schema = h.Schema
|
||||||
copy(negativeSpans, h.NegativeSpans)
|
fh.ZeroThreshold = h.ZeroThreshold
|
||||||
}
|
fh.ZeroCount = float64(h.ZeroCount)
|
||||||
if len(h.PositiveBuckets) != 0 {
|
fh.Count = float64(h.Count)
|
||||||
positiveBuckets = make([]float64, len(h.PositiveBuckets))
|
fh.Sum = h.Sum
|
||||||
var current float64
|
|
||||||
|
fh.PositiveSpans = resize(fh.PositiveSpans, len(h.PositiveSpans))
|
||||||
|
copy(fh.PositiveSpans, h.PositiveSpans)
|
||||||
|
|
||||||
|
fh.NegativeSpans = resize(fh.NegativeSpans, len(h.NegativeSpans))
|
||||||
|
copy(fh.NegativeSpans, h.NegativeSpans)
|
||||||
|
|
||||||
|
fh.PositiveBuckets = resize(fh.PositiveBuckets, len(h.PositiveBuckets))
|
||||||
|
var currentPositive float64
|
||||||
for i, b := range h.PositiveBuckets {
|
for i, b := range h.PositiveBuckets {
|
||||||
current += float64(b)
|
currentPositive += float64(b)
|
||||||
positiveBuckets[i] = current
|
fh.PositiveBuckets[i] = currentPositive
|
||||||
}
|
|
||||||
}
|
|
||||||
if len(h.NegativeBuckets) != 0 {
|
|
||||||
negativeBuckets = make([]float64, len(h.NegativeBuckets))
|
|
||||||
var current float64
|
|
||||||
for i, b := range h.NegativeBuckets {
|
|
||||||
current += float64(b)
|
|
||||||
negativeBuckets[i] = current
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return &FloatHistogram{
|
fh.NegativeBuckets = resize(fh.NegativeBuckets, len(h.NegativeBuckets))
|
||||||
CounterResetHint: h.CounterResetHint,
|
var currentNegative float64
|
||||||
Schema: h.Schema,
|
for i, b := range h.NegativeBuckets {
|
||||||
ZeroThreshold: h.ZeroThreshold,
|
currentNegative += float64(b)
|
||||||
ZeroCount: float64(h.ZeroCount),
|
fh.NegativeBuckets[i] = currentNegative
|
||||||
Count: float64(h.Count),
|
|
||||||
Sum: h.Sum,
|
|
||||||
PositiveSpans: positiveSpans,
|
|
||||||
NegativeSpans: negativeSpans,
|
|
||||||
PositiveBuckets: positiveBuckets,
|
|
||||||
NegativeBuckets: negativeBuckets,
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
return fh
|
||||||
|
}
|
||||||
|
|
||||||
|
func resize[T any](items []T, n int) []T {
|
||||||
|
if cap(items) < n {
|
||||||
|
return make([]T, n)
|
||||||
|
}
|
||||||
|
return items[:n]
|
||||||
}
|
}
|
||||||
|
|
||||||
// Validate validates consistency between span and bucket slices. Also, buckets are checked
|
// Validate validates consistency between span and bucket slices. Also, buckets are checked
|
||||||
|
|
|
@ -408,9 +408,57 @@ func TestHistogramToFloat(t *testing.T) {
|
||||||
},
|
},
|
||||||
NegativeBuckets: []int64{1, 2, -2, 1, -1, 0},
|
NegativeBuckets: []int64{1, 2, -2, 1, -1, 0},
|
||||||
}
|
}
|
||||||
fh := h.ToFloat()
|
cases := []struct {
|
||||||
|
name string
|
||||||
|
fh *FloatHistogram
|
||||||
|
}{
|
||||||
|
{name: "without prior float histogram"},
|
||||||
|
{name: "prior float histogram with more buckets", fh: &FloatHistogram{
|
||||||
|
Schema: 2,
|
||||||
|
Count: 3,
|
||||||
|
Sum: 5,
|
||||||
|
ZeroThreshold: 4,
|
||||||
|
ZeroCount: 1,
|
||||||
|
PositiveSpans: []Span{
|
||||||
|
{Offset: 1, Length: 2},
|
||||||
|
{Offset: 1, Length: 2},
|
||||||
|
{Offset: 1, Length: 2},
|
||||||
|
},
|
||||||
|
PositiveBuckets: []float64{1, 2, 3, 4, 5, 6, 7, 8, 9},
|
||||||
|
NegativeSpans: []Span{
|
||||||
|
{Offset: 20, Length: 6},
|
||||||
|
{Offset: 12, Length: 7},
|
||||||
|
{Offset: 33, Length: 10},
|
||||||
|
},
|
||||||
|
NegativeBuckets: []float64{1, 2, 3, 4, 5, 6, 7, 8, 9},
|
||||||
|
}},
|
||||||
|
{name: "prior float histogram with fewer buckets", fh: &FloatHistogram{
|
||||||
|
Schema: 2,
|
||||||
|
Count: 3,
|
||||||
|
Sum: 5,
|
||||||
|
ZeroThreshold: 4,
|
||||||
|
ZeroCount: 1,
|
||||||
|
PositiveSpans: []Span{
|
||||||
|
{Offset: 1, Length: 2},
|
||||||
|
{Offset: 1, Length: 2},
|
||||||
|
{Offset: 1, Length: 2},
|
||||||
|
},
|
||||||
|
PositiveBuckets: []float64{1, 2},
|
||||||
|
NegativeSpans: []Span{
|
||||||
|
{Offset: 20, Length: 6},
|
||||||
|
{Offset: 12, Length: 7},
|
||||||
|
{Offset: 33, Length: 10},
|
||||||
|
},
|
||||||
|
NegativeBuckets: []float64{1, 2},
|
||||||
|
}},
|
||||||
|
}
|
||||||
|
|
||||||
|
for _, c := range cases {
|
||||||
|
t.Run(c.name, func(t *testing.T) {
|
||||||
|
fh := h.ToFloat(c.fh)
|
||||||
require.Equal(t, h.String(), fh.String())
|
require.Equal(t, h.String(), fh.String())
|
||||||
|
})
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// TestHistogramEquals tests both Histogram and FloatHistogram.
|
// TestHistogramEquals tests both Histogram and FloatHistogram.
|
||||||
|
@ -436,14 +484,14 @@ func TestHistogramEquals(t *testing.T) {
|
||||||
equals := func(h1, h2 Histogram) {
|
equals := func(h1, h2 Histogram) {
|
||||||
require.True(t, h1.Equals(&h2))
|
require.True(t, h1.Equals(&h2))
|
||||||
require.True(t, h2.Equals(&h1))
|
require.True(t, h2.Equals(&h1))
|
||||||
h1f, h2f := h1.ToFloat(), h2.ToFloat()
|
h1f, h2f := h1.ToFloat(nil), h2.ToFloat(nil)
|
||||||
require.True(t, h1f.Equals(h2f))
|
require.True(t, h1f.Equals(h2f))
|
||||||
require.True(t, h2f.Equals(h1f))
|
require.True(t, h2f.Equals(h1f))
|
||||||
}
|
}
|
||||||
notEquals := func(h1, h2 Histogram) {
|
notEquals := func(h1, h2 Histogram) {
|
||||||
require.False(t, h1.Equals(&h2))
|
require.False(t, h1.Equals(&h2))
|
||||||
require.False(t, h2.Equals(&h1))
|
require.False(t, h2.Equals(&h1))
|
||||||
h1f, h2f := h1.ToFloat(), h2.ToFloat()
|
h1f, h2f := h1.ToFloat(nil), h2.ToFloat(nil)
|
||||||
require.False(t, h1f.Equals(h2f))
|
require.False(t, h1f.Equals(h2f))
|
||||||
require.False(t, h2f.Equals(h1f))
|
require.False(t, h2f.Equals(h1f))
|
||||||
}
|
}
|
||||||
|
@ -950,7 +998,7 @@ func TestHistogramValidation(t *testing.T) {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
fh := tc.h.ToFloat()
|
fh := tc.h.ToFloat(nil)
|
||||||
if err := fh.Validate(); tc.errMsg != "" {
|
if err := fh.Validate(); tc.errMsg != "" {
|
||||||
require.EqualError(t, err, tc.errMsg)
|
require.EqualError(t, err, tc.errMsg)
|
||||||
} else {
|
} else {
|
||||||
|
|
|
@ -3267,7 +3267,7 @@ func TestNativeHistogram_HistogramCountAndSum(t *testing.T) {
|
||||||
app := storage.Appender(context.Background())
|
app := storage.Appender(context.Background())
|
||||||
var err error
|
var err error
|
||||||
if floatHisto {
|
if floatHisto {
|
||||||
_, err = app.AppendHistogram(0, lbls, ts, nil, h.ToFloat())
|
_, err = app.AppendHistogram(0, lbls, ts, nil, h.ToFloat(nil))
|
||||||
} else {
|
} else {
|
||||||
_, err = app.AppendHistogram(0, lbls, ts, h, nil)
|
_, err = app.AppendHistogram(0, lbls, ts, h, nil)
|
||||||
}
|
}
|
||||||
|
@ -3287,7 +3287,7 @@ func TestNativeHistogram_HistogramCountAndSum(t *testing.T) {
|
||||||
require.Len(t, vector, 1)
|
require.Len(t, vector, 1)
|
||||||
require.Nil(t, vector[0].H)
|
require.Nil(t, vector[0].H)
|
||||||
if floatHisto {
|
if floatHisto {
|
||||||
require.Equal(t, h.ToFloat().Count, vector[0].F)
|
require.Equal(t, h.ToFloat(nil).Count, vector[0].F)
|
||||||
} else {
|
} else {
|
||||||
require.Equal(t, float64(h.Count), vector[0].F)
|
require.Equal(t, float64(h.Count), vector[0].F)
|
||||||
}
|
}
|
||||||
|
@ -3305,7 +3305,7 @@ func TestNativeHistogram_HistogramCountAndSum(t *testing.T) {
|
||||||
require.Len(t, vector, 1)
|
require.Len(t, vector, 1)
|
||||||
require.Nil(t, vector[0].H)
|
require.Nil(t, vector[0].H)
|
||||||
if floatHisto {
|
if floatHisto {
|
||||||
require.Equal(t, h.ToFloat().Sum, vector[0].F)
|
require.Equal(t, h.ToFloat(nil).Sum, vector[0].F)
|
||||||
} else {
|
} else {
|
||||||
require.Equal(t, h.Sum, vector[0].F)
|
require.Equal(t, h.Sum, vector[0].F)
|
||||||
}
|
}
|
||||||
|
@ -3433,7 +3433,7 @@ func TestNativeHistogram_HistogramStdDevVar(t *testing.T) {
|
||||||
app := storage.Appender(context.Background())
|
app := storage.Appender(context.Background())
|
||||||
var err error
|
var err error
|
||||||
if floatHisto {
|
if floatHisto {
|
||||||
_, err = app.AppendHistogram(0, lbls, ts, nil, tc.h.ToFloat())
|
_, err = app.AppendHistogram(0, lbls, ts, nil, tc.h.ToFloat(nil))
|
||||||
} else {
|
} else {
|
||||||
_, err = app.AppendHistogram(0, lbls, ts, tc.h, nil)
|
_, err = app.AppendHistogram(0, lbls, ts, tc.h, nil)
|
||||||
}
|
}
|
||||||
|
@ -3678,7 +3678,7 @@ func TestNativeHistogram_HistogramQuantile(t *testing.T) {
|
||||||
app := storage.Appender(context.Background())
|
app := storage.Appender(context.Background())
|
||||||
var err error
|
var err error
|
||||||
if floatHisto {
|
if floatHisto {
|
||||||
_, err = app.AppendHistogram(0, lbls, ts, nil, c.h.ToFloat())
|
_, err = app.AppendHistogram(0, lbls, ts, nil, c.h.ToFloat(nil))
|
||||||
} else {
|
} else {
|
||||||
_, err = app.AppendHistogram(0, lbls, ts, c.h, nil)
|
_, err = app.AppendHistogram(0, lbls, ts, c.h, nil)
|
||||||
}
|
}
|
||||||
|
@ -4109,7 +4109,7 @@ func TestNativeHistogram_HistogramFraction(t *testing.T) {
|
||||||
app := storage.Appender(context.Background())
|
app := storage.Appender(context.Background())
|
||||||
var err error
|
var err error
|
||||||
if floatHisto {
|
if floatHisto {
|
||||||
_, err = app.AppendHistogram(0, lbls, ts, nil, c.h.ToFloat())
|
_, err = app.AppendHistogram(0, lbls, ts, nil, c.h.ToFloat(nil))
|
||||||
} else {
|
} else {
|
||||||
_, err = app.AppendHistogram(0, lbls, ts, c.h, nil)
|
_, err = app.AppendHistogram(0, lbls, ts, c.h, nil)
|
||||||
}
|
}
|
||||||
|
@ -4272,7 +4272,7 @@ func TestNativeHistogram_Sum_Count_Add_AvgOperator(t *testing.T) {
|
||||||
// Since we mutate h later, we need to create a copy here.
|
// Since we mutate h later, we need to create a copy here.
|
||||||
var err error
|
var err error
|
||||||
if floatHisto {
|
if floatHisto {
|
||||||
_, err = app.AppendHistogram(0, lbls, ts, nil, h.Copy().ToFloat())
|
_, err = app.AppendHistogram(0, lbls, ts, nil, h.Copy().ToFloat(nil))
|
||||||
} else {
|
} else {
|
||||||
_, err = app.AppendHistogram(0, lbls, ts, h.Copy(), nil)
|
_, err = app.AppendHistogram(0, lbls, ts, h.Copy(), nil)
|
||||||
}
|
}
|
||||||
|
@ -4282,7 +4282,7 @@ func TestNativeHistogram_Sum_Count_Add_AvgOperator(t *testing.T) {
|
||||||
newTs := ts + int64(idx1)*int64(time.Minute/time.Millisecond)
|
newTs := ts + int64(idx1)*int64(time.Minute/time.Millisecond)
|
||||||
// Since we mutate h later, we need to create a copy here.
|
// Since we mutate h later, we need to create a copy here.
|
||||||
if floatHisto {
|
if floatHisto {
|
||||||
_, err = app.AppendHistogram(0, lbls, newTs, nil, h.Copy().ToFloat())
|
_, err = app.AppendHistogram(0, lbls, newTs, nil, h.Copy().ToFloat(nil))
|
||||||
} else {
|
} else {
|
||||||
_, err = app.AppendHistogram(0, lbls, newTs, h.Copy(), nil)
|
_, err = app.AppendHistogram(0, lbls, newTs, h.Copy(), nil)
|
||||||
}
|
}
|
||||||
|
@ -4530,7 +4530,7 @@ func TestNativeHistogram_SubOperator(t *testing.T) {
|
||||||
// Since we mutate h later, we need to create a copy here.
|
// Since we mutate h later, we need to create a copy here.
|
||||||
var err error
|
var err error
|
||||||
if floatHisto {
|
if floatHisto {
|
||||||
_, err = app.AppendHistogram(0, lbls, ts, nil, h.Copy().ToFloat())
|
_, err = app.AppendHistogram(0, lbls, ts, nil, h.Copy().ToFloat(nil))
|
||||||
} else {
|
} else {
|
||||||
_, err = app.AppendHistogram(0, lbls, ts, h.Copy(), nil)
|
_, err = app.AppendHistogram(0, lbls, ts, h.Copy(), nil)
|
||||||
}
|
}
|
||||||
|
@ -4687,7 +4687,7 @@ func TestNativeHistogram_MulDivOperator(t *testing.T) {
|
||||||
// Since we mutate h later, we need to create a copy here.
|
// Since we mutate h later, we need to create a copy here.
|
||||||
var err error
|
var err error
|
||||||
if floatHisto {
|
if floatHisto {
|
||||||
_, err = app.AppendHistogram(0, lbls, ts, nil, h.Copy().ToFloat())
|
_, err = app.AppendHistogram(0, lbls, ts, nil, h.Copy().ToFloat(nil))
|
||||||
} else {
|
} else {
|
||||||
_, err = app.AppendHistogram(0, lbls, ts, h.Copy(), nil)
|
_, err = app.AppendHistogram(0, lbls, ts, h.Copy(), nil)
|
||||||
}
|
}
|
||||||
|
|
|
@ -1390,9 +1390,9 @@ func TestNativeHistogramsInRecordingRules(t *testing.T) {
|
||||||
|
|
||||||
require.Equal(t, labels.FromStrings("__name__", "sum:histogram_metric"), s.Labels())
|
require.Equal(t, labels.FromStrings("__name__", "sum:histogram_metric"), s.Labels())
|
||||||
|
|
||||||
expHist := hists[0].ToFloat()
|
expHist := hists[0].ToFloat(nil)
|
||||||
for _, h := range hists[1:] {
|
for _, h := range hists[1:] {
|
||||||
expHist = expHist.Add(h.ToFloat())
|
expHist = expHist.Add(h.ToFloat(nil))
|
||||||
}
|
}
|
||||||
|
|
||||||
it := s.Iterator(nil)
|
it := s.Iterator(nil)
|
||||||
|
|
|
@ -565,7 +565,7 @@ func TestBucketLimitAppender(t *testing.T) {
|
||||||
lbls := labels.FromStrings("__name__", "sparse_histogram_series")
|
lbls := labels.FromStrings("__name__", "sparse_histogram_series")
|
||||||
var err error
|
var err error
|
||||||
if floatHisto {
|
if floatHisto {
|
||||||
fh := c.h.Copy().ToFloat()
|
fh := c.h.Copy().ToFloat(nil)
|
||||||
_, err = app.AppendHistogram(0, lbls, ts, nil, fh)
|
_, err = app.AppendHistogram(0, lbls, ts, nil, fh)
|
||||||
if c.expectError {
|
if c.expectError {
|
||||||
require.Error(t, err)
|
require.Error(t, err)
|
||||||
|
|
|
@ -202,7 +202,7 @@ func (s hSample) H() *histogram.Histogram {
|
||||||
}
|
}
|
||||||
|
|
||||||
func (s hSample) FH() *histogram.FloatHistogram {
|
func (s hSample) FH() *histogram.FloatHistogram {
|
||||||
return s.h.ToFloat()
|
return s.h.ToFloat(nil)
|
||||||
}
|
}
|
||||||
|
|
||||||
func (s hSample) Type() chunkenc.ValueType {
|
func (s hSample) Type() chunkenc.ValueType {
|
||||||
|
@ -376,7 +376,7 @@ func (it *sampleRingIterator) AtHistogram() (int64, *histogram.Histogram) {
|
||||||
|
|
||||||
func (it *sampleRingIterator) AtFloatHistogram() (int64, *histogram.FloatHistogram) {
|
func (it *sampleRingIterator) AtFloatHistogram() (int64, *histogram.FloatHistogram) {
|
||||||
if it.fh == nil {
|
if it.fh == nil {
|
||||||
return it.t, it.h.ToFloat()
|
return it.t, it.h.ToFloat(nil)
|
||||||
}
|
}
|
||||||
return it.t, it.fh
|
return it.t, it.fh
|
||||||
}
|
}
|
||||||
|
|
|
@ -233,7 +233,7 @@ func TestBufferedSeriesIteratorMixedHistograms(t *testing.T) {
|
||||||
histograms := tsdbutil.GenerateTestHistograms(2)
|
histograms := tsdbutil.GenerateTestHistograms(2)
|
||||||
|
|
||||||
it := NewBufferIterator(NewListSeriesIterator(samples{
|
it := NewBufferIterator(NewListSeriesIterator(samples{
|
||||||
fhSample{t: 1, fh: histograms[0].ToFloat()},
|
fhSample{t: 1, fh: histograms[0].ToFloat(nil)},
|
||||||
hSample{t: 2, h: histograms[1]},
|
hSample{t: 2, h: histograms[1]},
|
||||||
}), 2)
|
}), 2)
|
||||||
|
|
||||||
|
@ -244,11 +244,11 @@ func TestBufferedSeriesIteratorMixedHistograms(t *testing.T) {
|
||||||
|
|
||||||
require.Equal(t, chunkenc.ValFloatHistogram, buf.Next())
|
require.Equal(t, chunkenc.ValFloatHistogram, buf.Next())
|
||||||
_, fh := buf.AtFloatHistogram()
|
_, fh := buf.AtFloatHistogram()
|
||||||
require.Equal(t, histograms[0].ToFloat(), fh)
|
require.Equal(t, histograms[0].ToFloat(nil), fh)
|
||||||
|
|
||||||
require.Equal(t, chunkenc.ValHistogram, buf.Next())
|
require.Equal(t, chunkenc.ValHistogram, buf.Next())
|
||||||
_, fh = buf.AtFloatHistogram()
|
_, fh = buf.AtFloatHistogram()
|
||||||
require.Equal(t, histograms[1].ToFloat(), fh)
|
require.Equal(t, histograms[1].ToFloat(nil), fh)
|
||||||
}
|
}
|
||||||
|
|
||||||
func BenchmarkBufferedSeriesIterator(b *testing.B) {
|
func BenchmarkBufferedSeriesIterator(b *testing.B) {
|
||||||
|
|
|
@ -57,7 +57,7 @@ var writeRequestFixture = &prompb.WriteRequest{
|
||||||
},
|
},
|
||||||
Samples: []prompb.Sample{{Value: 1, Timestamp: 0}},
|
Samples: []prompb.Sample{{Value: 1, Timestamp: 0}},
|
||||||
Exemplars: []prompb.Exemplar{{Labels: []prompb.Label{{Name: "f", Value: "g"}}, Value: 1, Timestamp: 0}},
|
Exemplars: []prompb.Exemplar{{Labels: []prompb.Label{{Name: "f", Value: "g"}}, Value: 1, Timestamp: 0}},
|
||||||
Histograms: []prompb.Histogram{HistogramToHistogramProto(0, &testHistogram), FloatHistogramToHistogramProto(1, testHistogram.ToFloat())},
|
Histograms: []prompb.Histogram{HistogramToHistogramProto(0, &testHistogram), FloatHistogramToHistogramProto(1, testHistogram.ToFloat(nil))},
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
Labels: []prompb.Label{
|
Labels: []prompb.Label{
|
||||||
|
@ -69,7 +69,7 @@ var writeRequestFixture = &prompb.WriteRequest{
|
||||||
},
|
},
|
||||||
Samples: []prompb.Sample{{Value: 2, Timestamp: 1}},
|
Samples: []prompb.Sample{{Value: 2, Timestamp: 1}},
|
||||||
Exemplars: []prompb.Exemplar{{Labels: []prompb.Label{{Name: "h", Value: "i"}}, Value: 2, Timestamp: 1}},
|
Exemplars: []prompb.Exemplar{{Labels: []prompb.Label{{Name: "h", Value: "i"}}, Value: 2, Timestamp: 1}},
|
||||||
Histograms: []prompb.Histogram{HistogramToHistogramProto(2, &testHistogram), FloatHistogramToHistogramProto(3, testHistogram.ToFloat())},
|
Histograms: []prompb.Histogram{HistogramToHistogramProto(2, &testHistogram), FloatHistogramToHistogramProto(3, testHistogram.ToFloat(nil))},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
|
|
@ -619,7 +619,7 @@ func createHistograms(numSamples, numSeries int, floatHistogram bool) ([]record.
|
||||||
fh := record.RefFloatHistogramSample{
|
fh := record.RefFloatHistogramSample{
|
||||||
Ref: chunks.HeadSeriesRef(i),
|
Ref: chunks.HeadSeriesRef(i),
|
||||||
T: int64(j),
|
T: int64(j),
|
||||||
FH: hist.ToFloat(),
|
FH: hist.ToFloat(nil),
|
||||||
}
|
}
|
||||||
floatHistograms = append(floatHistograms, fh)
|
floatHistograms = append(floatHistograms, fh)
|
||||||
} else {
|
} else {
|
||||||
|
|
|
@ -134,7 +134,7 @@ func TestOutOfOrderExemplar(t *testing.T) {
|
||||||
func TestOutOfOrderHistogram(t *testing.T) {
|
func TestOutOfOrderHistogram(t *testing.T) {
|
||||||
buf, _, err := buildWriteRequest([]prompb.TimeSeries{{
|
buf, _, err := buildWriteRequest([]prompb.TimeSeries{{
|
||||||
Labels: []prompb.Label{{Name: "__name__", Value: "test_metric"}},
|
Labels: []prompb.Label{{Name: "__name__", Value: "test_metric"}},
|
||||||
Histograms: []prompb.Histogram{HistogramToHistogramProto(0, &testHistogram), FloatHistogramToHistogramProto(1, testHistogram.ToFloat())},
|
Histograms: []prompb.Histogram{HistogramToHistogramProto(0, &testHistogram), FloatHistogramToHistogramProto(1, testHistogram.ToFloat(nil))},
|
||||||
}}, nil, nil, nil)
|
}}, nil, nil, nil)
|
||||||
require.NoError(t, err)
|
require.NoError(t, err)
|
||||||
|
|
||||||
|
|
|
@ -656,7 +656,7 @@ func genHistogramSeries(totalSeries, labelCount int, mint, maxt, step int64, flo
|
||||||
h.CounterResetHint = histogram.NotCounterReset
|
h.CounterResetHint = histogram.NotCounterReset
|
||||||
}
|
}
|
||||||
if floatHistogram {
|
if floatHistogram {
|
||||||
return sample{t: ts, fh: h.ToFloat()}
|
return sample{t: ts, fh: h.ToFloat(nil)}
|
||||||
}
|
}
|
||||||
return sample{t: ts, h: h}
|
return sample{t: ts, h: h}
|
||||||
})
|
})
|
||||||
|
@ -692,7 +692,7 @@ func genHistogramAndFloatSeries(totalSeries, labelCount int, mint, maxt, step in
|
||||||
h.CounterResetHint = histogram.NotCounterReset
|
h.CounterResetHint = histogram.NotCounterReset
|
||||||
}
|
}
|
||||||
if floatHistogram {
|
if floatHistogram {
|
||||||
s = sample{t: ts, fh: h.ToFloat()}
|
s = sample{t: ts, fh: h.ToFloat(nil)}
|
||||||
} else {
|
} else {
|
||||||
s = sample{t: ts, h: h}
|
s = sample{t: ts, h: h}
|
||||||
}
|
}
|
||||||
|
|
|
@ -94,10 +94,10 @@ func TestFloatHistogramChunkSameBuckets(t *testing.T) {
|
||||||
},
|
},
|
||||||
NegativeBuckets: []int64{2, 1, -1, -1}, // counts: 2, 3, 2, 1 (total 8)
|
NegativeBuckets: []int64{2, 1, -1, -1}, // counts: 2, 3, 2, 1 (total 8)
|
||||||
}
|
}
|
||||||
chk, _, app, err := app.AppendFloatHistogram(nil, ts, h.ToFloat(), false)
|
chk, _, app, err := app.AppendFloatHistogram(nil, ts, h.ToFloat(nil), false)
|
||||||
require.NoError(t, err)
|
require.NoError(t, err)
|
||||||
require.Nil(t, chk)
|
require.Nil(t, chk)
|
||||||
exp = append(exp, floatResult{t: ts, h: h.ToFloat()})
|
exp = append(exp, floatResult{t: ts, h: h.ToFloat(nil)})
|
||||||
require.Equal(t, 1, c.NumSamples())
|
require.Equal(t, 1, c.NumSamples())
|
||||||
|
|
||||||
// Add an updated histogram.
|
// Add an updated histogram.
|
||||||
|
@ -108,10 +108,10 @@ func TestFloatHistogramChunkSameBuckets(t *testing.T) {
|
||||||
h.Sum = 24.4
|
h.Sum = 24.4
|
||||||
h.PositiveBuckets = []int64{5, -2, 1, -2} // counts: 5, 3, 4, 2 (total 14)
|
h.PositiveBuckets = []int64{5, -2, 1, -2} // counts: 5, 3, 4, 2 (total 14)
|
||||||
h.NegativeBuckets = []int64{4, -1, 1, -1} // counts: 4, 3, 4, 4 (total 15)
|
h.NegativeBuckets = []int64{4, -1, 1, -1} // counts: 4, 3, 4, 4 (total 15)
|
||||||
chk, _, _, err = app.AppendFloatHistogram(nil, ts, h.ToFloat(), false)
|
chk, _, _, err = app.AppendFloatHistogram(nil, ts, h.ToFloat(nil), false)
|
||||||
require.NoError(t, err)
|
require.NoError(t, err)
|
||||||
require.Nil(t, chk)
|
require.Nil(t, chk)
|
||||||
expH := h.ToFloat()
|
expH := h.ToFloat(nil)
|
||||||
expH.CounterResetHint = histogram.NotCounterReset
|
expH.CounterResetHint = histogram.NotCounterReset
|
||||||
exp = append(exp, floatResult{t: ts, h: expH})
|
exp = append(exp, floatResult{t: ts, h: expH})
|
||||||
require.Equal(t, 2, c.NumSamples())
|
require.Equal(t, 2, c.NumSamples())
|
||||||
|
@ -127,10 +127,10 @@ func TestFloatHistogramChunkSameBuckets(t *testing.T) {
|
||||||
h.Sum = 24.4
|
h.Sum = 24.4
|
||||||
h.PositiveBuckets = []int64{6, 1, -3, 6} // counts: 6, 7, 4, 10 (total 27)
|
h.PositiveBuckets = []int64{6, 1, -3, 6} // counts: 6, 7, 4, 10 (total 27)
|
||||||
h.NegativeBuckets = []int64{5, 1, -2, 3} // counts: 5, 6, 4, 7 (total 22)
|
h.NegativeBuckets = []int64{5, 1, -2, 3} // counts: 5, 6, 4, 7 (total 22)
|
||||||
chk, _, _, err = app.AppendFloatHistogram(nil, ts, h.ToFloat(), false)
|
chk, _, _, err = app.AppendFloatHistogram(nil, ts, h.ToFloat(nil), false)
|
||||||
require.NoError(t, err)
|
require.NoError(t, err)
|
||||||
require.Nil(t, chk)
|
require.Nil(t, chk)
|
||||||
expH = h.ToFloat()
|
expH = h.ToFloat(nil)
|
||||||
expH.CounterResetHint = histogram.NotCounterReset
|
expH.CounterResetHint = histogram.NotCounterReset
|
||||||
exp = append(exp, floatResult{t: ts, h: expH})
|
exp = append(exp, floatResult{t: ts, h: expH})
|
||||||
require.Equal(t, 3, c.NumSamples())
|
require.Equal(t, 3, c.NumSamples())
|
||||||
|
@ -217,7 +217,7 @@ func TestFloatHistogramChunkBucketChanges(t *testing.T) {
|
||||||
NegativeBuckets: []int64{1},
|
NegativeBuckets: []int64{1},
|
||||||
}
|
}
|
||||||
|
|
||||||
chk, _, app, err := app.AppendFloatHistogram(nil, ts1, h1.ToFloat(), false)
|
chk, _, app, err := app.AppendFloatHistogram(nil, ts1, h1.ToFloat(nil), false)
|
||||||
require.NoError(t, err)
|
require.NoError(t, err)
|
||||||
require.Nil(t, chk)
|
require.Nil(t, chk)
|
||||||
require.Equal(t, 1, c.NumSamples())
|
require.Equal(t, 1, c.NumSamples())
|
||||||
|
@ -245,13 +245,13 @@ func TestFloatHistogramChunkBucketChanges(t *testing.T) {
|
||||||
h2.NegativeBuckets = []int64{2, -1} // 2 1 (total 3)
|
h2.NegativeBuckets = []int64{2, -1} // 2 1 (total 3)
|
||||||
// This is how span changes will be handled.
|
// This is how span changes will be handled.
|
||||||
hApp, _ := app.(*FloatHistogramAppender)
|
hApp, _ := app.(*FloatHistogramAppender)
|
||||||
posInterjections, negInterjections, ok, cr := hApp.appendable(h2.ToFloat())
|
posInterjections, negInterjections, ok, cr := hApp.appendable(h2.ToFloat(nil))
|
||||||
require.NotEmpty(t, posInterjections)
|
require.NotEmpty(t, posInterjections)
|
||||||
require.NotEmpty(t, negInterjections)
|
require.NotEmpty(t, negInterjections)
|
||||||
require.True(t, ok) // Only new buckets came in.
|
require.True(t, ok) // Only new buckets came in.
|
||||||
require.False(t, cr)
|
require.False(t, cr)
|
||||||
c, app = hApp.recode(posInterjections, negInterjections, h2.PositiveSpans, h2.NegativeSpans)
|
c, app = hApp.recode(posInterjections, negInterjections, h2.PositiveSpans, h2.NegativeSpans)
|
||||||
chk, _, _, err = app.AppendFloatHistogram(nil, ts2, h2.ToFloat(), false)
|
chk, _, _, err = app.AppendFloatHistogram(nil, ts2, h2.ToFloat(nil), false)
|
||||||
require.NoError(t, err)
|
require.NoError(t, err)
|
||||||
require.Nil(t, chk)
|
require.Nil(t, chk)
|
||||||
require.Equal(t, 2, c.NumSamples())
|
require.Equal(t, 2, c.NumSamples())
|
||||||
|
@ -263,10 +263,10 @@ func TestFloatHistogramChunkBucketChanges(t *testing.T) {
|
||||||
h1.PositiveBuckets = []int64{6, -3, -3, 3, -3, 0, 2, 2, 1, -5, 1}
|
h1.PositiveBuckets = []int64{6, -3, -3, 3, -3, 0, 2, 2, 1, -5, 1}
|
||||||
h1.NegativeSpans = h2.NegativeSpans
|
h1.NegativeSpans = h2.NegativeSpans
|
||||||
h1.NegativeBuckets = []int64{0, 1}
|
h1.NegativeBuckets = []int64{0, 1}
|
||||||
expH2 := h2.ToFloat()
|
expH2 := h2.ToFloat(nil)
|
||||||
expH2.CounterResetHint = histogram.NotCounterReset
|
expH2.CounterResetHint = histogram.NotCounterReset
|
||||||
exp := []floatResult{
|
exp := []floatResult{
|
||||||
{t: ts1, h: h1.ToFloat()},
|
{t: ts1, h: h1.ToFloat(nil)},
|
||||||
{t: ts2, h: expH2},
|
{t: ts2, h: expH2},
|
||||||
}
|
}
|
||||||
it := c.Iterator(nil)
|
it := c.Iterator(nil)
|
||||||
|
|
|
@ -98,7 +98,7 @@ func TestHistogramChunkSameBuckets(t *testing.T) {
|
||||||
chk, _, app, err := app.AppendHistogram(nil, ts, h, false)
|
chk, _, app, err := app.AppendHistogram(nil, ts, h, false)
|
||||||
require.NoError(t, err)
|
require.NoError(t, err)
|
||||||
require.Nil(t, chk)
|
require.Nil(t, chk)
|
||||||
exp = append(exp, result{t: ts, h: h, fh: h.ToFloat()})
|
exp = append(exp, result{t: ts, h: h, fh: h.ToFloat(nil)})
|
||||||
require.Equal(t, 1, c.NumSamples())
|
require.Equal(t, 1, c.NumSamples())
|
||||||
|
|
||||||
// Add an updated histogram.
|
// Add an updated histogram.
|
||||||
|
@ -114,7 +114,7 @@ func TestHistogramChunkSameBuckets(t *testing.T) {
|
||||||
require.Nil(t, chk)
|
require.Nil(t, chk)
|
||||||
hExp := h.Copy()
|
hExp := h.Copy()
|
||||||
hExp.CounterResetHint = histogram.NotCounterReset
|
hExp.CounterResetHint = histogram.NotCounterReset
|
||||||
exp = append(exp, result{t: ts, h: hExp, fh: hExp.ToFloat()})
|
exp = append(exp, result{t: ts, h: hExp, fh: hExp.ToFloat(nil)})
|
||||||
require.Equal(t, 2, c.NumSamples())
|
require.Equal(t, 2, c.NumSamples())
|
||||||
|
|
||||||
// Add update with new appender.
|
// Add update with new appender.
|
||||||
|
@ -133,7 +133,7 @@ func TestHistogramChunkSameBuckets(t *testing.T) {
|
||||||
require.Nil(t, chk)
|
require.Nil(t, chk)
|
||||||
hExp = h.Copy()
|
hExp = h.Copy()
|
||||||
hExp.CounterResetHint = histogram.NotCounterReset
|
hExp.CounterResetHint = histogram.NotCounterReset
|
||||||
exp = append(exp, result{t: ts, h: hExp, fh: hExp.ToFloat()})
|
exp = append(exp, result{t: ts, h: hExp, fh: hExp.ToFloat(nil)})
|
||||||
require.Equal(t, 3, c.NumSamples())
|
require.Equal(t, 3, c.NumSamples())
|
||||||
|
|
||||||
// 1. Expand iterator in simple case.
|
// 1. Expand iterator in simple case.
|
||||||
|
@ -278,8 +278,8 @@ func TestHistogramChunkBucketChanges(t *testing.T) {
|
||||||
hExp := h2.Copy()
|
hExp := h2.Copy()
|
||||||
hExp.CounterResetHint = histogram.NotCounterReset
|
hExp.CounterResetHint = histogram.NotCounterReset
|
||||||
exp := []result{
|
exp := []result{
|
||||||
{t: ts1, h: h1, fh: h1.ToFloat()},
|
{t: ts1, h: h1, fh: h1.ToFloat(nil)},
|
||||||
{t: ts2, h: hExp, fh: hExp.ToFloat()},
|
{t: ts2, h: hExp, fh: hExp.ToFloat(nil)},
|
||||||
}
|
}
|
||||||
it := c.Iterator(nil)
|
it := c.Iterator(nil)
|
||||||
var act []result
|
var act []result
|
||||||
|
|
|
@ -1402,8 +1402,8 @@ func TestHeadCompactionWithHistograms(t *testing.T) {
|
||||||
for tsMinute := from; tsMinute <= to; tsMinute++ {
|
for tsMinute := from; tsMinute <= to; tsMinute++ {
|
||||||
var err error
|
var err error
|
||||||
if floatTest {
|
if floatTest {
|
||||||
_, err = app.AppendHistogram(0, lbls, minute(tsMinute), nil, h.ToFloat())
|
_, err = app.AppendHistogram(0, lbls, minute(tsMinute), nil, h.ToFloat(nil))
|
||||||
efh := h.ToFloat()
|
efh := h.ToFloat(nil)
|
||||||
if tsMinute == from {
|
if tsMinute == from {
|
||||||
efh.CounterResetHint = histogram.UnknownCounterReset
|
efh.CounterResetHint = histogram.UnknownCounterReset
|
||||||
} else {
|
} else {
|
||||||
|
|
|
@ -519,7 +519,7 @@ func TestAmendHistogramDatapointCausesError(t *testing.T) {
|
||||||
},
|
},
|
||||||
PositiveBuckets: []int64{1, 2, -2, 1, -1, 0, 0},
|
PositiveBuckets: []int64{1, 2, -2, 1, -1, 0, 0},
|
||||||
}
|
}
|
||||||
fh := h.ToFloat()
|
fh := h.ToFloat(nil)
|
||||||
|
|
||||||
app = db.Appender(ctx)
|
app = db.Appender(ctx)
|
||||||
_, err = app.AppendHistogram(0, labels.FromStrings("a", "c"), 0, h.Copy(), nil)
|
_, err = app.AppendHistogram(0, labels.FromStrings("a", "c"), 0, h.Copy(), nil)
|
||||||
|
@ -6392,8 +6392,8 @@ func testHistogramAppendAndQueryHelper(t *testing.T, floatHistogram bool) {
|
||||||
var err error
|
var err error
|
||||||
app := db.Appender(ctx)
|
app := db.Appender(ctx)
|
||||||
if floatHistogram {
|
if floatHistogram {
|
||||||
_, err = app.AppendHistogram(0, lbls, minute(tsMinute), nil, h.ToFloat())
|
_, err = app.AppendHistogram(0, lbls, minute(tsMinute), nil, h.ToFloat(nil))
|
||||||
efh := h.ToFloat()
|
efh := h.ToFloat(nil)
|
||||||
efh.CounterResetHint = expCRH
|
efh.CounterResetHint = expCRH
|
||||||
*exp = append(*exp, sample{t: minute(tsMinute), fh: efh})
|
*exp = append(*exp, sample{t: minute(tsMinute), fh: efh})
|
||||||
} else {
|
} else {
|
||||||
|
@ -6814,20 +6814,20 @@ func TestNativeHistogramFlag(t *testing.T) {
|
||||||
// Disabled by default.
|
// Disabled by default.
|
||||||
_, err = app.AppendHistogram(0, l, 100, h, nil)
|
_, err = app.AppendHistogram(0, l, 100, h, nil)
|
||||||
require.Equal(t, storage.ErrNativeHistogramsDisabled, err)
|
require.Equal(t, storage.ErrNativeHistogramsDisabled, err)
|
||||||
_, err = app.AppendHistogram(0, l, 105, nil, h.ToFloat())
|
_, err = app.AppendHistogram(0, l, 105, nil, h.ToFloat(nil))
|
||||||
require.Equal(t, storage.ErrNativeHistogramsDisabled, err)
|
require.Equal(t, storage.ErrNativeHistogramsDisabled, err)
|
||||||
|
|
||||||
// Enable and append.
|
// Enable and append.
|
||||||
db.EnableNativeHistograms()
|
db.EnableNativeHistograms()
|
||||||
_, err = app.AppendHistogram(0, l, 200, h, nil)
|
_, err = app.AppendHistogram(0, l, 200, h, nil)
|
||||||
require.NoError(t, err)
|
require.NoError(t, err)
|
||||||
_, err = app.AppendHistogram(0, l, 205, nil, h.ToFloat())
|
_, err = app.AppendHistogram(0, l, 205, nil, h.ToFloat(nil))
|
||||||
require.NoError(t, err)
|
require.NoError(t, err)
|
||||||
|
|
||||||
db.DisableNativeHistograms()
|
db.DisableNativeHistograms()
|
||||||
_, err = app.AppendHistogram(0, l, 300, h, nil)
|
_, err = app.AppendHistogram(0, l, 300, h, nil)
|
||||||
require.Equal(t, storage.ErrNativeHistogramsDisabled, err)
|
require.Equal(t, storage.ErrNativeHistogramsDisabled, err)
|
||||||
_, err = app.AppendHistogram(0, l, 305, nil, h.ToFloat())
|
_, err = app.AppendHistogram(0, l, 305, nil, h.ToFloat(nil))
|
||||||
require.Equal(t, storage.ErrNativeHistogramsDisabled, err)
|
require.Equal(t, storage.ErrNativeHistogramsDisabled, err)
|
||||||
|
|
||||||
require.NoError(t, app.Commit())
|
require.NoError(t, app.Commit())
|
||||||
|
@ -6836,7 +6836,7 @@ func TestNativeHistogramFlag(t *testing.T) {
|
||||||
require.NoError(t, err)
|
require.NoError(t, err)
|
||||||
act := query(t, q, labels.MustNewMatcher(labels.MatchEqual, "foo", "bar"))
|
act := query(t, q, labels.MustNewMatcher(labels.MatchEqual, "foo", "bar"))
|
||||||
require.Equal(t, map[string][]chunks.Sample{
|
require.Equal(t, map[string][]chunks.Sample{
|
||||||
l.String(): {sample{t: 200, h: h}, sample{t: 205, fh: h.ToFloat()}},
|
l.String(): {sample{t: 200, h: h}, sample{t: 205, fh: h.ToFloat(nil)}},
|
||||||
}, act)
|
}, act)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -4082,8 +4082,8 @@ func testHistogramStaleSampleHelper(t *testing.T, floatHistogram bool) {
|
||||||
for _, h := range tsdbutil.GenerateTestHistograms(numHistograms) {
|
for _, h := range tsdbutil.GenerateTestHistograms(numHistograms) {
|
||||||
var err error
|
var err error
|
||||||
if floatHistogram {
|
if floatHistogram {
|
||||||
_, err = app.AppendHistogram(0, l, 100*int64(len(expHistograms)), nil, h.ToFloat())
|
_, err = app.AppendHistogram(0, l, 100*int64(len(expHistograms)), nil, h.ToFloat(nil))
|
||||||
expHistograms = append(expHistograms, timedHistogram{t: 100 * int64(len(expHistograms)), fh: h.ToFloat()})
|
expHistograms = append(expHistograms, timedHistogram{t: 100 * int64(len(expHistograms)), fh: h.ToFloat(nil)})
|
||||||
} else {
|
} else {
|
||||||
_, err = app.AppendHistogram(0, l, 100*int64(len(expHistograms)), h, nil)
|
_, err = app.AppendHistogram(0, l, 100*int64(len(expHistograms)), h, nil)
|
||||||
expHistograms = append(expHistograms, timedHistogram{t: 100 * int64(len(expHistograms)), h: h})
|
expHistograms = append(expHistograms, timedHistogram{t: 100 * int64(len(expHistograms)), h: h})
|
||||||
|
@ -4113,8 +4113,8 @@ func testHistogramStaleSampleHelper(t *testing.T, floatHistogram bool) {
|
||||||
for _, h := range tsdbutil.GenerateTestHistograms(2 * numHistograms)[numHistograms:] {
|
for _, h := range tsdbutil.GenerateTestHistograms(2 * numHistograms)[numHistograms:] {
|
||||||
var err error
|
var err error
|
||||||
if floatHistogram {
|
if floatHistogram {
|
||||||
_, err = app.AppendHistogram(0, l, 100*int64(len(expHistograms)), nil, h.ToFloat())
|
_, err = app.AppendHistogram(0, l, 100*int64(len(expHistograms)), nil, h.ToFloat(nil))
|
||||||
expHistograms = append(expHistograms, timedHistogram{t: 100 * int64(len(expHistograms)), fh: h.ToFloat()})
|
expHistograms = append(expHistograms, timedHistogram{t: 100 * int64(len(expHistograms)), fh: h.ToFloat(nil)})
|
||||||
} else {
|
} else {
|
||||||
_, err = app.AppendHistogram(0, l, 100*int64(len(expHistograms)), h, nil)
|
_, err = app.AppendHistogram(0, l, 100*int64(len(expHistograms)), h, nil)
|
||||||
expHistograms = append(expHistograms, timedHistogram{t: 100 * int64(len(expHistograms)), h: h})
|
expHistograms = append(expHistograms, timedHistogram{t: 100 * int64(len(expHistograms)), h: h})
|
||||||
|
@ -4160,7 +4160,7 @@ func TestHistogramCounterResetHeader(t *testing.T) {
|
||||||
app := head.Appender(context.Background())
|
app := head.Appender(context.Background())
|
||||||
var err error
|
var err error
|
||||||
if floatHisto {
|
if floatHisto {
|
||||||
_, err = app.AppendHistogram(0, l, ts, nil, h.ToFloat())
|
_, err = app.AppendHistogram(0, l, ts, nil, h.ToFloat(nil))
|
||||||
} else {
|
} else {
|
||||||
_, err = app.AppendHistogram(0, l, ts, h.Copy(), nil)
|
_, err = app.AppendHistogram(0, l, ts, h.Copy(), nil)
|
||||||
}
|
}
|
||||||
|
|
|
@ -158,7 +158,7 @@ func TestRecord_EncodeDecode(t *testing.T) {
|
||||||
floatHistograms[i] = RefFloatHistogramSample{
|
floatHistograms[i] = RefFloatHistogramSample{
|
||||||
Ref: h.Ref,
|
Ref: h.Ref,
|
||||||
T: h.T,
|
T: h.T,
|
||||||
FH: h.H.ToFloat(),
|
FH: h.H.ToFloat(nil),
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
decFloatHistograms, err := dec.FloatHistogramSamples(enc.FloatHistogramSamples(floatHistograms, nil), nil)
|
decFloatHistograms, err := dec.FloatHistogramSamples(enc.FloatHistogramSamples(floatHistograms, nil), nil)
|
||||||
|
|
|
@ -199,7 +199,7 @@ func TestTailSamples(t *testing.T) {
|
||||||
floatHistogram := enc.FloatHistogramSamples([]record.RefFloatHistogramSample{{
|
floatHistogram := enc.FloatHistogramSamples([]record.RefFloatHistogramSample{{
|
||||||
Ref: chunks.HeadSeriesRef(inner),
|
Ref: chunks.HeadSeriesRef(inner),
|
||||||
T: now.UnixNano() + 1,
|
T: now.UnixNano() + 1,
|
||||||
FH: hist.ToFloat(),
|
FH: hist.ToFloat(nil),
|
||||||
}}, nil)
|
}}, nil)
|
||||||
require.NoError(t, w.Log(floatHistogram))
|
require.NoError(t, w.Log(floatHistogram))
|
||||||
}
|
}
|
||||||
|
|
|
@ -138,7 +138,7 @@ Loop:
|
||||||
case chunkenc.ValFloat:
|
case chunkenc.ValFloat:
|
||||||
f = sample.F()
|
f = sample.F()
|
||||||
case chunkenc.ValHistogram:
|
case chunkenc.ValHistogram:
|
||||||
fh = sample.H().ToFloat()
|
fh = sample.H().ToFloat(nil)
|
||||||
case chunkenc.ValFloatHistogram:
|
case chunkenc.ValFloatHistogram:
|
||||||
fh = sample.FH()
|
fh = sample.FH()
|
||||||
default:
|
default:
|
||||||
|
|
|
@ -354,7 +354,7 @@ func TestFederationWithNativeHistograms(t *testing.T) {
|
||||||
_, err = app.AppendHistogram(0, l, 100*60*1000, histWithoutZeroBucket.Copy(), nil)
|
_, err = app.AppendHistogram(0, l, 100*60*1000, histWithoutZeroBucket.Copy(), nil)
|
||||||
expVec = append(expVec, promql.Sample{
|
expVec = append(expVec, promql.Sample{
|
||||||
T: 100 * 60 * 1000,
|
T: 100 * 60 * 1000,
|
||||||
H: histWithoutZeroBucket.ToFloat(),
|
H: histWithoutZeroBucket.ToFloat(nil),
|
||||||
Metric: expL,
|
Metric: expL,
|
||||||
})
|
})
|
||||||
default:
|
default:
|
||||||
|
@ -363,7 +363,7 @@ func TestFederationWithNativeHistograms(t *testing.T) {
|
||||||
_, err = app.AppendHistogram(0, l, 100*60*1000, hist.Copy(), nil)
|
_, err = app.AppendHistogram(0, l, 100*60*1000, hist.Copy(), nil)
|
||||||
expVec = append(expVec, promql.Sample{
|
expVec = append(expVec, promql.Sample{
|
||||||
T: 100 * 60 * 1000,
|
T: 100 * 60 * 1000,
|
||||||
H: hist.ToFloat(),
|
H: hist.ToFloat(nil),
|
||||||
Metric: expL,
|
Metric: expL,
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue