Requires a mock CPU-model config, which is given as a raw string to also test parsing capabilities. Also tests defaulting behaviour.
Signed-off-by: Stefan Reiter <s.rei...@proxmox.com> --- test/cfg2cmd/custom-cpu-model-defaults.conf | 8 ++++++ .../custom-cpu-model-defaults.conf.cmd | 24 +++++++++++++++++ test/cfg2cmd/custom-cpu-model.conf | 8 ++++++ test/cfg2cmd/custom-cpu-model.conf.cmd | 27 +++++++++++++++++++ test/run_config2command_tests.pl | 23 ++++++++++++++++ 5 files changed, 90 insertions(+) create mode 100644 test/cfg2cmd/custom-cpu-model-defaults.conf create mode 100644 test/cfg2cmd/custom-cpu-model-defaults.conf.cmd create mode 100644 test/cfg2cmd/custom-cpu-model.conf create mode 100644 test/cfg2cmd/custom-cpu-model.conf.cmd diff --git a/test/cfg2cmd/custom-cpu-model-defaults.conf b/test/cfg2cmd/custom-cpu-model-defaults.conf new file mode 100644 index 0000000..cdef285 --- /dev/null +++ b/test/cfg2cmd/custom-cpu-model-defaults.conf @@ -0,0 +1,8 @@ +# TEST: Check if custom CPU models are resolving defaults correctly +cores: 3 +cpu: custom-alldefault +name: customcpu-defaults +numa: 0 +ostype: l26 +smbios1: uuid=2ea3f676-dfa5-11e9-ae82-c721e12f3fce +sockets: 1 diff --git a/test/cfg2cmd/custom-cpu-model-defaults.conf.cmd b/test/cfg2cmd/custom-cpu-model-defaults.conf.cmd new file mode 100644 index 0000000..ca8fcb0 --- /dev/null +++ b/test/cfg2cmd/custom-cpu-model-defaults.conf.cmd @@ -0,0 +1,24 @@ +/usr/bin/kvm \ + -id 8006 \ + -name customcpu-defaults \ + -chardev 'socket,id=qmp,path=/var/run/qemu-server/8006.qmp,server,nowait' \ + -mon 'chardev=qmp,mode=control' \ + -chardev 'socket,id=qmp-event,path=/var/run/qmeventd.sock,reconnect=5' \ + -mon 'chardev=qmp-event,mode=control' \ + -pidfile /var/run/qemu-server/8006.pid \ + -daemonize \ + -smbios 'type=1,uuid=2ea3f676-dfa5-11e9-ae82-c721e12f3fce' \ + -smp '3,sockets=1,cores=3,maxcpus=3' \ + -nodefaults \ + -boot 'menu=on,strict=on,reboot-timeout=1000,splash=/usr/share/qemu-server/bootsplash.jpg' \ + -vnc unix:/var/run/qemu-server/8006.vnc,password \ + -cpu kvm64,enforce,+kvm_pv_eoi,+kvm_pv_unhalt,+lahf_lm,+sep \ + -m 512 \ + -device 'pci-bridge,id=pci.1,chassis_nr=1,bus=pci.0,addr=0x1e' \ + -device 'pci-bridge,id=pci.2,chassis_nr=2,bus=pci.0,addr=0x1f' \ + -device 'piix3-usb-uhci,id=uhci,bus=pci.0,addr=0x1.0x2' \ + -device 'usb-tablet,id=tablet,bus=uhci.0,port=1' \ + -device 'VGA,id=vga,bus=pci.0,addr=0x2' \ + -device 'virtio-balloon-pci,id=balloon0,bus=pci.0,addr=0x3' \ + -iscsi 'initiator-name=iqn.1993-08.org.debian:01:aabbccddeeff' \ + -machine 'type=pc+pve0' diff --git a/test/cfg2cmd/custom-cpu-model.conf b/test/cfg2cmd/custom-cpu-model.conf new file mode 100644 index 0000000..cc7c60e --- /dev/null +++ b/test/cfg2cmd/custom-cpu-model.conf @@ -0,0 +1,8 @@ +# TEST: Check if custom CPU models are resolved correctly +cores: 3 +cpu: custom-qemu64,flags=+virt-ssbd,host-phys-bits=true +name: customcpu +numa: 0 +ostype: win10 +smbios1: uuid=2ea3f676-dfa5-11e9-ae82-c721e12f3fcf +sockets: 1 diff --git a/test/cfg2cmd/custom-cpu-model.conf.cmd b/test/cfg2cmd/custom-cpu-model.conf.cmd new file mode 100644 index 0000000..60b4584 --- /dev/null +++ b/test/cfg2cmd/custom-cpu-model.conf.cmd @@ -0,0 +1,27 @@ +/usr/bin/kvm \ + -id 8006 \ + -name customcpu \ + -chardev 'socket,id=qmp,path=/var/run/qemu-server/8006.qmp,server,nowait' \ + -mon 'chardev=qmp,mode=control' \ + -chardev 'socket,id=qmp-event,path=/var/run/qmeventd.sock,reconnect=5' \ + -mon 'chardev=qmp-event,mode=control' \ + -pidfile /var/run/qemu-server/8006.pid \ + -daemonize \ + -smbios 'type=1,uuid=2ea3f676-dfa5-11e9-ae82-c721e12f3fcf' \ + -smp '3,sockets=1,cores=3,maxcpus=3' \ + -nodefaults \ + -boot 'menu=on,strict=on,reboot-timeout=1000,splash=/usr/share/qemu-server/bootsplash.jpg' \ + -vnc unix:/var/run/qemu-server/8006.vnc,password \ + -no-hpet \ + -cpu 'athlon,+aes,+avx,enforce,hv_ipi,hv_relaxed,hv_reset,hv_runtime,hv_spinlocks=0x1fff,hv_stimer,hv_synic,hv_time,hv_vapic,hv_vendor_id=testvend,hv_vpindex,+kvm_pv_eoi,-kvm_pv_unhalt,vendor=AuthenticAMD,+virt-ssbd,host-phys-bits=true' \ + -m 512 \ + -device 'pci-bridge,id=pci.1,chassis_nr=1,bus=pci.0,addr=0x1e' \ + -device 'pci-bridge,id=pci.2,chassis_nr=2,bus=pci.0,addr=0x1f' \ + -device 'piix3-usb-uhci,id=uhci,bus=pci.0,addr=0x1.0x2' \ + -device 'usb-tablet,id=tablet,bus=uhci.0,port=1' \ + -device 'VGA,id=vga,bus=pci.0,addr=0x2' \ + -device 'virtio-balloon-pci,id=balloon0,bus=pci.0,addr=0x3' \ + -iscsi 'initiator-name=iqn.1993-08.org.debian:01:aabbccddeeff' \ + -rtc 'driftfix=slew,base=localtime' \ + -machine 'type=pc+pve0' \ + -global 'kvm-pit.lost_tick_policy=discard' diff --git a/test/run_config2command_tests.pl b/test/run_config2command_tests.pl index c3e5092..3168176 100755 --- a/test/run_config2command_tests.pl +++ b/test/run_config2command_tests.pl @@ -17,6 +17,7 @@ use PVE::QemuConfig; use PVE::QemuServer; use PVE::QemuServer::Monitor; use PVE::QemuServer::Machine; +use PVE::QemuServer::CPUConfig; my $base_env = { storage_config => { @@ -184,6 +185,28 @@ $pve_common_tools->mock( }, ); +my $pve_cpuconfig; +$pve_cpuconfig = Test::MockModule->new('PVE::QemuServer::CPUConfig'); +$pve_cpuconfig->mock( + load_custom_model_conf => sub { + # mock custom CPU model config + return PVE::QemuServer::CPUConfig->parse_config("cpu-models.conf", +<<EOF + +# "qemu64" is also a default CPU, used here to test that this doesn't matter +cpu-model: qemu64 + reported-model athlon + flags +aes;+avx;-kvm_pv_unhalt + hv-vendor-id testvend + phys-bits 40 + +cpu-model: alldefault + +EOF + ) + }, +); + my $pve_common_inotify; $pve_common_inotify = Test::MockModule->new('PVE::INotify'); $pve_common_inotify->mock( -- 2.20.1 _______________________________________________ pve-devel mailing list pve-devel@pve.proxmox.com https://pve.proxmox.com/cgi-bin/mailman/listinfo/pve-devel