[libvirt] [PATCH v2] test: Add JSON test for query-tpm-types

Stefan Berger stefanb at linux.vnet.ibm.com
Fri Apr 26 11:25:57 UTC 2013


Add a test case for query-tpm-models QMP command.

Signed-off-by: Stefan Berger <stefanb at linux.vnet.ibm.com>
---
 tests/qemumonitorjsontest.c | 55 +++++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 55 insertions(+)

diff --git a/tests/qemumonitorjsontest.c b/tests/qemumonitorjsontest.c
index 24685c7..6f42598 100644
--- a/tests/qemumonitorjsontest.c
+++ b/tests/qemumonitorjsontest.c
@@ -25,6 +25,7 @@
 #include "qemu/qemu_conf.h"
 #include "virthread.h"
 #include "virerror.h"
+#include "virstring.h"
 
 
 #define VIR_FROM_THIS VIR_FROM_NONE
@@ -440,6 +441,59 @@ cleanup:
 
 
 static int
+testQemuMonitorJSONGetTPMModels(const void *data)
+{
+    const virDomainXMLOptionPtr xmlopt = (virDomainXMLOptionPtr)data;
+    qemuMonitorTestPtr test = qemuMonitorTestNew(true, xmlopt);
+    int ret = -1;
+    char **tpmmodels = NULL;
+    int ntpmmodels = 0;
+
+    if (!test)
+        return -1;
+
+    if (qemuMonitorTestAddItem(test, "query-tpm-models",
+                               "{ "
+                               "  \"return\": [ "
+                               "  \"passthrough\""
+                               "  ]"
+                               "}") < 0)
+        goto cleanup;
+
+    if ((ntpmmodels = qemuMonitorGetTPMModels(qemuMonitorTestGetMonitor(test),
+                                              &tpmmodels)) < 0)
+        goto cleanup;
+
+    if (ntpmmodels != 1) {
+        virReportError(VIR_ERR_INTERNAL_ERROR,
+                       "ntpmmodels %d is not 1", ntpmmodels);
+        goto cleanup;
+    }
+
+#define CHECK(i, wantname)                                              \
+    do {                                                                \
+        if (STRNEQ(tpmmodels[i], (wantname))) {                         \
+            virReportError(VIR_ERR_INTERNAL_ERROR,                      \
+                           "name %s is not %s",                         \
+                           tpmmodels[i], (wantname));                   \
+            goto cleanup;                                               \
+        }                                                               \
+    } while (0)
+
+    CHECK(0, "passthrough");
+
+#undef CHECK
+
+    ret = 0;
+
+cleanup:
+    qemuMonitorTestFree(test);
+    virStringFreeList(tpmmodels);
+    return ret;
+}
+
+
+static int
 mymain(void)
 {
     int ret = 0;
@@ -465,6 +519,7 @@ mymain(void)
     DO_TEST(GetMachines);
     DO_TEST(GetCPUDefinitions);
     DO_TEST(GetCommands);
+    DO_TEST(GetTPMModels);
 
     virObjectUnref(xmlopt);
 
-- 
1.7.11.7





More information about the libvir-list mailing list