[libvirt] [PATCH 9/9] tests: add some simple libxl XML->XML tests

Marek Marczykowski-Górecki marmarek at invisiblethingslab.com
Fri Mar 20 21:18:13 UTC 2015


On Fri, Mar 20, 2015 at 02:56:11PM -0600, Jim Fehlig wrote:
> Marek Marczykowski-Górecki wrote:
> > Handle features supported only on xen: driver domains, qemu in
> > stubdomain.
> >
> > Signed-off-by: Marek Marczykowski-Górecki <marmarek at invisiblethingslab.com>
> >   
> [...]
> > diff --git a/tests/xlxml2xmltest.c b/tests/xlxml2xmltest.c
> > new file mode 100644
> > index 0000000..131e43b
> > --- /dev/null
> > +++ b/tests/xlxml2xmltest.c
> > @@ -0,0 +1,189 @@
> > +#include <config.h>
> > +
> > +#include <stdio.h>
> > +#include <stdlib.h>
> > +#include <unistd.h>
> > +#include <string.h>
> > +
> > +#include <sys/types.h>
> > +#include <fcntl.h>
> > +
> > +#include "testutils.h"
> > +
> > +#ifdef WITH_LIBXL
> > +
> > +# include "internal.h"
> > +# include "libxl/libxl_conf.h"
> > +# include "libxl/libxl_domain.h"
> > +# include "testutilsxen.h"
> > +# include "virstring.h"
> > +
> > +# define VIR_FROM_THIS VIR_FROM_NONE
> > +
> > +static virCapsPtr caps;
> > +static virDomainXMLOptionPtr xmlopt;
> > +
> > +static int
> > +testCompareXMLToXMLFiles(const char *inxml, const char *outxml, bool live)
> > +{
> > +    char *inXmlData = NULL;
> > +    char *outXmlData = NULL;
> > +    char *actual = NULL;
> > +    int ret = -1;
> > +    virDomainDefPtr def = NULL;
> > +    unsigned int parse_flags = live ? 0 : VIR_DOMAIN_DEF_PARSE_INACTIVE;
> > +    unsigned int format_flags = VIR_DOMAIN_DEF_FORMAT_SECURE;
> > +    if (!live)
> > +        format_flags |= VIR_DOMAIN_DEF_FORMAT_INACTIVE;
> > +
> >   
> 
> Perhaps I'm being dense, but it is not clear to me what this is testing
> wrt libxl or xenconfig code.  xml config is read from a file
> 
> > +    if (virtTestLoadFile(inxml, &inXmlData) < 0)
> > +        goto fail;
> > +    if (virtTestLoadFile(outxml, &outXmlData) < 0)
> > +        goto fail;
> > +
> > +    if (!(def = virDomainDefParseString(inXmlData, caps, xmlopt,
> > +                                        1 << VIR_DOMAIN_VIRT_XEN, parse_flags)))
> > +        goto fail;
> > +
> >   
> 
> parsed with virDomainDefParseString (which does invoke the libxl driver
> post-parse callbacks)
> 
> > +    if (!virDomainDefCheckABIStability(def, def)) {
> > +        fprintf(stderr, "ABI stability check failed on %s", inxml);
> > +        goto fail;
> > +    }
> >   
> 
> virDomainDefCheckABIStability called with identical def
> 
> > +
> > +    if (!(actual = virDomainDefFormat(def, format_flags)))
> > +        goto fail;
> >   
> 
> converted back to XML
> 
> > +
> > +    if (STRNEQ(outXmlData, actual)) {
> > +        virtTestDifferenceFull(stderr, outXmlData, outxml, actual, inxml);
> > +        goto fail;
> >   
> 
> and then compared with xml config read from a file.  I suppose the
> post-parse callbacks are being tested.  IMO, a more useful test would be
> domain XML -> libxl_domain_config -> JSON doc, comparing the output JSON
> doc to a template doc.  Daniel Berrange started work on such a test,
> which I toiled on later, but we've yet to find a nice solution that
> works across Xen >= 4.2.  This work was last discussed in January
> 
> https://www.redhat.com/archives/libvir-list/2015-January/msg00924.html
> 
> Suggestions welcomed!

I've written this test before finding already existing one for
XML->xenconfig and xenconfig->XML conversion. Initially it was meant to
verify XML parsing/formating code, but handling those with xenconfig
tests seems to be more sensible. So I think you can just drop this
patch.

-- 
Best Regards,
Marek Marczykowski-Górecki
Invisible Things Lab
A: Because it messes up the order in which people normally read text.
Q: Why is top-posting such a bad thing?
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 473 bytes
Desc: not available
URL: <http://listman.redhat.com/archives/libvir-list/attachments/20150320/4827203d/attachment-0001.sig>


More information about the libvir-list mailing list