package main import ( "strings" "testing" "time" "github.com/novox/mesh-controller/internal/inventory" "github.com/novox/mesh-controller/internal/link" ) // A restart count runs from when the node-engine began watching the resource, so it is never said beside // "since" as if it counted from there (novox/hq issue 458): 3890 restarts beside "since 00:58" sent a reader after a crash loop that was not. func TestARestartCountSaysItCountsFromWhenTheEngineBeganWatching(t *testing.T) { since := time.Date(2026, 10, 11, 0, 58, 0, 0, time.UTC) r := inventory.ResourceHealth{Module: "messenger", Resource: "messenger.own-runtime", Kind: "process", Target: "messenger-runtime.service", State: link.StateUnhealthy, Reason: "restarting", Since: since, Streak: 2, Restarts: 3890} h := inventory.NodeHealth{HeardAt: since, Resources: []inventory.ResourceHealth{r}, Streaks: map[string]int{"messenger": 2}} lines := strings.Join(healthLines(h, true, since.Add(time.Minute)), "\n") o := moduleUnhealthyObservation("messenger", "anchor", []inventory.ResourceHealth{r}) for name, said := range map[string]string{"node show": lines, "evidence": o.Said, "summary": o.Summary} { if !strings.Contains(said, "3890 automatic restart(s) since the node-engine began watching it") || strings.Contains(said, "counted") { t.Errorf("%s says the restart count as if it were since then:\n%s", name, said) } } }