diff --git a/model/value.go b/model/value.go index eed5c9ef..ff2751e2 100644 --- a/model/value.go +++ b/model/value.go @@ -51,6 +51,9 @@ func (s *Sample) Equal(o *Sample) bool { if !s.Timestamp.Equal(o.Timestamp) { return false } + if (s.Histogram == nil) != (o.Histogram == nil) { + return false + } if s.Histogram != nil { return s.Histogram.Equal(o.Histogram) } diff --git a/model/value_test.go b/model/value_test.go index 1f1d8278..57fe6c5f 100644 --- a/model/value_test.go +++ b/model/value_test.go @@ -157,6 +157,20 @@ func TestEqualSamples(t *testing.T) { } } +func TestEqualSamplesDifferentValueTypes(t *testing.T) { + floatSample := &Sample{Value: 0} + histogramSample := &Sample{Histogram: genSampleHistogram()} + + t.Run("float receiver", func(t *testing.T) { + require.False(t, floatSample.Equal(histogramSample)) + }) + t.Run("histogram receiver", func(t *testing.T) { + require.NotPanics(t, func() { + require.False(t, histogramSample.Equal(floatSample)) + }) + }) +} + func TestScalarJSON(t *testing.T) { input := []struct { plain string