You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 

69 lines
1.2 KiB

  1. package worker
  2. import (
  3. "sync"
  4. "testing"
  5. )
  6. var worker *Worker
  7. func init() {
  8. worker = New(Unlimited)
  9. }
  10. func TestWorkerAddServer(t *testing.T) {
  11. t.Log("Add local server 127.0.0.1:4730.")
  12. if err := worker.AddServer("tcp4", "127.0.0.1:4730"); err != nil {
  13. t.Error(err)
  14. }
  15. if l := len(worker.agents); l != 1 {
  16. t.Log(worker.agents)
  17. t.Error("The length of server list should be 1.")
  18. }
  19. }
  20. func foobar(job Job) ([]byte, error) {
  21. return nil, nil
  22. }
  23. func TestWorkerAddFunction(t *testing.T) {
  24. if err := worker.AddFunc("foobar", foobar, 0); err != nil {
  25. t.Error(err)
  26. }
  27. if err := worker.AddFunc("timeout", foobar, 5); err != nil {
  28. t.Error(err)
  29. }
  30. if l := len(worker.funcs); l != 2 {
  31. t.Log(worker.funcs)
  32. t.Errorf("The length of function map should be %d.", 2)
  33. }
  34. }
  35. func TestWorkerRemoveFunc(t *testing.T) {
  36. if err := worker.RemoveFunc("foobar"); err != nil {
  37. t.Error(err)
  38. }
  39. }
  40. func TestWork(t *testing.T) {
  41. var wg sync.WaitGroup
  42. worker.JobHandler = func(job Job) error {
  43. t.Logf("%s", job.Data())
  44. wg.Done()
  45. return nil
  46. }
  47. if err := worker.Ready(); err != nil {
  48. t.Error(err)
  49. return
  50. }
  51. go worker.Work()
  52. wg.Add(1)
  53. worker.Echo([]byte("Hello"))
  54. wg.Wait()
  55. }
  56. func TestWorkerClose(t *testing.T) {
  57. worker.Close()
  58. }