[PATCH 2/3] testutilsqemu: introduce ARG_CAPS_HOST_CPU_MODEL

Martin Kletzander mkletzan at redhat.com
Mon May 23 10:37:48 UTC 2022


On Fri, May 20, 2022 at 05:47:03PM -0300, Daniel Henrique Barboza wrote:
>When loading a latest caps for an arch for the first time the following
>occurs in testQemuInfoInitArgs():
>
>- the caps file is located. It's not in the cache since it's the first time
>it's being read;
>- the cachecaps are retrieved using qemuTestParseCapabilitiesArch() and
>stored in the capscache;
>- FLAG_REAL_CAPS is set and regular flow continues.
>

I must say the FLAG_REAL_CAPS is a little bit confusing in our tests.

>Loading the same latest caps for the second time the caps are loaded from the
>cache, skipping qemuTestParseCapabilitiesArch(). By skipping this function it
>means that it also skips virQEMUCapsLoadCache() and, more relevant to
>our case, virQEMUCapsInitHostCPUModel(). This function will use the
>current arch and cpuModel settings to write the qemuCaps that are being
>stored in the cache. And we're also setting FLAG_REAL_CAPS, meaning that
>we won't be updating the qemucaps host model via testUpdateQEMUCaps() as
>well.
>
>This has side-effects such as:
>
>- the first time the latest caps for an arch is loaded determines the
>cpuModel it'll use during the current qemuxml2argvtest run. For
>example, when running all tests, the first time the latest ppc64 caps
>are read is on "disk-floppy-pseries" test. Since the current host arch
>at this point is x86_64, the cpuModel that will be set for this
>capability is "core2duo";
>
>- every other latest arch test will use the same hostCPU as the first
>one set since we read it from the cache after the first run.
>qemuTestSetHostCPU() makes no difference because we won't update the
>host model due to FLAG_REAL_CAPS being set. Using the previous example,
>every other latest ppc64 test that will be run will be using the
>"core2duo" cpuModel.
>
>Using fake capabilities (e.g. using DO_TEST()) prevent FLAG_REAL_CAPS
>to

s/prevent/prevents/
</nitpicks>

>be set, meaning that the cpuModel will be updated using the current
>settings the test is being ran due to testUpdateQEMUCaps().
>
>Note that not all latest caps arch tests care about the cpuModel being
>set to an unexpected default cpuModel. But some tests will care, e.g.
>"pseries-cpu-compat-power9", and changing it from DO_TEST() to
>DO_TEST_CAPS_ARCH_LATEST() will make it fail every time the
>"disk-floppy-pseries" is being ran first.
>
>One way of fixing it is to rethink all the existing logic, for example
>not setting FLAG_REAL_CAPS for latest arch tests. Another way is
>presented here. ARGS_CAPS_HOST_CPU_MODEL is a new testQemuInfo arg that
>allow us to set any specific host CPU model we want when running latest
>arch caps tests. This new arg can then be used when converting existing
>DO_TEST() testcases to DO_TEST_CAPS_ARCH_LATEST() that requires a
>specific host CPU setting to be successful, which we're going to do in
>the next patch with "pseries-cpu-compat-power9".
>
>Signed-off-by: Daniel Henrique Barboza <danielhb413 at gmail.com>

Reviewed-by: Martin Kletzander <mkletzan at redhat.com>

I hope I understood all the nuances, but it seems reasonable.
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 833 bytes
Desc: not available
URL: <http://listman.redhat.com/archives/libvir-list/attachments/20220523/8bcb3465/attachment.sig>


More information about the libvir-list mailing list