All of lore.kernel.org
 help / color / mirror / Atom feed
From: Vladimir Sementsov-Ogievskiy <vsementsov@virtuozzo.com>
To: Emanuele Giuseppe Esposito <eesposit@redhat.com>, qemu-block@nongnu.org
Cc: John Snow <jsnow@redhat.com>, Cleber Rosa <crosa@redhat.com>,
	Eduardo Habkost <ehabkost@redhat.com>,
	Kevin Wolf <kwolf@redhat.com>, Max Reitz <mreitz@redhat.com>,
	Paolo Bonzini <pbonzini@redhat.com>,
	qemu-devel@nongnu.org
Subject: Re: [PATCH v5 10/16] qemu-iotests: extend the check script to prepare supporting valgrind for python tests
Date: Sat, 5 Jun 2021 22:19:16 +0300	[thread overview]
Message-ID: <3d53d144-dca3-ccf8-ecf7-79103f39eb81@virtuozzo.com> (raw)
In-Reply-To: <4fec3474-e3e0-6f7d-eec8-bef25738ef2e@redhat.com>

05.06.2021 20:38, Emanuele Giuseppe Esposito wrote:
> 
> 
> On 05/06/2021 15:28, Vladimir Sementsov-Ogievskiy wrote:
>> 04.06.2021 12:17, 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 valgrind
>>> 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.
>>>
>>> Signed-off-by: Emanuele Giuseppe Esposito <eesposit@redhat.com>
>>> Reviewed-by: Max Reitz <mreitz@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 1dba4218c0..e6aa110715 100755
>>> --- a/tests/qemu-iotests/check
>>> +++ b/tests/qemu-iotests/check
>>> @@ -39,6 +39,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'],
>>> @@ -88,9 +92,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 c547e8c07b..3fa1bd0ab5 100644
>>> --- a/tests/qemu-iotests/iotests.py
>>> +++ b/tests/qemu-iotests/iotests.py
>>> @@ -96,6 +96,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":
>>
>> Hmm, interesting, why do you need additional NO_VALGRIND variable
> 
> To maintain consistency with the bash tests, where we have:
> 
> # Valgrind bug #409141 https://bugs.kde.org/show_bug.cgi?id=409141
> # Until valgrind 3.16+ is ubiquitous, we must work around a hang in
> # valgrind when issuing sigkill. Disable valgrind for this invocation.
> _NO_VALGRIND()
> {
>      NO_VALGRIND="y" "$@"
> }
> 

A, hm, I see it in bash tests. So, it's intended to not set by user but by test.. But I doubt that python test will want to set environment variable to disable valgrind. Most probably they will want to set some valgrind_supported=False near supported_fmts=['qcow2']. So, we'll need valgrind_supported argument for execute_setup_common. But no reason to implement it until we don't need.

> 
>>
>>> +    valgrind_logfile = "--log-file=" + test_dir
>>> +    # %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 8501c6caf5..8bf154376f 100644
>>> --- a/tests/qemu-iotests/testenv.py
>>> +++ b/tests/qemu-iotests/testenv.py
>>> @@ -298,6 +298,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())
>>>
>>
>>
>>
>> Reviewed-by: Vladimir Sementsov-Ogievskiy <vsementsov@virtuozzo.com>
>>
> 


-- 
Best regards,
Vladimir


  reply	other threads:[~2021-06-05 19:20 UTC|newest]

Thread overview: 27+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-06-04  9:17 [PATCH v5 00/16] qemu_iotests: improve debugging options Emanuele Giuseppe Esposito
2021-06-04  9:17 ` [PATCH v5 01/16] python: qemu: add timer parameter for qmp.accept socket Emanuele Giuseppe Esposito
2021-06-04  9:17 ` [PATCH v5 02/16] python: Reduce strictness of pylint's duplicate-code check Emanuele Giuseppe Esposito
2021-06-05 13:30   ` Vladimir Sementsov-Ogievskiy
2021-06-04  9:17 ` [PATCH v5 03/16] python: qemu: pass the wrapper field from QEMUQtestmachine to QEMUMachine Emanuele Giuseppe Esposito
2021-06-04  9:17 ` [PATCH v5 04/16] docs/devel/testing: add debug section to the QEMU iotests chapter Emanuele Giuseppe Esposito
2021-06-04  9:17 ` [PATCH v5 05/16] qemu-iotests: add option to attach gdbserver Emanuele Giuseppe Esposito
2021-06-04  9:17 ` [PATCH v5 06/16] qemu-iotests: delay QMP socket timers Emanuele Giuseppe Esposito
2021-06-14 10:36   ` Emanuele Giuseppe Esposito
2021-06-15  7:57     ` Vladimir Sementsov-Ogievskiy
2021-06-16  7:09       ` Emanuele Giuseppe Esposito
2021-06-16  9:39         ` Vladimir Sementsov-Ogievskiy
2021-06-04  9:17 ` [PATCH v5 07/16] qemu_iotests: insert gdbserver command line as wrapper for qemu binary Emanuele Giuseppe Esposito
2021-06-04  9:17 ` [PATCH v5 08/16] qemu-iotests: add gdbserver option to script tests too Emanuele Giuseppe Esposito
2021-06-04  9:17 ` [PATCH v5 09/16] docs/devel/testing: add --gdb option to the debugging section of QEMU iotests Emanuele Giuseppe Esposito
2021-06-05 13:22   ` Vladimir Sementsov-Ogievskiy
2021-06-04  9:17 ` [PATCH v5 10/16] qemu-iotests: extend the check script to prepare supporting valgrind for python tests Emanuele Giuseppe Esposito
2021-06-05 13:28   ` Vladimir Sementsov-Ogievskiy
2021-06-05 17:38     ` Emanuele Giuseppe Esposito
2021-06-05 19:19       ` Vladimir Sementsov-Ogievskiy [this message]
2021-06-04  9:17 ` [PATCH v5 11/16] qemu-iotests: extend QMP socket timeout when using valgrind Emanuele Giuseppe Esposito
2021-06-04  9:17 ` [PATCH v5 12/16] qemu-iotests: allow valgrind to read/delete the generated log file Emanuele Giuseppe Esposito
2021-06-04  9:17 ` [PATCH v5 13/16] qemu-iotests: insert valgrind command line as wrapper for qemu binary Emanuele Giuseppe Esposito
2021-06-04  9:17 ` [PATCH v5 14/16] docs/devel/testing: add --valgrind option to the debug section of QEMU iotests Emanuele Giuseppe Esposito
2021-06-04  9:17 ` [PATCH v5 15/16] qemu-iotests: add option to show qemu binary logs on stdout Emanuele Giuseppe Esposito
2021-06-04  9:17 ` [PATCH v5 16/16] docs/devel/testing: add -p option to the debug section of QEMU iotests Emanuele Giuseppe Esposito
2021-06-14  8:48 ` [PATCH v5 00/16] qemu_iotests: improve debugging options Emanuele Giuseppe Esposito

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=3d53d144-dca3-ccf8-ecf7-79103f39eb81@virtuozzo.com \
    --to=vsementsov@virtuozzo.com \
    --cc=crosa@redhat.com \
    --cc=eesposit@redhat.com \
    --cc=ehabkost@redhat.com \
    --cc=jsnow@redhat.com \
    --cc=kwolf@redhat.com \
    --cc=mreitz@redhat.com \
    --cc=pbonzini@redhat.com \
    --cc=qemu-block@nongnu.org \
    --cc=qemu-devel@nongnu.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.