| 123456789101112131415161718192021222324252627282930313233343536373839404142 |
- package task_test
- import (
- "sync/atomic"
- "testing"
- "time"
- "github.com/v2fly/v2ray-core/v4/common"
- . "github.com/v2fly/v2ray-core/v4/common/task"
- )
- func TestPeriodicTaskStop(t *testing.T) {
- var value uint64
- task := &Periodic{
- Interval: time.Second * 2,
- Execute: func() error {
- atomic.AddUint64(&value, 1)
- return nil
- },
- }
- common.Must(task.Start())
- time.Sleep(time.Second * 5)
- common.Must(task.Close())
- value1 := atomic.LoadUint64(&value)
- if value1 != 3 {
- t.Fatal("expected 3, but got ", value1)
- }
- time.Sleep(time.Second * 4)
- value2 := atomic.LoadUint64(&value)
- if value2 != 3 {
- t.Fatal("expected 3, but got ", value2)
- }
- common.Must(task.Start())
- time.Sleep(time.Second * 3)
- value3 := atomic.LoadUint64(&value)
- if value3 != 5 {
- t.Fatal("Expected 5, but ", value3)
- }
- common.Must(task.Close())
- }
|