package host import ( "testing" "time" "tower/internal/model" ) func TestParseProcLoadavgFirst(t *testing.T) { v, err := parseProcLoadavgFirst("1.23 0.70 0.50 1/123 4567\n") if err != nil { t.Fatalf("unexpected err: %v", err) } if v < 1.229 || v > 1.231 { t.Fatalf("expected 1.23, got %v", v) } if _, err := parseProcLoadavgFirst("\n"); err == nil { t.Fatalf("expected error") } } func TestDesiredLoadPriority(t *testing.T) { p, w := desiredLoadPriority(3.99) if p != "" || w != 0 { t.Fatalf("expected none") } p, w = desiredLoadPriority(4.0) if p != model.PriorityP2 || w != 120*time.Second { t.Fatalf("expected P2/120s") } p, w = desiredLoadPriority(6.0) if p != model.PriorityP1 || w != 120*time.Second { t.Fatalf("expected P1/120s") } } func TestUpdateSustainedWorksForLoadToo(t *testing.T) { now := time.Date(2025, 1, 1, 0, 0, 0, 0, time.UTC) p, since := updateSustained(now, "", time.Time{}, model.PriorityP2) if p != model.PriorityP2 || !since.Equal(now) { t.Fatalf("expected set") } p2, since2 := updateSustained(now.Add(10*time.Second), p, since, model.PriorityP2) if p2 != model.PriorityP2 || !since2.Equal(since) { t.Fatalf("expected unchanged") } }