[PATCH 05/10] tests/qemumonitortestutils: Add JobStatusChange to update progress of blockdev-create

Masayoshi Mizuma msys.mizuma at gmail.com
Thu Mar 25 00:54:09 UTC 2021


From: Masayoshi Mizuma <m.mizuma at jp.fujitsu.com>

Add qemuProcessHandleJobStatusChange to .jobStatusChange handler to
update the progress of blockdev-create.

Signed-off-by: Masayoshi Mizuma <m.mizuma at jp.fujitsu.com>
---
 src/qemu/qemu_process.c      |  2 +-
 src/qemu/qemu_process.h      |  7 +++++++
 tests/qemumonitortestutils.c | 22 +++++++++++++++++++++-
 3 files changed, 29 insertions(+), 2 deletions(-)

diff --git a/src/qemu/qemu_process.c b/src/qemu/qemu_process.c
index fedd1f56b1..4ba634dfc5 100644
--- a/src/qemu/qemu_process.c
+++ b/src/qemu/qemu_process.c
@@ -992,7 +992,7 @@ qemuProcessHandleBlockJob(qemuMonitorPtr mon G_GNUC_UNUSED,
 }
 
 
-static int
+int
 qemuProcessHandleJobStatusChange(qemuMonitorPtr mon G_GNUC_UNUSED,
                                  virDomainObjPtr vm,
                                  const char *jobname,
diff --git a/src/qemu/qemu_process.h b/src/qemu/qemu_process.h
index f4feeaa68f..579564a905 100644
--- a/src/qemu/qemu_process.h
+++ b/src/qemu/qemu_process.h
@@ -244,3 +244,10 @@ void qemuProcessQMPFree(qemuProcessQMPPtr proc);
 G_DEFINE_AUTOPTR_CLEANUP_FUNC(qemuProcessQMP, qemuProcessQMPFree);
 
 int qemuProcessQMPStart(qemuProcessQMPPtr proc);
+
+int
+qemuProcessHandleJobStatusChange(qemuMonitorPtr mon,
+                                 virDomainObjPtr vm,
+                                 const char *jobname,
+                                 int status,
+                                 void *opaque);
diff --git a/tests/qemumonitortestutils.c b/tests/qemumonitortestutils.c
index 227b78d527..98fc5a9e9b 100644
--- a/tests/qemumonitortestutils.c
+++ b/tests/qemumonitortestutils.c
@@ -37,6 +37,7 @@
 #include "virerror.h"
 #include "virstring.h"
 #include "vireventthread.h"
+#include "qemu/qemu_process.h"
 
 #define VIR_FROM_THIS VIR_FROM_NONE
 
@@ -575,6 +576,18 @@ qemuMonitorTestProcessCommandDefaultValidate(qemuMonitorTestPtr test,
     return 0;
 }
 
+#define QEMU_BLOCKDEV_CREATE_CONCLUDED(id) \
+    "{"\
+    "    \"timestamp\": {"\
+    "        \"seconds\": 1616361602,"\
+    "        \"microseconds\": 893848"\
+    "    },"\
+    "    \"event\": \"JOB_STATUS_CHANGE\","\
+    "    \"data\": {"\
+    "        \"status\": \"concluded\","\
+    "        \"id\": \"" id "\""\
+    "    }"\
+    "}"
 
 static int
 qemuMonitorTestProcessCommandDefault(qemuMonitorTestPtr test,
@@ -585,6 +598,7 @@ qemuMonitorTestProcessCommandDefault(qemuMonitorTestPtr test,
     g_autoptr(virJSONValue) val = NULL;
     virJSONValuePtr cmdargs = NULL;
     const char *cmdname;
+    int ret;
 
     if (!(val = virJSONValueFromString(cmdstr)))
         return -1;
@@ -602,7 +616,12 @@ qemuMonitorTestProcessCommandDefault(qemuMonitorTestPtr test,
         qemuMonitorTestErrorInvalidCommand(data->command_name, cmdname);
         return -1;
     } else {
-        return qemuMonitorTestAddResponse(test, data->response);
+        ret = qemuMonitorTestAddResponse(test, data->response);
+        if (data->command_name && STREQ(data->command_name, "blockdev-create")) {
+            qemuMonitorTestAddResponse(test,
+                     QEMU_BLOCKDEV_CREATE_CONCLUDED("create-libvirt-1-format"));
+        }
+        return ret;
     }
 }
 
@@ -995,6 +1014,7 @@ qemuMonitorTestErrorNotify(qemuMonitorPtr mon G_GNUC_UNUSED,
 static qemuMonitorCallbacks qemuMonitorTestCallbacks = {
     .eofNotify = qemuMonitorTestEOFNotify,
     .errorNotify = qemuMonitorTestErrorNotify,
+    .jobStatusChange = qemuProcessHandleJobStatusChange,
     .domainDeviceDeleted = qemuProcessHandleDeviceDeleted,
 };
 
-- 
2.27.0




More information about the libvir-list mailing list