On Tue, Jan 30, 2018 at 19:10:06 +0100, Andrea Bolognani wrote:
The lack of certain capabilities is going to cause errors pretty
much exclusively when building the QEMU command line, because we
purposefully leave such checks to the very last moments before
starting a guest; so it doesn't make much sense to pass QEMU
capabilities to DO_TEST_PARSE_ERROR() call which are supposed,
as the name implies, to result in much earlier error.
This is a pretty strong statement which is not entirely true. Capability
bits may be also used in the post-parse and validation callbacks. Most
of the checks that the command line can be built are still in the
command line formatter but that's not the rule
The only exception is the "cpu-hotplug-granularity" test,
due
to the fact that the checks we want to fail are skipped entirely
if the relevant QEMU feature is not available.
Signed-off-by: Andrea Bolognani <abologna(a)redhat.com>
---
tests/qemuxml2argvtest.c | 184 +++++++++++++----------------------------------
1 file changed, 51 insertions(+), 133 deletions(-)
diff --git a/tests/qemuxml2argvtest.c b/tests/qemuxml2argvtest.c
index c8739909d..2df778853 100644
--- a/tests/qemuxml2argvtest.c
+++ b/tests/qemuxml2argvtest.c
[...]
@@ -1037,17 +1034,10 @@ mymain(void)
QEMU_CAPS_DRIVE_DISCARD,
QEMU_CAPS_DRIVE_DETECT_ZEROES);
DO_TEST("disk-snapshot", NONE);
- DO_TEST_PARSE_ERROR("disk-same-targets",
- QEMU_CAPS_SCSI_LSI,
- QEMU_CAPS_DEVICE_USB_STORAGE, QEMU_CAPS_NODEFCONFIG);
So this is not quite equivalent. Here's a diff of error messages prior
and after your patch:
$ diff -u stderr stderr2
--- stderr 2018-01-31 09:34:37.295273384 +0100
+++ stderr2 2018-01-31 09:34:39.241273208 +0100
@@ -359,7 +359,7 @@
176) QEMU XML-2-ARGV disk-drive-detect-zeroes ... OK
177) QEMU XML-2-ARGV disk-snapshot ... OK
178) QEMU XML-2-ARGV disk-same-targets ... Got expected
error:
- error : virDomainDiskDefCheckDuplicateInfo:28528 : XML error: target 'sda'
duplicated for disk sources '/tmp/idedisk.img' and '/tmp/usbdisk.img'
+ error : qemuDomainSetSCSIControllerModel:100 : internal error: Unable to determine model
for scsi controller
OK
179) QEMU XML-2-ARGV disk-drive-address-conflict ... Got expected
error:
error : virDomainDefCheckDuplicateDriveAddresses:5764 : unsupported configuration: Found
duplicate drive address for disk with target name 'sda' controller='0'
bus='0' target='0' unit='0'
@@ -368,7 +368,7 @@
error : virDomainDiskDefAssignAddress:7912 : unsupported configuration: using disk
target name 'sda' conflicts with SCSI host device address controller='0'
bus='0' target='0' unit='0
OK
181) QEMU XML-2-ARGV hostdevs-drive-address-conflict ... Got expected
error:
- error : virDomainDefCheckDuplicateDriveAddresses:5805 : unsupported configuration: SCSI
host address controller='0' bus='0' target='0' unit='0' in
use by another SCSI host device
+ error : qemuDomainSetSCSIControllerModel:62 : unsupported configuration: This QEMU
doesn't support virtio scsi controller
OK
182) QEMU XML-2-ARGV event_idx ... OK
183) QEMU XML-2-ARGV virtio-lun ... OK
@@ -387,8 +387,7 @@
error : virDomainDiskDefValidate:5193 : unsupported configuration: Invalid address type
'pci' for the disk 'sda' with the bus type 'sata'
OK
189) QEMU XML-2-ARGV disk-scsi-incompatible-address ... Got expected
error:
- warning : qemuDomainCollectPCIAddress:1242 : qemuDomainDeviceCalculatePCIConnectFlags()
thinks that the device with PCI address 0000:00:01.1 should not have a PCI address
- error : virDomainDiskDefValidate:5193 : unsupported configuration: Invalid address type
'pci' for the disk 'sda' with the bus type 'scsi'
+ error : qemuDomainSetSCSIControllerModel:62 : unsupported configuration: This QEMU
doesn't support virtio scsi controller
OK
190) QEMU XML-2-ARGV graphics-vnc ... OK
191) QEMU XML-2-ARGV graphics-vnc-socket ... OK
@@ -896,7 +895,7 @@
OK
560) QEMU XML-2-ARGV s390-panic-missing ... OK
561) QEMU XML-2-ARGV s390-no-parallel ... Got expected
error:
- error : qemuDomainChrDefValidate:3588 : unsupported configuration: parallel ports are
not supported
+ error : virDomainPCIAddressGetNextAddr:805 : XML error: No PCI buses available
OK
562) QEMU XML-2-ARGV s390-serial ... OK
563) QEMU XML-2-ARGV s390-serial-2 ... OK
@@ -2915,6 +2830,9 @@ mymain(void)
QEMU_CAPS_DEVICE_INTEL_IOMMU);
DO_TEST("cpu-hotplug-startup", QEMU_CAPS_QUERY_HOTPLUGGABLE_CPUS);
+ /* The _QUERY_HOTPLUGGABLE_CPUS capability is needed here because, if
+ * not present, libvirt will not perform the vCPU hotplug granularity
+ * validation and the test will pass rather than failing */
This error message is spurious. There is a good reason to have
capability bits for some tests and I don't think it needs to be
explained.
DO_TEST_PARSE_ERROR("cpu-hotplug-granularity",
QEMU_CAPS_QUERY_HOTPLUGGABLE_CPUS);