9
"github.com/golang/mock/gomock"
10
. "github.com/smartystreets/goconvey/convey"
12
"go.avito.ru/DO/moira"
13
"go.avito.ru/DO/moira/metrics"
14
"go.avito.ru/DO/moira/mock/moira-alert"
15
"go.avito.ru/DO/moira/mock/scheduler"
16
"go.avito.ru/DO/moira/test-helpers"
20
mockCtrl *gomock.Controller
21
sender *mock_moira_alert.MockSender
22
notif *StandardNotifier
23
scheduler *mock_scheduler.MockScheduler
24
dataBase *mock_moira_alert.MockDatabase
27
func TestUnknownContactType(t *testing.T) {
31
eventsData := []moira.NotificationEvent{event}
32
pkg := NotificationPackage{
34
Contact: moira.ContactData{
35
Type: "unknown contact",
38
notification := moira.ScheduledNotification{}
40
scheduler.EXPECT().CalculateBackoff(pkg.FailCount + 1).Return(1 * time.Minute)
41
scheduler.EXPECT().GetDeliveryInfo(gomock.Any(), event, pkg.Throttled, pkg.FailCount+1).Return(time.Now(), false)
42
scheduler.EXPECT().ScheduleNotification(gomock.Any(), pkg.Throttled, event, pkg.Trigger, pkg.Contact, pkg.FailCount+1, pkg.NeedAck).Return(¬ification)
43
dataBase.EXPECT().AddNotification(¬ification).Return(nil)
45
wg := sync.WaitGroup{}
50
func TestFailSendEvent(t *testing.T) {
54
var eventsData moira.NotificationEvents = []moira.NotificationEvent{event}
56
pkg := NotificationPackage{
58
Contact: moira.ContactData{
62
notification := moira.ScheduledNotification{}
64
sender.EXPECT().SendEvents(eventsData, pkg.Contact, pkg.Trigger, pkg.Throttled, pkg.NeedAck).Return(fmt.Errorf("Can't send"))
65
scheduler.EXPECT().CalculateBackoff(pkg.FailCount + 1).Return(1 * time.Minute)
66
scheduler.EXPECT().GetDeliveryInfo(gomock.Any(), event, pkg.Throttled, pkg.FailCount+1).Return(time.Now(), false)
67
scheduler.EXPECT().ScheduleNotification(gomock.Any(), pkg.Throttled, event, pkg.Trigger, pkg.Contact, pkg.FailCount+1, pkg.NeedAck).Return(¬ification)
68
dataBase.EXPECT().AddNotification(¬ification).Return(nil)
73
time.Sleep(time.Second * 2)
76
func configureNotifier(t *testing.T) {
77
test_helpers.InitTestLogging()
78
notifierMetrics := metrics.NewNotifierMetrics()
80
var location, _ = time.LoadLocation("UTC")
82
SendingTimeout: time.Millisecond * 10,
83
ResendingTimeout: time.Hour * 24,
86
mockCtrl = gomock.NewController(t)
88
dataBase = mock_moira_alert.NewMockDatabase(mockCtrl)
89
test_helpers.InitTestLogging()
91
scheduler = mock_scheduler.NewMockScheduler(mockCtrl)
92
sender = mock_moira_alert.NewMockSender(mockCtrl)
94
notif = NewNotifier(dataBase, config, notifierMetrics)
95
notif.scheduler = scheduler
96
senderSettings := map[string]string{
100
sender.EXPECT().Init(senderSettings, location).Return(nil)
102
notif.RegisterSender(senderSettings, sender)
104
Convey("Should return one sender", t, func() {
105
So(notif.GetSenders(), ShouldResemble, map[string]bool{"test": true})
114
var subID = "SubscriptionID-000000000000001"
116
var event = moira.NotificationEvent{
117
Metric: "generate.event.1",
119
OldState: moira.WARN,
120
TriggerID: "triggerID-0000000000001",
121
SubscriptionID: &subID,