[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-devel] [PATCH v4 06/10] tests: add qmp/object-add-without-prop
From: |
Markus Armbruster |
Subject: |
Re: [Qemu-devel] [PATCH v4 06/10] tests: add qmp/object-add-without-props test |
Date: |
Thu, 30 Aug 2018 14:51:02 +0200 |
User-agent: |
Gnus/5.13 (Gnus v5.13) Emacs/26.1 (gnu/linux) |
Marc-André Lureau <address@hidden> writes:
> test_object_add_without_props() tests a bug in qmp_object_add() we
> fixed in commit e64c75a975. Sadly, we don't have systematic
> object-add tests. This lone test can go into qmp-cmd-test for want of
> a better home.
>
> Signed-off-by: Marc-André Lureau <address@hidden>
> ---
> tests/qmp-cmd-test.c | 31 +++++++++++++++++++++++++++++++
> 1 file changed, 31 insertions(+)
>
> diff --git a/tests/qmp-cmd-test.c b/tests/qmp-cmd-test.c
> index c5b70df974..3ba8f68476 100644
> --- a/tests/qmp-cmd-test.c
> +++ b/tests/qmp-cmd-test.c
> @@ -19,6 +19,15 @@
>
> const char common_args[] = "-nodefaults -machine none";
>
> +static const char *get_error_class(QDict *resp)
> +{
> + QDict *error = qdict_get_qdict(resp, "error");
> + const char *desc = qdict_get_try_str(error, "desc");
> +
> + g_assert(desc);
> + return error ? qdict_get_try_str(error, "class") : NULL;
> +}
> +
> /* Query smoke tests */
>
> static int query_error_class(const char *cmd)
Copied from qmp-test.c. It should be factored out instead. Where to
put it? libqtest.c isn't quite right, as the function could
theoretically be useful in unit tests as well, but I guess it would do
for now.
Asserting presence of "desc" makes little sense outside qmp-test.c
protocol tests, but it doesn't hurt, either.
Grep shows more possible users in tests/drive_del-test.c and
tests/test-qga.c.
> @@ -197,6 +206,24 @@ static void add_query_tests(QmpSchema *schema)
> }
> }
>
> +static void test_object_add_without_props(void)
> +{
> + QTestState *qts;
> + QDict *ret;
qmp-test.c and qmp-cmd-test.c commonly use @resp for the response.
> +
> + qts = qtest_init(common_args);
> +
> + ret = qtest_qmp(qts,
> + "{'execute': 'object-add', 'arguments':"
> + " {'qom-type': 'memory-backend-ram', 'id': 'ram1' } }");
> + g_assert_nonnull(ret);
What's wrong with g_assert(!ret)?
> +
> + g_assert_cmpstr(get_error_class(ret), ==, "GenericError");
> +
> + qobject_unref(ret);
Permit me to digress.
When you expect success, you check @resp like this:
ret = qdict_get_qdict(resp, "return");
... laborously check @ret against expectations ...
If you feel pedantically thorough, you can throw in
g_assert(!qdict_haskey(resp, "error");
When you expect failure, you check like this:
error = qdict_get_qdict(resp, "error");
class = qdict_get_try_str(error, "class");
g_assert_cmpstr(class, ==, "GenericError");
and perhaps
g_assert(!qdict_haskey(resp, "return");
get_error_class() saves a little typing in the failure case. It's still
an awfully verbose overall, and the checking is full of holes more often
than not. There's got to be a better way.
> + qtest_quit(qts);
> +}
> +
> int main(int argc, char *argv[])
> {
> QmpSchema schema;
> @@ -206,6 +233,10 @@ int main(int argc, char *argv[])
>
> qmp_schema_init(&schema);
> add_query_tests(&schema);
> +
> + qtest_add_func("qmp/object-add-without-props",
> + test_object_add_without_props);
> +
> ret = g_test_run();
>
> qmp_schema_cleanup(&schema);
May I have a TODO comment asking for coverage of generic object-add
failure modes?
- [Qemu-devel] [PATCH v4 00/10] monitor: various code simplification and fixes, Marc-André Lureau, 2018/08/29
- [Qemu-devel] [PATCH v4 02/10] qmp: constify qmp_is_oob(), Marc-André Lureau, 2018/08/29
- [Qemu-devel] [PATCH v4 01/10] monitor: consitify qmp_send_response() QDict argument, Marc-André Lureau, 2018/08/29
- [Qemu-devel] [PATCH v4 03/10] Revert "qmp: isolate responses into io thread", Marc-André Lureau, 2018/08/29
- [Qemu-devel] [PATCH v4 04/10] monitor: no need to save need_resume, Marc-André Lureau, 2018/08/29
- [Qemu-devel] [PATCH v4 05/10] json-lexer: make it safe to call destroy multiple times, Marc-André Lureau, 2018/08/29
- [Qemu-devel] [PATCH v4 06/10] tests: add qmp/object-add-without-props test, Marc-André Lureau, 2018/08/29
- Re: [Qemu-devel] [PATCH v4 06/10] tests: add qmp/object-add-without-props test,
Markus Armbruster <=
- [Qemu-devel] [PATCH v4 08/10] tests: add a qmp success-response test, Marc-André Lureau, 2018/08/29
- [Qemu-devel] [PATCH v4 07/10] tests: add qmp/qom-set-without-value test, Marc-André Lureau, 2018/08/29
[Qemu-devel] [PATCH v4 09/10] qga: process_event() simplification, Marc-André Lureau, 2018/08/29