vdi-cloud/platform/pkg/proxmox/hardware_test.go

36 lines
1.5 KiB
Go

package proxmox
import (
"context"
"encoding/json"
"net/http"
"net/http/httptest"
"testing"
)
func TestHardwareDisksExcludeDevicesAndDetectUnsafeTopology(t *testing.T) {
h, err := ReadHardware(map[string]any{"digest": "abc", "cores": 4, "memory": 4096, "scsi0": "local:vm-1,size=60G", "virtio1": "fast:vm-1,size=1T", "sata0": "/dev/disk/by-id/physical,size=60G", "ide2": "local:iso/boot.iso,media=cdrom,size=2G", "ide0": "local:cloudinit,size=4M", "efidisk0": "local:efi,size=4M", "tpmstate0": "local:tpm,size=4M", "numa0": "cpus=0-3,hostnodes=0", "lock": "backup"})
if err != nil || len(h.Disks) != 2 || h.Disks[0].SizeGiB != 60 || h.Disks[1].SizeGiB != 1024 || len(h.Blockers) != 2 {
t.Fatal(h, err)
}
if _, err = ReadHardware(map[string]any{}); err == nil {
t.Fatal("missing digest accepted")
}
}
func TestHardwareMemoryOnlyDoesNotRequireCPUPermissions(t *testing.T) {
srv := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
_ = r.ParseForm()
if r.Method != "POST" || len(r.Form) != 2 || r.Form.Get("memory") != "4096" || r.Form.Get("digest") != "original" {
t.Error("unexpected mutation", r.Method, r.Form)
}
_ = json.NewEncoder(w).Encode(map[string]any{"data": "UPID:memory-only"})
}))
defer srv.Close()
c := Client{BaseURL: srv.URL, HTTP: srv.Client()}
_, err := c.ConfigureHardware(context.Background(), "node", 1, 2, 1, 4096, "original", map[string]any{"cores": 2, "sockets": 1, "memory": 2048, "vcpus": 2})
if err != nil {
t.Fatal(err)
}
}