[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PULL 10/24] iotests: add hmp helper with logging
From: |
Max Reitz |
Subject: |
[PULL 10/24] iotests: add hmp helper with logging |
Date: |
Tue, 5 May 2020 14:58:12 +0200 |
From: John Snow <address@hidden>
Minor cleanup for HMP functions; helps with line length and consolidates
HMP helpers through one implementation function.
Although we are adding a universal toggle to turn QMP logging on or off,
many existing callers to hmp functions don't expect that output to be
logged, which causes quite a few changes in the test output.
For now, offer a use_log parameter.
Typing notes:
QMPResponse is just an alias for Dict[str, Any]. It holds no special
meanings and it is not a formal subtype of Dict[str, Any]. It is best
thought of as a lexical synonym.
We may well wish to add stricter subtypes in the future for certain
shapes of data that are not formalized as Python objects, at which point
we can simply retire the alias and allow mypy to more strictly check
usages of the name.
Signed-off-by: John Snow <address@hidden>
Message-Id: <address@hidden>
Reviewed-by: Max Reitz <address@hidden>
Reviewed-by: Kevin Wolf <address@hidden>
Signed-off-by: Max Reitz <address@hidden>
---
tests/qemu-iotests/iotests.py | 39 +++++++++++++++++++++--------------
1 file changed, 24 insertions(+), 15 deletions(-)
diff --git a/tests/qemu-iotests/iotests.py b/tests/qemu-iotests/iotests.py
index 9f5da32dae..cf10c428b5 100644
--- a/tests/qemu-iotests/iotests.py
+++ b/tests/qemu-iotests/iotests.py
@@ -37,6 +37,10 @@ from qemu import qtest
assert sys.version_info >= (3, 6)
+# Type Aliases
+QMPResponse = Dict[str, Any]
+
+
faulthandler.enable()
# This will not work if arguments contain spaces but is necessary if we
@@ -541,25 +545,30 @@ class VM(qtest.QEMUQtestMachine):
self._args.append(addr)
return self
- def pause_drive(self, drive, event=None):
- '''Pause drive r/w operations'''
+ def hmp(self, command_line: str, use_log: bool = False) -> QMPResponse:
+ cmd = 'human-monitor-command'
+ kwargs = {'command-line': command_line}
+ if use_log:
+ return self.qmp_log(cmd, **kwargs)
+ else:
+ return self.qmp(cmd, **kwargs)
+
+ def pause_drive(self, drive: str, event: Optional[str] = None) -> None:
+ """Pause drive r/w operations"""
if not event:
self.pause_drive(drive, "read_aio")
self.pause_drive(drive, "write_aio")
return
- self.qmp('human-monitor-command',
- command_line='qemu-io %s "break %s bp_%s"'
- % (drive, event, drive))
-
- def resume_drive(self, drive):
- self.qmp('human-monitor-command',
- command_line='qemu-io %s "remove_break bp_%s"'
- % (drive, drive))
-
- def hmp_qemu_io(self, drive, cmd):
- '''Write to a given drive using an HMP command'''
- return self.qmp('human-monitor-command',
- command_line='qemu-io %s "%s"' % (drive, cmd))
+ self.hmp(f'qemu-io {drive} "break {event} bp_{drive}"')
+
+ def resume_drive(self, drive: str) -> None:
+ """Resume drive r/w operations"""
+ self.hmp(f'qemu-io {drive} "remove_break bp_{drive}"')
+
+ def hmp_qemu_io(self, drive: str, cmd: str,
+ use_log: bool = False) -> QMPResponse:
+ """Write to a given drive using an HMP command"""
+ return self.hmp(f'qemu-io {drive} "{cmd}"', use_log=use_log)
def flatten_qmp_object(self, obj, output=None, basestr=''):
if output is None:
--
2.26.2
- [PULL 00/24] Block patches, Max Reitz, 2020/05/05
- [PULL 03/24] iotests: ignore import warnings from pylint, Max Reitz, 2020/05/05
- [PULL 02/24] iotests: don't use 'format' for drive_add, Max Reitz, 2020/05/05
- [PULL 04/24] iotests: replace mutable list default args, Max Reitz, 2020/05/05
- [PULL 06/24] iotests: alphabetize standard imports, Max Reitz, 2020/05/05
- [PULL 05/24] iotests: add pylintrc file, Max Reitz, 2020/05/05
- [PULL 07/24] iotests: drop pre-Python 3.4 compatibility code, Max Reitz, 2020/05/05
- [PULL 01/24] iotests: do a light delinting, Max Reitz, 2020/05/05
- [PULL 08/24] iotests: touch up log function signature, Max Reitz, 2020/05/05
- [PULL 10/24] iotests: add hmp helper with logging,
Max Reitz <=
- [PULL 12/24] iotest 258: use script_main, Max Reitz, 2020/05/05
- [PULL 11/24] iotests: add script_initialize, Max Reitz, 2020/05/05
- [PULL 13/24] iotests: Mark verify functions as private, Max Reitz, 2020/05/05
- [PULL 09/24] iotests: limit line length to 79 chars, Max Reitz, 2020/05/05
- [PULL 18/24] block: Comment cleanups, Max Reitz, 2020/05/05
- [PULL 14/24] iotests: use python logging for iotests.log(), Max Reitz, 2020/05/05
- [PULL 19/24] Fix iotest 153, Max Reitz, 2020/05/05
- [PULL 17/24] qcow2: Tweak comment about bitmaps vs. resize, Max Reitz, 2020/05/05
- [PULL 21/24] block/block-copy: alloc task on each iteration, Max Reitz, 2020/05/05
- [PULL 16/24] qcow2: Allow resize of images with internal snapshots, Max Reitz, 2020/05/05