fix(monitor): inject time into ComputeDailyBreakdown #91

Merged
lerko merged 1 commits from fix/sla-daily-breakdown-time into main 2026-06-05 14:46:45 +00:00
3 changed files with 5 additions and 5 deletions
+1 -2
View File
@@ -127,8 +127,7 @@ func ComputeSLA(changes []models.StateChange, currentStatus string, window time.
return report return report
} }
func ComputeDailyBreakdown(changes []models.StateChange, currentStatus string, days int) []DayReport { func ComputeDailyBreakdown(changes []models.StateChange, currentStatus string, days int, now time.Time) []DayReport {
now := time.Now()
reports := make([]DayReport, days) reports := make([]DayReport, days)
for i := 0; i < days; i++ { for i := 0; i < days; i++ {
+3 -2
View File
@@ -118,13 +118,14 @@ func TestComputeSLA_LateNotDown(t *testing.T) {
} }
func TestComputeDailyBreakdown(t *testing.T) { func TestComputeDailyBreakdown(t *testing.T) {
now := time.Now() // Use a fixed time well past midnight so the outage always falls within today's window.
now := time.Date(2026, 6, 4, 15, 0, 0, 0, time.UTC)
changes := []models.StateChange{ changes := []models.StateChange{
{ToStatus: "UP", ChangedAt: now.Add(-1 * time.Hour)}, {ToStatus: "UP", ChangedAt: now.Add(-1 * time.Hour)},
{ToStatus: "DOWN", FromStatus: "UP", ChangedAt: now.Add(-2 * time.Hour)}, {ToStatus: "DOWN", FromStatus: "UP", ChangedAt: now.Add(-2 * time.Hour)},
} }
days := ComputeDailyBreakdown(changes, "UP", 7) days := ComputeDailyBreakdown(changes, "UP", 7, now)
if len(days) != 7 { if len(days) != 7 {
t.Fatalf("expected 7 days, got %d", len(days)) t.Fatalf("expected 7 days, got %d", len(days))
+1 -1
View File
@@ -329,7 +329,7 @@ func (m *Model) recomputeSLA() {
} }
m.slaReport = monitor.ComputeSLA(changes, currentStatus, period.duration) m.slaReport = monitor.ComputeSLA(changes, currentStatus, period.duration)
m.slaDailyBreakdown = monitor.ComputeDailyBreakdown(changes, currentStatus, period.days) m.slaDailyBreakdown = monitor.ComputeDailyBreakdown(changes, currentStatus, period.days, time.Now())
m.slaViewport = viewport.New( m.slaViewport = viewport.New(
m.termWidth-chromePadH, m.termWidth-chromePadH,