42 lines
1.3 KiB
Go
42 lines
1.3 KiB
Go
package main
|
|
|
|
import (
|
|
"strings"
|
|
"testing"
|
|
)
|
|
|
|
func TestRenderMonitor(t *testing.T) {
|
|
snap := statusSnapshot{
|
|
Version: "v0.2.3",
|
|
UptimeS: 3725,
|
|
Downstreams: []statusDownstream{
|
|
{Name: "ollama", URL: "http://127.0.0.1:11435", Up: true},
|
|
{Name: "comfy", URL: "http://127.0.0.1:8189", Managed: "stopped"},
|
|
},
|
|
Lock: statusLock{State: "llm", LLMInflight: 2, LLMWaiting: 1, Detail: "ollama: POST /api/generate", SinceS: 95},
|
|
}
|
|
frame := renderMonitor(snap, 80)
|
|
for _, want := range []string{"v0.2.3", "1h02m", "ollama", "UP", "comfy", "stopped", "LLM", "2 in flight", "1 waiting", "1m35s"} {
|
|
if !strings.Contains(frame, want) {
|
|
t.Errorf("frame missing %q:\n%s", want, frame)
|
|
}
|
|
}
|
|
|
|
snap.Lock = statusLock{State: "external", External: "cyberpunk2077.exe (pid 1234)", SinceS: 3, ImageQueue: 2}
|
|
frame = renderMonitor(snap, 40) // narrow: falls back to 80
|
|
for _, want := range []string{"EXTERNAL", "cyberpunk2077.exe", "2 image job(s) waiting"} {
|
|
if !strings.Contains(frame, want) {
|
|
t.Errorf("frame missing %q:\n%s", want, frame)
|
|
}
|
|
}
|
|
}
|
|
|
|
func TestFmtDur(t *testing.T) {
|
|
cases := map[int64]string{0: "0s", 5: "5s", 95: "1m35s", 3725: "1h02m", -3: "0s"}
|
|
for in, want := range cases {
|
|
if got := fmtDur(in); got != want {
|
|
t.Errorf("fmtDur(%d) = %q, want %q", in, got, want)
|
|
}
|
|
}
|
|
}
|