123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869 |
- package summary
- import (
- "testing"
- "time"
- "github.com/stretchr/testify/assert"
- )
- func TestSummaryMinInterval(t *testing.T) {
- count := New(time.Second/2, 10)
- tk1 := time.NewTicker(5 * time.Millisecond)
- defer tk1.Stop()
- for i := 0; i < 100; i++ {
- <-tk1.C
- count.Add(2)
- }
- v, c := count.Value()
- t.Logf("count value: %d, %d\n", v, c)
- // 10% of error when bucket is 10
- if v < 190 || v > 210 {
- t.Errorf("expect value in [90-110] get %d", v)
- }
- // 10% of error when bucket is 10
- if c < 90 || c > 110 {
- t.Errorf("expect value in [90-110] get %d", v)
- }
- }
- func TestSummary(t *testing.T) {
- s := New(time.Second, 10)
- t.Run("add", func(t *testing.T) {
- s.Add(1)
- v, c := s.Value()
- assert.Equal(t, v, int64(1))
- assert.Equal(t, c, int64(1))
- })
- time.Sleep(time.Millisecond * 110)
- t.Run("add2", func(t *testing.T) {
- s.Add(1)
- v, c := s.Value()
- assert.Equal(t, v, int64(2))
- assert.Equal(t, c, int64(2))
- })
- time.Sleep(time.Millisecond * 900) // expire one bucket, 110 + 900
- t.Run("expire", func(t *testing.T) {
- v, c := s.Value()
- assert.Equal(t, v, int64(1))
- assert.Equal(t, c, int64(1))
- s.Add(1)
- v, c = s.Value()
- assert.Equal(t, v, int64(2)) // expire one bucket
- assert.Equal(t, c, int64(2)) // expire one bucket
- })
- time.Sleep(time.Millisecond * 1100)
- t.Run("expire_all", func(t *testing.T) {
- v, c := s.Value()
- assert.Equal(t, v, int64(0))
- assert.Equal(t, c, int64(0))
- })
- t.Run("reset", func(t *testing.T) {
- s.Reset()
- v, c := s.Value()
- assert.Equal(t, v, int64(0))
- assert.Equal(t, c, int64(0))
- })
- }
|