diff --git a/metrics/histogram.go b/metrics/histogram.go index b86b1bf..e19a4f9 100644 --- a/metrics/histogram.go +++ b/metrics/histogram.go @@ -110,56 +110,6 @@ func (h *Histogram) Humanize() string { return string(stringBuffer.Bytes()) } -// Find what bucket and element index contains a given percentile value. -// If a percentile is requested that results in a corresponding index that is no -// longer contained by the bucket, the index of the last item is returned. This -// may occur if the underlying bucket catalogs values and employs an eviction -// strategy. -func (h *Histogram) bucketForPercentile(percentile float64) (bucket *Bucket, index int) { - var totalObservations int = 0 - - for _, bucket := range h.buckets { - totalObservations += bucket.Observations() - } - - expectedIndex := int(math.Floor(percentile * float64(totalObservations))) - - var accumulatedObservations int = 0 - var lastBucket Bucket = nil - var lastAccumulatedObservations int = 0 - for _, bucket := range h.buckets { - if lastBucket == nil { - lastBucket = bucket - } - - observations := bucket.Observations() - accumulatedObservations += observations - - if observations == 0 { - continue - } - - if accumulatedObservations > expectedIndex { - break - } else if accumulatedObservations == expectedIndex { - lastBucket = bucket - break - } - - lastAccumulatedObservations = accumulatedObservations - lastBucket = bucket - } - - var offset int - offset = int(expectedIndex - lastAccumulatedObservations) - - if offset > 0 { - offset-- - } - - return &lastBucket, offset -} - func previousCumulativeObservations(cumulativeObservations []int, bucketIndex int) int { if bucketIndex == 0 { return 0 @@ -172,7 +122,12 @@ func prospectiveIndexForPercentile(percentile float64, totalObservations int) in return int(math.Floor(percentile * float64(totalObservations))) } -func (h *Histogram) bucketForPercentile2(percentile float64) (bucket *Bucket, index int) { +// Find what bucket and element index contains a given percentile value. +// If a percentile is requested that results in a corresponding index that is no +// longer contained by the bucket, the index of the last item is returned. This +// may occur if the underlying bucket catalogs values and employs an eviction +// strategy. +func (h *Histogram) bucketForPercentile(percentile float64) (bucket *Bucket, index int) { bucketCount := len(h.buckets) observationsByBucket := make([]int, bucketCount) @@ -217,7 +172,7 @@ func (h *Histogram) bucketForPercentile2(percentile float64) (bucket *Bucket, in // collected samples. The requested percentile is expected to be a real // value within (0, 1.0]. func (h *Histogram) Percentile(percentile float64) float64 { - bucket, index := h.bucketForPercentile2(percentile) + bucket, index := h.bucketForPercentile(percentile) return (*bucket).ValueForIndex(index) } diff --git a/metrics/histogram_test.go b/metrics/histogram_test.go index 731068d..2a5ec0d 100644 --- a/metrics/histogram_test.go +++ b/metrics/histogram_test.go @@ -86,13 +86,13 @@ func (s *S) TestBucketForPercentile(c *C) { c.Assert(*bucket, Not(IsNil)) c.Check(subindex, Equals, 0) - c.Check((*bucket).Observations(), Equals, 0) + c.Check((*bucket).Observations(), Equals, 1) bucket, subindex = h.bucketForPercentile(0.01) c.Assert(*bucket, Not(IsNil)) c.Check(subindex, Equals, 0) - c.Check((*bucket).Observations(), Equals, 0) + c.Check((*bucket).Observations(), Equals, 1) bucket, subindex = h.bucketForPercentile(1.0) @@ -124,7 +124,7 @@ func (s *S) TestBucketForPercentile(c *C) { bucket, subindex = h.bucketForPercentile(0.51) c.Assert(*bucket, Not(IsNil)) - c.Check(subindex, Equals, 1) + c.Check(subindex, Equals, 2) c.Check((*bucket).Observations(), Equals, 51) } @@ -142,7 +142,7 @@ func (s *S) TestBucketForPercentileSingleton(c *C) { var subindex int = 0 for i := 0.0; i < 1.0; i += 0.01 { - bucket, subindex := h.bucketForPercentile2(i) + bucket, subindex := h.bucketForPercentile(i) c.Assert(*bucket, Not(IsNil)) c.Check(subindex, Equals, 0) @@ -150,19 +150,19 @@ func (s *S) TestBucketForPercentileSingleton(c *C) { h.Add(0.0) - bucket, subindex = h.bucketForPercentile2(1.0) + bucket, subindex = h.bucketForPercentile(1.0) c.Assert(*bucket, Not(IsNil)) c.Check(subindex, Equals, 0) c.Check((*bucket).Observations(), Equals, 1) - bucket, subindex = h.bucketForPercentile2(0.5) + bucket, subindex = h.bucketForPercentile(0.5) c.Assert(*bucket, Not(IsNil)) c.Check(subindex, Equals, 0) c.Check((*bucket).Observations(), Equals, 1) - bucket, subindex = h.bucketForPercentile2(0.01) + bucket, subindex = h.bucketForPercentile(0.01) c.Assert(*bucket, Not(IsNil)) c.Check(subindex, Equals, 0) @@ -173,7 +173,7 @@ func (s *S) TestBucketForPercentileSingleton(c *C) { c.Assert(h, Not(IsNil)) for i := 0.0; i < 1.0; i += 0.01 { - bucket, subindex := h.bucketForPercentile2(i) + bucket, subindex := h.bucketForPercentile(i) c.Assert(*bucket, Not(IsNil)) c.Check(subindex, Equals, 0) @@ -181,19 +181,19 @@ func (s *S) TestBucketForPercentileSingleton(c *C) { h.Add(1.0) - bucket, subindex = h.bucketForPercentile2(1.0) + bucket, subindex = h.bucketForPercentile(1.0) c.Assert(*bucket, Not(IsNil)) c.Check(subindex, Equals, 0) c.Check((*bucket).Observations(), Equals, 1) - bucket, subindex = h.bucketForPercentile2(0.5) + bucket, subindex = h.bucketForPercentile(0.5) c.Assert(*bucket, Not(IsNil)) c.Check(subindex, Equals, 0) c.Check((*bucket).Observations(), Equals, 1) - bucket, subindex = h.bucketForPercentile2(0.01) + bucket, subindex = h.bucketForPercentile(0.01) c.Assert(*bucket, Not(IsNil)) c.Check(subindex, Equals, 0) @@ -212,19 +212,19 @@ func (s *S) TestBucketForPercentileSingleton(c *C) { h.Add(2.0) - bucket, subindex = h.bucketForPercentile2(1.0) + bucket, subindex = h.bucketForPercentile(1.0) c.Assert(*bucket, Not(IsNil)) c.Check(subindex, Equals, 0) c.Check((*bucket).Observations(), Equals, 1) - bucket, subindex = h.bucketForPercentile2(0.5) + bucket, subindex = h.bucketForPercentile(0.5) c.Assert(*bucket, Not(IsNil)) c.Check(subindex, Equals, 0) c.Check((*bucket).Observations(), Equals, 1) - bucket, subindex = h.bucketForPercentile2(0.01) + bucket, subindex = h.bucketForPercentile(0.01) c.Assert(*bucket, Not(IsNil)) c.Check(subindex, Equals, 0) @@ -245,7 +245,7 @@ func (s *S) TestBucketForPercentileDoubleInSingleBucket(c *C) { var subindex int = 0 for i := 0.0; i < 1.0; i += 0.01 { - bucket, subindex := h.bucketForPercentile2(i) + bucket, subindex := h.bucketForPercentile(i) c.Assert(*bucket, Not(IsNil)) c.Check(subindex, Equals, 0) @@ -254,19 +254,19 @@ func (s *S) TestBucketForPercentileDoubleInSingleBucket(c *C) { h.Add(0.0) h.Add(0.0) - bucket, subindex = h.bucketForPercentile2(1.0) + bucket, subindex = h.bucketForPercentile(1.0) c.Assert(*bucket, Not(IsNil)) c.Check(subindex, Equals, 1) c.Check((*bucket).Observations(), Equals, 2) - bucket, subindex = h.bucketForPercentile2(0.5) + bucket, subindex = h.bucketForPercentile(0.5) c.Assert(*bucket, Not(IsNil)) c.Check(subindex, Equals, 1) c.Check((*bucket).Observations(), Equals, 2) - bucket, subindex = h.bucketForPercentile2(0.01) + bucket, subindex = h.bucketForPercentile(0.01) c.Assert(*bucket, Not(IsNil)) c.Check(subindex, Equals, 0) @@ -277,7 +277,7 @@ func (s *S) TestBucketForPercentileDoubleInSingleBucket(c *C) { c.Assert(h, Not(IsNil)) for i := 0.0; i < 1.0; i += 0.01 { - bucket, subindex := h.bucketForPercentile2(i) + bucket, subindex := h.bucketForPercentile(i) c.Assert(*bucket, Not(IsNil)) c.Check(subindex, Equals, 0) @@ -286,19 +286,19 @@ func (s *S) TestBucketForPercentileDoubleInSingleBucket(c *C) { h.Add(1.0) h.Add(1.0) - bucket, subindex = h.bucketForPercentile2(1.0) + bucket, subindex = h.bucketForPercentile(1.0) c.Assert(*bucket, Not(IsNil)) c.Check(subindex, Equals, 1) c.Check((*bucket).Observations(), Equals, 2) - bucket, subindex = h.bucketForPercentile2(0.5) + bucket, subindex = h.bucketForPercentile(0.5) c.Assert(*bucket, Not(IsNil)) c.Check(subindex, Equals, 1) c.Check((*bucket).Observations(), Equals, 2) - bucket, subindex = h.bucketForPercentile2(0.01) + bucket, subindex = h.bucketForPercentile(0.01) c.Assert(*bucket, Not(IsNil)) c.Check(subindex, Equals, 0) @@ -318,19 +318,19 @@ func (s *S) TestBucketForPercentileDoubleInSingleBucket(c *C) { h.Add(2.0) h.Add(2.0) - bucket, subindex = h.bucketForPercentile2(1.0) + bucket, subindex = h.bucketForPercentile(1.0) c.Assert(*bucket, Not(IsNil)) c.Check(subindex, Equals, 1) c.Check((*bucket).Observations(), Equals, 2) - bucket, subindex = h.bucketForPercentile2(0.5) + bucket, subindex = h.bucketForPercentile(0.5) c.Assert(*bucket, Not(IsNil)) c.Check(subindex, Equals, 1) c.Check((*bucket).Observations(), Equals, 2) - bucket, subindex = h.bucketForPercentile2(0.01) + bucket, subindex = h.bucketForPercentile(0.01) c.Assert(*bucket, Not(IsNil)) c.Check(subindex, Equals, 0) @@ -351,7 +351,7 @@ func (s *S) TestBucketForPercentileTripleInSingleBucket(c *C) { var subindex int = 0 for i := 0.0; i < 1.0; i += 0.01 { - bucket, subindex := h.bucketForPercentile2(i) + bucket, subindex := h.bucketForPercentile(i) c.Assert(*bucket, Not(IsNil)) c.Check(subindex, Equals, 0) @@ -361,37 +361,37 @@ func (s *S) TestBucketForPercentileTripleInSingleBucket(c *C) { h.Add(0.0) h.Add(0.0) - bucket, subindex = h.bucketForPercentile2(1.0) + bucket, subindex = h.bucketForPercentile(1.0) c.Assert(*bucket, Not(IsNil)) c.Check(subindex, Equals, 2) c.Check((*bucket).Observations(), Equals, 3) - bucket, subindex = h.bucketForPercentile2(0.67) + bucket, subindex = h.bucketForPercentile(0.67) c.Assert(*bucket, Not(IsNil)) c.Check(subindex, Equals, 2) c.Check((*bucket).Observations(), Equals, 3) - bucket, subindex = h.bucketForPercentile2(2.0 / 3.0) + bucket, subindex = h.bucketForPercentile(2.0 / 3.0) c.Assert(*bucket, Not(IsNil)) c.Check(subindex, Equals, 2) c.Check((*bucket).Observations(), Equals, 3) - bucket, subindex = h.bucketForPercentile2(0.5) + bucket, subindex = h.bucketForPercentile(0.5) c.Assert(*bucket, Not(IsNil)) c.Check(subindex, Equals, 1) c.Check((*bucket).Observations(), Equals, 3) - bucket, subindex = h.bucketForPercentile2(1.0 / 3.0) + bucket, subindex = h.bucketForPercentile(1.0 / 3.0) c.Assert(*bucket, Not(IsNil)) c.Check(subindex, Equals, 1) c.Check((*bucket).Observations(), Equals, 3) - bucket, subindex = h.bucketForPercentile2(0.01) + bucket, subindex = h.bucketForPercentile(0.01) c.Assert(*bucket, Not(IsNil)) c.Check(subindex, Equals, 0) @@ -403,37 +403,37 @@ func (s *S) TestBucketForPercentileTripleInSingleBucket(c *C) { h.Add(1.0) h.Add(1.0) - bucket, subindex = h.bucketForPercentile2(1.0) + bucket, subindex = h.bucketForPercentile(1.0) c.Assert(*bucket, Not(IsNil)) c.Check(subindex, Equals, 2) c.Check((*bucket).Observations(), Equals, 3) - bucket, subindex = h.bucketForPercentile2(0.67) + bucket, subindex = h.bucketForPercentile(0.67) c.Assert(*bucket, Not(IsNil)) c.Check(subindex, Equals, 2) c.Check((*bucket).Observations(), Equals, 3) - bucket, subindex = h.bucketForPercentile2(2.0 / 3.0) + bucket, subindex = h.bucketForPercentile(2.0 / 3.0) c.Assert(*bucket, Not(IsNil)) c.Check(subindex, Equals, 2) c.Check((*bucket).Observations(), Equals, 3) - bucket, subindex = h.bucketForPercentile2(0.5) + bucket, subindex = h.bucketForPercentile(0.5) c.Assert(*bucket, Not(IsNil)) c.Check(subindex, Equals, 1) c.Check((*bucket).Observations(), Equals, 3) - bucket, subindex = h.bucketForPercentile2(1.0 / 3.0) + bucket, subindex = h.bucketForPercentile(1.0 / 3.0) c.Assert(*bucket, Not(IsNil)) c.Check(subindex, Equals, 1) c.Check((*bucket).Observations(), Equals, 3) - bucket, subindex = h.bucketForPercentile2(0.01) + bucket, subindex = h.bucketForPercentile(0.01) c.Assert(*bucket, Not(IsNil)) c.Check(subindex, Equals, 0) @@ -445,37 +445,37 @@ func (s *S) TestBucketForPercentileTripleInSingleBucket(c *C) { h.Add(2.0) h.Add(2.0) - bucket, subindex = h.bucketForPercentile2(1.0) + bucket, subindex = h.bucketForPercentile(1.0) c.Assert(*bucket, Not(IsNil)) c.Check(subindex, Equals, 2) c.Check((*bucket).Observations(), Equals, 3) - bucket, subindex = h.bucketForPercentile2(0.67) + bucket, subindex = h.bucketForPercentile(0.67) c.Assert(*bucket, Not(IsNil)) c.Check(subindex, Equals, 2) c.Check((*bucket).Observations(), Equals, 3) - bucket, subindex = h.bucketForPercentile2(2.0 / 3.0) + bucket, subindex = h.bucketForPercentile(2.0 / 3.0) c.Assert(*bucket, Not(IsNil)) c.Check(subindex, Equals, 2) c.Check((*bucket).Observations(), Equals, 3) - bucket, subindex = h.bucketForPercentile2(0.5) + bucket, subindex = h.bucketForPercentile(0.5) c.Assert(*bucket, Not(IsNil)) c.Check(subindex, Equals, 1) c.Check((*bucket).Observations(), Equals, 3) - bucket, subindex = h.bucketForPercentile2(1.0 / 3.0) + bucket, subindex = h.bucketForPercentile(1.0 / 3.0) c.Assert(*bucket, Not(IsNil)) c.Check(subindex, Equals, 1) c.Check((*bucket).Observations(), Equals, 3) - bucket, subindex = h.bucketForPercentile2(0.01) + bucket, subindex = h.bucketForPercentile(0.01) c.Assert(*bucket, Not(IsNil)) c.Check(subindex, Equals, 0) @@ -496,7 +496,7 @@ func (s *S) TestBucketForPercentileTwoEqualAdjacencies(c *C) { var subindex int = 0 for i := 0.0; i < 1.0; i += 0.01 { - bucket, subindex := h.bucketForPercentile2(i) + bucket, subindex := h.bucketForPercentile(i) c.Assert(*bucket, Not(IsNil)) c.Check(subindex, Equals, 0) @@ -505,37 +505,37 @@ func (s *S) TestBucketForPercentileTwoEqualAdjacencies(c *C) { h.Add(0.0) h.Add(1.0) - bucket, subindex = h.bucketForPercentile2(1.0) + bucket, subindex = h.bucketForPercentile(1.0) c.Assert(*bucket, Not(IsNil)) c.Check(subindex, Equals, 0) c.Check((*bucket).Observations(), Equals, 1) - bucket, subindex = h.bucketForPercentile2(0.67) + bucket, subindex = h.bucketForPercentile(0.67) c.Assert(*bucket, Not(IsNil)) c.Check(subindex, Equals, 0) c.Check((*bucket).Observations(), Equals, 1) - bucket, subindex = h.bucketForPercentile2(2.0 / 3.0) + bucket, subindex = h.bucketForPercentile(2.0 / 3.0) c.Assert(*bucket, Not(IsNil)) c.Check(subindex, Equals, 0) c.Check((*bucket).Observations(), Equals, 1) - bucket, subindex = h.bucketForPercentile2(0.5) + bucket, subindex = h.bucketForPercentile(0.5) c.Assert(*bucket, Not(IsNil)) c.Check(subindex, Equals, 0) c.Check((*bucket).Observations(), Equals, 1) - bucket, subindex = h.bucketForPercentile2(1.0 / 3.0) + bucket, subindex = h.bucketForPercentile(1.0 / 3.0) c.Assert(*bucket, Not(IsNil)) c.Check(subindex, Equals, 0) c.Check((*bucket).Observations(), Equals, 1) - bucket, subindex = h.bucketForPercentile2(0.01) + bucket, subindex = h.bucketForPercentile(0.01) c.Assert(*bucket, Not(IsNil)) c.Check(subindex, Equals, 0) @@ -546,37 +546,37 @@ func (s *S) TestBucketForPercentileTwoEqualAdjacencies(c *C) { h.Add(1.0) h.Add(2.0) - bucket, subindex = h.bucketForPercentile2(1.0) + bucket, subindex = h.bucketForPercentile(1.0) c.Assert(*bucket, Not(IsNil)) c.Check(subindex, Equals, 0) c.Check((*bucket).Observations(), Equals, 1) - bucket, subindex = h.bucketForPercentile2(0.67) + bucket, subindex = h.bucketForPercentile(0.67) c.Assert(*bucket, Not(IsNil)) c.Check(subindex, Equals, 0) c.Check((*bucket).Observations(), Equals, 1) - bucket, subindex = h.bucketForPercentile2(2.0 / 3.0) + bucket, subindex = h.bucketForPercentile(2.0 / 3.0) c.Assert(*bucket, Not(IsNil)) c.Check(subindex, Equals, 0) c.Check((*bucket).Observations(), Equals, 1) - bucket, subindex = h.bucketForPercentile2(0.5) + bucket, subindex = h.bucketForPercentile(0.5) c.Assert(*bucket, Not(IsNil)) c.Check(subindex, Equals, 0) c.Check((*bucket).Observations(), Equals, 1) - bucket, subindex = h.bucketForPercentile2(1.0 / 3.0) + bucket, subindex = h.bucketForPercentile(1.0 / 3.0) c.Assert(*bucket, Not(IsNil)) c.Check(subindex, Equals, 0) c.Check((*bucket).Observations(), Equals, 1) - bucket, subindex = h.bucketForPercentile2(0.01) + bucket, subindex = h.bucketForPercentile(0.01) c.Assert(*bucket, Not(IsNil)) c.Check(subindex, Equals, 0) @@ -597,7 +597,7 @@ func (s *S) TestBucketForPercentileTwoAdjacenciesUnequal(c *C) { var subindex int = 0 for i := 0.0; i < 1.0; i += 0.01 { - bucket, subindex := h.bucketForPercentile2(i) + bucket, subindex := h.bucketForPercentile(i) c.Assert(*bucket, Not(IsNil)) c.Check(subindex, Equals, 0) @@ -607,37 +607,37 @@ func (s *S) TestBucketForPercentileTwoAdjacenciesUnequal(c *C) { h.Add(0.0) h.Add(1.0) - bucket, subindex = h.bucketForPercentile2(1.0) + bucket, subindex = h.bucketForPercentile(1.0) c.Assert(*bucket, Not(IsNil)) c.Check(subindex, Equals, 0) c.Check((*bucket).Observations(), Equals, 1) - bucket, subindex = h.bucketForPercentile2(0.67) + bucket, subindex = h.bucketForPercentile(0.67) c.Assert(*bucket, Not(IsNil)) c.Check(subindex, Equals, 1) c.Check((*bucket).Observations(), Equals, 2) - bucket, subindex = h.bucketForPercentile2(2.0 / 3.0) + bucket, subindex = h.bucketForPercentile(2.0 / 3.0) c.Assert(*bucket, Not(IsNil)) c.Check(subindex, Equals, 1) c.Check((*bucket).Observations(), Equals, 2) - bucket, subindex = h.bucketForPercentile2(0.5) + bucket, subindex = h.bucketForPercentile(0.5) c.Assert(*bucket, Not(IsNil)) c.Check(subindex, Equals, 1) c.Check((*bucket).Observations(), Equals, 2) - bucket, subindex = h.bucketForPercentile2(1.0 / 3.0) + bucket, subindex = h.bucketForPercentile(1.0 / 3.0) c.Assert(*bucket, Not(IsNil)) c.Check(subindex, Equals, 1) c.Check((*bucket).Observations(), Equals, 2) - bucket, subindex = h.bucketForPercentile2(0.01) + bucket, subindex = h.bucketForPercentile(0.01) c.Assert(*bucket, Not(IsNil)) c.Check(subindex, Equals, 0) @@ -649,37 +649,37 @@ func (s *S) TestBucketForPercentileTwoAdjacenciesUnequal(c *C) { h.Add(1.0) h.Add(1.0) - bucket, subindex = h.bucketForPercentile2(1.0) + bucket, subindex = h.bucketForPercentile(1.0) c.Assert(*bucket, Not(IsNil)) c.Check(subindex, Equals, 1) c.Check((*bucket).Observations(), Equals, 2) - bucket, subindex = h.bucketForPercentile2(0.67) + bucket, subindex = h.bucketForPercentile(0.67) c.Assert(*bucket, Not(IsNil)) c.Check(subindex, Equals, 1) c.Check((*bucket).Observations(), Equals, 2) - bucket, subindex = h.bucketForPercentile2(2.0 / 3.0) + bucket, subindex = h.bucketForPercentile(2.0 / 3.0) c.Assert(*bucket, Not(IsNil)) c.Check(subindex, Equals, 1) c.Check((*bucket).Observations(), Equals, 2) - bucket, subindex = h.bucketForPercentile2(0.5) + bucket, subindex = h.bucketForPercentile(0.5) c.Assert(*bucket, Not(IsNil)) c.Check(subindex, Equals, 0) c.Check((*bucket).Observations(), Equals, 1) - bucket, subindex = h.bucketForPercentile2(1.0 / 3.0) + bucket, subindex = h.bucketForPercentile(1.0 / 3.0) c.Assert(*bucket, Not(IsNil)) c.Check(subindex, Equals, 0) c.Check((*bucket).Observations(), Equals, 1) - bucket, subindex = h.bucketForPercentile2(0.01) + bucket, subindex = h.bucketForPercentile(0.01) c.Assert(*bucket, Not(IsNil)) c.Check(subindex, Equals, 0) @@ -691,37 +691,37 @@ func (s *S) TestBucketForPercentileTwoAdjacenciesUnequal(c *C) { h.Add(1.0) h.Add(2.0) - bucket, subindex = h.bucketForPercentile2(1.0) + bucket, subindex = h.bucketForPercentile(1.0) c.Assert(*bucket, Not(IsNil)) c.Check(subindex, Equals, 0) c.Check((*bucket).Observations(), Equals, 1) - bucket, subindex = h.bucketForPercentile2(0.67) + bucket, subindex = h.bucketForPercentile(0.67) c.Assert(*bucket, Not(IsNil)) c.Check(subindex, Equals, 1) c.Check((*bucket).Observations(), Equals, 2) - bucket, subindex = h.bucketForPercentile2(2.0 / 3.0) + bucket, subindex = h.bucketForPercentile(2.0 / 3.0) c.Assert(*bucket, Not(IsNil)) c.Check(subindex, Equals, 1) c.Check((*bucket).Observations(), Equals, 2) - bucket, subindex = h.bucketForPercentile2(0.5) + bucket, subindex = h.bucketForPercentile(0.5) c.Assert(*bucket, Not(IsNil)) c.Check(subindex, Equals, 1) c.Check((*bucket).Observations(), Equals, 2) - bucket, subindex = h.bucketForPercentile2(1.0 / 3.0) + bucket, subindex = h.bucketForPercentile(1.0 / 3.0) c.Assert(*bucket, Not(IsNil)) c.Check(subindex, Equals, 1) c.Check((*bucket).Observations(), Equals, 2) - bucket, subindex = h.bucketForPercentile2(0.01) + bucket, subindex = h.bucketForPercentile(0.01) c.Assert(*bucket, Not(IsNil)) c.Check(subindex, Equals, 0) @@ -733,37 +733,37 @@ func (s *S) TestBucketForPercentileTwoAdjacenciesUnequal(c *C) { h.Add(2.0) h.Add(2.0) - bucket, subindex = h.bucketForPercentile2(1.0) + bucket, subindex = h.bucketForPercentile(1.0) c.Assert(*bucket, Not(IsNil)) c.Check(subindex, Equals, 1) c.Check((*bucket).Observations(), Equals, 2) - bucket, subindex = h.bucketForPercentile2(0.67) + bucket, subindex = h.bucketForPercentile(0.67) c.Assert(*bucket, Not(IsNil)) c.Check(subindex, Equals, 1) c.Check((*bucket).Observations(), Equals, 2) - bucket, subindex = h.bucketForPercentile2(2.0 / 3.0) + bucket, subindex = h.bucketForPercentile(2.0 / 3.0) c.Assert(*bucket, Not(IsNil)) c.Check(subindex, Equals, 1) c.Check((*bucket).Observations(), Equals, 2) - bucket, subindex = h.bucketForPercentile2(0.5) + bucket, subindex = h.bucketForPercentile(0.5) c.Assert(*bucket, Not(IsNil)) c.Check(subindex, Equals, 0) c.Check((*bucket).Observations(), Equals, 1) - bucket, subindex = h.bucketForPercentile2(1.0 / 3.0) + bucket, subindex = h.bucketForPercentile(1.0 / 3.0) c.Assert(*bucket, Not(IsNil)) c.Check(subindex, Equals, 0) c.Check((*bucket).Observations(), Equals, 1) - bucket, subindex = h.bucketForPercentile2(0.01) + bucket, subindex = h.bucketForPercentile(0.01) c.Assert(*bucket, Not(IsNil)) c.Check(subindex, Equals, 0)