tests/qtest/readconfig: Rework test_object_rng_resp into a generic function

test_object_rng_resp() can be reworked quite easily to allow
testing for arbitrary objects in the qom-list response.

Message-Id: <20230228211533.201837-2-thuth@redhat.com>
Signed-off-by: Thomas Huth <thuth@redhat.com>
This commit is contained in:
Thomas Huth 2023-02-28 22:15:28 +01:00
parent 3f0760ea31
commit 79571e7f14

View File

@ -124,13 +124,15 @@ static void test_spice(void)
} }
#endif #endif
static void test_object_rng_resp(QObject *res) static void test_object_available(QObject *res, const char *name,
const char *type)
{ {
Visitor *v; Visitor *v;
g_autoptr(ObjectPropertyInfoList) objs = NULL; g_autoptr(ObjectPropertyInfoList) objs = NULL;
ObjectPropertyInfoList *tmp; ObjectPropertyInfoList *tmp;
ObjectPropertyInfo *obj; ObjectPropertyInfo *obj;
bool seen_rng = false; bool object_available = false;
g_autofree char *childtype = g_strdup_printf("child<%s>", type);
g_assert(res); g_assert(res);
v = qobject_input_visitor_new(res); v = qobject_input_visitor_new(res);
@ -142,16 +144,15 @@ static void test_object_rng_resp(QObject *res)
g_assert(tmp->value); g_assert(tmp->value);
obj = tmp->value; obj = tmp->value;
if (g_str_equal(obj->name, "rng0") && if (g_str_equal(obj->name, name) && g_str_equal(obj->type, childtype)) {
g_str_equal(obj->type, "child<rng-builtin>")) { object_available = true;
seen_rng = true;
break; break;
} }
tmp = tmp->next; tmp = tmp->next;
} }
g_assert(seen_rng); g_assert(object_available);
visit_free(v); visit_free(v);
} }
@ -170,7 +171,7 @@ static void test_object_rng(void)
resp = qtest_qmp(qts, resp = qtest_qmp(qts,
"{ 'execute': 'qom-list'," "{ 'execute': 'qom-list',"
" 'arguments': {'path': '/objects' }}"); " 'arguments': {'path': '/objects' }}");
test_object_rng_resp(qdict_get(resp, "return")); test_object_available(qdict_get(resp, "return"), "rng0", "rng-builtin");
qobject_unref(resp); qobject_unref(resp);
qtest_quit(qts); qtest_quit(qts);