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

Pavel Fedin p.fedin at samsung.com
Thu Aug 27 06:37:13 UTC 2015


 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

> -----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