
From: Peter Krempa <pkrempa@redhat.com> This is useful for checking that the script still covers everything when using it to compare two .replies files. Signed-off-by: Peter Krempa <pkrempa@redhat.com> --- scripts/qemu-replies-tool.py | 59 ++++++++++++++++++++++++++++++++++-- 1 file changed, 57 insertions(+), 2 deletions(-) diff --git a/scripts/qemu-replies-tool.py b/scripts/qemu-replies-tool.py index e5a1b2fb3e..cf99ecd1f3 100755 --- a/scripts/qemu-replies-tool.py +++ b/scripts/qemu-replies-tool.py @@ -401,6 +401,8 @@ def dump_qom_list_types(conv, dumpprefix): types.append(qomtype['name']) + c['processed'] = True + break types.sort() @@ -421,7 +423,12 @@ def dump_device_and_object_properties(conv, dumpprefix): if c['cmd']['execute'] == 'qom-list-properties': prefix = '(qom-prop)' - if prefix is None or 'return' not in c['rep']: + if prefix is None: + continue + + c['processed'] = True + + if 'return' not in c['rep']: continue for arg in c['rep']['return']: @@ -458,9 +465,16 @@ def machine_type_sorter(item): def dump_machine_types(conv, dumpprefix): machines = dict() aliases = [] + dumped_kvm = False for c in conv: if c['cmd']['execute'] == 'query-machines': + + c['processed'] = True + + if dumped_kvm: + continue + for machine in c['rep']['return']: deprecated = False name = machine['name'] @@ -481,7 +495,9 @@ def dump_machine_types(conv, dumpprefix): machines[name] = {} machines[name][version] = deprecated - break + + # Dump only the machines for the first occurence of 'query-machines' + dumped_kvm = True for (machine, versions) in sorted(machines.items()): for (version, deprecated) in sorted(versions.items(), key=machine_type_sorter): @@ -521,17 +537,47 @@ def dump_other(conv, dumpprefix): c['rep']['return']['qemu']['minor'], c['rep']['return']['qemu']['micro'], c['rep']['return']['package'])) + c['processed'] = True if c['cmd']['execute'] == 'query-target': print('%s(target) %s' % (dumpprefix, c['rep']['return']['arch'])) + c['processed'] = True if c['cmd']['execute'] == 'query-kvm': print('%s(kvm) present:%s enabled:%s' % (dumpprefix, c['rep']['return']['present'], c['rep']['return']['enabled'])) + c['processed'] = True if c['cmd']['execute'] == 'query-command-line-options': dump_command_line_options(c, dumpprefix) + c['processed'] = True + + +# dumps the parts of the .replies file which are not handled by the various dump_ +# helpers +def dump_unprocessed(conv): + actual = '' + + for c in conv: + if 'processed' in c and c['processed'] is True: + continue + + # skip stuf not making sense to be processed: + # 'qmp_capabilities' - startup of QMP, no interesting data + # 'query-cpu-model-expansion' - too host dependant, nothing relevant + if c['cmd']['execute'] in ['qmp_capabilities', 'query-cpu-model-expansion']: + continue + + # skip commands not having successful return + if 'return' not in c['rep']: + continue + + actual += json.dumps(c['cmd'], indent=2) + '\n\n' + json.dumps(c['rep'], indent=2) + + if actual != '': + for line in actual.split('\n'): + print('(unprocessed) ' + line) def process_one(filename, args): @@ -551,6 +597,7 @@ def process_one(filename, args): if args.dump_all or args.dump_qmp_query_strings: dump_qmp_probe_strings(c['rep']['return'], dumpprefix) + c['processed'] = True dumped = True if args.dump_all: @@ -560,6 +607,10 @@ def process_one(filename, args): dump_machine_types(conv, dumpprefix) dumped = True + if args.dump_unprocessed: + dump_unprocessed(conv) + dumped = True + if dumped: return True @@ -635,6 +686,10 @@ parser.add_argument('--dump-all', action='store_true', parser.add_argument('--dump-qmp-query-strings', action='store_true', help='dump QMP schema in form of query strings used to probe capabilities') + +parser.add_argument('--dump-unprocessed', action='store_true', + help='dump JSON of commands unprocessed by any of the --dump-* options') + args = parser.parse_args() files = [] -- 2.51.0