]> git.ipfire.org Git - thirdparty/libvirt.git/commitdiff
qemuxmlconftest: Refactor host device preparation
authorPavel Hrdina <phrdina@redhat.com>
Sat, 14 Feb 2026 10:39:19 +0000 (11:39 +0100)
committerPavel Hrdina <phrdina@redhat.com>
Mon, 16 Feb 2026 14:50:39 +0000 (15:50 +0100)
Create a single place for host device preparation code.

Signed-off-by: Pavel Hrdina <phrdina@redhat.com>
Reviewed-by: Michal Privoznik <mprivozn@redhat.com>
tests/qemuxmlconftest.c

index 5fddf3a523ac69b369eb30badf64a758f6367241..321c444d776dd2816d297e792122e9e58be9c418 100644 (file)
@@ -378,6 +378,54 @@ testSetupHostdevPrivateData(virDomainDef *def)
 }
 
 
+static void
+testQemuPrepareHostdevUSB(virDomainHostdevDef *hostdev)
+{
+    virDomainHostdevSubsysUSB *usb = &hostdev->source.subsys.u.usb;
+
+    if (!usb->device && !usb->bus) {
+        if (usb->vendor == 0x1234 && usb->product == 0x4321) {
+            usb->bus = 42;
+            usb->device = 0x1234;
+        } else {
+            g_assert_not_reached();
+        }
+    } else if (!usb->device && !usb->vendor && !usb->product) {
+        if (usb->bus == 2 && STREQ(usb->port, "3")) {
+            usb->device = 4;
+        } else {
+            g_assert_not_reached();
+        }
+    }
+}
+
+
+static void
+testQemuPrepareHostdev(virDomainObj *vm)
+{
+    size_t i;
+
+    for (i = 0; i < vm->def->nhostdevs; i++) {
+        virDomainHostdevDef *hostdev = vm->def->hostdevs[i];
+
+        if (hostdev->mode != VIR_DOMAIN_HOSTDEV_MODE_SUBSYS)
+            continue;
+
+        switch (hostdev->source.subsys.type) {
+        case VIR_DOMAIN_HOSTDEV_SUBSYS_TYPE_USB:
+            testQemuPrepareHostdevUSB(hostdev);
+            break;
+        case VIR_DOMAIN_HOSTDEV_SUBSYS_TYPE_PCI:
+        case VIR_DOMAIN_HOSTDEV_SUBSYS_TYPE_SCSI:
+        case VIR_DOMAIN_HOSTDEV_SUBSYS_TYPE_SCSI_HOST:
+        case VIR_DOMAIN_HOSTDEV_SUBSYS_TYPE_MDEV:
+        case VIR_DOMAIN_HOSTDEV_SUBSYS_TYPE_LAST:
+            break;
+        }
+    }
+}
+
+
 static virNetworkDriver fakeNetworkDriver = {
     .networkLookupByName = fakeNetworkLookupByName,
     .networkGetXMLDesc = fakeNetworkGetXMLDesc,
@@ -524,28 +572,7 @@ testCompareXMLToArgvCreateArgs(virQEMUDriver *drv,
         }
     }
 
-    for (i = 0; i < vm->def->nhostdevs; i++) {
-        virDomainHostdevDef *hostdev = vm->def->hostdevs[i];
-
-        if (hostdev->mode == VIR_DOMAIN_HOSTDEV_MODE_SUBSYS &&
-            hostdev->source.subsys.type == VIR_DOMAIN_HOSTDEV_SUBSYS_TYPE_USB) {
-            virDomainHostdevSubsysUSB *usb = &hostdev->source.subsys.u.usb;
-            if (!usb->device && !usb->bus) {
-                if (usb->vendor == 0x1234 && usb->product == 0x4321) {
-                    usb->bus = 42;
-                    usb->device = 0x1234;
-                } else {
-                    g_assert_not_reached();
-                }
-            } else if (!usb->device && !usb->vendor && !usb->product) {
-                if (usb->bus == 2 && STREQ(usb->port, "3")) {
-                    usb->device = 4;
-                } else {
-                    g_assert_not_reached();
-                }
-            }
-        }
-    }
+    testQemuPrepareHostdev(vm);
 
     if (flags & FLAG_SLIRP_HELPER) {
         for (i = 0; i < vm->def->nnets; i++) {