[PATCH v3 06/34] tests/test-qmp-cmds: Check responses more thoroughly

Markus Armbruster posted 34 patches 5 years, 11 months ago
Maintainers: Eric Blake <eblake@redhat.com>, Michael Roth <mdroth@linux.vnet.ibm.com>, Paolo Bonzini <pbonzini@redhat.com>, "Marc-André Lureau" <marcandre.lureau@redhat.com>, Marcel Apfelbaum <marcel.apfelbaum@gmail.com>, Markus Armbruster <armbru@redhat.com>, Eduardo Habkost <ehabkost@redhat.com>, "Dr. David Alan Gilbert" <dgilbert@redhat.com>, Juan Quintela <quintela@redhat.com>
There is a newer version of this series
[PATCH v3 06/34] tests/test-qmp-cmds: Check responses more thoroughly
Posted by Markus Armbruster 5 years, 11 months ago
Signed-off-by: Markus Armbruster <armbru@redhat.com>
---
 tests/test-qmp-cmds.c | 23 +++++++++++++++++------
 1 file changed, 17 insertions(+), 6 deletions(-)

diff --git a/tests/test-qmp-cmds.c b/tests/test-qmp-cmds.c
index b31064b064..464b370189 100644
--- a/tests/test-qmp-cmds.c
+++ b/tests/test-qmp-cmds.c
@@ -151,9 +151,10 @@ static QObject *do_qmp_dispatch(QDict *req, bool allow_oob)
     QObject *ret;
 
     resp = qmp_dispatch(&qmp_commands, QOBJECT(req), allow_oob);
-    g_assert(resp && !qdict_haskey(resp, "error"));
+    g_assert(resp);
     ret = qdict_get(resp, "return");
     g_assert(ret);
+    g_assert(qdict_size(resp) == 1);
 
     qobject_ref(ret);
     qobject_unref(resp);
@@ -163,9 +164,17 @@ static QObject *do_qmp_dispatch(QDict *req, bool allow_oob)
 static void do_qmp_dispatch_error(QDict *req, bool allow_oob, ErrorClass cls)
 {
     QDict *resp;
+    QDict *error;
 
     resp = qmp_dispatch(&qmp_commands, QOBJECT(req), allow_oob);
-    g_assert(resp && qdict_haskey(resp, "error"));
+    g_assert(resp);
+    error = qdict_get_qdict(resp, "error");
+    g_assert(error);
+    g_assert_cmpstr(qdict_get_try_str(error, "class"),
+                    ==, QapiErrorClass_str(cls));
+    g_assert(qdict_get_try_str(error, "desc"));
+    g_assert(qdict_size(error) == 2);
+    g_assert(qdict_size(resp) == 1);
 
     qobject_unref(resp);
 }
@@ -174,11 +183,12 @@ static void do_qmp_dispatch_error(QDict *req, bool allow_oob, ErrorClass cls)
 static void test_dispatch_cmd(void)
 {
     QDict *req = qdict_new();
-    QObject *ret;
+    QDict *ret;
 
     qdict_put_str(req, "execute", "user_def_cmd");
 
-    ret = do_qmp_dispatch(req, false);
+    ret = qobject_to(QDict, do_qmp_dispatch(req, false));
+    assert(ret && qdict_size(ret) == 0);
 
     qobject_unref(ret);
     qobject_unref(req);
@@ -187,11 +197,12 @@ static void test_dispatch_cmd(void)
 static void test_dispatch_cmd_oob(void)
 {
     QDict *req = qdict_new();
-    QObject *ret;
+    QDict *ret;
 
     qdict_put_str(req, "exec-oob", "test-flags-command");
 
-    ret = do_qmp_dispatch(req, true);
+    ret = qobject_to(QDict, do_qmp_dispatch(req, true));
+    assert(ret && qdict_size(ret) == 0);
 
     qobject_unref(ret);
     qobject_unref(req);
-- 
2.21.1


Re: [PATCH v3 06/34] tests/test-qmp-cmds: Check responses more thoroughly
Posted by Marc-André Lureau 5 years, 10 months ago
On Sun, Mar 15, 2020 at 3:51 PM Markus Armbruster <armbru@redhat.com> wrote:
>
> Signed-off-by: Markus Armbruster <armbru@redhat.com>

Reviewed-by: Marc-André Lureau <marcandre.lureau@redhat.com>


> ---
>  tests/test-qmp-cmds.c | 23 +++++++++++++++++------
>  1 file changed, 17 insertions(+), 6 deletions(-)
>
> diff --git a/tests/test-qmp-cmds.c b/tests/test-qmp-cmds.c
> index b31064b064..464b370189 100644
> --- a/tests/test-qmp-cmds.c
> +++ b/tests/test-qmp-cmds.c
> @@ -151,9 +151,10 @@ static QObject *do_qmp_dispatch(QDict *req, bool allow_oob)
>      QObject *ret;
>
>      resp = qmp_dispatch(&qmp_commands, QOBJECT(req), allow_oob);
> -    g_assert(resp && !qdict_haskey(resp, "error"));
> +    g_assert(resp);
>      ret = qdict_get(resp, "return");
>      g_assert(ret);
> +    g_assert(qdict_size(resp) == 1);
>
>      qobject_ref(ret);
>      qobject_unref(resp);
> @@ -163,9 +164,17 @@ static QObject *do_qmp_dispatch(QDict *req, bool allow_oob)
>  static void do_qmp_dispatch_error(QDict *req, bool allow_oob, ErrorClass cls)
>  {
>      QDict *resp;
> +    QDict *error;
>
>      resp = qmp_dispatch(&qmp_commands, QOBJECT(req), allow_oob);
> -    g_assert(resp && qdict_haskey(resp, "error"));
> +    g_assert(resp);
> +    error = qdict_get_qdict(resp, "error");
> +    g_assert(error);
> +    g_assert_cmpstr(qdict_get_try_str(error, "class"),
> +                    ==, QapiErrorClass_str(cls));
> +    g_assert(qdict_get_try_str(error, "desc"));
> +    g_assert(qdict_size(error) == 2);
> +    g_assert(qdict_size(resp) == 1);
>
>      qobject_unref(resp);
>  }
> @@ -174,11 +183,12 @@ static void do_qmp_dispatch_error(QDict *req, bool allow_oob, ErrorClass cls)
>  static void test_dispatch_cmd(void)
>  {
>      QDict *req = qdict_new();
> -    QObject *ret;
> +    QDict *ret;
>
>      qdict_put_str(req, "execute", "user_def_cmd");
>
> -    ret = do_qmp_dispatch(req, false);
> +    ret = qobject_to(QDict, do_qmp_dispatch(req, false));
> +    assert(ret && qdict_size(ret) == 0);
>
>      qobject_unref(ret);
>      qobject_unref(req);
> @@ -187,11 +197,12 @@ static void test_dispatch_cmd(void)
>  static void test_dispatch_cmd_oob(void)
>  {
>      QDict *req = qdict_new();
> -    QObject *ret;
> +    QDict *ret;
>
>      qdict_put_str(req, "exec-oob", "test-flags-command");
>
> -    ret = do_qmp_dispatch(req, true);
> +    ret = qobject_to(QDict, do_qmp_dispatch(req, true));
> +    assert(ret && qdict_size(ret) == 0);
>
>      qobject_unref(ret);
>      qobject_unref(req);
> --
> 2.21.1
>
>


-- 
Marc-André Lureau

Re: [PATCH v3 06/34] tests/test-qmp-cmds: Check responses more thoroughly
Posted by Eric Blake 5 years, 10 months ago
On 3/15/20 9:46 AM, Markus Armbruster wrote:
> Signed-off-by: Markus Armbruster <armbru@redhat.com>
> ---
>   tests/test-qmp-cmds.c | 23 +++++++++++++++++------
>   1 file changed, 17 insertions(+), 6 deletions(-)
> 

> @@ -163,9 +164,17 @@ static QObject *do_qmp_dispatch(QDict *req, bool allow_oob)
>   static void do_qmp_dispatch_error(QDict *req, bool allow_oob, ErrorClass cls)
>   {
>       QDict *resp;
> +    QDict *error;
>   
>       resp = qmp_dispatch(&qmp_commands, QOBJECT(req), allow_oob);
> -    g_assert(resp && qdict_haskey(resp, "error"));
> +    g_assert(resp);
> +    error = qdict_get_qdict(resp, "error");
> +    g_assert(error);
> +    g_assert_cmpstr(qdict_get_try_str(error, "class"),
> +                    ==, QapiErrorClass_str(cls));

Yep, this answers my question from 5/34.

> +    g_assert(qdict_get_try_str(error, "desc"));
> +    g_assert(qdict_size(error) == 2);
> +    g_assert(qdict_size(resp) == 1);
>   
Reviewed-by: Eric Blake <eblake@redhat.com>

-- 
Eric Blake, Principal Software Engineer
Red Hat, Inc.           +1-919-301-3226
Virtualization:  qemu.org | libvirt.org