| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061 |
- package collect
- import (
- "testing"
- "time"
- v2testing "github.com/v2ray/v2ray-core/testing"
- "github.com/v2ray/v2ray-core/testing/assert"
- )
- func TestTimedQueue(t *testing.T) {
- v2testing.Current(t)
- removed := make(map[string]bool)
- nowSec := time.Now().Unix()
- q := NewTimedQueue(2)
- go func() {
- for {
- entry := <-q.RemovedEntries()
- removed[entry.(string)] = true
- }
- }()
- q.Add("Value1", nowSec)
- q.Add("Value2", nowSec+5)
- v1, ok := removed["Value1"]
- assert.Bool(ok).IsFalse()
- v2, ok := removed["Value2"]
- assert.Bool(ok).IsFalse()
- tick := time.Tick(4 * time.Second)
- <-tick
- v1, ok = removed["Value1"]
- assert.Bool(ok).IsTrue()
- assert.Bool(v1).IsTrue()
- removed["Value1"] = false
- v2, ok = removed["Value2"]
- assert.Bool(ok).IsFalse()
- <-tick
- v2, ok = removed["Value2"]
- assert.Bool(ok).IsTrue()
- assert.Bool(v2).IsTrue()
- removed["Value2"] = false
- <-tick
- assert.Bool(removed["Values"]).IsFalse()
- q.Add("Value1", time.Now().Unix()+10)
- <-tick
- v1, ok = removed["Value1"]
- assert.Bool(ok).IsTrue()
- assert.Bool(v1).IsFalse()
- }
|