aboutsummaryrefslogtreecommitdiff
path: root/tests/qtest/fuzz
diff options
context:
space:
mode:
authorMarkus Armbruster <armbru@redhat.com>2020-04-24 09:11:41 +0200
committerMarkus Armbruster <armbru@redhat.com>2020-04-29 08:01:52 +0200
commita56f3cdbdf328d95398c70432bba638a6b3f63fa (patch)
tree7b083e39e2b4760589e0d42a0fa94cc58c96f39c /tests/qtest/fuzz
parent14b6ce68cc8658be107247544e9a287ed17aaf76 (diff)
downloadqemu-a56f3cdbdf328d95398c70432bba638a6b3f63fa.zip
qemu-a56f3cdbdf328d95398c70432bba638a6b3f63fa.tar.gz
qemu-a56f3cdbdf328d95398c70432bba638a6b3f63fa.tar.bz2
fuzz: Simplify how we compute available machines and types
apply_to_qlist(), apply_to_node() work with QObjects. This is designed for use by tests/qtest/qos-test.c, which gets the data in that form via QMP. Goes back to commit fc281c8020 "tests: qgraph API for the qtest driver framework". Commit 275ab39d86 "fuzz: add support for qos-assisted fuzz targets" added another user: qtest/fuzz/qos_fuzz.c. To get the data as QObjects, it uses qmp_marshal_query_machines() and qmp_marshal_qom_list_types(). All this code is rather cumbersome. Switch to working with generated QAPI types instead: * Replace apply_to_qlist() & friends by machines_apply_to_node() and types_apply_to_node(). * Have qos_fuzz.c use qmp_query_machines() and qmp_qom_list_types() instead. * Have qos_test.c convert from QObject to the QAPI types. Signed-off-by: Markus Armbruster <armbru@redhat.com> Message-Id: <20200424071142.3525-3-armbru@redhat.com> Reviewed-by: Philippe Mathieu-Daudé <philmd@redhat.com> Reviewed-by: Alexander Bulekov <alxndr@bu.edu>
Diffstat (limited to 'tests/qtest/fuzz')
-rw-r--r--tests/qtest/fuzz/qos_fuzz.c34
1 files changed, 9 insertions, 25 deletions
diff --git a/tests/qtest/fuzz/qos_fuzz.c b/tests/qtest/fuzz/qos_fuzz.c
index af28c92..87eadb0 100644
--- a/tests/qtest/fuzz/qos_fuzz.c
+++ b/tests/qtest/fuzz/qos_fuzz.c
@@ -36,7 +36,6 @@
#include "qapi/qapi-commands-machine.h"
#include "qapi/qapi-commands-qom.h"
-#include "qapi/qmp/qlist.h"
void *fuzz_qos_obj;
@@ -45,34 +44,19 @@ QGuestAllocator *fuzz_qos_alloc;
static const char *fuzz_target_name;
static char **fuzz_path_vec;
-/*
- * Replaced the qmp commands with direct qmp_marshal calls.
- * Probably there is a better way to do this
- */
static void qos_set_machines_devices_available(void)
{
- QDict *req = qdict_new();
- QObject *response;
- QDict *args = qdict_new();
- QList *lst;
-
- qmp_marshal_query_machines(NULL, &response, &error_abort);
- lst = qobject_to(QList, response);
- apply_to_qlist(lst, true);
-
- qobject_unref(response);
-
+ MachineInfoList *mach_info;
+ ObjectTypeInfoList *type_info;
- qdict_put_str(req, "execute", "qom-list-types");
- qdict_put_str(args, "implements", "device");
- qdict_put_bool(args, "abstract", true);
- qdict_put_obj(req, "arguments", (QObject *) args);
+ mach_info = qmp_query_machines(&error_abort);
+ machines_apply_to_node(mach_info);
+ qapi_free_MachineInfoList(mach_info);
- qmp_marshal_qom_list_types(args, &response, &error_abort);
- lst = qobject_to(QList, response);
- apply_to_qlist(lst, false);
- qobject_unref(response);
- qobject_unref(req);
+ type_info = qmp_qom_list_types(true, "device", true, true,
+ &error_abort);
+ types_apply_to_node(type_info);
+ qapi_free_ObjectTypeInfoList(type_info);
}
static char **current_path;