Export type to calculate percentiles

It will be used in heapster and kubelet too.
This commit is contained in:
Daniel Martí 2015-07-21 17:50:55 -07:00
parent 752228ef62
commit 870c10c125
2 changed files with 9 additions and 9 deletions

View File

@ -28,14 +28,14 @@ const secondsToMilliSeconds = 1000
const milliSecondsToNanoSeconds = 1000000
const secondsToNanoSeconds = secondsToMilliSeconds * milliSecondsToNanoSeconds
type uint64Slice []uint64
type Uint64Slice []uint64
func (a uint64Slice) Len() int { return len(a) }
func (a uint64Slice) Swap(i, j int) { a[i], a[j] = a[j], a[i] }
func (a uint64Slice) Less(i, j int) bool { return a[i] < a[j] }
func (a Uint64Slice) Len() int { return len(a) }
func (a Uint64Slice) Swap(i, j int) { a[i], a[j] = a[j], a[i] }
func (a Uint64Slice) Less(i, j int) bool { return a[i] < a[j] }
// Get percentile of the provided samples. Round to integer.
func (self uint64Slice) GetPercentile(d float64) uint64 {
func (self Uint64Slice) GetPercentile(d float64) uint64 {
if d < 0.0 || d > 1.0 {
return 0
}
@ -74,7 +74,7 @@ func (self *mean) Add(value uint64) {
type resource struct {
// list of samples being tracked.
samples uint64Slice
samples Uint64Slice
// average from existing samples.
mean mean
// maximum value seen so far in the added samples.
@ -121,7 +121,7 @@ func (self *resource) GetAllPercentiles() info.Percentiles {
func NewResource(size int) *resource {
return &resource{
samples: make(uint64Slice, 0, size),
samples: make(Uint64Slice, 0, size),
mean: mean{count: 0, Mean: 0},
}
}

View File

@ -23,7 +23,7 @@ import (
const Nanosecond = 1000000000
func assertPercentile(t *testing.T, s uint64Slice, f float64, want uint64) {
func assertPercentile(t *testing.T, s Uint64Slice, f float64, want uint64) {
if got := s.GetPercentile(f); got != want {
t.Errorf("GetPercentile(%f) is %d, should be %d.", f, got, want)
}
@ -31,7 +31,7 @@ func assertPercentile(t *testing.T, s uint64Slice, f float64, want uint64) {
func TestPercentile(t *testing.T) {
N := 100
s := make(uint64Slice, 0, N)
s := make(Uint64Slice, 0, N)
for i := N; i > 0; i-- {
s = append(s, uint64(i))
}