[libvirt] [PATCH 3/4] tests: Prepare to have different usable GIC versions

Andrea Bolognani abologna at redhat.com
Thu May 12 14:31:01 UTC 2016


On Tue, 2016-05-10 at 18:45 -0400, Cole Robinson wrote:
> On 05/10/2016 08:46 AM, Andrea Bolognani wrote:
> > 
> > Now that we choose the GIC version based on hardware features when
> > no <gic/> element has been provided, we need a way to fake the GIC
> > capabilities of the host.
> > 
> > Update the qemuxml2argv and qemuxml2xml tests to allow this.
> > ---
> >  tests/qemuxml2argvtest.c |  77 ++++++++++++++++++-----
> >  tests/qemuxml2xmltest.c  | 159 ++++++++++++++++++++++++++++-------------------
> >  2 files changed, 159 insertions(+), 77 deletions(-)
> > 
> > diff --git a/tests/qemuxml2argvtest.c b/tests/qemuxml2argvtest.c
> > index e41444d..b081634 100644
> > --- a/tests/qemuxml2argvtest.c
> > +++ b/tests/qemuxml2argvtest.c
> > @@ -34,6 +34,13 @@
> >  static const char *abs_top_srcdir;
> >  static virQEMUDriver driver;
> >  
> > +enum {
> > +    GIC_NONE = 0,
> > +    GIC_V2,
> > +    GIC_V3,
> > +    GIC_BOTH,
> > +};
> > +
> >  static unsigned char *
> >  fakeSecretGetValue(virSecretPtr obj ATTRIBUTE_UNUSED,
> >                     size_t *value_size,
> > @@ -452,6 +459,49 @@ testAddCPUModels(virQEMUCapsPtr caps, bool skipLegacy)
> >  
> >  
> >  static int
> > +testPrepareExtraFlags(struct testInfo *info,
> > +                      bool skipLegacyCPUs,
> > +                      int gic)
> > +{
> > +    virGICCapability *gicCapabilities = NULL;
> > +    size_t ngicCapabilities = 0;
> > +    int ret = -1;
> > +
> > +    if (!(info->extraFlags = virQEMUCapsNew()))
> > +        goto out;
> > +
> > +    if (testAddCPUModels(info->extraFlags, skipLegacyCPUs) < 0)
> > +        goto out;
> > +
> > +    if (VIR_ALLOC_N(gicCapabilities, 2) < 0)
> > +        goto out;
> > +
> > +# define IMPL_BOTH \
> > +         VIR_GIC_IMPLEMENTATION_KERNEL|VIR_GIC_IMPLEMENTATION_EMULATED
> > +
> > +    if (gic & GIC_V2) {
> > +        gicCapabilities[ngicCapabilities].version = VIR_GIC_VERSION_2;
> > +        gicCapabilities[ngicCapabilities].implementation = IMPL_BOTH;
> > +        ngicCapabilities++;
> > +    }
> > +    if (gic & GIC_V3) {
> > +        gicCapabilities[ngicCapabilities].version = VIR_GIC_VERSION_3;
> > +        gicCapabilities[ngicCapabilities].implementation = IMPL_BOTH;
> > +        ngicCapabilities++;
> > +    }
> > +
> > +# undef IMPL_BOTH
> > +
> > +    virQEMUCapsSetGICCapabilities(info->extraFlags,
> > +                                  gicCapabilities, ngicCapabilities);
> > +
> > +    ret = 0;
> > +
> > + out:
> > +    return ret;
> > +}
> 
> Can this logic be shared in a testutilsqemu.c function, rather than duplicated
> across both test files?

Good idea, I'll look into it.

-- 
Andrea Bolognani
Software Engineer - Virtualization Team




More information about the libvir-list mailing list