On Thu, Jun 05, 2014 at 01:45:16PM +0800, Amos Kong wrote: > Signed-off-by: Amos Kong <ak...@redhat.com> > --- > tests/libqtest.c | 16 ++++++++++++++++ > tests/libqtest.h | 8 ++++++++ > 2 files changed, 24 insertions(+) > > diff --git a/tests/libqtest.c b/tests/libqtest.c > index 71468ac..ceb1734 100644 > --- a/tests/libqtest.c > +++ b/tests/libqtest.c > @@ -646,3 +646,19 @@ 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 *cmd, const char *expected_ret) > +{ > + QDict *response; > + const char *response_return; > + > + response = qmp("{\"execute\": \"human-monitor-command\"," > + " \"arguments\": {" > + " \"command-line\": \"%s\"" > + "}}", g_strescape(cmd, NULL));
You need to free the g_strescape() return value after using it. > + g_assert(response); > + response_return = qdict_get_try_str(response, "return"); > + g_assert(response_return); > + g_assert_cmpstr(response_return, ==, expected_ret); > + QDECREF(response); > +} > diff --git a/tests/libqtest.h b/tests/libqtest.h > index 8f323c7..e095df2 100644 > --- a/tests/libqtest.h > +++ b/tests/libqtest.h > @@ -375,6 +375,14 @@ QDict *qmp(const char *fmt, ...); > void qmp_discard_response(const char *fmt, ...); > > /** > + * qmp_exec_hmp_cmd: > + * @fmt...: HMP command to execute 'fmt...' doesn't exist. Please document cmd and expected_ret. > + * > + * Executes HMP command by 'human-monitor-command'. > + */ > +void qmp_exec_hmp_cmd(const char *cmd, const char *expected_ret); > + > +/** > * qmp_receive: > * > * Reads a QMP message from QEMU and returns the response. > -- > 1.9.3 >