qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [PATCH v2 00/17] Switch iotests to using Async QMP


From: John Snow
Subject: Re: [PATCH v2 00/17] Switch iotests to using Async QMP
Date: Wed, 6 Oct 2021 11:01:35 -0400



On Wed, Oct 6, 2021 at 6:14 AM Paolo Bonzini <pbonzini@redhat.com> wrote:
On 23/09/21 02:49, John Snow wrote:
> Based-on: <20210915162955.333025-1-jsnow@redhat.com>
>            [PATCH v4 00/27] python: introduce Asynchronous QMP package
> GitLab: https://gitlab.com/jsnow/qemu/-/commits/python-aqmp-iotest-wrapper
> CI: https://gitlab.com/jsnow/qemu/-/pipelines/375637927
>
> Hiya,
>
> This series continues where the first AQMP series left off and adds a
> synchronous 'legacy' wrapper around the new AQMP interface, then drops
> it straight into iotests to prove that AQMP is functional and totally
> cool and fine. The disruption and churn to iotests is extremely minimal.
> (There's actually a net negative SLOC in tests/qemu-iotests.)
>
> In the event that a regression happens and I am not physically proximate
> to inflict damage upon, one may set the QEMU_PYTHON_LEGACY_QMP variable
> to any non-empty string as it pleases you to engage the QMP machinery
> you are used to.
>
> I'd like to try and get this committed early in the 6.2 development
> cycle to give ample time to smooth over any possible regressions. I've
> tested it locally and via gitlab CI, across Python versions 3.6 through
> 3.10, and "worksforme". If something bad happens, we can revert the
> actual switch-flip very trivially.
>
> Layout:
>
> Patches 1-7: ./python/qemu/aqmp changes that serve as pre-requisites.
> Patches 8-12: other ./python changes that ease the transition.
> Patches 13-14: iotest changes to support the new QMP backend.
> Patches 15-17: Make the switch.
>
> V2:
>
> 001/17:[----] [--] 'python/aqmp: add greeting property to QMPClient'
> 002/17:[----] [--] 'python/aqmp: add .empty() method to EventListener'
> 003/17:[----] [--] 'python/aqmp: Return cleared events from EventListener.clear()'
> 004/17:[0007] [FC] 'python/aqmp: add send_fd_scm'
> 005/17:[down] 'python/aqmp: Add dict conversion method to Greeting object'
> 006/17:[down] 'python/aqmp: Reduce severity of EOFError-caused loop terminations'
> 007/17:[down] 'python/aqmp: Disable logging messages by default'
>
> 008/17:[0002] [FC] 'python/qmp: clear events on get_events() call'
> 009/17:[----] [--] 'python/qmp: add send_fd_scm directly to QEMUMonitorProtocol'
> 010/17:[----] [--] 'python, iotests: remove socket_scm_helper'
> 011/17:[0013] [FC] 'python/machine: remove has_quit argument'
> 012/17:[down] 'python/machine: Handle QMP errors on close more meticulously'
>
> 013/17:[0009] [FC] 'iotests: Accommodate async QMP Exception classes'
> 014/17:[down] 'iotests: Conditionally silence certain AQMP errors'
>
> 015/17:[0016] [FC] 'python/aqmp: Create sync QMP wrapper for iotests'
> 016/17:[0002] [FC] 'python/aqmp: Remove scary message'
> 017/17:[----] [--] 'python, iotests: replace qmp with aqmp'
>
> - Rebased on jsnow/python, which was recently rebased on origin/master.
> - Make aqmp's send_fd_scm method bark if the socket isn't AF_UNIX (Hanna)
> - Uh... modify send_fd_scm so it doesn't break when Python 3.11 comes out ...
>    See the commit message for more detail.
> - Drop the "python/aqmp: Create MessageModel and StandaloneModel class"
>    patch and replace with a far simpler method that just adds an
>    _asdict() method.
> - Add patches 06 and 07 to change how the AQMP library handles logging.
> - Adjust docstring in patch 08 (Hanna)
> - Rename "_has_quit" attribute to "_quid_issued" (Hanna)
> - Renamed patch 12, simplified the logic in _soft_shutdown a tiny bit.
> - Fixed bad exception handling logic in 13 (Hanna)
> - Introduce a helper in patch 14 to silence log output when it's unwanted.
> - Small addition of _get_greeting() helper in patch 15, coinciding with the
>    new patch 05 here.
> - Contextual changes in 16.
>
> John Snow (17):
>    python/aqmp: add greeting property to QMPClient
>    python/aqmp: add .empty() method to EventListener
>    python/aqmp: Return cleared events from EventListener.clear()
>    python/aqmp: add send_fd_scm
>    python/aqmp: Add dict conversion method to Greeting object
>    python/aqmp: Reduce severity of EOFError-caused loop terminations
>    python/aqmp: Disable logging messages by default
>    python/qmp: clear events on get_events() call
>    python/qmp: add send_fd_scm directly to QEMUMonitorProtocol
>    python, iotests: remove socket_scm_helper
>    python/machine: remove has_quit argument
>    python/machine: Handle QMP errors on close more meticulously
>    iotests: Accommodate async QMP Exception classes
>    iotests: Conditionally silence certain AQMP errors
>    python/aqmp: Create sync QMP wrapper for iotests
>    python/aqmp: Remove scary message
>    python, iotests: replace qmp with aqmp
>
>   tests/qemu-iotests/socket_scm_helper.c    | 136 ----------------------
>   python/qemu/aqmp/__init__.py              |  14 +--
>   python/qemu/aqmp/events.py                |  15 ++-
>   python/qemu/aqmp/legacy.py                | 135 +++++++++++++++++++++
>   python/qemu/aqmp/models.py                |  13 +++
>   python/qemu/aqmp/protocol.py              |   7 +-
>   python/qemu/aqmp/qmp_client.py            |  27 +++++
>   python/qemu/machine/machine.py            | 133 +++++++++++----------
>   python/qemu/machine/qtest.py              |   2 -
>   python/qemu/qmp/__init__.py               |  27 +++--
>   python/qemu/qmp/qmp_shell.py              |   1 -
>   scripts/simplebench/bench_block_job.py    |   3 +-
>   tests/Makefile.include                    |   1 -
>   tests/meson.build                         |   4 -
>   tests/qemu-iotests/040                    |   7 +-
>   tests/qemu-iotests/218                    |   2 +-
>   tests/qemu-iotests/255                    |   2 +-
>   tests/qemu-iotests/iotests.py             |  23 +++-
>   tests/qemu-iotests/meson.build            |   5 -
>   tests/qemu-iotests/testenv.py             |   8 +-
>   tests/qemu-iotests/tests/mirror-top-perms |  12 +-
>   21 files changed, 315 insertions(+), 262 deletions(-)
>   delete mode 100644 tests/qemu-iotests/socket_scm_helper.c
>   create mode 100644 python/qemu/aqmp/legacy.py
>   delete mode 100644 tests/qemu-iotests/meson.build
>

Reviewed-by: Paolo Bonzini <pbonzini@redhat.com>

apart from the name nit in patch 15.  I would really like this to go in
and get rid of socket_scm_helper.c!

Paolo


Got a thumbs up from Hanna on IRC to stage patches 1-10 myself. I'll leave patches 11-17 for further scrutiny.

so, patches 1-10: staged to my Python branch.

https://gitlab.com/jsnow/qemu/-/commits/python

thanks!

--js

reply via email to

[Prev in Thread] Current Thread [Next in Thread]