diff mbox

[v2,2/4] qtest: introduce qmp_exec_hmp_cmd()

Message ID 1401947118-19973-3-git-send-email-akong@redhat.com
State New
Headers show

Commit Message

Amos Kong June 5, 2014, 5:45 a.m. UTC
Signed-off-by: Amos Kong <akong@redhat.com>
---
 tests/libqtest.c | 16 ++++++++++++++++
 tests/libqtest.h |  8 ++++++++
 2 files changed, 24 insertions(+)

Comments

Gonglei (Arei) June 5, 2014, 7:16 a.m. UTC | #1
> -----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
Stefan Hajnoczi June 5, 2014, 9:29 a.m. UTC | #2
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 mbox

Patch

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.