Files
mesh-controller/cmd/mesh-controller/restarts_words_test.go
T
jschoubben cde0dc287b
mesh/merge-gate pass: builds mesh-controller → novox; no bus step; every machine composes with the change as it did without (4 of 4 compose)
mesh/repo-check pass: its merge-check.sh passed
mesh/delivery delivered
mesh/delivery-group group fix/458-restarts-say-what-they-count delivered: every member is delivered
Say a restart count runs from when the node-engine began watching it
The engine reports its own count, kept across recreates and starts by hand, not
systemd's NRestarts or the runtime's RestartCount (novox/hq issue 458).
2026-10-12 10:46:38 +02:00

29 lines
1.4 KiB
Go

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)
}
}
}