task_test.go 862 B

12345678910111213141516171819202122232425262728293031323334353637383940414243
  1. package task_test
  2. import (
  3. "context"
  4. "errors"
  5. "testing"
  6. "time"
  7. . "v2ray.com/core/common/task"
  8. . "v2ray.com/ext/assert"
  9. )
  10. func TestExecuteParallel(t *testing.T) {
  11. assert := With(t)
  12. err := Run(Parallel(func() error {
  13. time.Sleep(time.Millisecond * 200)
  14. return errors.New("test")
  15. }, func() error {
  16. time.Sleep(time.Millisecond * 500)
  17. return errors.New("test2")
  18. }))()
  19. assert(err.Error(), Equals, "test")
  20. }
  21. func TestExecuteParallelContextCancel(t *testing.T) {
  22. assert := With(t)
  23. ctx, cancel := context.WithCancel(context.Background())
  24. err := Run(WithContext(ctx), Parallel(func() error {
  25. time.Sleep(time.Millisecond * 2000)
  26. return errors.New("test")
  27. }, func() error {
  28. time.Sleep(time.Millisecond * 5000)
  29. return errors.New("test2")
  30. }, func() error {
  31. cancel()
  32. return nil
  33. }))()
  34. assert(err.Error(), HasSubstring, "canceled")
  35. }