[libvirt PATCH 8/9] tests: cpu: Allow passing flags to cpuTestLoadXML

Tim Wiederhake twiederh at redhat.com
Mon Sep 21 13:07:31 UTC 2020


Signed-off-by: Tim Wiederhake <twiederh at redhat.com>
---
 tests/cputest.c | 45 ++++++++++++++++++++++++++++++---------------
 1 file changed, 30 insertions(+), 15 deletions(-)

diff --git a/tests/cputest.c b/tests/cputest.c
index b40fd7f7f2..30a125c3da 100644
--- a/tests/cputest.c
+++ b/tests/cputest.c
@@ -68,7 +68,7 @@ static virQEMUDriver driver;
 
 
 static virCPUDefPtr
-cpuTestLoadXML(virArch arch, const char *name)
+cpuTestLoadXML(virArch arch, const char *name, bool validate)
 {
     char *xml = NULL;
     xmlDocPtr doc = NULL;
@@ -81,7 +81,7 @@ cpuTestLoadXML(virArch arch, const char *name)
     if (!(doc = virXMLParseFileCtxt(xml, &ctxt)))
         goto cleanup;
 
-    virCPUDefParseXML(ctxt, NULL, VIR_CPU_TYPE_AUTO, &cpu, false);
+    virCPUDefParseXML(ctxt, NULL, VIR_CPU_TYPE_AUTO, &cpu, validate);
 
  cleanup:
     xmlXPathFreeContext(ctxt);
@@ -203,12 +203,20 @@ cpuTestCompare(const void *arg)
     virCPUDefPtr host = NULL;
     virCPUDefPtr cpu = NULL;
     virCPUCompareResult result;
+    bool validate = !!(data->flags & VIR_CONNECT_COMPARE_CPU_VALIDATE_XML);
 
-    if (!(host = cpuTestLoadXML(data->arch, data->host)) ||
-        !(cpu = cpuTestLoadXML(data->arch, data->name)))
-        goto cleanup;
+    host = cpuTestLoadXML(data->arch, data->host, validate);
+    cpu = cpuTestLoadXML(data->arch, data->name, validate);
+
+    if (!host || !cpu) {
+        if (validate)
+            result = VIR_CPU_COMPARE_ERROR;
+        else
+            goto cleanup;
+    } else {
+        result = virCPUCompare(host->arch, host, cpu, false);
+    }
 
-    result = virCPUCompare(host->arch, host, cpu, false);
     if (data->result == VIR_CPU_COMPARE_ERROR)
         virResetLastError();
 
@@ -240,9 +248,10 @@ cpuTestGuestCPU(const void *arg)
     virCPUCompareResult cmpResult;
     g_auto(virBuffer) buf = VIR_BUFFER_INITIALIZER;
     char *result = NULL;
+    bool validate = !!(data->flags & VIR_CONNECT_COMPARE_CPU_VALIDATE_XML);
 
-    if (!(host = cpuTestLoadXML(data->arch, data->host)) ||
-        !(cpu = cpuTestLoadXML(data->arch, data->name)))
+    if (!(host = cpuTestLoadXML(data->arch, data->host, validate)) ||
+        !(cpu = cpuTestLoadXML(data->arch, data->name, validate)))
         goto cleanup;
 
     if (virCPUConvertLegacy(host->arch, cpu) < 0)
@@ -381,9 +390,10 @@ cpuTestUpdate(const void *arg)
     virCPUDefPtr migHost = NULL;
     virCPUDefPtr cpu = NULL;
     char *result = NULL;
+    bool validate = !!(data->flags & VIR_CONNECT_COMPARE_CPU_VALIDATE_XML);
 
-    if (!(host = cpuTestLoadXML(data->arch, data->host)) ||
-        !(cpu = cpuTestLoadXML(data->arch, data->name)))
+    if (!(host = cpuTestLoadXML(data->arch, data->host, validate)) ||
+        !(cpu = cpuTestLoadXML(data->arch, data->name, validate)))
         goto cleanup;
 
     if (!(migHost = virCPUCopyMigratable(data->arch, host)))
@@ -413,8 +423,9 @@ cpuTestHasFeature(const void *arg)
     virCPUDefPtr host = NULL;
     virCPUDataPtr hostData = NULL;
     int result;
+    bool validate = !!(data->flags & VIR_CONNECT_COMPARE_CPU_VALIDATE_XML);
 
-    if (!(host = cpuTestLoadXML(data->arch, data->host)))
+    if (!(host = cpuTestLoadXML(data->arch, data->host, validate)))
         goto cleanup;
 
     if (cpuEncode(host->arch, host, NULL, &hostData,
@@ -794,9 +805,10 @@ cpuTestUpdateLive(const void *arg)
     virDomainCapsCPUModelsPtr hvModels = NULL;
     virDomainCapsCPUModelsPtr models = NULL;
     int ret = -1;
+    bool validate = !!(data->flags & VIR_CONNECT_COMPARE_CPU_VALIDATE_XML);
 
     cpuFile = g_strdup_printf("cpuid-%s-guest", data->host);
-    if (!(cpu = cpuTestLoadXML(data->arch, cpuFile)))
+    if (!(cpu = cpuTestLoadXML(data->arch, cpuFile, validate)))
         goto cleanup;
 
     enabledFile = g_strdup_printf("%s/cputestdata/%s-cpuid-%s-enabled.xml",
@@ -812,7 +824,7 @@ cpuTestUpdateLive(const void *arg)
         goto cleanup;
 
     expectedFile = g_strdup_printf("cpuid-%s-json", data->host);
-    if (!(expected = cpuTestLoadXML(data->arch, expectedFile)))
+    if (!(expected = cpuTestLoadXML(data->arch, expectedFile, validate)))
         goto cleanup;
 
     /* In case the host CPU signature does not exactly match any CPU model from
@@ -1018,10 +1030,13 @@ mymain(void)
         VIR_FREE(testLabel); \
     } while (0)
 
-#define DO_TEST_COMPARE(arch, host, cpu, result) \
+#define DO_TEST_COMPARE_FLAGS(arch, host, cpu, result, flags) \
     DO_TEST(arch, cpuTestCompare, \
             host "/" cpu " (" #result ")", \
-            host, cpu, NULL, 0, result)
+            host, cpu, NULL, flags, result)
+
+#define DO_TEST_COMPARE(arch, host, cpu, result) \
+    DO_TEST_COMPARE_FLAGS(arch, host, cpu, result, 0)
 
 #define DO_TEST_UPDATE_ONLY(arch, host, cpu) \
     DO_TEST(arch, cpuTestUpdate, \
-- 
2.26.2




More information about the libvir-list mailing list