tests: Add tests for CPU selection in qemu driver

This commit is contained in:
Jiri Denemark 2010-04-16 08:21:23 +02:00
parent 9237e9558a
commit 6fda7ea537
18 changed files with 303 additions and 0 deletions

64
tests/qemuxml2argvdata/qemu.sh Executable file
View File

@ -0,0 +1,64 @@
#! /bin/sh
candidates="/usr/bin/qemu-kvm
/usr/libexec/qemu-kvm
/usr/bin/qemu-system-x86_64
/usr/bin/qemu"
qemu=
for candidate in $candidates; do
if test -x $candidate; then
qemu=$candidate
break
fi
done
real_qemu()
{
if test x$qemu != x; then
exec $qemu "$@"
else
return 1
fi
}
faked_machine()
{
echo "pc"
}
faked_cpu()
{
cat <<EOF
x86 Opteron_G3
x86 Opteron_G2
x86 Opteron_G1
x86 Nehalem
x86 Penryn
x86 Conroe
x86 [n270]
x86 [athlon]
x86 [pentium3]
x86 [pentium2]
x86 [pentium]
x86 [486]
x86 [coreduo]
x86 [qemu32]
x86 [kvm64]
x86 [core2duo]
x86 [phenom]
x86 [qemu64]
x86 [host]
EOF
}
case $* in
"-M ?")
faked_machine
;;
"-cpu ?")
faked_cpu
;;
*)
real_qemu "$@"
;;
esac

View File

@ -0,0 +1 @@
LC_ALL=C PATH=/bin HOME=/home/test USER=test LOGNAME=test ./qemu.sh -S -M pc -cpu qemu64,-svm,-lm,-nx,-syscall,-clflush,-pse36,-mca -m 214 -smp 6 -nographic -monitor unix:/tmp/test-monitor,server,nowait -no-acpi -boot n -net none -serial none -parallel none -usb

View File

@ -0,0 +1,28 @@
<domain type='qemu'>
<name>QEMUGuest1</name>
<uuid>c7a5fdbd-edaf-9455-926a-d65c16db1809</uuid>
<memory>219200</memory>
<currentMemory>219200</currentMemory>
<vcpu>6</vcpu>
<os>
<type arch='x86_64' machine='pc'>hvm</type>
<boot dev='network'/>
</os>
<cpu match='exact'>
<model>qemu64</model>
<feature policy='disable' name='svm'/>
<feature policy='disable' name='lm'/>
<feature policy='disable' name='nx'/>
<feature policy='disable' name='syscall'/>
<feature policy='disable' name='clflush'/>
<feature policy='disable' name='pse36'/>
<feature policy='disable' name='mca'/>
</cpu>
<clock offset='utc'/>
<on_poweroff>destroy</on_poweroff>
<on_reboot>restart</on_reboot>
<on_crash>destroy</on_crash>
<devices>
<emulator>/./qemu.sh</emulator>
</devices>
</domain>

View File

@ -0,0 +1 @@
LC_ALL=C PATH=/bin HOME=/home/test USER=test LOGNAME=test ./qemu.sh -S -M pc -cpu core2duo,+lahf_lm,+3dnowext,+xtpr,+ds_cpl,+tm,+ht,+ds,-nx -m 214 -smp 6 -nographic -monitor unix:/tmp/test-monitor,server,nowait -no-acpi -boot n -net none -serial none -parallel none -usb

View File

@ -0,0 +1,35 @@
<domain type='qemu'>
<name>QEMUGuest1</name>
<uuid>c7a5fdbd-edaf-9455-926a-d65c16db1809</uuid>
<memory>219200</memory>
<currentMemory>219200</currentMemory>
<vcpu>6</vcpu>
<os>
<type arch='x86_64' machine='pc'>hvm</type>
<boot dev='network'/>
</os>
<cpu match='exact'>
<model>core2duo</model>
<feature name='lahf_lm' policy='require'/>
<feature name='xtpr' policy='require'/>
<feature name='cx16' policy='disable'/>
<feature name='tm2' policy='disable'/>
<feature name='ds_cpl' policy='require'/>
<feature name='pbe' policy='disable'/>
<feature name='tm' policy='optional'/>
<feature name='ht' policy='require'/>
<feature name='ss' policy='disable'/>
<feature name='ds' policy='require'/>
<feature name='nx' policy='disable'/>
<feature name='3dnowext' policy='force'/>
<feature name='sse4a' policy='optional'/>
<feature name='wdt' policy='forbid'/>
</cpu>
<clock offset='utc'/>
<on_poweroff>destroy</on_poweroff>
<on_reboot>restart</on_reboot>
<on_crash>destroy</on_crash>
<devices>
<emulator>/./qemu.sh</emulator>
</devices>
</domain>

View File

@ -0,0 +1 @@
LC_ALL=C PATH=/bin HOME=/home/test USER=test LOGNAME=test ./qemu.sh -S -M pc -cpu core2duo,+lahf_lm,+xtpr,+cx16,+tm2,+est,+vmx,+ds_cpl,+pbe,+tm,+ht,+ss,+acpi,+ds -m 214 -smp 6 -nographic -monitor unix:/tmp/test-monitor,server,nowait -no-acpi -boot n -net none -serial none -parallel none -usb

View File

@ -0,0 +1,21 @@
<domain type='qemu'>
<name>QEMUGuest1</name>
<uuid>c7a5fdbd-edaf-9455-926a-d65c16db1809</uuid>
<memory>219200</memory>
<currentMemory>219200</currentMemory>
<vcpu>6</vcpu>
<os>
<type arch='i686' machine='pc'>hvm</type>
<boot dev='network'/>
</os>
<cpu match='minimum'>
<model>486</model>
</cpu>
<clock offset='utc'/>
<on_poweroff>destroy</on_poweroff>
<on_reboot>restart</on_reboot>
<on_crash>destroy</on_crash>
<devices>
<emulator>/./qemu.sh</emulator>
</devices>
</domain>

View File

@ -0,0 +1 @@
LC_ALL=C PATH=/bin HOME=/home/test USER=test LOGNAME=test ./qemu.sh -S -M pc -cpu core2duo,+lahf_lm,+xtpr,+cx16,+tm2,+est,+vmx,+ds_cpl,+pbe,+tm,+ht,+ss,+acpi,+ds,-lm,-nx,-syscall -m 214 -smp 6 -nographic -monitor unix:/tmp/test-monitor,server,nowait -no-acpi -boot n -net none -serial none -parallel none -usb

View File

@ -0,0 +1,25 @@
<domain type='qemu'>
<name>QEMUGuest1</name>
<uuid>c7a5fdbd-edaf-9455-926a-d65c16db1809</uuid>
<memory>219200</memory>
<currentMemory>219200</currentMemory>
<vcpu>6</vcpu>
<os>
<type arch='x86_64' machine='pc'>hvm</type>
<boot dev='network'/>
</os>
<cpu match='minimum'>
<model>qemu64</model>
<feature policy='disable' name='svm'/>
<feature policy='disable' name='lm'/>
<feature policy='disable' name='nx'/>
<feature policy='disable' name='syscall'/>
</cpu>
<clock offset='utc'/>
<on_poweroff>destroy</on_poweroff>
<on_reboot>restart</on_reboot>
<on_crash>destroy</on_crash>
<devices>
<emulator>/./qemu.sh</emulator>
</devices>
</domain>

View File

@ -0,0 +1 @@
LC_ALL=C PATH=/bin HOME=/home/test USER=test LOGNAME=test ./qemu.sh -S -M pc -cpu core2duo,+lahf_lm,+3dnowext,+xtpr,+est,+vmx,+ds_cpl,+tm,+ht,+acpi,+ds,-nx -m 214 -smp 6 -nographic -monitor unix:/tmp/test-monitor,server,nowait -no-acpi -boot n -net none -serial none -parallel none -usb

View File

@ -0,0 +1,38 @@
<domain type='qemu'>
<name>QEMUGuest1</name>
<uuid>c7a5fdbd-edaf-9455-926a-d65c16db1809</uuid>
<memory>219200</memory>
<currentMemory>219200</currentMemory>
<vcpu>6</vcpu>
<os>
<type arch='x86_64' machine='pc'>hvm</type>
<boot dev='network'/>
</os>
<cpu match='strict'>
<model>core2duo</model>
<feature name='lahf_lm' policy='require'/>
<feature name='xtpr' policy='require'/>
<feature name='cx16' policy='disable'/>
<feature name='tm2' policy='disable'/>
<feature name='est' policy='optional'/>
<feature name='vmx' policy='optional'/>
<feature name='ds_cpl' policy='require'/>
<feature name='pbe' policy='disable'/>
<feature name='tm' policy='optional'/>
<feature name='ht' policy='require'/>
<feature name='ss' policy='disable'/>
<feature name='acpi' policy='optional'/>
<feature name='ds' policy='require'/>
<feature name='nx' policy='disable'/>
<feature name='3dnowext' policy='force'/>
<feature name='sse4a' policy='optional'/>
<feature name='wdt' policy='forbid'/>
</cpu>
<clock offset='utc'/>
<on_poweroff>destroy</on_poweroff>
<on_reboot>restart</on_reboot>
<on_crash>destroy</on_crash>
<devices>
<emulator>/./qemu.sh</emulator>
</devices>
</domain>

View File

@ -0,0 +1 @@
LC_ALL=C PATH=/bin HOME=/home/test USER=test LOGNAME=test ./qemu.sh -S -M pc -m 214 -smp 6,sockets=3,cores=2,threads=1 -nographic -monitor unix:/tmp/test-monitor,server,nowait -no-acpi -boot n -net none -serial none -parallel none -usb

View File

@ -0,0 +1,21 @@
<domain type='qemu'>
<name>QEMUGuest1</name>
<uuid>c7a5fdbd-edaf-9455-926a-d65c16db1809</uuid>
<memory>219200</memory>
<currentMemory>219200</currentMemory>
<vcpu>6</vcpu>
<os>
<type arch='x86_64' machine='pc'>hvm</type>
<boot dev='network'/>
</os>
<cpu>
<topology sockets="3" cores="2" threads="1"/>
</cpu>
<clock offset='utc'/>
<on_poweroff>destroy</on_poweroff>
<on_reboot>restart</on_reboot>
<on_crash>destroy</on_crash>
<devices>
<emulator>/./qemu.sh</emulator>
</devices>
</domain>

View File

@ -0,0 +1 @@
LC_ALL=C PATH=/bin HOME=/home/test USER=test LOGNAME=test ./qemu.sh -S -M pc -cpu core2duo -m 214 -smp 6,sockets=1,cores=2,threads=3 -nographic -monitor unix:/tmp/test-monitor,server,nowait -no-acpi -boot n -net none -serial none -parallel none -usb

View File

@ -0,0 +1,22 @@
<domain type='qemu'>
<name>QEMUGuest1</name>
<uuid>c7a5fdbd-edaf-9455-926a-d65c16db1809</uuid>
<memory>219200</memory>
<currentMemory>219200</currentMemory>
<vcpu>6</vcpu>
<os>
<type arch='x86_64' machine='pc'>hvm</type>
<boot dev='network'/>
</os>
<cpu match='exact'>
<model>core2duo</model>
<topology sockets="1" cores="2" threads="3"/>
</cpu>
<clock offset='utc'/>
<on_poweroff>destroy</on_poweroff>
<on_reboot>restart</on_reboot>
<on_crash>destroy</on_crash>
<devices>
<emulator>/./qemu.sh</emulator>
</devices>
</domain>

View File

@ -0,0 +1 @@
LC_ALL=C PATH=/bin HOME=/home/test USER=test LOGNAME=test ./qemu.sh -S -M pc -m 214 -smp 6 -nographic -monitor unix:/tmp/test-monitor,server,nowait -no-acpi -boot n -net none -serial none -parallel none -usb

View File

@ -0,0 +1,21 @@
<domain type='qemu'>
<name>QEMUGuest1</name>
<uuid>c7a5fdbd-edaf-9455-926a-d65c16db1809</uuid>
<memory>219200</memory>
<currentMemory>219200</currentMemory>
<vcpu>6</vcpu>
<os>
<type arch='x86_64' machine='pc'>hvm</type>
<boot dev='network'/>
</os>
<cpu>
<topology sockets="3" cores="2" threads="1"/>
</cpu>
<clock offset='utc'/>
<on_poweroff>destroy</on_poweroff>
<on_reboot>restart</on_reboot>
<on_crash>destroy</on_crash>
<devices>
<emulator>/./qemu.sh</emulator>
</devices>
</domain>

View File

@ -15,11 +15,13 @@
# include "testutils.h"
# include "qemu/qemu_conf.h"
# include "datatypes.h"
# include "cpu/cpu_map.h"
# include "testutilsqemu.h"
static char *progname;
static char *abs_srcdir;
static const char *abs_top_srcdir;
static struct qemud_driver driver;
# define MAX_FILE 4096
@ -221,6 +223,7 @@ mymain(int argc, char **argv)
{
int ret = 0;
char cwd[PATH_MAX];
char map[PATH_MAX];
progname = argv[0];
@ -233,6 +236,10 @@ mymain(int argc, char **argv)
if (!abs_srcdir)
abs_srcdir = getcwd(cwd, sizeof(cwd));
abs_top_srcdir = getenv("abs_top_srcdir");
if (!abs_top_srcdir)
abs_top_srcdir = "..";
if ((driver.caps = testQemuCapsInit()) == NULL)
return EXIT_FAILURE;
if ((driver.stateDir = strdup("/nowhere")) == NULL)
@ -247,6 +254,10 @@ mymain(int argc, char **argv)
if (!(driver.spicePassword = strdup("123456")))
return EXIT_FAILURE;
snprintf(map, PATH_MAX, "%s/src/cpu/cpu_map.xml", abs_top_srcdir);
if (cpuMapOverride(map) < 0)
return EXIT_FAILURE;
# define DO_TEST_FULL(name, extraFlags, migrateFrom, expectError) \
do { \
const struct testInfo info = { \
@ -452,6 +463,15 @@ mymain(int argc, char **argv)
DO_TEST("smp", QEMUD_CMD_FLAG_SMP_TOPOLOGY, false);
DO_TEST("cpu-topology1", QEMUD_CMD_FLAG_SMP_TOPOLOGY, false);
DO_TEST("cpu-topology2", QEMUD_CMD_FLAG_SMP_TOPOLOGY, false);
DO_TEST("cpu-topology3", 0, false);
DO_TEST("cpu-minimum1", 0, false);
DO_TEST("cpu-minimum2", 0, false);
DO_TEST("cpu-exact1", 0, false);
DO_TEST("cpu-exact2", 0, false);
DO_TEST("cpu-strict1", 0, false);
free(driver.stateDir);
virCapabilitiesFree(driver.caps);