Message ID | 20210520075236.44723-12-eesposit@redhat.com |
---|---|
State | New |
Headers | show |
Series | qemu_iotests: improve debugging options | expand |
20.05.2021 10:52, 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 | 16 ++++++++++++++++ > 1 file changed, 16 insertions(+) > > diff --git a/tests/qemu-iotests/iotests.py b/tests/qemu-iotests/iotests.py > index 5d75094ba6..a06284acad 100644 > --- a/tests/qemu-iotests/iotests.py > +++ b/tests/qemu-iotests/iotests.py > @@ -597,6 +597,22 @@ def __init__(self, path_suffix=''): > sock_dir=sock_dir, qmp_timer=timer) > self._num_drives = 0 > > + def subprocess_check_valgrind(self, valgrind: List[str]) -> None: For me just "check_valgrind" would be more intuitive. I think, you also can use qemu_valgrind global variable directly.. What is the reason for passing it as parameter? > + if not valgrind or not self._popen: > + return > + > + valgrind_filename = f"{test_dir}/{self._popen.pid}.valgrind" should we use os.path.join instead? I don't know.. And don't care, as I don't use windows anyway. Still os.path.join is used everywhere in the file except for has_working_luks() function.. So, you are going add another exception. > + > + if self.exitcode() == 99: > + with open(valgrind_filename) as f: > + print(f.read()) > + 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) > Reviewed-by: Vladimir Sementsov-Ogievskiy <vsementsov@virtuozzo.com>
diff --git a/tests/qemu-iotests/iotests.py b/tests/qemu-iotests/iotests.py index 5d75094ba6..a06284acad 100644 --- a/tests/qemu-iotests/iotests.py +++ b/tests/qemu-iotests/iotests.py @@ -597,6 +597,22 @@ def __init__(self, path_suffix=''): sock_dir=sock_dir, qmp_timer=timer) self._num_drives = 0 + def subprocess_check_valgrind(self, valgrind: List[str]) -> None: + if not valgrind or not self._popen: + return + + valgrind_filename = f"{test_dir}/{self._popen.pid}.valgrind" + + if self.exitcode() == 99: + with open(valgrind_filename) as f: + print(f.read()) + 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)
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 | 16 ++++++++++++++++ 1 file changed, 16 insertions(+)