42 lines
1.5 KiB
Go
42 lines
1.5 KiB
Go
package main
|
||
|
||
import "testing"
|
||
|
||
func TestEvaluateAlerts(t *testing.T) {
|
||
metrics := dashboardMetrics{
|
||
Memory: MemoryMetrics{UsagePercent: 91},
|
||
Storage: StorageMetrics{UsagePercent: 96},
|
||
Backups: BackupMetrics{}, Guests: GuestsMetrics{},
|
||
}
|
||
alerts := evaluateAlerts(metrics, defaultThresholds())
|
||
if len(alerts) != 2 {
|
||
t.Fatalf("ожидалось два уведомления, получено: %+v", alerts)
|
||
}
|
||
if alerts[0].Severity != "critical" || alerts[1].Severity != "warning" {
|
||
t.Fatalf("неверная сортировка уведомлений: %+v", alerts)
|
||
}
|
||
}
|
||
|
||
func TestSlowCollectionDoesNotCreateAlert(t *testing.T) {
|
||
metrics := dashboardMetrics{Monitor: MonitorHealth{SlowCollector: true, CollectionDurationMs: 12308}}
|
||
for _, alert := range evaluateAlerts(metrics, defaultThresholds()) {
|
||
if alert.ID == "monitor-slow" {
|
||
t.Fatalf("медленный цикл не должен создавать уведомление: %+v", alert)
|
||
}
|
||
}
|
||
}
|
||
|
||
func TestNeverRunSelfTestCreatesOneAlert(t *testing.T) {
|
||
metrics := dashboardMetrics{Disks: []DiskMetrics{{
|
||
Name: "nvme0n1",
|
||
Model: "Test NVMe",
|
||
SMARTStatus: "Требует внимания",
|
||
SelfTestNeverRun: true,
|
||
AttentionReasons: []string{"SMART self-test ещё ни разу не запускался"},
|
||
}}}
|
||
alerts := evaluateAlerts(metrics, defaultThresholds())
|
||
if len(alerts) != 1 || alerts[0].ID != "disk-selftest-nvme0n1" {
|
||
t.Fatalf("ожидалось одно точное уведомление о self-test, получено: %+v", alerts)
|
||
}
|
||
}
|