Message ID | 1401947118-19973-3-git-send-email-akong@redhat.com |
---|---|
State | New |
Headers | show |
> -----Original Message----- > From: qemu-devel-bounces+arei.gonglei=huawei.com@nongnu.org > [mailto:qemu-devel-bounces+arei.gonglei=huawei.com@nongnu.org] On > Behalf Of Amos Kong > Sent: Thursday, June 05, 2014 1:45 PM > To: qemu-devel@nongnu.org > Cc: stefanha@gmail.com; afaerber@suse.de; mst@redhat.com > Subject: [Qemu-devel] [PATCH v2 2/4] qtest: introduce qmp_exec_hmp_cmd() > > Signed-off-by: Amos Kong <akong@redhat.com> > --- > tests/libqtest.c | 16 ++++++++++++++++ > tests/libqtest.h | 8 ++++++++ > 2 files changed, 24 insertions(+) > Nice job :) I will use it for usb host adapters hotplug/unplug qtests. Best regards, -Gonglei
On Thu, Jun 05, 2014 at 01:45:16PM +0800, Amos Kong wrote: > Signed-off-by: Amos Kong <akong@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 >
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)); + 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 + * + * 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.
Signed-off-by: Amos Kong <akong@redhat.com> --- tests/libqtest.c | 16 ++++++++++++++++ tests/libqtest.h | 8 ++++++++ 2 files changed, 24 insertions(+)