Message ID | 20210520075236.44723-10-eesposit@redhat.com |
---|---|
State | New |
Headers | show |
Series | qemu_iotests: improve debugging options | expand |
20.05.2021 10:52, Emanuele Giuseppe Esposito wrote: > Currently, the check script only parses the option and sets the > VALGRIND_QEMU environmental variable to "y". > Add another local python variable that prepares the command line, > identical to the one provided in the test scripts. > > Because the python script does not know in advance the valgring > PID to assign to the log file name, use the "%p" flag in valgrind > log file name that automatically puts the process PID at runtime. > > Reviewed-by: Max Reitz <mreitz@redhat.com> > Signed-off-by: Emanuele Giuseppe Esposito <eesposit@redhat.com> > --- > tests/qemu-iotests/check | 7 ++++--- > tests/qemu-iotests/iotests.py | 11 +++++++++++ > tests/qemu-iotests/testenv.py | 1 + > 3 files changed, 16 insertions(+), 3 deletions(-) > > diff --git a/tests/qemu-iotests/check b/tests/qemu-iotests/check > index b9820fdaaf..2101cedfe3 100755 > --- a/tests/qemu-iotests/check > +++ b/tests/qemu-iotests/check > @@ -36,6 +36,10 @@ def make_argparser() -> argparse.ArgumentParser: > p.add_argument('-gdb', action='store_true', > help="start gdbserver with $GDB_OPTIONS options \ > ('localhost:12345' if $GDB_OPTIONS is empty)") > + p.add_argument('-valgrind', action='store_true', > + help='use valgrind, sets VALGRIND_QEMU environment ' > + 'variable') > + > p.add_argument('-misalign', action='store_true', > help='misalign memory allocations') > p.add_argument('--color', choices=['on', 'off', 'auto'], > @@ -86,9 +90,6 @@ def make_argparser() -> argparse.ArgumentParser: > g_bash.add_argument('-o', dest='imgopts', > help='options to pass to qemu-img create/convert, ' > 'sets IMGOPTS environment variable') > - g_bash.add_argument('-valgrind', action='store_true', > - help='use valgrind, sets VALGRIND_QEMU environment ' > - 'variable') > > g_sel = p.add_argument_group('test selecting options', > 'The following options specify test set ' > diff --git a/tests/qemu-iotests/iotests.py b/tests/qemu-iotests/iotests.py > index c9628e6828..41462a80fc 100644 > --- a/tests/qemu-iotests/iotests.py > +++ b/tests/qemu-iotests/iotests.py > @@ -97,6 +97,17 @@ > sys.stderr.write('Please run this test via the "check" script\n') > sys.exit(os.EX_USAGE) > > +qemu_valgrind = [] > +if os.environ.get('VALGRIND_QEMU') == "y" and \ > + os.environ.get('NO_VALGRIND') != "y": > + valgrind_logfile = "--log-file=" + test_dir.strip() a bit strange that you need to strip test_dir here.. Why? > + # %p allows to put the valgrind process PID, since > + # we don't know it a priori (subprocess.Popen is > + # not yet invoked) > + valgrind_logfile += "/%p.valgrind" > + > + qemu_valgrind = ['valgrind', valgrind_logfile, '--error-exitcode=99'] > + > socket_scm_helper = os.environ.get('SOCKET_SCM_HELPER', 'socket_scm_helper') > > luks_default_secret_object = 'secret,id=keysec0,data=' + \ > diff --git a/tests/qemu-iotests/testenv.py b/tests/qemu-iotests/testenv.py > index 49ddd586ef..319d29cb0c 100644 > --- a/tests/qemu-iotests/testenv.py > +++ b/tests/qemu-iotests/testenv.py > @@ -282,6 +282,7 @@ def print_env(self) -> None: > SOCK_DIR -- {SOCK_DIR} > SOCKET_SCM_HELPER -- {SOCKET_SCM_HELPER} > GDB_OPTIONS -- {GDB_OPTIONS} > +VALGRIND_QEMU -- {VALGRIND_QEMU} > """ > > args = collections.defaultdict(str, self.get_env()) > commit subject sais "support valgrind", but actually we only add a variable. valgrind is not actually used yet.. I'd reflect it in commit subject somehow
>> sys.exit(os.EX_USAGE) >> +qemu_valgrind = [] >> +if os.environ.get('VALGRIND_QEMU') == "y" and \ >> + os.environ.get('NO_VALGRIND') != "y": >> + valgrind_logfile = "--log-file=" + test_dir.strip() > > a bit strange that you need to strip test_dir here.. Why? Yep, it's unnecessary >> +VALGRIND_QEMU -- {VALGRIND_QEMU} >> """ >> args = collections.defaultdict(str, self.get_env()) >> > > commit subject sais "support valgrind", but actually we only add a > variable. valgrind is not actually used yet.. I'd reflect it in commit > subject somehow > will replace with "prepare supporting" Emanuele
diff --git a/tests/qemu-iotests/check b/tests/qemu-iotests/check index b9820fdaaf..2101cedfe3 100755 --- a/tests/qemu-iotests/check +++ b/tests/qemu-iotests/check @@ -36,6 +36,10 @@ def make_argparser() -> argparse.ArgumentParser: p.add_argument('-gdb', action='store_true', help="start gdbserver with $GDB_OPTIONS options \ ('localhost:12345' if $GDB_OPTIONS is empty)") + p.add_argument('-valgrind', action='store_true', + help='use valgrind, sets VALGRIND_QEMU environment ' + 'variable') + p.add_argument('-misalign', action='store_true', help='misalign memory allocations') p.add_argument('--color', choices=['on', 'off', 'auto'], @@ -86,9 +90,6 @@ def make_argparser() -> argparse.ArgumentParser: g_bash.add_argument('-o', dest='imgopts', help='options to pass to qemu-img create/convert, ' 'sets IMGOPTS environment variable') - g_bash.add_argument('-valgrind', action='store_true', - help='use valgrind, sets VALGRIND_QEMU environment ' - 'variable') g_sel = p.add_argument_group('test selecting options', 'The following options specify test set ' diff --git a/tests/qemu-iotests/iotests.py b/tests/qemu-iotests/iotests.py index c9628e6828..41462a80fc 100644 --- a/tests/qemu-iotests/iotests.py +++ b/tests/qemu-iotests/iotests.py @@ -97,6 +97,17 @@ sys.stderr.write('Please run this test via the "check" script\n') sys.exit(os.EX_USAGE) +qemu_valgrind = [] +if os.environ.get('VALGRIND_QEMU') == "y" and \ + os.environ.get('NO_VALGRIND') != "y": + valgrind_logfile = "--log-file=" + test_dir.strip() + # %p allows to put the valgrind process PID, since + # we don't know it a priori (subprocess.Popen is + # not yet invoked) + valgrind_logfile += "/%p.valgrind" + + qemu_valgrind = ['valgrind', valgrind_logfile, '--error-exitcode=99'] + socket_scm_helper = os.environ.get('SOCKET_SCM_HELPER', 'socket_scm_helper') luks_default_secret_object = 'secret,id=keysec0,data=' + \ diff --git a/tests/qemu-iotests/testenv.py b/tests/qemu-iotests/testenv.py index 49ddd586ef..319d29cb0c 100644 --- a/tests/qemu-iotests/testenv.py +++ b/tests/qemu-iotests/testenv.py @@ -282,6 +282,7 @@ def print_env(self) -> None: SOCK_DIR -- {SOCK_DIR} SOCKET_SCM_HELPER -- {SOCKET_SCM_HELPER} GDB_OPTIONS -- {GDB_OPTIONS} +VALGRIND_QEMU -- {VALGRIND_QEMU} """ args = collections.defaultdict(str, self.get_env())