mirror of
https://github.com/rcourtman/Pulse.git
synced 2026-04-26 10:31:17 +00:00
Add resource alert stats regression coverage
This commit is contained in:
parent
1430b52b97
commit
aa69bd2d8e
2 changed files with 62 additions and 0 deletions
|
|
@ -20,6 +20,14 @@ func (s stubResourceStateProvider) GetState() models.StateSnapshot {
|
|||
return s.snapshot
|
||||
}
|
||||
|
||||
type mutableResourceStateProvider struct {
|
||||
snapshot models.StateSnapshot
|
||||
}
|
||||
|
||||
func (s *mutableResourceStateProvider) GetState() models.StateSnapshot {
|
||||
return s.snapshot
|
||||
}
|
||||
|
||||
type stubTenantStateProvider struct {
|
||||
snapshot models.StateSnapshot
|
||||
}
|
||||
|
|
|
|||
|
|
@ -108,3 +108,57 @@ func TestHandleGetResourceStats(t *testing.T) {
|
|||
assert.Equal(t, 1, stats.TotalResources)
|
||||
assert.Equal(t, 1, stats.WithAlerts)
|
||||
}
|
||||
|
||||
func TestHandleGetResourceStatsClearsAlertCountAfterAlertsResolve(t *testing.T) {
|
||||
handlers := NewResourceHandlers()
|
||||
now := time.Now()
|
||||
provider := &mutableResourceStateProvider{
|
||||
snapshot: models.StateSnapshot{
|
||||
VMs: []models.VM{{
|
||||
ID: "vm-1",
|
||||
Name: "vm-1",
|
||||
Status: "running",
|
||||
LastSeen: now,
|
||||
}},
|
||||
ActiveAlerts: []models.Alert{{
|
||||
ID: "vm-1-cpu",
|
||||
ResourceID: "vm-1",
|
||||
Type: "cpu",
|
||||
Level: "warning",
|
||||
Message: "CPU high",
|
||||
StartTime: now,
|
||||
}},
|
||||
},
|
||||
}
|
||||
handlers.SetStateProvider(provider)
|
||||
|
||||
req := httptest.NewRequest("GET", "/api/resources/stats", nil)
|
||||
w := httptest.NewRecorder()
|
||||
handlers.HandleGetResourceStats(w, req)
|
||||
|
||||
assert.Equal(t, http.StatusOK, w.Code)
|
||||
var stats resources.StoreStats
|
||||
err := json.NewDecoder(w.Body).Decode(&stats)
|
||||
assert.NoError(t, err)
|
||||
assert.Equal(t, 1, stats.TotalResources)
|
||||
assert.Equal(t, 1, stats.WithAlerts)
|
||||
|
||||
provider.snapshot = models.StateSnapshot{
|
||||
VMs: []models.VM{{
|
||||
ID: "vm-1",
|
||||
Name: "vm-1",
|
||||
Status: "running",
|
||||
LastSeen: now,
|
||||
}},
|
||||
}
|
||||
|
||||
req = httptest.NewRequest("GET", "/api/resources/stats", nil)
|
||||
w = httptest.NewRecorder()
|
||||
handlers.HandleGetResourceStats(w, req)
|
||||
|
||||
assert.Equal(t, http.StatusOK, w.Code)
|
||||
err = json.NewDecoder(w.Body).Decode(&stats)
|
||||
assert.NoError(t, err)
|
||||
assert.Equal(t, 1, stats.TotalResources)
|
||||
assert.Equal(t, 0, stats.WithAlerts)
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue