2
0

schedule_test.go 1.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768
  1. package worker
  2. import (
  3. "testing"
  4. "time"
  5. . "github.com/smartystreets/goconvey/convey"
  6. )
  7. func TestSchedule(t *testing.T) {
  8. Convey("MirrorJobSchedule should work", t, func(ctx C) {
  9. schedule := newScheduleQueue()
  10. Convey("When poping on empty schedule", func() {
  11. job := schedule.Pop()
  12. So(job, ShouldBeNil)
  13. })
  14. Convey("When adding some jobs", func() {
  15. c := cmdConfig{
  16. name: "schedule_test",
  17. }
  18. provider, _ := newCmdProvider(c)
  19. job := newMirrorJob(provider)
  20. sched := time.Now().Add(1 * time.Second)
  21. schedule.AddJob(sched, job)
  22. So(schedule.Pop(), ShouldBeNil)
  23. time.Sleep(1200 * time.Millisecond)
  24. So(schedule.Pop(), ShouldEqual, job)
  25. })
  26. Convey("When adding one job twice", func() {
  27. c := cmdConfig{
  28. name: "schedule_test",
  29. }
  30. provider, _ := newCmdProvider(c)
  31. job := newMirrorJob(provider)
  32. sched := time.Now().Add(1 * time.Second)
  33. schedule.AddJob(sched, job)
  34. schedule.AddJob(sched.Add(1*time.Second), job)
  35. So(schedule.Pop(), ShouldBeNil)
  36. time.Sleep(1200 * time.Millisecond)
  37. So(schedule.Pop(), ShouldBeNil)
  38. time.Sleep(1200 * time.Millisecond)
  39. So(schedule.Pop(), ShouldEqual, job)
  40. })
  41. Convey("When removing jobs", func() {
  42. c := cmdConfig{
  43. name: "schedule_test",
  44. }
  45. provider, _ := newCmdProvider(c)
  46. job := newMirrorJob(provider)
  47. sched := time.Now().Add(1 * time.Second)
  48. schedule.AddJob(sched, job)
  49. So(schedule.Remove("something"), ShouldBeFalse)
  50. So(schedule.Remove("schedule_test"), ShouldBeTrue)
  51. time.Sleep(1200 * time.Millisecond)
  52. So(schedule.Pop(), ShouldBeNil)
  53. })
  54. })
  55. }