Files
ProxmoxDash/reliability_test.go
2026-08-01 16:58:25 +03:00

39 lines
1.6 KiB
Go

package main
import (
"strings"
"testing"
"time"
)
func TestDiskCounterChanges(t *testing.T) {
old := DiskMetrics{Reallocated: 1, Pending: 2, CRCErrors: 4}
current := DiskMetrics{Reallocated: 2, Pending: 2, CRCErrors: 7}
changes := strings.Join(diskCounterChanges(old, current), " ")
if !strings.Contains(changes, "Reallocated") || !strings.Contains(changes, "CRC") || strings.Contains(changes, "Pending") {
t.Fatalf("unexpected counter changes: %s", changes)
}
}
func TestParseScrub(t *testing.T) {
status, at, duration, old := parseScrub("scrub repaired 0B in 01:12:03 with 0 errors on Fri Jan 2 03:04:05 2026")
if status != "Завершён" || at == "" || duration != "01:12:03" || !old {
t.Fatalf("unexpected scrub: %q %q %q %v", status, at, duration, old)
}
}
func TestShutdownDryRunUsesConfiguredOrder(t *testing.T) {
settings := UPSShutdownSettings{ChargePercent: 15, RuntimeSeconds: 600, GraceSeconds: 120, GuestOrder: []int{105}}
guests := GuestsMetrics{Guests: []GuestMetrics{{VMID: 101, Name: "one", Type: "qemu", Status: "running"}, {VMID: 105, Name: "five", Type: "lxc", Status: "running"}}}
steps := buildShutdownDryRun(settings, guests)
if len(steps) != 4 || !strings.Contains(steps[1].Target, "105") || !strings.Contains(steps[2].Target, "101") || steps[3].Target != "Proxmox host" {
t.Fatalf("unexpected plan: %+v", steps)
}
}
func TestSelfTestOlderThanWeek(t *testing.T) {
if !selfTestOlderThanWeek(time.Now().Add(-8*24*time.Hour).Format(time.RFC3339)) || selfTestOlderThanWeek(time.Now().Format(time.RFC3339)) {
t.Fatal("self-test age evaluation is incorrect")
}
}