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

Stefan Berger stefanb at linux.vnet.ibm.com
Mon Apr 22 12:53:24 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(+)

Index: libvirt/tests/qemumonitorjsontest.c
===================================================================
--- libvirt.orig/tests/qemumonitorjsontest.c
+++ libvirt/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)
+{
+    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);




More information about the libvir-list mailing list