[libvirt] [PATCH 3/5] tests: Add testcase for qemuMonitorJSONGetCPUState

Viktor Mihajlovski mihajlov at linux.vnet.ibm.com
Thu Jul 14 14:35:40 UTC 2016


Mix of halted and non-halted VCPUs used for verification.

Signed-off-by: Viktor Mihajlovski <mihajlov at linux.vnet.ibm.com>
Reviewed-by: Bjoern Walk <bwalk at linux.vnet.ibm.com>
Signed-off-by: Boris Fiuczynski <fiuczy at linux.vnet.ibm.com>
---
 tests/qemumonitorjsontest.c | 106 +++++++++++++++++++++++++++-----------------
 1 file changed, 66 insertions(+), 40 deletions(-)

diff --git a/tests/qemumonitorjsontest.c b/tests/qemumonitorjsontest.c
index f698c14..555af7f 100644
--- a/tests/qemumonitorjsontest.c
+++ b/tests/qemumonitorjsontest.c
@@ -1210,57 +1210,64 @@ testQemuMonitorJSONqemuMonitorJSONGetCPUInfo(const void *data)
     int ret = -1;
     pid_t *cpupids = NULL;
     pid_t expected_cpupids[] = {17622, 17624, 17626, 17628};
-    int ncpupids;
+    bool *cpuhalted = NULL;
+    bool expected_cpuhalted[] = {true, true, false, false};
+    int ncpusfound;
     size_t i;
+    const char *replystring;
 
     if (!test)
         return -1;
 
-    if (qemuMonitorTestAddItem(test, "query-cpus",
-                               "{"
-                               "    \"return\": ["
-                               "        {"
-                               "            \"current\": true,"
-                               "            \"CPU\": 0,"
-                               "            \"pc\": -2130530478,"
-                               "            \"halted\": true,"
-                               "            \"thread_id\": 17622"
-                               "        },"
-                               "        {"
-                               "            \"current\": false,"
-                               "            \"CPU\": 1,"
-                               "            \"pc\": -2130530478,"
-                               "            \"halted\": true,"
-                               "            \"thread_id\": 17624"
-                               "        },"
-                               "        {"
-                               "            \"current\": false,"
-                               "            \"CPU\": 2,"
-                               "            \"pc\": -2130530478,"
-                               "            \"halted\": true,"
-                               "            \"thread_id\": 17626"
-                               "        },"
-                               "        {"
-                               "            \"current\": false,"
-                               "            \"CPU\": 3,"
-                               "            \"pc\": -2130530478,"
-                               "            \"halted\": true,"
-                               "            \"thread_id\": 17628"
-                               "        }"
-                               "    ],"
-                               "    \"id\": \"libvirt-7\""
-                               "}") < 0)
-        goto cleanup;
+    replystring =
+        "{"
+        "    \"return\": ["
+        "        {"
+        "            \"current\": true,"
+        "            \"CPU\": 0,"
+        "            \"pc\": -2130530478,"
+        "            \"halted\": true,"
+        "            \"thread_id\": 17622"
+        "        },"
+        "        {"
+        "            \"current\": false,"
+        "            \"CPU\": 1,"
+        "            \"pc\": -2130530478,"
+        "            \"halted\": true,"
+        "            \"thread_id\": 17624"
+        "        },"
+        "        {"
+        "            \"current\": false,"
+        "            \"CPU\": 2,"
+        "            \"pc\": -2130530478,"
+        "            \"halted\": false,"
+        "            \"thread_id\": 17626"
+        "        },"
+        "        {"
+        "            \"current\": false,"
+        "            \"CPU\": 3,"
+        "            \"pc\": -2130530478,"
+        "            \"halted\": false,"
+        "            \"thread_id\": 17628"
+        "        }"
+        "    ],"
+        "    \"id\": \"libvirt-7\""
+        "}";
 
-    ncpupids = qemuMonitorJSONGetCPUInfo(qemuMonitorTestGetMonitor(test), &cpupids);
+    if (qemuMonitorTestAddItem(test, "query-cpus", replystring) < 0)
+        goto cleanup;
+    if (qemuMonitorTestAddItem(test, "query-cpus", replystring) < 0)
+        goto cleanup;
 
-    if (ncpupids != 4) {
+    ncpusfound = qemuMonitorJSONGetCPUInfo(qemuMonitorTestGetMonitor(test),
+                                           &cpupids);
+    if (ncpusfound != 4) {
         virReportError(VIR_ERR_INTERNAL_ERROR,
-                       "Expecting ncpupids = 4 but got %d", ncpupids);
+                       "Expecting ncpusfound = 4 but got %d", ncpusfound);
         goto cleanup;
     }
 
-    for (i = 0; i < ncpupids; i++) {
+    for (i = 0; i < ncpusfound; i++) {
         if (cpupids[i] != expected_cpupids[i]) {
             virReportError(VIR_ERR_INTERNAL_ERROR,
                            "Expecting cpupids[%zu] = %d but got %d",
@@ -1269,10 +1276,29 @@ testQemuMonitorJSONqemuMonitorJSONGetCPUInfo(const void *data)
         }
     }
 
+    ncpusfound = qemuMonitorJSONGetCPUState(qemuMonitorTestGetMonitor(test),
+                                            &cpuhalted);
+
+    if (ncpusfound != 4) {
+        virReportError(VIR_ERR_INTERNAL_ERROR,
+                       "Expecting ncpusfound = 4 but got %d", ncpusfound);
+        goto cleanup;
+    }
+
+    for (i = 0; i < ncpusfound; i++) {
+        if (cpuhalted[i] != expected_cpuhalted[i]) {
+            virReportError(VIR_ERR_INTERNAL_ERROR,
+                           "Expecting cpuhalted[%zu] = %d but got %d",
+                           i, expected_cpuhalted[i], cpuhalted[i]);
+            goto cleanup;
+        }
+    }
+
     ret = 0;
 
  cleanup:
     VIR_FREE(cpupids);
+    VIR_FREE(cpuhalted);
     qemuMonitorTestFree(test);
     return ret;
 }
-- 
1.9.1




More information about the libvir-list mailing list