mirror of
https://github.com/zeromicro/go-zero.git
synced 2025-02-02 16:28:39 +08:00
fix rolling window bug (#340)
This commit is contained in:
parent
5bc01e4bfd
commit
2ee95f8981
@ -96,7 +96,7 @@ func (rw *RollingWindow) updateOffset() {
|
||||
}
|
||||
|
||||
rw.offset = (offset + span) % rw.size
|
||||
rw.lastTime = timex.Now()
|
||||
rw.lastTime = time.Duration(int(rw.lastTime) + int(rw.interval)*span)
|
||||
}
|
||||
|
||||
type Bucket struct {
|
||||
|
@ -45,6 +45,31 @@ func TestRollingWindowAdd(t *testing.T) {
|
||||
assert.Equal(t, []float64{5, 15, 7}, listBuckets())
|
||||
}
|
||||
|
||||
func TestRollingWindowAdd2(t *testing.T) {
|
||||
const size = 3
|
||||
interval := time.Millisecond * 50
|
||||
r := NewRollingWindow(size, interval)
|
||||
listBuckets := func() []float64 {
|
||||
var buckets []float64
|
||||
r.Reduce(func(b *Bucket) {
|
||||
buckets = append(buckets, b.Sum)
|
||||
})
|
||||
return buckets
|
||||
}
|
||||
assert.Equal(t, []float64{0, 0, 0}, listBuckets())
|
||||
r.Add(1)
|
||||
assert.Equal(t, []float64{0, 0, 1}, listBuckets())
|
||||
time.Sleep(time.Millisecond * 90)
|
||||
r.Add(2)
|
||||
r.Add(3)
|
||||
assert.Equal(t, []float64{0, 1, 5}, listBuckets())
|
||||
time.Sleep(time.Millisecond * 20)
|
||||
r.Add(4)
|
||||
r.Add(5)
|
||||
r.Add(6)
|
||||
assert.Equal(t, []float64{1, 5, 15}, listBuckets())
|
||||
}
|
||||
|
||||
func TestRollingWindowReset(t *testing.T) {
|
||||
const size = 3
|
||||
r := NewRollingWindow(size, duration, IgnoreCurrentBucket())
|
||||
|
Loading…
Reference in New Issue
Block a user