Requires a mock CPU-model config, which is given as a raw string to also test parsing capabilities.
Signed-off-by: Stefan Reiter <s.rei...@proxmox.com> --- v5: * include .cmd file test/cfg2cmd/custom-cpu-model.conf | 8 ++++++++ test/cfg2cmd/custom-cpu-model.conf.cmd | 27 ++++++++++++++++++++++++++ test/run_config2command_tests.pl | 21 ++++++++++++++++++++ 3 files changed, 56 insertions(+) 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.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..eb7fd27 --- /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.2,chassis_nr=2,bus=pci.0,addr=0x1f' \ + -device 'pci-bridge,id=pci.1,chassis_nr=1,bus=pci.0,addr=0x1e' \ + -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' \ + -global 'kvm-pit.lost_tick_policy=discard' diff --git a/test/run_config2command_tests.pl b/test/run_config2command_tests.pl index 6f2fe28..c734133 100755 --- a/test/run_config2command_tests.pl +++ b/test/run_config2command_tests.pl @@ -11,6 +11,7 @@ use Test::MockModule; use PVE::Tools qw(file_get_contents file_set_contents run_command); use PVE::QemuConfig; use PVE::QemuServer; +use PVE::QemuServer::CPUConfig; my $base_env = { storage_config => { @@ -146,6 +147,26 @@ $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 + +EOF + ) + }, +); + sub diff($$) { my ($a, $b) = @_; return if $a eq $b; -- 2.20.1 _______________________________________________ pve-devel mailing list pve-devel@pve.proxmox.com https://pve.proxmox.com/cgi-bin/mailman/listinfo/pve-devel