Add acknowledged alert history and HTML email digests
This commit is contained in:
58
alert_events_test.go
Normal file
58
alert_events_test.go
Normal file
@@ -0,0 +1,58 @@
|
||||
package main
|
||||
|
||||
import "testing"
|
||||
|
||||
func TestAlertLifecycle(t *testing.T) {
|
||||
store, err := openStore(":memory:")
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
defer store.Close()
|
||||
alert := Alert{ID: "disk", Severity: "warning", Source: "Диски", Title: "SMART", Message: "Проверьте диск"}
|
||||
visible, err := store.SyncAlerts([]Alert{alert})
|
||||
if err != nil || len(visible) != 1 || visible[0].EventID == 0 {
|
||||
t.Fatalf("unexpected new alert: %+v %v", visible, err)
|
||||
}
|
||||
firstID := visible[0].EventID
|
||||
if err = store.AcknowledgeAlert(firstID); err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
visible, err = store.SyncAlerts([]Alert{alert})
|
||||
if err != nil || len(visible) != 0 {
|
||||
t.Fatalf("acknowledged alert became visible: %+v %v", visible, err)
|
||||
}
|
||||
if _, err = store.SyncAlerts(nil); err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
visible, err = store.SyncAlerts([]Alert{alert})
|
||||
if err != nil || len(visible) != 1 || visible[0].EventID == firstID {
|
||||
t.Fatalf("recurring alert was not new: %+v %v", visible, err)
|
||||
}
|
||||
history, err := store.AlertHistory(20)
|
||||
if err != nil || len(history) != 2 {
|
||||
t.Fatalf("unexpected history: %+v %v", history, err)
|
||||
}
|
||||
}
|
||||
|
||||
func TestPendingEmailAlerts(t *testing.T) {
|
||||
store, err := openStore(":memory:")
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
defer store.Close()
|
||||
visible, err := store.SyncAlerts([]Alert{{ID: "cpu", Severity: "critical", Source: "CPU", Title: "Load"}})
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
pending, err := store.PendingEmailAlerts()
|
||||
if err != nil || len(pending) != 1 {
|
||||
t.Fatalf("unexpected pending: %+v %v", pending, err)
|
||||
}
|
||||
if err = store.MarkAlertsEmailed(visible); err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
pending, err = store.PendingEmailAlerts()
|
||||
if err != nil || len(pending) != 0 {
|
||||
t.Fatalf("emailed alert repeated: %+v %v", pending, err)
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user