Fix NaN sum check in [Float]Histogram.Equals method

Signed-off-by: Linas Medziunas <linas.medziunas@gmail.com>
This commit is contained in:
Linas Medziunas 2023-09-25 16:03:55 +03:00
parent 5d233df7ef
commit cbd01fc296
3 changed files with 14 additions and 4 deletions

View file

@ -313,7 +313,8 @@ func (h *FloatHistogram) Equals(h2 *FloatHistogram) bool {
} }
if h.Schema != h2.Schema || h.ZeroThreshold != h2.ZeroThreshold || if h.Schema != h2.Schema || h.ZeroThreshold != h2.ZeroThreshold ||
h.ZeroCount != h2.ZeroCount || h.Count != h2.Count || h.Sum != h2.Sum { h.ZeroCount != h2.ZeroCount || h.Count != h2.Count ||
math.Float64bits(h.Sum) != math.Float64bits(h2.Sum) {
return false return false
} }

View file

@ -178,7 +178,8 @@ func (h *Histogram) Equals(h2 *Histogram) bool {
} }
if h.Schema != h2.Schema || h.ZeroThreshold != h2.ZeroThreshold || if h.Schema != h2.Schema || h.ZeroThreshold != h2.ZeroThreshold ||
h.ZeroCount != h2.ZeroCount || h.Count != h2.Count || h.Sum != h2.Sum { h.ZeroCount != h2.ZeroCount || h.Count != h2.Count ||
math.Float64bits(h.Sum) != math.Float64bits(h2.Sum) {
return false return false
} }

View file

@ -19,6 +19,8 @@ import (
"testing" "testing"
"github.com/stretchr/testify/require" "github.com/stretchr/testify/require"
"github.com/prometheus/prometheus/model/value"
) )
func TestHistogramString(t *testing.T) { func TestHistogramString(t *testing.T) {
@ -411,8 +413,8 @@ func TestHistogramToFloat(t *testing.T) {
require.Equal(t, h.String(), fh.String()) require.Equal(t, h.String(), fh.String())
} }
// TestHistogramMatches tests both Histogram and FloatHistogram. // TestHistogramEquals tests both Histogram and FloatHistogram.
func TestHistogramMatches(t *testing.T) { func TestHistogramEquals(t *testing.T) {
h1 := Histogram{ h1 := Histogram{
Schema: 3, Schema: 3,
Count: 61, Count: 61,
@ -537,6 +539,12 @@ func TestHistogramMatches(t *testing.T) {
}) })
h2.NegativeBuckets = append(h2.NegativeBuckets, 1) h2.NegativeBuckets = append(h2.NegativeBuckets, 1)
notEquals(h1, *h2) notEquals(h1, *h2)
// StaleNaN.
h2 = h1.Copy()
h2.Sum = math.Float64frombits(value.StaleNaN)
notEquals(h1, *h2)
equals(*h2, *h2)
} }
func TestHistogramCompact(t *testing.T) { func TestHistogramCompact(t *testing.T) {