|
From: | Philippe Mathieu-Daudé |
Subject: | Re: [PATCH v2 10/29] python/qemu: Add binutils::binary_get_qom_implementations() |
Date: | Fri, 7 Feb 2020 15:33:00 +0100 |
User-agent: | Mozilla/5.0 (X11; Linux x86_64; rv:68.0) Gecko/20100101 Thunderbird/68.4.1 |
On 2/7/20 3:28 PM, Liam Merwick wrote:
On 29/01/2020 21:23, Philippe Mathieu-Daudé wrote:Since QEMU binaries can be built with various configurations, the list of QOM objects linked can vary. Add a helper to query the list of all QOM types implementing a particular interface. Signed-off-by: Philippe Mathieu-Daudé <address@hidden> --- python/qemu/binutils.py | 20 ++++++++++++++++++++ tests/acceptance/core_scripts.py | 10 ++++++++++ 2 files changed, 30 insertions(+) diff --git a/python/qemu/binutils.py b/python/qemu/binutils.py index 7bb57c521b..76f256f5d2 100644 --- a/python/qemu/binutils.py +++ b/python/qemu/binutils.py @@ -66,3 +66,23 @@ def binary_get_machines(qemu_bin): LOG.info(res) vm.shutdown() return [m['name'] for m in res] ++def binary_get_qom_implementations(qemu_bin, type_name, include_abstract=False):+ ''' + Get list of QOM types implementing a particular interface + + @param qemu_bin (str): path to the QEMU binary + @param type_name (str): QOM interface name+ @param include_abstract (bool): if True, abstract interfaces are also+ returned in the list + @return list of QOM types implementing the interface @type_name + ''' + with QEMUMachine(qemu_bin) as vm: + vm.set_machine('none') + vm.launch() + res = vm.command('qom-list-types', + implements=type_name, + abstract=include_abstract) + LOG.info(res) + vm.shutdown()Based on Wainer's comment on patch3 - is this vm.shutdown() needed?
Nop.
otherwise Reviewed-by: Liam Merwick <address@hidden>
Thanks :)
+ return [m['name'] for m in res]diff --git a/tests/acceptance/core_scripts.py b/tests/acceptance/core_scripts.pyindex a5b112f928..c2fe4acf1d 100644 --- a/tests/acceptance/core_scripts.py +++ b/tests/acceptance/core_scripts.py@@ -18,6 +18,7 @@ sys.path.append(os.path.join(os.path.dirname(__file__), '..', '..', 'python'))from avocado_qemu import Test from qemu.binutils import binary_get_arch from qemu.binutils import binary_get_machines +from qemu.binutils import binary_get_qom_implementations from qemu.binutils import binary_get_version @@ -49,3 +50,12 @@ class PythonQemuCoreScripts(Test): logger.debug('machine: {}'.format(m)) # The 'none' machine is always available self.assertIn('none', machines) + + def test_get_qom_implementation(self): + logger = logging.getLogger('core') + type_name = "accel" + type_impl = binary_get_qom_implementations(self.qemu_bin, + type_name, True) + for t in type_impl: + logger.debug('type: {}'.format(t)) + self.assertIn(type_name, type_impl)
[Prev in Thread] | Current Thread | [Next in Thread] |