test(alerting): add test for alertjob selection

This commit is contained in:
bergquist
2016-05-23 12:04:34 +02:00
parent 4fce82344e
commit b496b6a252
2 changed files with 66 additions and 4 deletions
+4 -4
View File
@@ -56,25 +56,25 @@ func (s *Scheduler) Dispatch(reader RuleReader) {
ticker := time.NewTicker(time.Second * 5)
s.heartBeat()
s.updateJobs(reader)
s.updateJobs(reader.Fetch)
for {
select {
case <-secondTicker.C:
s.queueJobs()
case <-reschedule.C:
s.updateJobs(reader)
s.updateJobs(reader.Fetch)
case <-ticker.C:
s.heartBeat()
}
}
}
func (s *Scheduler) updateJobs(reader RuleReader) {
func (s *Scheduler) updateJobs(f func() []m.AlertRule) {
log.Debug("Scheduler: UpdateJobs()")
jobs := make([]*AlertJob, 0)
rules := reader.Fetch()
rules := f()
for i := s.serverPosition - 1; i < len(rules); i += s.clusterSize {
rule := rules[i]
+62
View File
@@ -1 +1,63 @@
package alerting
import (
m "github.com/grafana/grafana/pkg/models"
. "github.com/smartystreets/goconvey/convey"
"testing"
)
func TestAlertingScheduler(t *testing.T) {
Convey("Testing alert job selection", t, func() {
mockFn := func() []m.AlertRule {
return []m.AlertRule{
{Id: 1, Title: "test 1"},
{Id: 2, Title: "test 2"},
{Id: 3, Title: "test 3"},
{Id: 4, Title: "test 4"},
{Id: 5, Title: "test 5"},
{Id: 6, Title: "test 6"},
}
}
Convey("single server", func() {
scheduler := &Scheduler{
jobs: make([]*AlertJob, 0),
runQueue: make(chan *AlertJob, 1000),
serverId: "",
serverPosition: 1,
clusterSize: 1,
}
scheduler.updateJobs(mockFn)
So(len(scheduler.jobs), ShouldEqual, 6)
})
Convey("two servers", func() {
scheduler := &Scheduler{
jobs: make([]*AlertJob, 0),
runQueue: make(chan *AlertJob, 1000),
serverId: "",
serverPosition: 1,
clusterSize: 2,
}
scheduler.updateJobs(mockFn)
So(len(scheduler.jobs), ShouldEqual, 3)
So(scheduler.jobs[0].id, ShouldEqual, 1)
})
Convey("six servers", func() {
scheduler := &Scheduler{
jobs: make([]*AlertJob, 0),
runQueue: make(chan *AlertJob, 1000),
serverId: "",
serverPosition: 6,
clusterSize: 6,
}
scheduler.updateJobs(mockFn)
So(len(scheduler.jobs), ShouldEqual, 1)
So(scheduler.jobs[0].id, ShouldEqual, 6)
})
})
}