[libvirt] [PATCH] tests: Introduce qemucapabilitiestest

Eric Blake eblake at redhat.com
Mon Sep 30 19:23:03 UTC 2013


On 09/27/2013 04:25 AM, Michal Privoznik wrote:
> This test is there to ensure that our capabilities detection code isn't
> broken somehow.
> 
> How to gather test data:
> 
> Firstly, the data is split into two separate files. The former (with
> suffix .replies) contains all the qemu replies. This is very fragile as
> introducing a new device can mean yet another monitor command and hence
> edit of this file in the future. But there's no better way of doing
> this. To get this data simply turn on debug logs and copy all the
> QEMU_MONITOR_IO_PROCESS lines. But be careful to not copy incomplete
> ones (yeah, we report some incomplete lines too). Long story short, at
> the libvirtd startup, a dummy qemu is spawn to get all the capabilities.
> 
> The latter (with suffix .caps) contains capabilities XML. Just start a
> domain and copy the corresponding part from its state XML file.
> Including <qemuCaps> tag.
> 
> Signed-off-by: Michal Privoznik <mprivozn at redhat.com>
> ---
>  .gitignore                                      |    1 +
>  tests/Makefile.am                               |   12 +-
>  tests/qemucapabilitiesdata/caps_1.5.3-1.caps    |  133 ++
>  tests/qemucapabilitiesdata/caps_1.5.3-1.replies | 2519 +++++++++++++++++++++++
>  tests/qemucapabilitiestest.c                    |  241 +++
>  5 files changed, 2904 insertions(+), 2 deletions(-)
>  create mode 100644 tests/qemucapabilitiesdata/caps_1.5.3-1.caps
>  create mode 100644 tests/qemucapabilitiesdata/caps_1.5.3-1.replies
>  create mode 100644 tests/qemucapabilitiestest.c
> 

> +static qemuMonitorTestPtr
> +testQemuFeedMonitor(char *replies,
> +                    virDomainXMLOptionPtr xmlopt)
> +{
> +    qemuMonitorTestPtr test = NULL;
> +    char *tmp = replies;
> +    char *singleReply = tmp;
> +
> +    /* Our JSON parser expects replies to be separated by a newline character.
> +     * Hence we must preprocess the file a bit. */
> +    while ((tmp = strchr(tmp, '\n'))) {
> +        /* It is safe to touch (tmp + 1) since all strings ends with '\0'. */
> +        bool eof = *(tmp + 1) == '\0';

More compact as:

bool eof = !tmp[1];

but that's not worth a respin :)

ACK - as this just touches the testsuite, I'm fine with including it in
1.1.3 rather than waiting.

-- 
Eric Blake   eblake redhat com    +1-919-301-3266
Libvirt virtualization library http://libvirt.org

-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 621 bytes
Desc: OpenPGP digital signature
URL: <http://listman.redhat.com/archives/libvir-list/attachments/20130930/488c53c4/attachment-0001.sig>


More information about the libvir-list mailing list