repeated_task_test.go 856 B

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253
  1. // Copyright 2021 Tencent Inc. All rights reserved.
  2. package task
  3. import (
  4. "runtime"
  5. "testing"
  6. "time"
  7. "github.com/stretchr/testify/assert"
  8. )
  9. func TestNewRepeatedTask(t *testing.T) {
  10. cnt := new(int)
  11. task := NewRepeatedTask(1*time.Second, func(time.Time) { *cnt++ })
  12. assert.Equal(t, Init, task.State())
  13. task.Start()
  14. assert.Equal(t, Running, task.State())
  15. time.Sleep(5 * time.Second)
  16. task.Stop()
  17. assert.Equal(t, Stopped, task.State())
  18. assert.Equal(t, 5, *cnt)
  19. time.Sleep(2 * time.Second)
  20. assert.Equal(t, 5, *cnt)
  21. }
  22. func runTask(cnt *int) {
  23. task := NewRepeatedTask(1*time.Second, func(time.Time) { *cnt++ })
  24. task.Start()
  25. time.Sleep(5 * time.Second)
  26. }
  27. func TestRecycleRepeatedTask(t *testing.T) {
  28. cnt := new(int)
  29. runTask(cnt)
  30. runtime.GC()
  31. assert.Equal(t, 5, *cnt)
  32. time.Sleep(2 * time.Second)
  33. assert.Equal(t, 5, *cnt)
  34. }