[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PATCH v4 08/34] tests/test-qmp-event: Simplify test data setup
From: |
Markus Armbruster |
Subject: |
[PATCH v4 08/34] tests/test-qmp-event: Simplify test data setup |
Date: |
Tue, 17 Mar 2020 12:54:33 +0100 |
Building expected data with qdict_put() & friends is tedious to write
and hard to read. Parse them from string literals with
qdict_from_jsonf_nofail() instead.
While there, use initializers instead of assignments for initializing
aggregate event arguments.
Signed-off-by: Markus Armbruster <address@hidden>
Reviewed-by: Marc-André Lureau <address@hidden>
---
tests/test-qmp-event.c | 93 ++++++++++++------------------------------
1 file changed, 27 insertions(+), 66 deletions(-)
diff --git a/tests/test-qmp-event.c b/tests/test-qmp-event.c
index eee7e08ab6..430001e622 100644
--- a/tests/test-qmp-event.c
+++ b/tests/test-qmp-event.c
@@ -17,6 +17,7 @@
#include "qapi/error.h"
#include "qapi/qmp/qbool.h"
#include "qapi/qmp/qdict.h"
+#include "qapi/qmp/qjson.h"
#include "qapi/qmp/qnum.h"
#include "qapi/qmp/qstring.h"
#include "qapi/qmp-event.h"
@@ -124,17 +125,13 @@ static void event_prepare(TestEventData *data,
/* Global variable test_event_data was used to pass the expectation, so
test cases can't be executed at same time. */
g_mutex_lock(&test_event_lock);
-
- data->expect = qdict_new();
test_event_data = data;
}
static void event_teardown(TestEventData *data,
const void *unused)
{
- qobject_unref(data->expect);
test_event_data = NULL;
-
g_mutex_unlock(&test_event_lock);
}
@@ -152,90 +149,54 @@ static void event_test_add(const char *testpath,
static void test_event_a(TestEventData *data,
const void *unused)
{
- QDict *d;
- d = data->expect;
- qdict_put_str(d, "event", "EVENT_A");
+ data->expect = qdict_from_jsonf_nofail("{ 'event': 'EVENT_A' }");
qapi_event_send_event_a();
+ qobject_unref(data->expect);
}
static void test_event_b(TestEventData *data,
const void *unused)
{
- QDict *d;
- d = data->expect;
- qdict_put_str(d, "event", "EVENT_B");
+ data->expect = qdict_from_jsonf_nofail("{ 'event': 'EVENT_B' }");
qapi_event_send_event_b();
+ qobject_unref(data->expect);
}
static void test_event_c(TestEventData *data,
const void *unused)
{
- QDict *d, *d_data, *d_b;
-
- UserDefOne b;
- b.integer = 2;
- b.string = g_strdup("test1");
- b.has_enum1 = false;
-
- d_b = qdict_new();
- qdict_put_int(d_b, "integer", 2);
- qdict_put_str(d_b, "string", "test1");
-
- d_data = qdict_new();
- qdict_put_int(d_data, "a", 1);
- qdict_put(d_data, "b", d_b);
- qdict_put_str(d_data, "c", "test2");
-
- d = data->expect;
- qdict_put_str(d, "event", "EVENT_C");
- qdict_put(d, "data", d_data);
+ UserDefOne b = { .integer = 2, .string = (char *)"test1" };
+ data->expect = qdict_from_jsonf_nofail(
+ "{ 'event': 'EVENT_C', 'data': {"
+ " 'a': 1, 'b': { 'integer': 2, 'string': 'test1' }, 'c': 'test2' } }");
qapi_event_send_event_c(true, 1, true, &b, "test2");
-
- g_free(b.string);
+ qobject_unref(data->expect);
}
/* Complex type */
static void test_event_d(TestEventData *data,
const void *unused)
{
- UserDefOne struct1;
- EventStructOne a;
- QDict *d, *d_data, *d_a, *d_struct1;
-
- struct1.integer = 2;
- struct1.string = g_strdup("test1");
- struct1.has_enum1 = true;
- struct1.enum1 = ENUM_ONE_VALUE1;
-
- a.struct1 = &struct1;
- a.string = g_strdup("test2");
- a.has_enum2 = true;
- a.enum2 = ENUM_ONE_VALUE2;
-
- d_struct1 = qdict_new();
- qdict_put_int(d_struct1, "integer", 2);
- qdict_put_str(d_struct1, "string", "test1");
- qdict_put_str(d_struct1, "enum1", "value1");
-
- d_a = qdict_new();
- qdict_put(d_a, "struct1", d_struct1);
- qdict_put_str(d_a, "string", "test2");
- qdict_put_str(d_a, "enum2", "value2");
-
- d_data = qdict_new();
- qdict_put(d_data, "a", d_a);
- qdict_put_str(d_data, "b", "test3");
- qdict_put_str(d_data, "enum3", "value3");
-
- d = data->expect;
- qdict_put_str(d, "event", "EVENT_D");
- qdict_put(d, "data", d_data);
+ UserDefOne struct1 = {
+ .integer = 2, .string = (char *)"test1",
+ .has_enum1 = true, .enum1 = ENUM_ONE_VALUE1,
+ };
+ EventStructOne a = {
+ .struct1 = &struct1,
+ .string = (char *)"test2",
+ .has_enum2 = true,
+ .enum2 = ENUM_ONE_VALUE2,
+ };
+ data->expect = qdict_from_jsonf_nofail(
+ "{ 'event': 'EVENT_D', 'data': {"
+ " 'a': {"
+ " 'struct1': { 'integer': 2, 'string': 'test1', 'enum1': 'value1' },"
+ " 'string': 'test2', 'enum2': 'value2' },"
+ " 'b': 'test3', 'enum3': 'value3' } }");
qapi_event_send_event_d(&a, "test3", false, NULL, true, ENUM_ONE_VALUE3);
-
- g_free(struct1.string);
- g_free(a.string);
+ qobject_unref(data->expect);
}
int main(int argc, char **argv)
--
2.21.1
- [PATCH v4 00/34] Configurable policy for handling deprecated interfaces, Markus Armbruster, 2020/03/17
- [PATCH v4 03/34] docs/devel/qapi-code-gen: Clarify allow-oob introspection, Markus Armbruster, 2020/03/17
- [PATCH v4 01/34] qemu-doc: Belatedly document QMP command arg & result deprecation, Markus Armbruster, 2020/03/17
- [PATCH v4 04/34] docs/devel/qapi-code-gen: Document 'features' introspection, Markus Armbruster, 2020/03/17
- [PATCH v4 08/34] tests/test-qmp-event: Simplify test data setup,
Markus Armbruster <=
- [PATCH v4 05/34] tests/test-qmp-cmds: Factor out qmp_dispatch() test helpers, Markus Armbruster, 2020/03/17
- [PATCH v4 02/34] qapi: Belatedly update doc comment for @wait deprecation, Markus Armbruster, 2020/03/17
- [PATCH v4 06/34] tests/test-qmp-cmds: Check responses more thoroughly, Markus Armbruster, 2020/03/17
- [PATCH v4 07/34] tests/test-qmp-cmds: Simplify test data setup, Markus Armbruster, 2020/03/17
- [PATCH v4 16/34] qapi/schema: Change _make_features() to a take feature list, Markus Armbruster, 2020/03/17
- [PATCH v4 23/34] qapi: Simplify how qmp_dispatch() gets the request ID, Markus Armbruster, 2020/03/17
- [PATCH v4 09/34] tests/test-qmp-event: Use qobject_is_equal(), Markus Armbruster, 2020/03/17
- [PATCH v4 11/34] qapi/schema: Clean up around QAPISchemaEntity.connect_doc(), Markus Armbruster, 2020/03/17
- [PATCH v4 24/34] qapi: Replace qmp_dispatch()'s TODO comment by an explanation, Markus Armbruster, 2020/03/17