mirror of
https://github.com/rcourtman/Pulse.git
synced 2026-04-28 03:20:11 +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
|
return s.snapshot
|
||||||
}
|
}
|
||||||
|
|
||||||
|
type mutableResourceStateProvider struct {
|
||||||
|
snapshot models.StateSnapshot
|
||||||
|
}
|
||||||
|
|
||||||
|
func (s *mutableResourceStateProvider) GetState() models.StateSnapshot {
|
||||||
|
return s.snapshot
|
||||||
|
}
|
||||||
|
|
||||||
type stubTenantStateProvider struct {
|
type stubTenantStateProvider struct {
|
||||||
snapshot models.StateSnapshot
|
snapshot models.StateSnapshot
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -108,3 +108,57 @@ func TestHandleGetResourceStats(t *testing.T) {
|
||||||
assert.Equal(t, 1, stats.TotalResources)
|
assert.Equal(t, 1, stats.TotalResources)
|
||||||
assert.Equal(t, 1, stats.WithAlerts)
|
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