alerting_test.go 1.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182
  1. package alerting
  2. import (
  3. m "github.com/grafana/grafana/pkg/models"
  4. . "github.com/smartystreets/goconvey/convey"
  5. "testing"
  6. )
  7. func TestAlertingScheduler(t *testing.T) {
  8. Convey("Testing alert job selection", t, func() {
  9. mockFn := func() []m.AlertRule {
  10. return []m.AlertRule{
  11. {Id: 1, Title: "test 1"},
  12. {Id: 2, Title: "test 2"},
  13. {Id: 3, Title: "test 3"},
  14. {Id: 4, Title: "test 4"},
  15. {Id: 5, Title: "test 5"},
  16. {Id: 6, Title: "test 6"},
  17. }
  18. }
  19. Convey("single server", func() {
  20. scheduler := &Scheduler{
  21. jobs: make(map[int64]*AlertJob, 0),
  22. runQueue: make(chan *AlertJob, 1000),
  23. serverId: "",
  24. serverPosition: 1,
  25. clusterSize: 1,
  26. }
  27. scheduler.updateJobs(mockFn)
  28. So(len(scheduler.jobs), ShouldEqual, 6)
  29. })
  30. Convey("two servers", func() {
  31. scheduler := &Scheduler{
  32. jobs: make(map[int64]*AlertJob, 0),
  33. runQueue: make(chan *AlertJob, 1000),
  34. serverId: "",
  35. serverPosition: 1,
  36. clusterSize: 2,
  37. }
  38. scheduler.updateJobs(mockFn)
  39. So(len(scheduler.jobs), ShouldEqual, 3)
  40. So(scheduler.jobs[1].rule.Id, ShouldEqual, 1)
  41. })
  42. Convey("six servers", func() {
  43. scheduler := &Scheduler{
  44. jobs: make(map[int64]*AlertJob, 0),
  45. runQueue: make(chan *AlertJob, 1000),
  46. serverId: "",
  47. serverPosition: 6,
  48. clusterSize: 6,
  49. }
  50. scheduler.updateJobs(mockFn)
  51. So(len(scheduler.jobs), ShouldEqual, 1)
  52. So(scheduler.jobs[6].rule.Id, ShouldEqual, 6)
  53. })
  54. Convey("more servers then alerts", func() {
  55. mockFn := func() []m.AlertRule {
  56. return []m.AlertRule{
  57. {Id: 1, Title: "test 1"},
  58. }
  59. }
  60. scheduler := &Scheduler{
  61. jobs: make(map[int64]*AlertJob, 0),
  62. runQueue: make(chan *AlertJob, 1000),
  63. serverId: "",
  64. serverPosition: 3,
  65. clusterSize: 3,
  66. }
  67. scheduler.updateJobs(mockFn)
  68. So(len(scheduler.jobs), ShouldEqual, 0)
  69. })
  70. })
  71. }