test: Add comprehensive tests for clearHostDiskAlerts function
- clears all disk alerts for specified host - empty hostID is noop - skips nil alerts without panic - noop when no matching alerts - clearHostDiskAlerts 72.7%→100%
This commit is contained in:
parent
32b346b8ce
commit
39a856aaf8
1 changed files with 118 additions and 0 deletions
|
|
@ -3283,3 +3283,121 @@ func TestClearHostMetricAlerts(t *testing.T) {
|
|||
}
|
||||
})
|
||||
}
|
||||
|
||||
func TestClearHostDiskAlerts(t *testing.T) {
|
||||
t.Parallel()
|
||||
|
||||
t.Run("clears all disk alerts for host", func(t *testing.T) {
|
||||
t.Parallel()
|
||||
m := NewManager()
|
||||
|
||||
hostID := "disk-host"
|
||||
resourceID := fmt.Sprintf("host:%s", hostID)
|
||||
|
||||
// Create disk alerts with the expected ResourceID format
|
||||
m.mu.Lock()
|
||||
m.activeAlerts["disk1-alert"] = &Alert{
|
||||
ID: "disk1-alert",
|
||||
ResourceID: fmt.Sprintf("%s/disk:sda", resourceID),
|
||||
}
|
||||
m.activeAlerts["disk2-alert"] = &Alert{
|
||||
ID: "disk2-alert",
|
||||
ResourceID: fmt.Sprintf("%s/disk:sdb", resourceID),
|
||||
}
|
||||
m.activeAlerts["cpu-alert"] = &Alert{
|
||||
ID: "cpu-alert",
|
||||
ResourceID: fmt.Sprintf("%s-cpu", resourceID),
|
||||
}
|
||||
m.mu.Unlock()
|
||||
|
||||
m.clearHostDiskAlerts(hostID)
|
||||
|
||||
m.mu.RLock()
|
||||
_, disk1Exists := m.activeAlerts["disk1-alert"]
|
||||
_, disk2Exists := m.activeAlerts["disk2-alert"]
|
||||
_, cpuExists := m.activeAlerts["cpu-alert"]
|
||||
m.mu.RUnlock()
|
||||
|
||||
if disk1Exists {
|
||||
t.Error("expected disk1 alert to be cleared")
|
||||
}
|
||||
if disk2Exists {
|
||||
t.Error("expected disk2 alert to be cleared")
|
||||
}
|
||||
if !cpuExists {
|
||||
t.Error("expected cpu alert to remain (not a disk alert)")
|
||||
}
|
||||
})
|
||||
|
||||
t.Run("empty hostID is noop", func(t *testing.T) {
|
||||
t.Parallel()
|
||||
m := NewManager()
|
||||
|
||||
// Create an alert
|
||||
m.mu.Lock()
|
||||
m.activeAlerts["disk-alert"] = &Alert{
|
||||
ID: "disk-alert",
|
||||
ResourceID: "host:unknown/disk:sda",
|
||||
}
|
||||
m.mu.Unlock()
|
||||
|
||||
m.clearHostDiskAlerts("")
|
||||
|
||||
m.mu.RLock()
|
||||
_, exists := m.activeAlerts["disk-alert"]
|
||||
m.mu.RUnlock()
|
||||
|
||||
if !exists {
|
||||
t.Error("expected alert to remain when hostID is empty")
|
||||
}
|
||||
})
|
||||
|
||||
t.Run("skips nil alerts", func(t *testing.T) {
|
||||
t.Parallel()
|
||||
m := NewManager()
|
||||
|
||||
hostID := "nil-test"
|
||||
resourceID := fmt.Sprintf("host:%s", hostID)
|
||||
|
||||
m.mu.Lock()
|
||||
m.activeAlerts["nil-alert"] = nil
|
||||
m.activeAlerts["real-alert"] = &Alert{
|
||||
ID: "real-alert",
|
||||
ResourceID: fmt.Sprintf("%s/disk:sda", resourceID),
|
||||
}
|
||||
m.mu.Unlock()
|
||||
|
||||
// Should not panic
|
||||
m.clearHostDiskAlerts(hostID)
|
||||
|
||||
m.mu.RLock()
|
||||
_, realExists := m.activeAlerts["real-alert"]
|
||||
m.mu.RUnlock()
|
||||
|
||||
if realExists {
|
||||
t.Error("expected real alert to be cleared")
|
||||
}
|
||||
})
|
||||
|
||||
t.Run("noop when no matching alerts", func(t *testing.T) {
|
||||
t.Parallel()
|
||||
m := NewManager()
|
||||
|
||||
m.mu.Lock()
|
||||
m.activeAlerts["other-alert"] = &Alert{
|
||||
ID: "other-alert",
|
||||
ResourceID: "host:other-host/disk:sda",
|
||||
}
|
||||
m.mu.Unlock()
|
||||
|
||||
m.clearHostDiskAlerts("my-host")
|
||||
|
||||
m.mu.RLock()
|
||||
_, exists := m.activeAlerts["other-alert"]
|
||||
m.mu.RUnlock()
|
||||
|
||||
if !exists {
|
||||
t.Error("expected other host's alert to remain")
|
||||
}
|
||||
})
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in a new issue