[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PATCH v10 10/14] iotests: add hmp helper with logging
From: |
John Snow |
Subject: |
[PATCH v10 10/14] iotests: add hmp helper with logging |
Date: |
Mon, 30 Mar 2020 20:00:10 -0400 |
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>
---
tests/qemu-iotests/iotests.py | 35 ++++++++++++++++++++++-------------
1 file changed, 22 insertions(+), 13 deletions(-)
diff --git a/tests/qemu-iotests/iotests.py b/tests/qemu-iotests/iotests.py
index b08bcb87e1..dfc753c319 100644
--- a/tests/qemu-iotests/iotests.py
+++ b/tests/qemu-iotests/iotests.py
@@ -37,6 +37,10 @@
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
@@ -540,25 +544,30 @@ def add_incoming(self, addr):
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))
+ self.hmp(f'qemu-io {drive} "break {event} bp_{drive}"')
- def resume_drive(self, drive):
- self.qmp('human-monitor-command',
- command_line='qemu-io %s "remove_break bp_%s"'
- % (drive, 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, cmd):
- '''Write to a given drive using an HMP command'''
- return self.qmp('human-monitor-command',
- command_line='qemu-io %s "%s"' % (drive, cmd))
+ 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.21.1
- [PATCH v10 00/14] iotests: use python logging, John Snow, 2020/03/30
- [PATCH v10 02/14] iotests: don't use 'format' for drive_add, John Snow, 2020/03/30
- [PATCH v10 03/14] iotests: ignore import warnings from pylint, John Snow, 2020/03/30
- [PATCH v10 04/14] iotests: replace mutable list default args, John Snow, 2020/03/30
- [PATCH v10 08/14] iotests: touch up log function signature, John Snow, 2020/03/30
- [PATCH v10 06/14] iotests: alphabetize standard imports, John Snow, 2020/03/30
- [PATCH v10 09/14] iotests: limit line length to 79 chars, John Snow, 2020/03/30
- [PATCH v10 05/14] iotests: add pylintrc file, John Snow, 2020/03/30
- [PATCH v10 07/14] iotests: drop pre-Python 3.4 compatibility code, John Snow, 2020/03/30
- [PATCH v10 10/14] iotests: add hmp helper with logging,
John Snow <=
- [PATCH v10 13/14] iotests: Mark verify functions as private, John Snow, 2020/03/30
- [PATCH v10 01/14] iotests: do a light delinting, John Snow, 2020/03/30
- [PATCH v10 12/14] iotest 258: use script_main, John Snow, 2020/03/30
- [PATCH v10 11/14] iotests: add script_initialize, John Snow, 2020/03/30
- [PATCH v10 14/14] iotests: use python logging for iotests.log(), John Snow, 2020/03/30