@@ -673,3 +673,26 @@ void qmp_discard_response(const char *fmt, ...)
qtest_qmpv_discard_response(global_qtest, fmt, ap);
va_end(ap);
}
+
+void qmp_exec_hmp_cmd(const char *expected_ret, const char *fmt, ...)
+{
+ va_list ap;
+ char cmd[1024];
+ QDict *response;
+ const char *response_return;
+
+ va_start(ap, fmt);
+ vsprintf(cmd, fmt, ap);
+ va_end(ap);
+
+ response = qmp("{'execute': 'human-monitor-command',"
+ " 'arguments': {"
+ " 'command-line': %s"
+ "}}", cmd);
+
+ g_assert(response);
+ response_return = qdict_get_try_str(response, "return");
+ g_assert(response_return);
+ g_assert_cmpstr(response_return, ==, expected_ret);
+ QDECREF(response);
+}
@@ -375,6 +375,15 @@ QDict *qmp(const char *fmt, ...);
void qmp_discard_response(const char *fmt, ...);
/**
+ * qmp_exec_hmp_cmd:
+ * @expected_ret: expected return string
+ * @fmt...: HMP command to execute
+ *
+ * Executes HMP command by 'human-monitor-command'.
+ */
+void qmp_exec_hmp_cmd(const char *expected_ret, const char *fmt, ...);
+
+/**
* qmp_receive:
*
* Reads a QMP message from QEMU and returns the response.
This patch wraps a helper function to execute human command by one QMP command (human-monitor-command). It also checks the return string. Signed-off-by: Amos Kong <akong@redhat.com> --- tests/libqtest.c | 23 +++++++++++++++++++++++ tests/libqtest.h | 9 +++++++++ 2 files changed, 32 insertions(+)