mirror of
https://github.com/grafana/grafana.git
synced 2026-07-30 08:18:10 -05:00
test(alerting): add test for alertjob selection
This commit is contained in:
@@ -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]
|
||||
|
||||
@@ -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)
|
||||
})
|
||||
})
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user