]> xenbits.xensource.com Git - libvirt.git/commitdiff
testutilsqemu: Add support for specifying the variant for qemuxml2(argv|xml)test
authorPeter Krempa <pkrempa@redhat.com>
Wed, 8 Mar 2023 16:23:05 +0000 (17:23 +0100)
committerPeter Krempa <pkrempa@redhat.com>
Mon, 3 Apr 2023 07:19:07 +0000 (09:19 +0200)
Add the possibility to control the variant of the test data for real
caps testing in qemuxml2argvtest and qemuxml2xmltest.

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

index 7f2aca5221af865961aa7becda154018773a79ed..e12eaf4dd8fa10abbcda07cb38e651442c2db74a 100644 (file)
@@ -943,6 +943,10 @@ testQemuInfoSetArgs(struct testQemuInfo *info,
             info->args.capsver = va_arg(argptr, char *);
             break;
 
+        case ARG_CAPS_VARIANT:
+            info->args.capsvariant = va_arg(argptr, char *);
+            break;
+
         case ARG_CAPS_HOST_CPU_MODEL:
             info->args.capsHostCPUModel = va_arg(argptr, int);
             break;
@@ -1008,6 +1012,9 @@ testQemuInfoInitArgs(struct testQemuInfo *info)
 
     info->args.newargs = false;
 
+    if (!info->args.capsvariant)
+        info->args.capsvariant = "";
+
     if (info->args.invalidarg) {
         fprintf(stderr, "Invalid argument encountered by 'testQemuInfoSetArgs'\n");
         return -1;
@@ -1025,7 +1032,8 @@ testQemuInfoInitArgs(struct testQemuInfo *info)
         info->arch = virArchFromString(info->args.capsarch);
 
         if (STREQ(info->args.capsver, "latest")) {
-            struct testQemuCapsFile *f = g_hash_table_lookup(info->conf->capslatest, info->args.capsarch);
+            g_autofree char *archvariant = g_strdup_printf("%s%s", info->args.capsarch, info->args.capsvariant);
+            struct testQemuCapsFile *f = g_hash_table_lookup(info->conf->capslatest, archvariant);
 
             if (!f) {
                 fprintf(stderr, "'latest' caps for '%s' were not found\n", info->args.capsarch);
@@ -1035,10 +1043,11 @@ testQemuInfoInitArgs(struct testQemuInfo *info)
             capsfile = g_strdup(f->path);
             stripmachinealiases = true;
         } else {
-            capsfile = g_strdup_printf("%s/caps_%s_%s.xml",
+            capsfile = g_strdup_printf("%s/caps_%s_%s%s.xml",
                                        TEST_QEMU_CAPS_PATH,
                                        info->args.capsver,
-                                       info->args.capsarch);
+                                       info->args.capsarch,
+                                       info->args.capsvariant);
         }
 
         if (!g_hash_table_lookup_extended(info->conf->capscache, capsfile, NULL, (void **) &cachedcaps)) {
index d75dfee839e616ed11a41d262419e4acbd45a4a2..070bca6a53ef6a9b37003e211f6eeb2810083019 100644 (file)
@@ -51,6 +51,7 @@ typedef enum {
     ARG_PARSEFLAGS,
     ARG_CAPS_ARCH,
     ARG_CAPS_VER,
+    ARG_CAPS_VARIANT,
     ARG_CAPS_HOST_CPU_MODEL,
     ARG_HOST_OS,
     ARG_FD_GROUP, /* name, nfds, fd[0], ... fd[n-1] */
@@ -86,6 +87,7 @@ struct testQemuArgs {
     virBitmap *fakeCapsDel;
     char *capsver;
     char *capsarch;
+    const char *capsvariant;
     qemuTestCPUDef capsHostCPUModel;
     int gic;
     testQemuHostOS hostOS;