2012-05-24 22:02:44 +04:00
|
|
|
/*
|
|
|
|
Copyright (c) 2012, Matt T. Proud
|
|
|
|
All rights reserved.
|
2012-05-20 01:59:25 +04:00
|
|
|
|
2012-05-24 22:02:44 +04:00
|
|
|
Use of this source code is governed by a BSD-style
|
|
|
|
license that can be found in the LICENSE file.
|
|
|
|
*/
|
2012-05-20 01:59:25 +04:00
|
|
|
|
|
|
|
package metrics
|
|
|
|
|
|
|
|
import (
|
2013-01-18 19:29:47 +04:00
|
|
|
. "github.com/matttproud/gocheck"
|
2013-01-25 20:50:41 +04:00
|
|
|
"github.com/prometheus/client_golang/maths"
|
2012-05-20 01:59:25 +04:00
|
|
|
)
|
|
|
|
|
|
|
|
func (s *S) TestTallyingPercentileEstimatorMinimum(c *C) {
|
|
|
|
c.Assert(Minimum(-2, -1, 0, 0), maths.IsNaN)
|
|
|
|
c.Check(Minimum(-2, -1, 0, 1), Equals, -2.0)
|
|
|
|
}
|
|
|
|
|
|
|
|
func (s *S) TestTallyingPercentileEstimatorMaximum(c *C) {
|
|
|
|
c.Assert(Maximum(-2, -1, 0, 0), maths.IsNaN)
|
|
|
|
c.Check(Maximum(-2, -1, 0, 1), Equals, -1.0)
|
|
|
|
}
|
|
|
|
|
|
|
|
func (s *S) TestTallyingPercentilesEstimatorAverage(c *C) {
|
|
|
|
c.Assert(Average(-2, -1, 0, 0), maths.IsNaN)
|
|
|
|
c.Check(Average(-2, -2, 0, 1), Equals, -2.0)
|
|
|
|
c.Check(Average(-1, -1, 0, 1), Equals, -1.0)
|
|
|
|
c.Check(Average(1, 1, 0, 2), Equals, 1.0)
|
|
|
|
c.Check(Average(2, 1, 0, 2), Equals, 1.5)
|
|
|
|
}
|
|
|
|
|
|
|
|
func (s *S) TestTallyingPercentilesEstimatorUniform(c *C) {
|
|
|
|
c.Assert(Uniform(-5, 5, 0, 0), maths.IsNaN)
|
|
|
|
|
2012-05-22 11:20:09 +04:00
|
|
|
c.Check(Uniform(-5, 5, 0, 2), Equals, -5.0)
|
|
|
|
c.Check(Uniform(-5, 5, 1, 2), Equals, 0.0)
|
|
|
|
c.Check(Uniform(-5, 5, 2, 2), Equals, 5.0)
|
2012-05-20 01:59:25 +04:00
|
|
|
}
|
|
|
|
|
|
|
|
func (s *S) TestTallyingBucketBuilder(c *C) {
|
|
|
|
var bucket Bucket = TallyingBucketBuilder()
|
|
|
|
|
|
|
|
c.Assert(bucket, Not(IsNil))
|
|
|
|
}
|
|
|
|
|
2012-12-19 14:10:09 +04:00
|
|
|
func (s *S) TestTallyingBucketString(c *C) {
|
2012-05-20 01:59:25 +04:00
|
|
|
bucket := TallyingBucket{
|
|
|
|
observations: 3,
|
|
|
|
smallestObserved: 2.0,
|
|
|
|
largestObserved: 5.5,
|
|
|
|
}
|
|
|
|
|
2012-12-19 14:10:09 +04:00
|
|
|
c.Check(bucket.String(), Equals, "[TallyingBucket (2.000000, 5.500000); 3 items]")
|
2012-05-20 01:59:25 +04:00
|
|
|
}
|
|
|
|
|
|
|
|
func (s *S) TestTallyingBucketAdd(c *C) {
|
|
|
|
b := DefaultTallyingBucket()
|
|
|
|
|
|
|
|
b.Add(1)
|
|
|
|
|
|
|
|
c.Check(b.observations, Equals, 1)
|
|
|
|
c.Check(b.Observations(), Equals, 1)
|
|
|
|
c.Check(b.smallestObserved, Equals, 1.0)
|
|
|
|
c.Check(b.largestObserved, Equals, 1.0)
|
|
|
|
|
|
|
|
b.Add(2)
|
|
|
|
|
|
|
|
c.Check(b.observations, Equals, 2)
|
|
|
|
c.Check(b.Observations(), Equals, 2)
|
|
|
|
c.Check(b.smallestObserved, Equals, 1.0)
|
|
|
|
c.Check(b.largestObserved, Equals, 2.0)
|
|
|
|
}
|