GitLab: https://gitlab.com/jsnow/qemu/-/commits/iotests_qemu_io_diagnostics
Howdy, This series does for qemu_io() what we've done for qemu_img() and makes it a function that checks the return code by default and raises an Exception when things do not go according to plan. This series removes qemu_io_pipe_and_status(), qemu_io_silent(), and qemu_io_silent_check() in favor of just qemu_io(). V3: - Rebased - Squashed the patches that I said I would Note: check-tox job will fail right now, it's unrelated to this series; see https://lists.gnu.org/archive/html/qemu-devel/2022-03/msg07149.html V2: - Fixed 040 - Fixed 245 on tmpfs - Fixed tests/image-fleecing - I expect to respin a v3 to: (A) Fix the commit message on the 040 fix (B) Squash patches 7-12. Notes: - There are a few remaining uses of qemu-io that don't go through qemu_io; QemuIoInteractive is a user that is used in 205, 298, 299, and 307. It ... did not appear worth it to morph qemu_tool_popen into something that could be used by both QemuIoInteractive *and* qemu_io(), so I left it alone. It's probably fine for now. (But it does bother me, a little.) - qemu_io_popen itself is used by the nbd-reconnect-on-open test, and it seems like a legitimate use -- it wants concurrency. Like the above problem, I couldn't find a way to bring it into the fold, so I didn't. (Meh.) I eventually plan to add asyncio subprocess management to machine.py, and I could tackle stuff like this then. It's not worth it now. (Maybe I'll bring these in under the fold the next time I get bored, but I think it's not worth the trouble right now, there are very few users. I did try, but the benefit to VerboseProcessError is that it includes stdout/stderr. When using Popen with pipes you lose access to that information in the management context. Popen does not natively buffer stdout/stderr, so we'd have to fall back to just using a regular CalledProcessError. I think I'd have to extend Popen and add buffering. I think that's something for later.) (I tried doing the above and it's definitely more hassle than it's worth right now.) John Snow (12): iotests: replace calls to log(qemu_io(...)) with qemu_io_log() iotests/163: Fix broken qemu-io invocation iotests: Don't check qemu_io() output for specific error strings iotests/040: Don't check image pattern on zero-length image iotests/040: Fix TestCommitWithFilters test iotests: create generic qemu_tool() function iotests: rebase qemu_io() on top of qemu_tool() iotests/migration-permissions: use assertRaises() for qemu_io() negative test iotests/image-fleecing: switch to qemu_io() iotests: remove qemu_io_pipe_and_status() iotests: remove qemu_io_silent() and qemu_io_silent_check(). iotests: make qemu_io_log() check return codes by default tests/qemu-iotests/030 | 85 +++++++++++-------- tests/qemu-iotests/040 | 53 +++++++----- tests/qemu-iotests/056 | 2 +- tests/qemu-iotests/149 | 6 +- tests/qemu-iotests/163 | 5 +- tests/qemu-iotests/205 | 4 +- tests/qemu-iotests/216 | 12 +-- tests/qemu-iotests/218 | 5 +- tests/qemu-iotests/224 | 4 +- tests/qemu-iotests/242 | 6 +- tests/qemu-iotests/245 | 17 ++-- tests/qemu-iotests/255 | 4 +- tests/qemu-iotests/258 | 11 ++- tests/qemu-iotests/298 | 15 ++-- tests/qemu-iotests/303 | 4 +- tests/qemu-iotests/310 | 22 ++--- tests/qemu-iotests/iotests.py | 69 ++++++++------- tests/qemu-iotests/tests/image-fleecing | 30 ++++--- .../qemu-iotests/tests/migration-permissions | 28 +++--- .../tests/mirror-ready-cancel-error | 2 +- .../qemu-iotests/tests/nbd-reconnect-on-open | 2 +- .../qemu-iotests/tests/stream-error-on-reset | 4 +- 22 files changed, 210 insertions(+), 180 deletions(-) -- 2.34.1