[libvirt] PING: [RFC PATCH 0/3] Implement mockup capabilities cache in QEMU tests

Cole Robinson crobinso at redhat.com
Thu Aug 27 14:30:37 UTC 2015


On 08/27/2015 02:37 AM, Pavel Fedin wrote:
>  Hello! I remember you were worrying about a temporary hack in qemu's postparse, because test suite
> could not generate proper capability cache. I promised to solve this, and here is (almost) a
> solution, i've outlined one small problem to solve together in the cover message. Since then, no
> response...
> 
> Kind regards,
> Pavel Fedin
> Expert Engineer
> Samsung Electronics Research center Russia
> 

Sorry about all the delays, I'll be more responsive going forward.

For my part I've been offline for 2 weeks on my honeymoon, just came back
today... it's been a hectic 2 months for me between moving across the state,
planning a wedding, then travelling out of the country for 2 weeks. I'm back
now so I'll check the patches when I get caught up on other stuff.

Most other people on this list were preparing for and attending KVM
forum/Linuxcon the past couple weeks. So it's just bad timing in this case

- Cole

>> -----Original Message-----
>> From: libvir-list-bounces at redhat.com [mailto:libvir-list-bounces at redhat.com] On Behalf Of Pavel
>> Fedin
>> Sent: Tuesday, August 18, 2015 12:40 PM
>> To: libvir-list at redhat.com
>> Cc: Martin Kletzander
>> Subject: [libvirt] [RFC PATCH 0/3] Implement mockup capabilities cache in QEMU tests
>>
>> Since commit e8d55172544c1fafe31a9e09346bdebca4f0d6f9 qemu driver checks
>> emulator capabilities during domain XML post-parse. However, test suite
>> does not initialize it, therefore a condition to skip all checks if there
>> is no cache supplied was added. This is actually a hack, whose sole
>> purpose is to make existing test suite working. Additionally, it prevents
>> from writing new tests for this particular functionality.
>>
>> This series attempts to solve this problem by implementing proper cache
>> mockup in test suite. The main idea is to create a cache in standard way
>> and put there a pre-defined capabilities set (which tests already have).
>>
>> The main problem here is to know emulator binary name, which is contained
>> in the source XML. However, we have to create our cache before reading the
>> XML. The simplest way to resolve this is to assume particular binary name
>> from test name. Currently tests which assume cross-architecture binary are
>> all prefixed with the architecture name (with one exception of "keywrap"
>> tests which all assume /usr/bin/qemu-system-s390x and do not have "s390-"
>> prefix in their name).
>>
>> This scheme works fine, unless we use "native" emulator binary. Here we
>> have a mess. Most newer tests use /usr/bin/qemu, however there is a large
>> number of tests which use /usr/libexec/qemu-kvm or /usr/bin/kvm (i guess
>> these are leftovers from the epoch when qemu-kvm was a separate fork of
>> qemu). This is currently not handled in any way, and these tests may
>> report errors due to missing binaries (because virQEMUCapsCacheLookup()
>> attempts to populate the cache automatically by querying the binary if
>> not already known).
>>
>> There are several possible ways to resolve this:
>> a) Add all possible names as aliases for /usr/bin/qemu
>> b) Forbid to use oldstyle names at all in these tests
>> c) Declare some prefix like "kvm-" for those tests who want to use
>>    /usr/libexec/qemu-kvm. Again, this would ban /usr/bin/kvm and
>>    /usr/bin/qemu-kvm (if not using aliases like in (b)
>> d) Hardcode (optional) emulator name per test. IMHO a bad idea because
>>    number of tests is huge.
>> e) Do some preparsing of the XML and extract binary name from it. Again,
>>    i disliked it for not being simple enough.
>>
>> I also thought about an alternate implementation which would patch
>> postParseCallback and insert own function there which builds a cache. At
>> this point binary name is already known from the XML. However, such a
>> design looks like an ugly  hack by itself, so i stopped going in this
>> direction.
>>
>> Comments and opinions are welcome.
>>
>> Pavel Fedin (3):
>>   Implement virQEMUCapsCache mockup
>>   Use mockup cache
>>   Removed unneeded check
>>
>>  src/qemu/qemu_capabilities.c | 10 +---------
>>  src/qemu/qemu_capspriv.h     | 36 +++++++++++++++++++++++++++++++++++
>>  src/qemu/qemu_domain.c       |  5 +----
>>  tests/qemuagenttest.c        |  9 ++++++++-
>>  tests/qemuargv2xmltest.c     |  5 +++++
>>  tests/qemuhotplugtest.c      | 23 ++++++++++++++--------
>>  tests/qemuxml2argvtest.c     |  5 +++++
>>  tests/qemuxml2xmltest.c      |  6 ++++++
>>  tests/qemuxmlnstest.c        |  5 +++++
>>  tests/testutilsqemu.c        | 45 ++++++++++++++++++++++++++++++++++++++++++++
>>  tests/testutilsqemu.h        |  3 +++
>>  11 files changed, 130 insertions(+), 22 deletions(-)
>>  create mode 100644 src/qemu/qemu_capspriv.h
>>  mode change 100644 => 100755 tests/qemuagenttest.c
>>  mode change 100644 => 100755 tests/qemuhotplugtest.c
>>  mode change 100644 => 100755 tests/qemuxml2xmltest.c
>>  mode change 100644 => 100755 tests/testutilsqemu.c
>>
>> --
>> 2.1.4
>>
>> --
>> libvir-list mailing list
>> libvir-list at redhat.com
>> https://www.redhat.com/mailman/listinfo/libvir-list
> 




More information about the libvir-list mailing list