From: Cleber Rosa <crosa@redhat.com>
To: Eduardo Habkost <ehabkost@redhat.com>
Cc: "Peter Maydell" <peter.maydell@linaro.org>,
"QEMU Developers" <qemu-devel@nongnu.org>,
"Philippe Mathieu-Daudé" <philmd@redhat.com>,
"Wainer dos Santos Moschetta" <wainersm@redhat.com>,
"Caio Carrara" <ccarrara@redhat.com>
Subject: Re: [Qemu-devel] [PATCH] Acceptance tests: host arch to target arch name mapping
Date: Wed, 17 Oct 2018 16:54:52 -0400 [thread overview]
Message-ID: <ba4cef67-a2c3-bd7c-7f4a-e96b12d016fe@redhat.com> (raw)
In-Reply-To: <20181017194833.GI31060@habkost.net>
On 10/17/18 3:48 PM, Eduardo Habkost wrote:
> On Wed, Oct 17, 2018 at 03:25:34PM -0400, Cleber Rosa wrote:
>>
>>
>> On 10/17/18 3:09 PM, Eduardo Habkost wrote:
>>> On Wed, Oct 17, 2018 at 07:40:51PM +0100, Peter Maydell wrote:
>>>> On 17 October 2018 at 18:38, Cleber Rosa <crosa@redhat.com> wrote:
>>>>>
>>>>>
>>>>> On 10/17/18 12:29 PM, Eduardo Habkost wrote:
>>>>>> On Wed, Oct 17, 2018 at 01:34:41PM +0100, Peter Maydell wrote:
>>>>>>> So, why does the test code need to care? It's not clear
>>>>>>> from the patch... My expectation would be that you'd
>>>>>>> just test all the testable target architectures,
>>>>>>> regardless of what the host architecture is.
>>>>>>
>>>>>> I tend to agree. Maybe the right solution is to get rid of the
>>>>>> os.uname(). I think the default should be testing all QEMU
>>>>>> binaries that were built, and the host architecture shouldn't
>>>>>> matter.
>>>>
>>>> Yes, looking at os.uname() also seems like an odd thing
>>>> for the tests to be doing here. The test framework
>>>> should be as far as possible host-architecture agnostic.
>>>> (For some of the KVM cases there probably is a need to
>>>> care, but those are exceptions, not the rule.)
>>>>
>>>>> I'm in favor of exercising all built targets, but that seems to me to be
>>>>> on another layer, above the test themselves. This change is about the
>>>>> behavior of a test when not told about the target arch (and thus binary)
>>>>> it should use.
>>>>
>>>> At that level, I think the right answer is "tell the user
>>>> they need to specify the qemu executable they are trying to test".
>>>> In particular, there is no guarantee that the user has actually
>>>> built the executable for the target that corresponds to the
>>>> host, so it doesn't work to try to default to that anyway.
>>>
>>> Agreed. However, I don't see when exactly this message would be
>>> triggered. Cleber, on which use cases do you expect
>>> pick_default_qemu_bin() to be called?
>>>
>>
>> When a test is run ad-hoc. You even suggested that tests could/should
>> be executable.
>>
>>> In an ideal world, any testing runner/tool should be able to
>>> automatically test all binaries by default. Can Avocado help us
>>> do that? (If not, we could just do it inside a
>>> ./tests/acceptance/run script).
>>>
>>
>> Avocado can do that indeed. But I'm afraid that's not the main issue.
>> Think of the qemu-iotests: do we want a "check" command to run all
>> tests with all binaries?
>
> Good question. That would be my first expectation, but I'm not
> sure.
>
If it wasn't clear, I'm trying to define the basic behavior of *one
test*. I'm aware of a few different behaviors across tests in QEMU:
1) qemu-iotests: require "check" to run, will attempt to find/run with
a "suitable" QEMU binary.
2) libqtest based: executables, in theory runnable by themselves, and
will not attempt to find/run a "suitable" QEMU binary. Those will
print: "Environment variable QTEST_QEMU_BINARY required".
3) acceptance tests: require the Avocado test runner, will attempt to
find/run with a "suitable" QEMU binary.
So, I'm personally not aware of any test in QEMU which *by themselves*
defaults to running on all (relevant) built targets (machine types?
device types?). Test selection (defining a test suite) and setting
parameters is always done elsewhere (Makefile, check-block.sh,
qemu-iotests-quick.sh, etc).
> Pro: testing all binaries by default would cause less confusion
> than picking a random QEMU binary.
>
IMO we have to differentiate between *in test* QEMU binary selection
(some? none?) and other layers (Makefiles, scripts, etc).
> Con: testing all binaries may be inconvenient for quickly
> checking if a test case works. (I'm not convinced this is a
> problem. If you don't want to test everything, you probably
> already have a short target list in your ./configure line?)
>
Convenience is important, but I'm convinced this is a software layering
problem. I have the feeling we're trying to impose higher level
(environment/build/check) definitions to the lower level (test) entities.
> Pro: testing a single binary using uname() is already
> implemented.
>
Right. I'm not unfavorable to changing that behavior, and ERRORing
tests when a binary is not given (similar to libqtest) is a simple
change if we're to do it. But I do find that usability drops considerably.
And finally I don't think the "if a qemu binary is not explicitly given,
let's try the matching host architecture" is confusing or hard to
follow. And, it's pretty well documented if you ask me:
---
QEMU binary selection
~~~~~~~~~~~~~~~~~~~~~
The QEMU binary used for the ``self.vm`` QEMUMachine instance will
primarily depend on the value of the ``qemu_bin`` parameter. If it's
not explicitly set, its default value will be the result of a dynamic
probe in the same source tree. A suitable binary will be one that
targets the architecture matching (the) host machine.
Based on this description, test writers will usually rely on one of
the following approaches:
1) Set ``qemu_bin``, and use the given binary
2) Do not set ``qemu_bin``, and use a QEMU binary named like
"${arch}-softmmu/qemu-system-${arch}", either in the current
working directory, or in the current source tree.
The resulting ``qemu_bin`` value will be preserved in the
``avocado_qemu.Test`` as an attribute with the same name.
---
> Con: making `avocado run` automatically generate variants of a
> test case may take some effort?
>
Well, it will take some effort, sure. But my point do we want to
*enforce* that? I think that should be left to a "run" script or make
rule like you suggested. IMO, `avocado run a_single_test.py` shouldn't
do more than just that.
Regards,
- Cleber.
next prev parent reply other threads:[~2018-10-17 20:55 UTC|newest]
Thread overview: 33+ messages / expand[flat|nested] mbox.gz Atom feed top
2018-10-16 23:22 [Qemu-devel] [PATCH] Acceptance tests: host arch to target arch name mapping Cleber Rosa
2018-10-17 10:09 ` Philippe Mathieu-Daudé
2018-10-17 16:23 ` Cleber Rosa
2018-10-17 12:34 ` Peter Maydell
2018-10-17 16:29 ` Eduardo Habkost
2018-10-17 17:38 ` Cleber Rosa
2018-10-17 18:40 ` Peter Maydell
2018-10-17 19:05 ` Cleber Rosa
2018-10-17 19:20 ` Peter Maydell
2018-10-17 19:09 ` Eduardo Habkost
2018-10-17 19:25 ` Cleber Rosa
2018-10-17 19:48 ` Eduardo Habkost
2018-10-17 20:54 ` Cleber Rosa [this message]
2018-10-17 22:12 ` Eduardo Habkost
2018-10-17 23:17 ` Cleber Rosa
2018-10-18 2:02 ` Eduardo Habkost
2018-10-17 20:46 ` Murilo Opsfelder Araujo
2018-10-17 20:59 ` Cleber Rosa
2018-10-17 22:15 ` Eduardo Habkost
2018-10-17 22:47 ` Cleber Rosa
2018-10-18 1:54 ` Eduardo Habkost
2018-10-17 19:43 ` Murilo Opsfelder Araujo
2018-10-17 20:05 ` Eduardo Habkost
2018-10-17 20:33 ` Wainer dos Santos Moschetta
2018-10-17 21:10 ` Cleber Rosa
2018-10-17 21:34 ` Eduardo Habkost
2018-10-17 21:16 ` Eduardo Habkost
2018-10-17 21:34 ` Cleber Rosa
2018-10-17 16:31 ` Cleber Rosa
2018-10-17 16:51 ` Daniel P. Berrangé
2018-10-17 17:46 ` Cleber Rosa
2018-10-17 14:54 ` Wainer dos Santos Moschetta
2018-10-17 18:24 ` Cleber Rosa
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=ba4cef67-a2c3-bd7c-7f4a-e96b12d016fe@redhat.com \
--to=crosa@redhat.com \
--cc=ccarrara@redhat.com \
--cc=ehabkost@redhat.com \
--cc=peter.maydell@linaro.org \
--cc=philmd@redhat.com \
--cc=qemu-devel@nongnu.org \
--cc=wainersm@redhat.com \
/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).