[PATCH 06/33] tests: Add minimal cases for many architectures

Andrea Bolognani posted 33 patches 8 months, 2 weeks ago
There is a newer version of this series
[PATCH 06/33] tests: Add minimal cases for many architectures
Posted by Andrea Bolognani 8 months, 2 weeks ago
We currently have a single test case called "minimal", which
suffers from two big flaws:

  * it's limited to the x86_64/pc machine type;
  * it explicitly enables a number of devices.

Add several test cases, one for each of the architectures and
machine types that we have good support for.

Unlike the existing one, they're *really* minimal: no devices
or controllers at all are present in the input XML. So the new
test cases demonstrate exactly what devices and controller
libvirt will decide to add automatically.

Note that we use the ABI_UPDATE variant of the test macros
because, in some cases, the behavior for new guests is not the
same as that for existing ones due to backward compatibility
concerns, and we specifically care about the former.

Signed-off-by: Andrea Bolognani <abologna@redhat.com>
---
 .../aarch64-virt-minimal.aarch64-latest.args  | 31 ++++++++++++
 .../aarch64-virt-minimal.aarch64-latest.xml   | 26 ++++++++++
 .../qemuxmlconfdata/aarch64-virt-minimal.xml  | 12 +++++
 .../ppc64-pseries-minimal.ppc64-latest.args   | 33 ++++++++++++
 .../ppc64-pseries-minimal.ppc64-latest.xml    | 33 ++++++++++++
 .../qemuxmlconfdata/ppc64-pseries-minimal.xml | 12 +++++
 .../riscv64-virt-minimal.riscv64-latest.args  | 33 ++++++++++++
 .../riscv64-virt-minimal.riscv64-latest.xml   | 33 ++++++++++++
 .../qemuxmlconfdata/riscv64-virt-minimal.xml  | 12 +++++
 .../s390x-ccw-minimal.s390x-latest.args       | 32 ++++++++++++
 .../s390x-ccw-minimal.s390x-latest.xml        | 27 ++++++++++
 tests/qemuxmlconfdata/s390x-ccw-minimal.xml   | 12 +++++
 .../x86_64-pc-minimal.x86_64-latest.args      | 33 ++++++++++++
 .../x86_64-pc-minimal.x86_64-latest.xml       | 31 ++++++++++++
 tests/qemuxmlconfdata/x86_64-pc-minimal.xml   | 12 +++++
 .../x86_64-q35-minimal.x86_64-latest.args     | 38 ++++++++++++++
 .../x86_64-q35-minimal.x86_64-latest.xml      | 50 +++++++++++++++++++
 tests/qemuxmlconfdata/x86_64-q35-minimal.xml  | 12 +++++
 tests/qemuxmlconftest.c                       |  7 +++
 19 files changed, 479 insertions(+)
 create mode 100644 tests/qemuxmlconfdata/aarch64-virt-minimal.aarch64-latest.args
 create mode 100644 tests/qemuxmlconfdata/aarch64-virt-minimal.aarch64-latest.xml
 create mode 100644 tests/qemuxmlconfdata/aarch64-virt-minimal.xml
 create mode 100644 tests/qemuxmlconfdata/ppc64-pseries-minimal.ppc64-latest.args
 create mode 100644 tests/qemuxmlconfdata/ppc64-pseries-minimal.ppc64-latest.xml
 create mode 100644 tests/qemuxmlconfdata/ppc64-pseries-minimal.xml
 create mode 100644 tests/qemuxmlconfdata/riscv64-virt-minimal.riscv64-latest.args
 create mode 100644 tests/qemuxmlconfdata/riscv64-virt-minimal.riscv64-latest.xml
 create mode 100644 tests/qemuxmlconfdata/riscv64-virt-minimal.xml
 create mode 100644 tests/qemuxmlconfdata/s390x-ccw-minimal.s390x-latest.args
 create mode 100644 tests/qemuxmlconfdata/s390x-ccw-minimal.s390x-latest.xml
 create mode 100644 tests/qemuxmlconfdata/s390x-ccw-minimal.xml
 create mode 100644 tests/qemuxmlconfdata/x86_64-pc-minimal.x86_64-latest.args
 create mode 100644 tests/qemuxmlconfdata/x86_64-pc-minimal.x86_64-latest.xml
 create mode 100644 tests/qemuxmlconfdata/x86_64-pc-minimal.xml
 create mode 100644 tests/qemuxmlconfdata/x86_64-q35-minimal.x86_64-latest.args
 create mode 100644 tests/qemuxmlconfdata/x86_64-q35-minimal.x86_64-latest.xml
 create mode 100644 tests/qemuxmlconfdata/x86_64-q35-minimal.xml

diff --git a/tests/qemuxmlconfdata/aarch64-virt-minimal.aarch64-latest.args b/tests/qemuxmlconfdata/aarch64-virt-minimal.aarch64-latest.args
new file mode 100644
index 0000000000..51a196e03e
--- /dev/null
+++ b/tests/qemuxmlconfdata/aarch64-virt-minimal.aarch64-latest.args
@@ -0,0 +1,31 @@
+LC_ALL=C \
+PATH=/bin \
+HOME=/var/lib/libvirt/qemu/domain--1-guest \
+USER=test \
+LOGNAME=test \
+XDG_DATA_HOME=/var/lib/libvirt/qemu/domain--1-guest/.local/share \
+XDG_CACHE_HOME=/var/lib/libvirt/qemu/domain--1-guest/.cache \
+XDG_CONFIG_HOME=/var/lib/libvirt/qemu/domain--1-guest/.config \
+/usr/bin/qemu-system-aarch64 \
+-name guest=guest,debug-threads=on \
+-S \
+-object '{"qom-type":"secret","id":"masterKey0","format":"raw","file":"/var/lib/libvirt/qemu/domain--1-guest/master-key.aes"}' \
+-machine virt,usb=off,gic-version=2,dump-guest-core=off,memory-backend=mach-virt.ram,acpi=off \
+-accel tcg \
+-cpu cortex-a15 \
+-m size=4194304k \
+-object '{"qom-type":"memory-backend-ram","id":"mach-virt.ram","size":4294967296}' \
+-overcommit mem-lock=off \
+-smp 4,sockets=4,cores=1,threads=1 \
+-uuid 1ccfd97d-5eb4-478a-bbe6-88d254c16db7 \
+-display none \
+-no-user-config \
+-nodefaults \
+-chardev socket,id=charmonitor,fd=1729,server=on,wait=off \
+-mon chardev=charmonitor,id=monitor,mode=control \
+-rtc base=utc \
+-no-shutdown \
+-boot strict=on \
+-audiodev '{"id":"audio1","driver":"none"}' \
+-sandbox on,obsolete=deny,elevateprivileges=deny,spawn=deny,resourcecontrol=deny \
+-msg timestamp=on
diff --git a/tests/qemuxmlconfdata/aarch64-virt-minimal.aarch64-latest.xml b/tests/qemuxmlconfdata/aarch64-virt-minimal.aarch64-latest.xml
new file mode 100644
index 0000000000..25b415d390
--- /dev/null
+++ b/tests/qemuxmlconfdata/aarch64-virt-minimal.aarch64-latest.xml
@@ -0,0 +1,26 @@
+<domain type='qemu'>
+  <name>guest</name>
+  <uuid>1ccfd97d-5eb4-478a-bbe6-88d254c16db7</uuid>
+  <memory unit='KiB'>4194304</memory>
+  <currentMemory unit='KiB'>4194304</currentMemory>
+  <vcpu placement='static'>4</vcpu>
+  <os>
+    <type arch='aarch64' machine='virt'>hvm</type>
+    <boot dev='hd'/>
+  </os>
+  <features>
+    <gic version='2'/>
+  </features>
+  <cpu mode='custom' match='exact' check='none'>
+    <model fallback='forbid'>cortex-a15</model>
+  </cpu>
+  <clock offset='utc'/>
+  <on_poweroff>destroy</on_poweroff>
+  <on_reboot>restart</on_reboot>
+  <on_crash>destroy</on_crash>
+  <devices>
+    <emulator>/usr/bin/qemu-system-aarch64</emulator>
+    <controller type='pci' index='0' model='pcie-root'/>
+    <audio id='1' type='none'/>
+  </devices>
+</domain>
diff --git a/tests/qemuxmlconfdata/aarch64-virt-minimal.xml b/tests/qemuxmlconfdata/aarch64-virt-minimal.xml
new file mode 100644
index 0000000000..5b44c14131
--- /dev/null
+++ b/tests/qemuxmlconfdata/aarch64-virt-minimal.xml
@@ -0,0 +1,12 @@
+<domain type='qemu'>
+  <name>guest</name>
+  <uuid>1ccfd97d-5eb4-478a-bbe6-88d254c16db7</uuid>
+  <memory>4194304</memory>
+  <vcpu>4</vcpu>
+  <os>
+    <type arch='aarch64' machine='virt'>hvm</type>
+  </os>
+  <devices>
+    <emulator>/usr/bin/qemu-system-aarch64</emulator>
+  </devices>
+</domain>
diff --git a/tests/qemuxmlconfdata/ppc64-pseries-minimal.ppc64-latest.args b/tests/qemuxmlconfdata/ppc64-pseries-minimal.ppc64-latest.args
new file mode 100644
index 0000000000..5039957a47
--- /dev/null
+++ b/tests/qemuxmlconfdata/ppc64-pseries-minimal.ppc64-latest.args
@@ -0,0 +1,33 @@
+LC_ALL=C \
+PATH=/bin \
+HOME=/var/lib/libvirt/qemu/domain--1-guest \
+USER=test \
+LOGNAME=test \
+XDG_DATA_HOME=/var/lib/libvirt/qemu/domain--1-guest/.local/share \
+XDG_CACHE_HOME=/var/lib/libvirt/qemu/domain--1-guest/.cache \
+XDG_CONFIG_HOME=/var/lib/libvirt/qemu/domain--1-guest/.config \
+/usr/bin/qemu-system-ppc64 \
+-name guest=guest,debug-threads=on \
+-S \
+-object '{"qom-type":"secret","id":"masterKey0","format":"raw","file":"/var/lib/libvirt/qemu/domain--1-guest/master-key.aes"}' \
+-machine pseries,usb=off,dump-guest-core=off,memory-backend=ppc_spapr.ram \
+-accel tcg \
+-cpu POWER9 \
+-m size=4194304k \
+-object '{"qom-type":"memory-backend-ram","id":"ppc_spapr.ram","size":4294967296}' \
+-overcommit mem-lock=off \
+-smp 4,sockets=4,cores=1,threads=1 \
+-uuid 1ccfd97d-5eb4-478a-bbe6-88d254c16db7 \
+-display none \
+-no-user-config \
+-nodefaults \
+-chardev socket,id=charmonitor,fd=1729,server=on,wait=off \
+-mon chardev=charmonitor,id=monitor,mode=control \
+-rtc base=utc \
+-no-shutdown \
+-boot strict=on \
+-device '{"driver":"qemu-xhci","id":"usb","bus":"pci.0","addr":"0x1"}' \
+-audiodev '{"id":"audio1","driver":"none"}' \
+-device '{"driver":"virtio-balloon-pci","id":"balloon0","bus":"pci.0","addr":"0x2"}' \
+-sandbox on,obsolete=deny,elevateprivileges=deny,spawn=deny,resourcecontrol=deny \
+-msg timestamp=on
diff --git a/tests/qemuxmlconfdata/ppc64-pseries-minimal.ppc64-latest.xml b/tests/qemuxmlconfdata/ppc64-pseries-minimal.ppc64-latest.xml
new file mode 100644
index 0000000000..bdb6b1e03d
--- /dev/null
+++ b/tests/qemuxmlconfdata/ppc64-pseries-minimal.ppc64-latest.xml
@@ -0,0 +1,33 @@
+<domain type='qemu'>
+  <name>guest</name>
+  <uuid>1ccfd97d-5eb4-478a-bbe6-88d254c16db7</uuid>
+  <memory unit='KiB'>4194304</memory>
+  <currentMemory unit='KiB'>4194304</currentMemory>
+  <vcpu placement='static'>4</vcpu>
+  <os>
+    <type arch='ppc64' machine='pseries'>hvm</type>
+    <boot dev='hd'/>
+  </os>
+  <cpu mode='custom' match='exact' check='none'>
+    <model fallback='forbid'>POWER9</model>
+  </cpu>
+  <clock offset='utc'/>
+  <on_poweroff>destroy</on_poweroff>
+  <on_reboot>restart</on_reboot>
+  <on_crash>destroy</on_crash>
+  <devices>
+    <emulator>/usr/bin/qemu-system-ppc64</emulator>
+    <controller type='usb' index='0' model='qemu-xhci'>
+      <address type='pci' domain='0x0000' bus='0x00' slot='0x01' function='0x0'/>
+    </controller>
+    <controller type='pci' index='0' model='pci-root'>
+      <model name='spapr-pci-host-bridge'/>
+      <target index='0'/>
+    </controller>
+    <audio id='1' type='none'/>
+    <memballoon model='virtio'>
+      <address type='pci' domain='0x0000' bus='0x00' slot='0x02' function='0x0'/>
+    </memballoon>
+    <panic model='pseries'/>
+  </devices>
+</domain>
diff --git a/tests/qemuxmlconfdata/ppc64-pseries-minimal.xml b/tests/qemuxmlconfdata/ppc64-pseries-minimal.xml
new file mode 100644
index 0000000000..125e651519
--- /dev/null
+++ b/tests/qemuxmlconfdata/ppc64-pseries-minimal.xml
@@ -0,0 +1,12 @@
+<domain type='qemu'>
+  <name>guest</name>
+  <uuid>1ccfd97d-5eb4-478a-bbe6-88d254c16db7</uuid>
+  <memory>4194304</memory>
+  <vcpu>4</vcpu>
+  <os>
+    <type arch='ppc64' machine='pseries'>hvm</type>
+  </os>
+  <devices>
+    <emulator>/usr/bin/qemu-system-ppc64</emulator>
+  </devices>
+</domain>
diff --git a/tests/qemuxmlconfdata/riscv64-virt-minimal.riscv64-latest.args b/tests/qemuxmlconfdata/riscv64-virt-minimal.riscv64-latest.args
new file mode 100644
index 0000000000..fcb80b009e
--- /dev/null
+++ b/tests/qemuxmlconfdata/riscv64-virt-minimal.riscv64-latest.args
@@ -0,0 +1,33 @@
+LC_ALL=C \
+PATH=/bin \
+HOME=/var/lib/libvirt/qemu/domain--1-guest \
+USER=test \
+LOGNAME=test \
+XDG_DATA_HOME=/var/lib/libvirt/qemu/domain--1-guest/.local/share \
+XDG_CACHE_HOME=/var/lib/libvirt/qemu/domain--1-guest/.cache \
+XDG_CONFIG_HOME=/var/lib/libvirt/qemu/domain--1-guest/.config \
+/usr/bin/qemu-system-riscv64 \
+-name guest=guest,debug-threads=on \
+-S \
+-object '{"qom-type":"secret","id":"masterKey0","format":"raw","file":"/var/lib/libvirt/qemu/domain--1-guest/master-key.aes"}' \
+-machine virt,usb=off,dump-guest-core=off,memory-backend=riscv_virt_board.ram \
+-accel tcg \
+-m size=4194304k \
+-object '{"qom-type":"memory-backend-ram","id":"riscv_virt_board.ram","size":4294967296}' \
+-overcommit mem-lock=off \
+-smp 4,sockets=4,cores=1,threads=1 \
+-uuid 1ccfd97d-5eb4-478a-bbe6-88d254c16db7 \
+-display none \
+-no-user-config \
+-nodefaults \
+-chardev socket,id=charmonitor,fd=1729,server=on,wait=off \
+-mon chardev=charmonitor,id=monitor,mode=control \
+-rtc base=utc \
+-no-shutdown \
+-boot strict=on \
+-device '{"driver":"pcie-root-port","port":8,"chassis":1,"id":"pci.1","bus":"pcie.0","multifunction":true,"addr":"0x1"}' \
+-device '{"driver":"pcie-root-port","port":9,"chassis":2,"id":"pci.2","bus":"pcie.0","addr":"0x1.0x1"}' \
+-audiodev '{"id":"audio1","driver":"none"}' \
+-device '{"driver":"virtio-balloon-pci","id":"balloon0","bus":"pci.1","addr":"0x0"}' \
+-sandbox on,obsolete=deny,elevateprivileges=deny,spawn=deny,resourcecontrol=deny \
+-msg timestamp=on
diff --git a/tests/qemuxmlconfdata/riscv64-virt-minimal.riscv64-latest.xml b/tests/qemuxmlconfdata/riscv64-virt-minimal.riscv64-latest.xml
new file mode 100644
index 0000000000..54363bb426
--- /dev/null
+++ b/tests/qemuxmlconfdata/riscv64-virt-minimal.riscv64-latest.xml
@@ -0,0 +1,33 @@
+<domain type='qemu'>
+  <name>guest</name>
+  <uuid>1ccfd97d-5eb4-478a-bbe6-88d254c16db7</uuid>
+  <memory unit='KiB'>4194304</memory>
+  <currentMemory unit='KiB'>4194304</currentMemory>
+  <vcpu placement='static'>4</vcpu>
+  <os>
+    <type arch='riscv64' machine='virt'>hvm</type>
+    <boot dev='hd'/>
+  </os>
+  <clock offset='utc'/>
+  <on_poweroff>destroy</on_poweroff>
+  <on_reboot>restart</on_reboot>
+  <on_crash>destroy</on_crash>
+  <devices>
+    <emulator>/usr/bin/qemu-system-riscv64</emulator>
+    <controller type='pci' index='0' model='pcie-root'/>
+    <controller type='pci' index='1' model='pcie-root-port'>
+      <model name='pcie-root-port'/>
+      <target chassis='1' port='0x8'/>
+      <address type='pci' domain='0x0000' bus='0x00' slot='0x01' function='0x0' multifunction='on'/>
+    </controller>
+    <controller type='pci' index='2' model='pcie-root-port'>
+      <model name='pcie-root-port'/>
+      <target chassis='2' port='0x9'/>
+      <address type='pci' domain='0x0000' bus='0x00' slot='0x01' function='0x1'/>
+    </controller>
+    <audio id='1' type='none'/>
+    <memballoon model='virtio'>
+      <address type='pci' domain='0x0000' bus='0x01' slot='0x00' function='0x0'/>
+    </memballoon>
+  </devices>
+</domain>
diff --git a/tests/qemuxmlconfdata/riscv64-virt-minimal.xml b/tests/qemuxmlconfdata/riscv64-virt-minimal.xml
new file mode 100644
index 0000000000..fb67b333c1
--- /dev/null
+++ b/tests/qemuxmlconfdata/riscv64-virt-minimal.xml
@@ -0,0 +1,12 @@
+<domain type='qemu'>
+  <name>guest</name>
+  <uuid>1ccfd97d-5eb4-478a-bbe6-88d254c16db7</uuid>
+  <memory>4194304</memory>
+  <vcpu>4</vcpu>
+  <os>
+    <type arch='riscv64' machine='virt'>hvm</type>
+  </os>
+  <devices>
+    <emulator>/usr/bin/qemu-system-riscv64</emulator>
+  </devices>
+</domain>
diff --git a/tests/qemuxmlconfdata/s390x-ccw-minimal.s390x-latest.args b/tests/qemuxmlconfdata/s390x-ccw-minimal.s390x-latest.args
new file mode 100644
index 0000000000..84098e580e
--- /dev/null
+++ b/tests/qemuxmlconfdata/s390x-ccw-minimal.s390x-latest.args
@@ -0,0 +1,32 @@
+LC_ALL=C \
+PATH=/bin \
+HOME=/var/lib/libvirt/qemu/domain--1-guest \
+USER=test \
+LOGNAME=test \
+XDG_DATA_HOME=/var/lib/libvirt/qemu/domain--1-guest/.local/share \
+XDG_CACHE_HOME=/var/lib/libvirt/qemu/domain--1-guest/.cache \
+XDG_CONFIG_HOME=/var/lib/libvirt/qemu/domain--1-guest/.config \
+/usr/bin/qemu-system-s390x \
+-name guest=guest,debug-threads=on \
+-S \
+-object '{"qom-type":"secret","id":"masterKey0","format":"raw","file":"/var/lib/libvirt/qemu/domain--1-guest/master-key.aes"}' \
+-machine s390-ccw-virtio,usb=off,dump-guest-core=off,memory-backend=s390.ram \
+-accel tcg \
+-cpu qemu \
+-m size=4194304k \
+-object '{"qom-type":"memory-backend-ram","id":"s390.ram","size":4294967296}' \
+-overcommit mem-lock=off \
+-smp 4,sockets=4,cores=1,threads=1 \
+-uuid 1ccfd97d-5eb4-478a-bbe6-88d254c16db7 \
+-display none \
+-no-user-config \
+-nodefaults \
+-chardev socket,id=charmonitor,fd=1729,server=on,wait=off \
+-mon chardev=charmonitor,id=monitor,mode=control \
+-rtc base=utc \
+-no-shutdown \
+-boot strict=on \
+-audiodev '{"id":"audio1","driver":"none"}' \
+-device '{"driver":"virtio-balloon-ccw","id":"balloon0","devno":"fe.0.0000"}' \
+-sandbox on,obsolete=deny,elevateprivileges=deny,spawn=deny,resourcecontrol=deny \
+-msg timestamp=on
diff --git a/tests/qemuxmlconfdata/s390x-ccw-minimal.s390x-latest.xml b/tests/qemuxmlconfdata/s390x-ccw-minimal.s390x-latest.xml
new file mode 100644
index 0000000000..df8e578212
--- /dev/null
+++ b/tests/qemuxmlconfdata/s390x-ccw-minimal.s390x-latest.xml
@@ -0,0 +1,27 @@
+<domain type='qemu'>
+  <name>guest</name>
+  <uuid>1ccfd97d-5eb4-478a-bbe6-88d254c16db7</uuid>
+  <memory unit='KiB'>4194304</memory>
+  <currentMemory unit='KiB'>4194304</currentMemory>
+  <vcpu placement='static'>4</vcpu>
+  <os>
+    <type arch='s390x' machine='s390-ccw-virtio'>hvm</type>
+    <boot dev='hd'/>
+  </os>
+  <cpu mode='custom' match='exact' check='none'>
+    <model fallback='forbid'>qemu</model>
+  </cpu>
+  <clock offset='utc'/>
+  <on_poweroff>destroy</on_poweroff>
+  <on_reboot>restart</on_reboot>
+  <on_crash>destroy</on_crash>
+  <devices>
+    <emulator>/usr/bin/qemu-system-s390x</emulator>
+    <controller type='pci' index='0' model='pci-root'/>
+    <audio id='1' type='none'/>
+    <memballoon model='virtio'>
+      <address type='ccw' cssid='0xfe' ssid='0x0' devno='0x0000'/>
+    </memballoon>
+    <panic model='s390'/>
+  </devices>
+</domain>
diff --git a/tests/qemuxmlconfdata/s390x-ccw-minimal.xml b/tests/qemuxmlconfdata/s390x-ccw-minimal.xml
new file mode 100644
index 0000000000..3f5202bfdd
--- /dev/null
+++ b/tests/qemuxmlconfdata/s390x-ccw-minimal.xml
@@ -0,0 +1,12 @@
+<domain type='qemu'>
+  <name>guest</name>
+  <uuid>1ccfd97d-5eb4-478a-bbe6-88d254c16db7</uuid>
+  <memory>4194304</memory>
+  <vcpu>4</vcpu>
+  <os>
+    <type arch='s390x' machine='s390-ccw-virtio'>hvm</type>
+  </os>
+  <devices>
+    <emulator>/usr/bin/qemu-system-s390x</emulator>
+  </devices>
+</domain>
diff --git a/tests/qemuxmlconfdata/x86_64-pc-minimal.x86_64-latest.args b/tests/qemuxmlconfdata/x86_64-pc-minimal.x86_64-latest.args
new file mode 100644
index 0000000000..606fd70519
--- /dev/null
+++ b/tests/qemuxmlconfdata/x86_64-pc-minimal.x86_64-latest.args
@@ -0,0 +1,33 @@
+LC_ALL=C \
+PATH=/bin \
+HOME=/var/lib/libvirt/qemu/domain--1-guest \
+USER=test \
+LOGNAME=test \
+XDG_DATA_HOME=/var/lib/libvirt/qemu/domain--1-guest/.local/share \
+XDG_CACHE_HOME=/var/lib/libvirt/qemu/domain--1-guest/.cache \
+XDG_CONFIG_HOME=/var/lib/libvirt/qemu/domain--1-guest/.config \
+/usr/bin/qemu-system-x86_64 \
+-name guest=guest,debug-threads=on \
+-S \
+-object '{"qom-type":"secret","id":"masterKey0","format":"raw","file":"/var/lib/libvirt/qemu/domain--1-guest/master-key.aes"}' \
+-machine pc,usb=off,dump-guest-core=off,memory-backend=pc.ram,acpi=off \
+-accel tcg \
+-cpu qemu64 \
+-m size=4194304k \
+-object '{"qom-type":"memory-backend-ram","id":"pc.ram","size":4294967296}' \
+-overcommit mem-lock=off \
+-smp 4,sockets=4,cores=1,threads=1 \
+-uuid 1ccfd97d-5eb4-478a-bbe6-88d254c16db7 \
+-display none \
+-no-user-config \
+-nodefaults \
+-chardev socket,id=charmonitor,fd=1729,server=on,wait=off \
+-mon chardev=charmonitor,id=monitor,mode=control \
+-rtc base=utc \
+-no-shutdown \
+-boot strict=on \
+-device '{"driver":"piix3-usb-uhci","id":"usb","bus":"pci.0","addr":"0x1.0x2"}' \
+-audiodev '{"id":"audio1","driver":"none"}' \
+-device '{"driver":"virtio-balloon-pci","id":"balloon0","bus":"pci.0","addr":"0x2"}' \
+-sandbox on,obsolete=deny,elevateprivileges=deny,spawn=deny,resourcecontrol=deny \
+-msg timestamp=on
diff --git a/tests/qemuxmlconfdata/x86_64-pc-minimal.x86_64-latest.xml b/tests/qemuxmlconfdata/x86_64-pc-minimal.x86_64-latest.xml
new file mode 100644
index 0000000000..3fde74460c
--- /dev/null
+++ b/tests/qemuxmlconfdata/x86_64-pc-minimal.x86_64-latest.xml
@@ -0,0 +1,31 @@
+<domain type='qemu'>
+  <name>guest</name>
+  <uuid>1ccfd97d-5eb4-478a-bbe6-88d254c16db7</uuid>
+  <memory unit='KiB'>4194304</memory>
+  <currentMemory unit='KiB'>4194304</currentMemory>
+  <vcpu placement='static'>4</vcpu>
+  <os>
+    <type arch='x86_64' machine='pc'>hvm</type>
+    <boot dev='hd'/>
+  </os>
+  <cpu mode='custom' match='exact' check='none'>
+    <model fallback='forbid'>qemu64</model>
+  </cpu>
+  <clock offset='utc'/>
+  <on_poweroff>destroy</on_poweroff>
+  <on_reboot>restart</on_reboot>
+  <on_crash>destroy</on_crash>
+  <devices>
+    <emulator>/usr/bin/qemu-system-x86_64</emulator>
+    <controller type='usb' index='0' model='piix3-uhci'>
+      <address type='pci' domain='0x0000' bus='0x00' slot='0x01' function='0x2'/>
+    </controller>
+    <controller type='pci' index='0' model='pci-root'/>
+    <input type='mouse' bus='ps2'/>
+    <input type='keyboard' bus='ps2'/>
+    <audio id='1' type='none'/>
+    <memballoon model='virtio'>
+      <address type='pci' domain='0x0000' bus='0x00' slot='0x02' function='0x0'/>
+    </memballoon>
+  </devices>
+</domain>
diff --git a/tests/qemuxmlconfdata/x86_64-pc-minimal.xml b/tests/qemuxmlconfdata/x86_64-pc-minimal.xml
new file mode 100644
index 0000000000..33cebaebd8
--- /dev/null
+++ b/tests/qemuxmlconfdata/x86_64-pc-minimal.xml
@@ -0,0 +1,12 @@
+<domain type='qemu'>
+  <name>guest</name>
+  <uuid>1ccfd97d-5eb4-478a-bbe6-88d254c16db7</uuid>
+  <memory>4194304</memory>
+  <vcpu>4</vcpu>
+  <os>
+    <type arch='x86_64' machine='pc'>hvm</type>
+  </os>
+  <devices>
+    <emulator>/usr/bin/qemu-system-x86_64</emulator>
+  </devices>
+</domain>
diff --git a/tests/qemuxmlconfdata/x86_64-q35-minimal.x86_64-latest.args b/tests/qemuxmlconfdata/x86_64-q35-minimal.x86_64-latest.args
new file mode 100644
index 0000000000..9566106b94
--- /dev/null
+++ b/tests/qemuxmlconfdata/x86_64-q35-minimal.x86_64-latest.args
@@ -0,0 +1,38 @@
+LC_ALL=C \
+PATH=/bin \
+HOME=/var/lib/libvirt/qemu/domain--1-guest \
+USER=test \
+LOGNAME=test \
+XDG_DATA_HOME=/var/lib/libvirt/qemu/domain--1-guest/.local/share \
+XDG_CACHE_HOME=/var/lib/libvirt/qemu/domain--1-guest/.cache \
+XDG_CONFIG_HOME=/var/lib/libvirt/qemu/domain--1-guest/.config \
+/usr/bin/qemu-system-x86_64 \
+-name guest=guest,debug-threads=on \
+-S \
+-object '{"qom-type":"secret","id":"masterKey0","format":"raw","file":"/var/lib/libvirt/qemu/domain--1-guest/master-key.aes"}' \
+-machine q35,usb=off,dump-guest-core=off,memory-backend=pc.ram,acpi=off \
+-accel tcg \
+-cpu qemu64 \
+-m size=4194304k \
+-object '{"qom-type":"memory-backend-ram","id":"pc.ram","size":4294967296}' \
+-overcommit mem-lock=off \
+-smp 4,sockets=4,cores=1,threads=1 \
+-uuid 1ccfd97d-5eb4-478a-bbe6-88d254c16db7 \
+-display none \
+-no-user-config \
+-nodefaults \
+-chardev socket,id=charmonitor,fd=1729,server=on,wait=off \
+-mon chardev=charmonitor,id=monitor,mode=control \
+-rtc base=utc \
+-no-shutdown \
+-boot strict=on \
+-device '{"driver":"pcie-root-port","port":8,"chassis":1,"id":"pci.1","bus":"pcie.0","multifunction":true,"addr":"0x1"}' \
+-device '{"driver":"pcie-root-port","port":9,"chassis":2,"id":"pci.2","bus":"pcie.0","addr":"0x1.0x1"}' \
+-device '{"driver":"pcie-root-port","port":10,"chassis":3,"id":"pci.3","bus":"pcie.0","addr":"0x1.0x2"}' \
+-device '{"driver":"qemu-xhci","id":"usb","bus":"pci.1","addr":"0x0"}' \
+-audiodev '{"id":"audio1","driver":"none"}' \
+-global ICH9-LPC.noreboot=off \
+-watchdog-action reset \
+-device '{"driver":"virtio-balloon-pci","id":"balloon0","bus":"pci.2","addr":"0x0"}' \
+-sandbox on,obsolete=deny,elevateprivileges=deny,spawn=deny,resourcecontrol=deny \
+-msg timestamp=on
diff --git a/tests/qemuxmlconfdata/x86_64-q35-minimal.x86_64-latest.xml b/tests/qemuxmlconfdata/x86_64-q35-minimal.x86_64-latest.xml
new file mode 100644
index 0000000000..10d245e3b5
--- /dev/null
+++ b/tests/qemuxmlconfdata/x86_64-q35-minimal.x86_64-latest.xml
@@ -0,0 +1,50 @@
+<domain type='qemu'>
+  <name>guest</name>
+  <uuid>1ccfd97d-5eb4-478a-bbe6-88d254c16db7</uuid>
+  <memory unit='KiB'>4194304</memory>
+  <currentMemory unit='KiB'>4194304</currentMemory>
+  <vcpu placement='static'>4</vcpu>
+  <os>
+    <type arch='x86_64' machine='q35'>hvm</type>
+    <boot dev='hd'/>
+  </os>
+  <cpu mode='custom' match='exact' check='none'>
+    <model fallback='forbid'>qemu64</model>
+  </cpu>
+  <clock offset='utc'/>
+  <on_poweroff>destroy</on_poweroff>
+  <on_reboot>restart</on_reboot>
+  <on_crash>destroy</on_crash>
+  <devices>
+    <emulator>/usr/bin/qemu-system-x86_64</emulator>
+    <controller type='usb' index='0' model='qemu-xhci'>
+      <address type='pci' domain='0x0000' bus='0x01' slot='0x00' function='0x0'/>
+    </controller>
+    <controller type='sata' index='0'>
+      <address type='pci' domain='0x0000' bus='0x00' slot='0x1f' function='0x2'/>
+    </controller>
+    <controller type='pci' index='0' model='pcie-root'/>
+    <controller type='pci' index='1' model='pcie-root-port'>
+      <model name='pcie-root-port'/>
+      <target chassis='1' port='0x8'/>
+      <address type='pci' domain='0x0000' bus='0x00' slot='0x01' function='0x0' multifunction='on'/>
+    </controller>
+    <controller type='pci' index='2' model='pcie-root-port'>
+      <model name='pcie-root-port'/>
+      <target chassis='2' port='0x9'/>
+      <address type='pci' domain='0x0000' bus='0x00' slot='0x01' function='0x1'/>
+    </controller>
+    <controller type='pci' index='3' model='pcie-root-port'>
+      <model name='pcie-root-port'/>
+      <target chassis='3' port='0xa'/>
+      <address type='pci' domain='0x0000' bus='0x00' slot='0x01' function='0x2'/>
+    </controller>
+    <input type='mouse' bus='ps2'/>
+    <input type='keyboard' bus='ps2'/>
+    <audio id='1' type='none'/>
+    <watchdog model='itco' action='reset'/>
+    <memballoon model='virtio'>
+      <address type='pci' domain='0x0000' bus='0x02' slot='0x00' function='0x0'/>
+    </memballoon>
+  </devices>
+</domain>
diff --git a/tests/qemuxmlconfdata/x86_64-q35-minimal.xml b/tests/qemuxmlconfdata/x86_64-q35-minimal.xml
new file mode 100644
index 0000000000..31eba6d70f
--- /dev/null
+++ b/tests/qemuxmlconfdata/x86_64-q35-minimal.xml
@@ -0,0 +1,12 @@
+<domain type='qemu'>
+  <name>guest</name>
+  <uuid>1ccfd97d-5eb4-478a-bbe6-88d254c16db7</uuid>
+  <memory>4194304</memory>
+  <vcpu>4</vcpu>
+  <os>
+    <type arch='x86_64' machine='q35'>hvm</type>
+  </os>
+  <devices>
+    <emulator>/usr/bin/qemu-system-x86_64</emulator>
+  </devices>
+</domain>
diff --git a/tests/qemuxmlconftest.c b/tests/qemuxmlconftest.c
index 6ecfe64d97..c80bcd9b4d 100644
--- a/tests/qemuxmlconftest.c
+++ b/tests/qemuxmlconftest.c
@@ -1226,6 +1226,13 @@ mymain(void)
     g_unsetenv("PIPEWIRE_REMOTE");
     g_unsetenv("PIPEWIRE_RUNTIME_DIR");
 
+    DO_TEST_CAPS_LATEST_ABI_UPDATE("x86_64-pc-minimal");
+    DO_TEST_CAPS_LATEST_ABI_UPDATE("x86_64-q35-minimal");
+    DO_TEST_CAPS_ARCH_LATEST_ABI_UPDATE("aarch64-virt-minimal", "aarch64");
+    DO_TEST_CAPS_ARCH_LATEST_ABI_UPDATE("riscv64-virt-minimal", "riscv64");
+    DO_TEST_CAPS_ARCH_LATEST_ABI_UPDATE("ppc64-pseries-minimal", "ppc64");
+    DO_TEST_CAPS_ARCH_LATEST_ABI_UPDATE("s390x-ccw-minimal", "s390x");
+
     DO_TEST_CAPS_LATEST("minimal");
     DO_TEST_CAPS_LATEST_PARSE_ERROR("no-memory");
     DO_TEST_CAPS_LATEST("title-and-description");
-- 
2.43.0
_______________________________________________
Devel mailing list -- devel@lists.libvirt.org
To unsubscribe send an email to devel-leave@lists.libvirt.org
Re: [PATCH 06/33] tests: Add minimal cases for many architectures
Posted by Peter Krempa 8 months, 2 weeks ago
On Wed, Jan 24, 2024 at 20:37:26 +0100, Andrea Bolognani wrote:
> We currently have a single test case called "minimal", which
> suffers from two big flaws:
> 
>   * it's limited to the x86_64/pc machine type;
>   * it explicitly enables a number of devices.
> 
> Add several test cases, one for each of the architectures and
> machine types that we have good support for.
> 
> Unlike the existing one, they're *really* minimal: no devices
> or controllers at all are present in the input XML. So the new
> test cases demonstrate exactly what devices and controller
> libvirt will decide to add automatically.
> 
> Note that we use the ABI_UPDATE variant of the test macros
> because, in some cases, the behavior for new guests is not the
> same as that for existing ones due to backward compatibility
> concerns, and we specifically care about the former.

IMO it would make sense to also add the non-ABI update cases.

> 
> Signed-off-by: Andrea Bolognani <abologna@redhat.com>
> ---
>  .../aarch64-virt-minimal.aarch64-latest.args  | 31 ++++++++++++
>  .../aarch64-virt-minimal.aarch64-latest.xml   | 26 ++++++++++
>  .../qemuxmlconfdata/aarch64-virt-minimal.xml  | 12 +++++
>  .../ppc64-pseries-minimal.ppc64-latest.args   | 33 ++++++++++++
>  .../ppc64-pseries-minimal.ppc64-latest.xml    | 33 ++++++++++++
>  .../qemuxmlconfdata/ppc64-pseries-minimal.xml | 12 +++++
>  .../riscv64-virt-minimal.riscv64-latest.args  | 33 ++++++++++++
>  .../riscv64-virt-minimal.riscv64-latest.xml   | 33 ++++++++++++
>  .../qemuxmlconfdata/riscv64-virt-minimal.xml  | 12 +++++
>  .../s390x-ccw-minimal.s390x-latest.args       | 32 ++++++++++++
>  .../s390x-ccw-minimal.s390x-latest.xml        | 27 ++++++++++
>  tests/qemuxmlconfdata/s390x-ccw-minimal.xml   | 12 +++++
>  .../x86_64-pc-minimal.x86_64-latest.args      | 33 ++++++++++++
>  .../x86_64-pc-minimal.x86_64-latest.xml       | 31 ++++++++++++
>  tests/qemuxmlconfdata/x86_64-pc-minimal.xml   | 12 +++++
>  .../x86_64-q35-minimal.x86_64-latest.args     | 38 ++++++++++++++
>  .../x86_64-q35-minimal.x86_64-latest.xml      | 50 +++++++++++++++++++
>  tests/qemuxmlconfdata/x86_64-q35-minimal.xml  | 12 +++++

even if you decide to do the above, you can use

Reviewed-by: Peter Krempa <pkrempa@redhat.com>

without reposting.
_______________________________________________
Devel mailing list -- devel@lists.libvirt.org
To unsubscribe send an email to devel-leave@lists.libvirt.org
Re: Re: [PATCH 06/33] tests: Add minimal cases for many architectures
Posted by Andrea Bolognani 8 months, 1 week ago
On Thu, Jan 25, 2024 at 10:46:39AM +0100, Peter Krempa wrote:
> On Wed, Jan 24, 2024 at 20:37:26 +0100, Andrea Bolognani wrote:
> > We currently have a single test case called "minimal", which
> > suffers from two big flaws:
> >
> >   * it's limited to the x86_64/pc machine type;
> >   * it explicitly enables a number of devices.
> >
> > Add several test cases, one for each of the architectures and
> > machine types that we have good support for.
> >
> > Unlike the existing one, they're *really* minimal: no devices
> > or controllers at all are present in the input XML. So the new
> > test cases demonstrate exactly what devices and controller
> > libvirt will decide to add automatically.
> >
> > Note that we use the ABI_UPDATE variant of the test macros
> > because, in some cases, the behavior for new guests is not the
> > same as that for existing ones due to backward compatibility
> > concerns, and we specifically care about the former.
>
> IMO it would make sense to also add the non-ABI update cases.

Agreed.

> even if you decide to do the above, you can use
>
> Reviewed-by: Peter Krempa <pkrempa@redhat.com>
>
> without reposting.

In order to flush things a bit, my plan would be to push patches

  tests: Add usb-controller-automatic-unavailable-q35
  tests: Add aarch64-panic-no-model
  tests: Add title-and-description
  tests: Drop existing <title> and <description> tags
  tests: Rename and minimize no-memory
  tests: Add minimal cases for many architectures
  tests: Drop minimal
  tests: Add default-models cases for many architectures
  qemu: Fix a few comments
  qemu: Default to no USB and no memballoon for new architectures
  qemu: Clean up qemuDomainDefaultNetModel()
  qemu: Drop qemuDomainFindSCSIControllerModel()
  qemu: Drop qemuDomainSetSCSIControllerModel()
  qemu: Add missing error handling
  qemu: Move qemuDomainGetSCSIControllerModel()

that is, 01-14 and 16, with the following simple changes based on
your suggestions:

  * add title-and-description to genericxml2xmltest instead of
    qemuxmlconftest;

  * have both ABI_UPDATE and regular variants of the minimal
    qemuxmlconftest cases, as well as the default-models cases.

Can I go ahead without reposting?

-- 
Andrea Bolognani / Red Hat / Virtualization
_______________________________________________
Devel mailing list -- devel@lists.libvirt.org
To unsubscribe send an email to devel-leave@lists.libvirt.org
Re: Re: [PATCH 06/33] tests: Add minimal cases for many architectures
Posted by Peter Krempa 8 months, 1 week ago
> 
> In order to flush things a bit, my plan would be to push patches
> 
>   tests: Add usb-controller-automatic-unavailable-q35
>   tests: Add aarch64-panic-no-model
>   tests: Add title-and-description
>   tests: Drop existing <title> and <description> tags
>   tests: Rename and minimize no-memory
>   tests: Add minimal cases for many architectures
>   tests: Drop minimal
>   tests: Add default-models cases for many architectures
>   qemu: Fix a few comments
>   qemu: Default to no USB and no memballoon for new architectures
>   qemu: Clean up qemuDomainDefaultNetModel()
>   qemu: Drop qemuDomainFindSCSIControllerModel()
>   qemu: Drop qemuDomainSetSCSIControllerModel()
>   qemu: Add missing error handling
>   qemu: Move qemuDomainGetSCSIControllerModel()
> 
> that is, 01-14 and 16, with the following simple changes based on
> your suggestions:
> 
>   * add title-and-description to genericxml2xmltest instead of
>     qemuxmlconftest;
> 
>   * have both ABI_UPDATE and regular variants of the minimal
>     qemuxmlconftest cases, as well as the default-models cases.
> 
> Can I go ahead without reposting?

Sure, go ahead.
_______________________________________________
Devel mailing list -- devel@lists.libvirt.org
To unsubscribe send an email to devel-leave@lists.libvirt.org