Initial Proxmox dashboard with host and guest metrics
This commit is contained in:
52
disks_test.go
Normal file
52
disks_test.go
Normal file
@@ -0,0 +1,52 @@
|
||||
package main
|
||||
|
||||
import (
|
||||
"encoding/json"
|
||||
"testing"
|
||||
)
|
||||
|
||||
func TestIsPhysicalDiskName(t *testing.T) {
|
||||
tests := map[string]bool{
|
||||
"sda": true, "sdb": true, "nvme0n1": true,
|
||||
"loop0": false, "dm-0": false, "zram0": false, "md0": false,
|
||||
}
|
||||
for name, expected := range tests {
|
||||
if actual := isPhysicalDiskName(name); actual != expected {
|
||||
t.Fatalf("isPhysicalDiskName(%q) = %v, ожидалось %v", name, actual, expected)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
func TestSumFilesystemUsage(t *testing.T) {
|
||||
device := lsblkDevice{Children: []lsblkDevice{
|
||||
{FSUsed: json.RawMessage(`100`), FSAvail: json.RawMessage(`300`)},
|
||||
{FSUsed: json.RawMessage(`200`), FSAvail: json.RawMessage(`400`)},
|
||||
}}
|
||||
used, total, ok := sumFilesystemUsage(device)
|
||||
if !ok || used != 300 || total != 1000 {
|
||||
t.Fatalf("неожиданное использование диска: used=%d total=%d ok=%v", used, total, ok)
|
||||
}
|
||||
}
|
||||
|
||||
func TestApplyATAWearAndReason(t *testing.T) {
|
||||
var smart smartctlJSON
|
||||
attribute := struct {
|
||||
Name string `json:"name"`
|
||||
Value int `json:"value"`
|
||||
Threshold int `json:"thresh"`
|
||||
WhenFailed string `json:"when_failed"`
|
||||
Raw struct {
|
||||
String string `json:"string"`
|
||||
Value int64 `json:"value"`
|
||||
} `json:"raw"`
|
||||
}{Name: "SSD_Life_Left", Value: 92, WhenFailed: "FAILING_NOW"}
|
||||
smart.ATAAttributes.Table = append(smart.ATAAttributes.Table, attribute)
|
||||
disk := DiskMetrics{}
|
||||
applyATAAttributes(&disk, smart)
|
||||
if disk.WearUsedPercent == nil || *disk.WearUsedPercent != 8 {
|
||||
t.Fatalf("неожиданный износ: %v", disk.WearUsedPercent)
|
||||
}
|
||||
if len(disk.AttentionReasons) != 1 {
|
||||
t.Fatalf("причина предупреждения не добавлена: %+v", disk)
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user