[libvirt] [PATCH 05/18] qemumonitorjsontest: Extend the test for yet another monitor commands

Eric Blake eblake at redhat.com
Wed Oct 2 18:06:03 UTC 2013


On 10/02/2013 11:09 AM, Michal Privoznik wrote:
> So far, we're unit testing some basic functions and some (so called)
> simple functions (e.g. "qmp_capabilities", "system_powerdown"). However,
> there are more functions which expect simple "{'return': {}}" reply, but
> takes more args to construct the command (for instance "set_link"). This
> patch aims on such functions.
> 
> Signed-off-by: Michal Privoznik <mprivozn at redhat.com>
> ---
>  tests/qemumonitorjsontest.c | 97 +++++++++++++++++++++++++++++++++++++++++++++
>  1 file changed, 97 insertions(+)
> 

>  
> +#define GEN_TEST_FUNC(funcName, ...)                                    \
> +static int                                                              \
> +testQemuMonitorJSON ## funcName(const void *opaque)                     \
> +{                                                                       \
> +    const testQemuMonitorJSONSimpleFuncDataPtr data =                   \
> +        (const testQemuMonitorJSONSimpleFuncDataPtr) opaque;            \
> +    virDomainXMLOptionPtr xmlopt = data->xmlopt;                        \
> +    qemuMonitorTestPtr test = qemuMonitorTestNewSimple(true, xmlopt);   \
> +    const char *reply = data->reply;                                    \
> +    int ret = -1;                                                       \
> +                                                                        \
> +    if (!test)                                                          \
> +        return -1;                                                      \
> +                                                                        \
> +    if (!reply)                                                         \
> +        reply = "{\"return\":{}}";                                      \
> +                                                                        \
> +    if (qemuMonitorTestAddItem(test, data->cmd, reply) < 0)             \
> +        goto cleanup;                                                   \
> +                                                                        \
> +    if (funcName(qemuMonitorTestGetMonitor(test), __VA_ARGS__) < 0)     \

Again, I think we should be calling the public function in
qemu_monitor.h, not the version in qemu_monitor_json.  To do that,
you'll need to do something like:

#define GEN_TEST_FUNC(funcSuffix, ...)
...
testQemuMonitor ## funcSuffix()
...
if (qemuMonitor ## funcSuffix(qemuMonitorTestGetMonitor(test),
__VA_ARGS__) < 0

> +
> +GEN_TEST_FUNC(qemuMonitorJSONSetLink, "vnet0", VIR_DOMAIN_NET_INTERFACE_LINK_STATE_DOWN)

and call it like:

GEN_TEST_FUNC(SetLink, "vnet0", VIR_DOMAIN_NET_INTERFACE_LINK_STATE_DOWN)


> +GEN_TEST_FUNC(qemuMonitorJSONDriveMirror, "vdb", "/foo/bar", NULL, 1024,
> +              VIR_DOMAIN_BLOCK_REBASE_SHALLOW & VIR_DOMAIN_BLOCK_REBASE_REUSE_EXT)

Umm - that's a fancy way to write 0.  Did you mean to s/&/|/

> @@ -1086,6 +1154,35 @@ mymain(void)
>      DO_TEST_SIMPLE("inject-nmi", qemuMonitorJSONInjectNMI);
>      DO_TEST_SIMPLE("system_wakeup", qemuMonitorJSONSystemWakeup);
>      DO_TEST_SIMPLE("nbd-server-stop", qemuMonitorJSONNBDServerStop);
> +    DO_TEST_GEN(qemuMonitorJSONSetLink);

Again, I think you want:

DO_TEST_GEN(SetLink);

to go through the public wrapper.


-- 
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/20131002/23df36ed/attachment-0001.sig>


More information about the libvir-list mailing list