Add four tests of the XML -> argv handling for the PPC64 pseries machine.
The first is just a basic test of a bare bones machine.
The three others test various aspects of the spapr-vio address handling.
It seems that currently we can't include network devices, doing so leads
to a segfault because the network driverState is not initialised. Working
around that leads us to the problem that the 'default' network doesn't
exist. So for now just leave network devices out.
Signed-off-by: Michael Ellerman <michael(a)ellerman.id.au>
---
.../qemuxml2argv-pseries-basic.args | 1 +
.../qemuxml2argv-pseries-basic.xml | 17 ++++++++
.../qemuxml2argv-pseries-vio-address-clash.xml | 42 ++++++++++++++++++++
.../qemuxml2argv-pseries-vio-user-assigned.args | 1 +
.../qemuxml2argv-pseries-vio-user-assigned.xml | 42 ++++++++++++++++++++
.../qemuxml2argvdata/qemuxml2argv-pseries-vio.args | 1 +
.../qemuxml2argvdata/qemuxml2argv-pseries-vio.xml | 42 ++++++++++++++++++++
tests/qemuxml2argvtest.c | 9 ++++
8 files changed, 155 insertions(+), 0 deletions(-)
create mode 100644 tests/qemuxml2argvdata/qemuxml2argv-pseries-basic.args
create mode 100644 tests/qemuxml2argvdata/qemuxml2argv-pseries-basic.xml
create mode 100644 tests/qemuxml2argvdata/qemuxml2argv-pseries-vio-address-clash.args
create mode 100644 tests/qemuxml2argvdata/qemuxml2argv-pseries-vio-address-clash.xml
create mode 100644 tests/qemuxml2argvdata/qemuxml2argv-pseries-vio-user-assigned.args
create mode 100644 tests/qemuxml2argvdata/qemuxml2argv-pseries-vio-user-assigned.xml
create mode 100644 tests/qemuxml2argvdata/qemuxml2argv-pseries-vio.args
create mode 100644 tests/qemuxml2argvdata/qemuxml2argv-pseries-vio.xml
diff --git a/tests/qemuxml2argvdata/qemuxml2argv-pseries-basic.args
b/tests/qemuxml2argvdata/qemuxml2argv-pseries-basic.args
new file mode 100644
index 0000000..f9aec92
--- /dev/null
+++ b/tests/qemuxml2argvdata/qemuxml2argv-pseries-basic.args
@@ -0,0 +1 @@
+LC_ALL=C PATH=/bin HOME=/home/test USER=test LOGNAME=test /usr/bin/qemu-system-ppc64 -S
-M pseries -m 512 -smp 1 -nographic -nodefconfig -nodefaults -chardev
socket,id=charmonitor,path=/tmp/test-monitor,server,nowait -mon
chardev=charmonitor,id=monitor,mode=readline -no-acpi -boot c -chardev pty,id=charserial0
-device spapr-vty,chardev=charserial0,reg=0x30000000 -usb
diff --git a/tests/qemuxml2argvdata/qemuxml2argv-pseries-basic.xml
b/tests/qemuxml2argvdata/qemuxml2argv-pseries-basic.xml
new file mode 100644
index 0000000..1b164f9
--- /dev/null
+++ b/tests/qemuxml2argvdata/qemuxml2argv-pseries-basic.xml
@@ -0,0 +1,17 @@
+<domain type='qemu'>
+ <name>QEMUGuest1</name>
+ <uuid>1ccfd97d-5eb4-478a-bbe6-88d254c16db7</uuid>
+ <memory>524288</memory>
+ <vcpu>1</vcpu>
+ <os>
+ <type arch='ppc64' machine='pseries'>hvm</type>
+ </os>
+ <clock offset='utc'/>
+ <devices>
+ <emulator>/usr/bin/qemu-system-ppc64</emulator>
+ <console type='pty'>
+ <address type="spapr-vio"/>
+ </console>
+ <memballoon model="none"/>
+ </devices>
+</domain>
diff --git a/tests/qemuxml2argvdata/qemuxml2argv-pseries-vio-address-clash.args
b/tests/qemuxml2argvdata/qemuxml2argv-pseries-vio-address-clash.args
new file mode 100644
index 0000000..e69de29
diff --git a/tests/qemuxml2argvdata/qemuxml2argv-pseries-vio-address-clash.xml
b/tests/qemuxml2argvdata/qemuxml2argv-pseries-vio-address-clash.xml
new file mode 100644
index 0000000..4504f06
--- /dev/null
+++ b/tests/qemuxml2argvdata/qemuxml2argv-pseries-vio-address-clash.xml
@@ -0,0 +1,42 @@
+<domain type='qemu'>
+ <name>QEMUGuest1</name>
+ <uuid>2754dd7b-ac8a-4850-aec0-1f3fcd43235b</uuid>
+ <memory>524288</memory>
+ <vcpu>1</vcpu>
+ <os>
+ <type arch='ppc64' machine='pseries'>hvm</type>
+ </os>
+ <clock offset='utc'/>
+ <devices>
+ <emulator>/usr/bin/qemu-system-ppc64</emulator>
+ <console type='pty'>
+ <address type="spapr-vio"/>
+ </console>
+
+ <!-- Two serials, first is the console -->
+ <serial type="pty">
+ <address type="spapr-vio"/>
+ </serial>
+ <serial type="pty">
+ <address type="spapr-vio" reg="0x4000"/>
+ </serial>
+
+ <!-- One disk -->
+ <disk type="file" device="disk">
+ <driver name="qemu" type="raw"/>
+ <source file="/tmp/scsidisk.img"/>
+ <target dev="sda" bus="scsi"/>
+ <address type="drive" controller="1"/>
+ </disk>
+
+ <!-- Two SCSI controllers -->
+ <controller type="scsi" index="1">
+ <address type="spapr-vio"/>
+ </controller>
+ <controller type="scsi" index="0">
+ <address type="spapr-vio" reg="0x4000"/>
+ </controller>
+
+ <memballoon model="none"/>
+ </devices>
+</domain>
diff --git a/tests/qemuxml2argvdata/qemuxml2argv-pseries-vio-user-assigned.args
b/tests/qemuxml2argvdata/qemuxml2argv-pseries-vio-user-assigned.args
new file mode 100644
index 0000000..e939e1b
--- /dev/null
+++ b/tests/qemuxml2argvdata/qemuxml2argv-pseries-vio-user-assigned.args
@@ -0,0 +1 @@
+LC_ALL=C PATH=/bin HOME=/home/test USER=test LOGNAME=test /usr/bin/qemu-system-ppc64 -S
-M pseries -m 512 -smp 1 -nographic -nodefconfig -nodefaults -chardev
socket,id=charmonitor,path=/tmp/test-monitor,server,nowait -mon
chardev=charmonitor,id=monitor,mode=readline -no-acpi -boot c -device
spapr-vscsi,id=scsi0,reg=0x2000 -device spapr-vscsi,id=scsi1,reg=0x30000000 -drive
file=/tmp/scsidisk.img,if=none,id=drive-scsi1-0-0 -device
scsi-disk,bus=scsi1.0,scsi-id=0,drive=drive-scsi1-0-0,id=scsi1-0-0 -chardev
pty,id=charserial0 -device spapr-vty,chardev=charserial0,reg=0x20000000 -chardev
pty,id=charserial1 -device spapr-vty,chardev=charserial1,reg=0x30001000 -usb
diff --git a/tests/qemuxml2argvdata/qemuxml2argv-pseries-vio-user-assigned.xml
b/tests/qemuxml2argvdata/qemuxml2argv-pseries-vio-user-assigned.xml
new file mode 100644
index 0000000..cf65478
--- /dev/null
+++ b/tests/qemuxml2argvdata/qemuxml2argv-pseries-vio-user-assigned.xml
@@ -0,0 +1,42 @@
+<domain type='qemu'>
+ <name>QEMUGuest1</name>
+ <uuid>2754dd7b-ac8a-4850-aec0-1f3fcd43235b</uuid>
+ <memory>524288</memory>
+ <vcpu>1</vcpu>
+ <os>
+ <type arch='ppc64' machine='pseries'>hvm</type>
+ </os>
+ <clock offset='utc'/>
+ <devices>
+ <emulator>/usr/bin/qemu-system-ppc64</emulator>
+ <console type='pty'>
+ <address type="spapr-vio"/>
+ </console>
+
+ <!-- Two serials, first is the console -->
+ <serial type="pty">
+ <address type="spapr-vio" reg="0x20000000"/>
+ </serial>
+ <serial type="pty">
+ <address type="spapr-vio"/>
+ </serial>
+
+ <!-- One disk -->
+ <disk type="file" device="disk">
+ <driver name="qemu" type="raw"/>
+ <source file="/tmp/scsidisk.img"/>
+ <target dev="sda" bus="scsi"/>
+ <address type="drive" controller="1"/>
+ </disk>
+
+ <!-- Two SCSI controllers -->
+ <controller type="scsi" index="1">
+ <address type="spapr-vio" reg="0x30000000"/>
+ </controller>
+ <controller type="scsi" index="0">
+ <address type="spapr-vio"/>
+ </controller>
+
+ <memballoon model="none"/>
+ </devices>
+</domain>
diff --git a/tests/qemuxml2argvdata/qemuxml2argv-pseries-vio.args
b/tests/qemuxml2argvdata/qemuxml2argv-pseries-vio.args
new file mode 100644
index 0000000..5fe0c88
--- /dev/null
+++ b/tests/qemuxml2argvdata/qemuxml2argv-pseries-vio.args
@@ -0,0 +1 @@
+LC_ALL=C PATH=/bin HOME=/home/test USER=test LOGNAME=test /usr/bin/qemu-system-ppc64 -S
-M pseries -m 512 -smp 1 -nographic -nodefconfig -nodefaults -chardev
socket,id=charmonitor,path=/tmp/test-monitor,server,nowait -mon
chardev=charmonitor,id=monitor,mode=readline -no-acpi -boot c -device
spapr-vscsi,id=scsi0,reg=0x2000 -device spapr-vscsi,id=scsi1,reg=0x3000 -drive
file=/tmp/scsidisk.img,if=none,id=drive-scsi1-0-0 -device
scsi-disk,bus=scsi1.0,scsi-id=0,drive=drive-scsi1-0-0,id=scsi1-0-0 -chardev
pty,id=charserial0 -device spapr-vty,chardev=charserial0,reg=0x30000000 -chardev
pty,id=charserial1 -device spapr-vty,chardev=charserial1,reg=0x30001000 -usb
diff --git a/tests/qemuxml2argvdata/qemuxml2argv-pseries-vio.xml
b/tests/qemuxml2argvdata/qemuxml2argv-pseries-vio.xml
new file mode 100644
index 0000000..68f4216
--- /dev/null
+++ b/tests/qemuxml2argvdata/qemuxml2argv-pseries-vio.xml
@@ -0,0 +1,42 @@
+<domain type='qemu'>
+ <name>QEMUGuest1</name>
+ <uuid>2754dd7b-ac8a-4850-aec0-1f3fcd43235b</uuid>
+ <memory>524288</memory>
+ <vcpu>1</vcpu>
+ <os>
+ <type arch='ppc64' machine='pseries'>hvm</type>
+ </os>
+ <clock offset='utc'/>
+ <devices>
+ <emulator>/usr/bin/qemu-system-ppc64</emulator>
+ <console type='pty'>
+ <address type="spapr-vio"/>
+ </console>
+
+ <!-- Two serials, first is the console -->
+ <serial type="pty">
+ <address type="spapr-vio"/>
+ </serial>
+ <serial type="pty">
+ <address type="spapr-vio"/>
+ </serial>
+
+ <!-- One disk -->
+ <disk type="file" device="disk">
+ <driver name="qemu" type="raw"/>
+ <source file="/tmp/scsidisk.img"/>
+ <target dev="sda" bus="scsi"/>
+ <address type="drive" controller="1"/>
+ </disk>
+
+ <!-- Two SCSI controllers -->
+ <controller type="scsi" index="1">
+ <address type="spapr-vio"/>
+ </controller>
+ <controller type="scsi" index="0">
+ <address type="spapr-vio"/>
+ </controller>
+
+ <memballoon model="none"/>
+ </devices>
+</domain>
diff --git a/tests/qemuxml2argvtest.c b/tests/qemuxml2argvtest.c
index 67af27a..87c05f3 100644
--- a/tests/qemuxml2argvtest.c
+++ b/tests/qemuxml2argvtest.c
@@ -684,6 +684,15 @@ mymain(void)
DO_TEST("seclabel-static", false, QEMU_CAPS_NAME);
DO_TEST("seclabel-static-relabel", false, QEMU_CAPS_NAME);
+ DO_TEST("pseries-basic", false,
+ QEMU_CAPS_CHARDEV, QEMU_CAPS_DEVICE, QEMU_CAPS_NODEFCONFIG);
+ DO_TEST("pseries-vio", false, QEMU_CAPS_DRIVE,
+ QEMU_CAPS_CHARDEV, QEMU_CAPS_DEVICE, QEMU_CAPS_NODEFCONFIG);
+ DO_TEST("pseries-vio-user-assigned", false, QEMU_CAPS_DRIVE,
+ QEMU_CAPS_CHARDEV, QEMU_CAPS_DEVICE, QEMU_CAPS_NODEFCONFIG);
+ DO_TEST("pseries-vio-address-clash", true, QEMU_CAPS_DRIVE,
+ QEMU_CAPS_CHARDEV, QEMU_CAPS_DEVICE, QEMU_CAPS_NODEFCONFIG);
+
free(driver.stateDir);
virCapabilitiesFree(driver.caps);
free(map);
--
1.7.7.3