]> git.ipfire.org Git - thirdparty/libvirt.git/commitdiff
qemuTestCapsCacheInsert*: Directly insert real capabilities
authorPeter Krempa <pkrempa@redhat.com>
Thu, 2 Mar 2023 16:59:09 +0000 (17:59 +0100)
committerPeter Krempa <pkrempa@redhat.com>
Mon, 6 Mar 2023 19:55:50 +0000 (20:55 +0100)
Real capabilities populate the binary name, while fake don't. We can
directly insert the capabilities using the real binary name.

This will allow to remove 'qemu_emulators' entries once all tests are
converted to real capabilties.

Signed-off-by: Peter Krempa <pkrempa@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
tests/testutilsqemu.c

index e15130492e18fa77ae6ce46853d97ff1e91aa984..8738b69c84395bc3887697ba40978a962c0f3a11 100644 (file)
@@ -533,24 +533,30 @@ qemuTestCapsCacheInsertImpl(virFileCache *cache,
          *
          * before populating the cache;
          */
-        virArch arch = virQEMUCapsGetArch(caps);
-        g_autoptr(virQEMUCaps) copyCaps = NULL;
-        virQEMUCaps *effCaps = caps;
+        /* caps->binary is populated only for real capabilities */
+        if (virQEMUCapsGetBinary(caps)) {
+            if (qemuTestCapsCacheInsertData(cache, virQEMUCapsGetBinary(caps), caps) < 0)
+                return -1;
+        } else {
+            virArch arch = virQEMUCapsGetArch(caps);
+            g_autoptr(virQEMUCaps) copyCaps = NULL;
+            virQEMUCaps *effCaps = caps;
 
-        if (arch_alias[arch] != VIR_ARCH_NONE)
-            arch = arch_alias[arch];
+            if (arch_alias[arch] != VIR_ARCH_NONE)
+                arch = arch_alias[arch];
 
-        if (qemu_emulators[arch]) {
-            /* if we are dealing with fake caps we need to populate machine types */
-            if (!virQEMUCapsHasMachines(caps)) {
-                if (!(copyCaps = effCaps = virQEMUCapsNewCopy(caps)))
-                    return -1;
+            if (qemu_emulators[arch]) {
+                /* if we are dealing with fake caps we need to populate machine types */
+                if (!virQEMUCapsHasMachines(caps)) {
+                    if (!(copyCaps = effCaps = virQEMUCapsNewCopy(caps)))
+                        return -1;
 
-                qemuTestCapsPopulateFakeMachines(copyCaps, arch, hostOS);
-            }
+                    qemuTestCapsPopulateFakeMachines(copyCaps, arch, hostOS);
+                }
 
-            if (qemuTestCapsCacheInsertData(cache, qemu_emulators[arch], effCaps) < 0)
-                return -1;
+                if (qemuTestCapsCacheInsertData(cache, qemu_emulators[arch], effCaps) < 0)
+                    return -1;
+            }
         }
     } else {
         /* in case when caps are missing or are missing architecture, we populate