From: Emanuele Giuseppe Esposito <eesposit@redhat.com>
To: John Snow <jsnow@redhat.com>, qemu-block@nongnu.org
Cc: Kevin Wolf <kwolf@redhat.com>,
Eduardo Habkost <ehabkost@redhat.com>,
qemu-devel@nongnu.org, Max Reitz <mreitz@redhat.com>,
Cleber Rosa <crosa@redhat.com>,
Paolo Bonzini <pbonzini@redhat.com>
Subject: Re: [PATCH v3 10/15] qemu_iotests: extent QMP socket timeout when using valgrind
Date: Tue, 18 May 2021 15:58:23 +0200 [thread overview]
Message-ID: <37fc7122-2bf3-a3a4-30cb-014ef8391f2e@redhat.com> (raw)
In-Reply-To: <c9d0ac91-4d22-a041-c2ca-bfe227fe57ad@redhat.com>
>> So the current plan I have for _qmp_timer is:
>>
>> - As Max suggested, move it in __init__ and check there for the
>> wrapper contents. If we need to block forever (gdb, valgrind), we set
>> it to None. Otherwise to 15 seconds. I think setting it always to None
>> is not ideal, because if you are testing something that deadlocks (see
>> my attempts to remove/add locks in QEMU multiqueue) and the socket is
>> set to block forever, you don't know if the test is super slow or it
>> just deadlocked.
>>
>
> I agree with your concern on rational defaults, let's focus on that
> briefly:
>
> Let's have QEMUMachine default to *no timeouts* moving forward, and have
> the timeouts be *opt-in*. This keeps the Machine class somewhat pure and
> free of opinions. The separation of mechanism and policy.
>
> Next, instead of modifying hundreds of tests to opt-in to the timeout,
> let's modify the VM class in iotests.py to opt-in to that timeout,
> restoring the current "safe" behavior of iotests.
>
> The above items can happen in a single commit, preserving behavior in
> the bisect.
>
> Finally, we can add a non-private property that individual tests can
> re-override to opt BACK out of the default.
>
> Something as simple as:
>
> vm.qmp_timeout = None
>
> would be just fine.
>
I applied these suggested changes, will send v4 and we'll see what comes
out of it.
>> Well, one can argue that in both cases this is not the expected
>> behavior, but I think having an upper bound on each QMP command
>> execution would be good.
>>
>> - pass _qmp_timer directly to self._qmp.accept() in _post launch,
>> leaving _launch() intact. I think this makes sense because as you also
>> mentioned, changing _post_launch() into taking a parameter requires
>> changing also all subclasses and pass values around.
>>
>
> Sounds OK. If we do change the defaults back to "No Timeout" in a way
> that allows an override by an opinionated class, we'll already have the
> public property, though, so a parameter might not be needed.
>
> (Yes, this is the THIRD time I've changed my mind in 48 hours.)
>
>> Any opinion on this is very welcome.
>>
>
> Brave words!
>
> My last thought here is that I still don't like the idea of QEMUMachine
> class changing its timeout behavior based on the introspection of
> wrapper args.
>
> It feels much more like the case that a caller who is knowingly wrapping
> it with a program that delays its execution should change its parameters
> accordingly based on what the caller knows about what they're trying to
> accomplish.
>
> Does that make the code too messy? I understand you probably want to
> ensure that adding a GDB wrapper is painless and simple, so it might not
> be great to always ask a caller to remember to set some timeout value to
> use it.
>
I am not sure I follow you here, where do you want to move this logic?
Can you please elaborate more, I did not understand what you mean.
I understand that tweaking the timers in iotests.py with checks like
if not (qemu_gdb or qemu_valgrind):
normal timer
may not be the most beautiful piece of code, but as you said it keeps
things as simple as they can.
> I figure that the right place to do this, though, is wherever the
> boilerplate code gets written that knows how to set up the right gdb
> args and so on, and not in machine.py. It sounds like iotests.py code to
> me, maybe in the VM class.
After the changes suggested on qmp_timeout, iotests.py already contains
the only code to perform the setup right for gdb and valgrind, and
machine.py is not touched (except for qmp_timeout). iotests.py will
essentially contain a couple of ifs like the one above, changing the
timer when gdb and valgring are *not* needed.
Emanuele
next prev parent reply other threads:[~2021-05-18 14:00 UTC|newest]
Thread overview: 50+ messages / expand[flat|nested] mbox.gz Atom feed top
2021-04-14 17:03 [PATCH v3 00/15] qemu_iotests: improve debugging options Emanuele Giuseppe Esposito
2021-04-14 17:03 ` [PATCH v3 01/15] python: qemu: add timer parameter for qmp.accept socket Emanuele Giuseppe Esposito
2021-04-30 11:23 ` Max Reitz
2021-05-13 17:54 ` John Snow
2021-05-14 8:16 ` Emanuele Giuseppe Esposito
2021-04-14 17:03 ` [PATCH v3 02/15] python: qemu: pass the wrapper field from QEMUQtestmachine to QEMUMachine Emanuele Giuseppe Esposito
2021-04-30 11:23 ` Max Reitz
2021-05-13 17:55 ` John Snow
2021-04-14 17:03 ` [PATCH v3 03/15] docs/devel/testing: add debug section to the QEMU iotests chapter Emanuele Giuseppe Esposito
2021-04-30 11:23 ` Max Reitz
2021-04-30 14:07 ` Paolo Bonzini
2021-04-14 17:03 ` [PATCH v3 04/15] qemu-iotests: add option to attach gdbserver Emanuele Giuseppe Esposito
2021-04-30 11:38 ` Max Reitz
2021-04-30 21:03 ` Emanuele Giuseppe Esposito
2021-05-03 14:38 ` Max Reitz
2021-04-30 12:03 ` Max Reitz
2021-04-14 17:03 ` [PATCH v3 05/15] qemu-iotests: delay QMP socket timers Emanuele Giuseppe Esposito
2021-04-30 11:59 ` Max Reitz
2021-04-30 21:03 ` Emanuele Giuseppe Esposito
2021-05-03 15:02 ` Max Reitz
2021-05-13 18:20 ` John Snow
2021-04-14 17:03 ` [PATCH v3 06/15] qemu_iotests: insert gdbserver command line as wrapper for qemu binary Emanuele Giuseppe Esposito
2021-04-30 12:05 ` Max Reitz
2021-04-14 17:03 ` [PATCH v3 07/15] qemu-iotests: add gdbserver option to script tests too Emanuele Giuseppe Esposito
2021-04-30 12:17 ` Max Reitz
2021-04-14 17:03 ` [PATCH v3 08/15] docs/devel/testing: add -gdb option to the debugging section of QEMU iotests Emanuele Giuseppe Esposito
2021-04-30 12:27 ` Max Reitz
2021-04-14 17:03 ` [PATCH v3 09/15] qemu_iotests: extend the check script to support valgrind for python tests Emanuele Giuseppe Esposito
2021-04-30 12:45 ` Max Reitz
2021-04-14 17:03 ` [PATCH v3 10/15] qemu_iotests: extent QMP socket timeout when using valgrind Emanuele Giuseppe Esposito
2021-04-30 13:02 ` Max Reitz
2021-04-30 21:03 ` Emanuele Giuseppe Esposito
2021-05-13 18:47 ` John Snow
2021-05-14 8:16 ` Emanuele Giuseppe Esposito
2021-05-14 20:02 ` John Snow
2021-05-18 13:58 ` Emanuele Giuseppe Esposito [this message]
2021-05-18 14:26 ` John Snow
2021-05-18 18:20 ` Emanuele Giuseppe Esposito
2021-04-14 17:03 ` [PATCH v3 11/15] qemu_iotests: allow valgrind to read/delete the generated log file Emanuele Giuseppe Esposito
2021-04-30 13:17 ` Max Reitz
2021-04-14 17:03 ` [PATCH v3 12/15] qemu_iotests: insert valgrind command line as wrapper for qemu binary Emanuele Giuseppe Esposito
2021-04-30 13:20 ` Max Reitz
2021-04-14 17:03 ` [PATCH v3 13/15] docs/devel/testing: add -valgrind option to the debug section of QEMU iotests Emanuele Giuseppe Esposito
2021-04-30 13:24 ` Max Reitz
2021-04-14 17:03 ` [PATCH v3 14/15] qemu_iotests: add option to show qemu binary logs on stdout Emanuele Giuseppe Esposito
2021-04-30 13:50 ` Max Reitz
2021-04-30 21:04 ` Emanuele Giuseppe Esposito
2021-05-03 15:03 ` Max Reitz
2021-04-14 17:03 ` [PATCH v3 15/15] docs/devel/testing: add -p option to the debug section of QEMU iotests Emanuele Giuseppe Esposito
2021-04-30 13:55 ` Max Reitz
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=37fc7122-2bf3-a3a4-30cb-014ef8391f2e@redhat.com \
--to=eesposit@redhat.com \
--cc=crosa@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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).