mirror of
https://github.com/rcourtman/Pulse.git
synced 2026-02-19 07:50:43 +01:00
134 lines
3.6 KiB
Go
134 lines
3.6 KiB
Go
package monitoring
|
|
|
|
import (
|
|
"testing"
|
|
|
|
"github.com/rcourtman/pulse-go-rewrite/internal/models"
|
|
"github.com/rcourtman/pulse-go-rewrite/pkg/proxmox"
|
|
)
|
|
|
|
func TestParseContainerMountMetadata(t *testing.T) {
|
|
config := map[string]interface{}{
|
|
"rootfs": "local-lvm:vm-100-disk-0,size=8G",
|
|
"mp0": "/mnt/pve/media/subvol-100-disk-1,mp=/mnt/media,acl=1",
|
|
"MP1": "local:100/vm-100-disk-2,mp=/srv/backup",
|
|
"unused": "ignored",
|
|
}
|
|
|
|
meta := parseContainerMountMetadata(config)
|
|
if len(meta) != 3 {
|
|
t.Fatalf("expected 3 entries, got %d", len(meta))
|
|
}
|
|
|
|
root, ok := meta["rootfs"]
|
|
if !ok {
|
|
t.Fatalf("missing rootfs metadata")
|
|
}
|
|
if root.Mountpoint != "/" {
|
|
t.Fatalf("expected root mountpoint '/', got %q", root.Mountpoint)
|
|
}
|
|
if root.Source != "local-lvm:vm-100-disk-0" {
|
|
t.Fatalf("unexpected root source %q", root.Source)
|
|
}
|
|
|
|
mp0, ok := meta["mp0"]
|
|
if !ok {
|
|
t.Fatalf("missing mp0 metadata")
|
|
}
|
|
if mp0.Mountpoint != "/mnt/media" {
|
|
t.Fatalf("expected mp0 mountpoint '/mnt/media', got %q", mp0.Mountpoint)
|
|
}
|
|
if mp0.Source != "/mnt/pve/media/subvol-100-disk-1" {
|
|
t.Fatalf("unexpected mp0 source %q", mp0.Source)
|
|
}
|
|
|
|
mp1, ok := meta["mp1"]
|
|
if !ok {
|
|
t.Fatalf("missing mp1 metadata")
|
|
}
|
|
if mp1.Mountpoint != "/srv/backup" {
|
|
t.Fatalf("expected mp1 mountpoint '/srv/backup', got %q", mp1.Mountpoint)
|
|
}
|
|
if mp1.Source != "local:100/vm-100-disk-2" {
|
|
t.Fatalf("unexpected mp1 source %q", mp1.Source)
|
|
}
|
|
}
|
|
|
|
func TestConvertContainerDiskInfoUsesMountMetadata(t *testing.T) {
|
|
status := &proxmox.Container{
|
|
RootFS: "local-lvm:vm-200-disk-0,size=20G",
|
|
DiskInfo: map[string]proxmox.ContainerDiskUsage{
|
|
"rootfs": {Total: 20 * 1024 * 1024 * 1024, Used: 10 * 1024 * 1024 * 1024},
|
|
"mp0": {Total: 100 * 1024 * 1024 * 1024, Used: 50 * 1024 * 1024 * 1024},
|
|
},
|
|
}
|
|
|
|
meta := map[string]containerMountMetadata{
|
|
"rootfs": {Key: "rootfs", Mountpoint: "/", Source: "local-lvm:vm-200-disk-0"},
|
|
"mp0": {Key: "mp0", Mountpoint: "/mnt/media", Source: "/mnt/pve/media/subvol-200-disk-1"},
|
|
}
|
|
|
|
disks := convertContainerDiskInfo(status, meta)
|
|
if len(disks) != 2 {
|
|
t.Fatalf("expected 2 disks, got %d", len(disks))
|
|
}
|
|
|
|
var rootDisk, mpDisk *models.Disk
|
|
for i := range disks {
|
|
if disks[i].Mountpoint == "/" {
|
|
rootDisk = &disks[i]
|
|
}
|
|
if disks[i].Mountpoint == "/mnt/media" {
|
|
mpDisk = &disks[i]
|
|
}
|
|
}
|
|
|
|
if rootDisk == nil {
|
|
t.Fatalf("root disk not found in %+v", disks)
|
|
}
|
|
if rootDisk.Device != "local-lvm:vm-200-disk-0" {
|
|
t.Fatalf("unexpected root device %q", rootDisk.Device)
|
|
}
|
|
if rootDisk.Type != "rootfs" {
|
|
t.Fatalf("expected root type rootfs, got %q", rootDisk.Type)
|
|
}
|
|
|
|
if mpDisk == nil {
|
|
t.Fatalf("mp0 disk not found in %+v", disks)
|
|
}
|
|
if mpDisk.Device != "/mnt/pve/media/subvol-200-disk-1" {
|
|
t.Fatalf("unexpected mp0 device %q", mpDisk.Device)
|
|
}
|
|
if mpDisk.Type != "mp0" {
|
|
t.Fatalf("expected mp0 type 'mp0', got %q", mpDisk.Type)
|
|
}
|
|
}
|
|
|
|
func TestConvertContainerDiskInfoFallsBackWithoutMetadata(t *testing.T) {
|
|
status := &proxmox.Container{
|
|
RootFS: "local-lvm:vm-300-disk-0,size=16G",
|
|
DiskInfo: map[string]proxmox.ContainerDiskUsage{
|
|
"rootfs": {Total: 16 * 1024 * 1024 * 1024, Used: 8 * 1024 * 1024 * 1024},
|
|
"mp1": {Total: 5 * 1024 * 1024 * 1024, Used: 1 * 1024 * 1024 * 1024},
|
|
},
|
|
}
|
|
|
|
disks := convertContainerDiskInfo(status, nil)
|
|
if len(disks) != 2 {
|
|
t.Fatalf("expected 2 disks, got %d", len(disks))
|
|
}
|
|
|
|
var mpDisk *models.Disk
|
|
for i := range disks {
|
|
if disks[i].Type == "mp1" {
|
|
mpDisk = &disks[i]
|
|
}
|
|
}
|
|
if mpDisk == nil {
|
|
t.Fatalf("mp1 disk not found in %+v", disks)
|
|
}
|
|
if mpDisk.Mountpoint != "mp1" {
|
|
t.Fatalf("expected fallback mountpoint 'mp1', got %q", mpDisk.Mountpoint)
|
|
}
|
|
}
|