[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [PATCH v3 11/15] qemu_iotests: allow valgrind to read/delete the gen
From: |
Max Reitz |
Subject: |
Re: [PATCH v3 11/15] qemu_iotests: allow valgrind to read/delete the generated log file |
Date: |
Fri, 30 Apr 2021 15:17:45 +0200 |
User-agent: |
Mozilla/5.0 (X11; Linux x86_64; rv:78.0) Gecko/20100101 Thunderbird/78.8.1 |
On 14.04.21 19:03, Emanuele Giuseppe Esposito wrote:
When using -valgrind on the script tests, it generates a log file
in $TEST_DIR that is either read (if valgrind finds problems) or
otherwise deleted. Provide the same exact behavior when using
-valgrind on the python tests.
Signed-off-by: Emanuele Giuseppe Esposito <eesposit@redhat.com>
---
tests/qemu-iotests/iotests.py | 20 ++++++++++++++++++++
1 file changed, 20 insertions(+)
diff --git a/tests/qemu-iotests/iotests.py b/tests/qemu-iotests/iotests.py
index 94597433fa..aef67e3a86 100644
--- a/tests/qemu-iotests/iotests.py
+++ b/tests/qemu-iotests/iotests.py
@@ -600,6 +600,26 @@ def __init__(self, path_suffix=''):
sock_dir=sock_dir)
self._num_drives = 0
+ def subprocess_check_valgrind(self, valgrind) -> None:
A type annotation would be nice. (I.e. List[str], or we make it a bool
and the caller uses bool(qemu_valgrind).)
+
I’d drop this empty line.
+ if not valgrind:
+ return
+
+ valgrind_filename = test_dir + "/" + str(self._popen.pid) +
".valgrind"
mypy (iotest 297) complains that _popen is Optional[], so .pid might not
exist. Perhaps this should be safeguarded in the "if not valgrind"
condition (i.e. "if not valgrind or not self._popen").
Also, pylint complains about the line being too long (79 is the maximum
length). Can be fixed with an f-string:
valgrind_filename = f"{test_dir}/{self._popen.pid}.valgrind"
+
+ if self.exitcode() == 99:
+ with open(valgrind_filename) as f:
+ content = f.readlines()
+ for line in content:
+ print(line, end ="")
'end=""' would be better, I think. (flake8 complains.)
Also, would this be better as:
with open(valgrind_filename) as f:
for line in f.readlines():
print(line, end="")
?
(Or just
with open(valgrind_filename) as f:
print(f.read())
– wouldn’t that work, too?)
Max
+ print("")
+ else:
+ os.remove(valgrind_filename)
+
+ def _post_shutdown(self) -> None:
+ super()._post_shutdown()
+ self.subprocess_check_valgrind(qemu_valgrind)
+
def add_object(self, opts):
self._args.append('-object')
self._args.append(opts)
- Re: [PATCH v3 10/15] qemu_iotests: extent QMP socket timeout when using valgrind, (continued)
- [PATCH v3 09/15] qemu_iotests: extend the check script to support valgrind for python tests, Emanuele Giuseppe Esposito, 2021/04/14
- [PATCH v3 13/15] docs/devel/testing: add -valgrind option to the debug section of QEMU iotests, Emanuele Giuseppe Esposito, 2021/04/14
- [PATCH v3 12/15] qemu_iotests: insert valgrind command line as wrapper for qemu binary, Emanuele Giuseppe Esposito, 2021/04/14
- [PATCH v3 15/15] docs/devel/testing: add -p option to the debug section of QEMU iotests, Emanuele Giuseppe Esposito, 2021/04/14
- [PATCH v3 11/15] qemu_iotests: allow valgrind to read/delete the generated log file, Emanuele Giuseppe Esposito, 2021/04/14
- Re: [PATCH v3 11/15] qemu_iotests: allow valgrind to read/delete the generated log file,
Max Reitz <=
- [PATCH v3 14/15] qemu_iotests: add option to show qemu binary logs on stdout, Emanuele Giuseppe Esposito, 2021/04/14