[libvirt] [PATCH 2/6] tests: qemu: Add support for testing aguments on monitor verbatim

Peter Krempa pkrempa at redhat.com
Wed Oct 5 15:17:33 UTC 2016


On Wed, Oct 05, 2016 at 09:37:50 -0400, John Ferlan wrote:
> On 09/27/2016 12:39 PM, Peter Krempa wrote:
> > Add code that takes a string and matches it against the data passed as
> > arguments from qemu. This is a simpler version of
> > qemuMonitorTestAddItemParams.
> > ---
> >  tests/qemumonitortestutils.c | 112 +++++++++++++++++++++++++++++++++++++++++++
> >  tests/qemumonitortestutils.h |   6 +++
> >  2 files changed, 118 insertions(+)

[...]

> > +/**
> > + * qemuMonitorTestAddItemExpect:
> > + *
> > + * @test: test monitor object
> > + * @cmdname: command name
> > + * @cmdargs: expected arguments of the command
> > + * @apostrophe: convert apostrophes (') in @cmdargs to quotes (")
> > + * @response: simulated response of the command
> > + *
> > + * Simulates a qemu monitor command. Checks that the 'arguments' of the qmp
> > + * command are expected. If @apostrophe is true apostrophes are converted to
> > + * quotes for simplification of writing the strings into code.
> > + */
> > +int
> > +qemuMonitorTestAddItemExpect(qemuMonitorTestPtr test,
> > +                             const char *cmdname,
> > +                             const char *cmdargs,
> > +                             bool apostrophe,
> > +                             const char *response)
> > +{
> > +    struct qemuMonitorTestHandlerData *data;
> > +
> > +    if (VIR_ALLOC(data) < 0)
> > +        goto error;
> > +
> > +    if (VIR_STRDUP(data->command_name, cmdname) < 0 ||
> > +        VIR_STRDUP(data->response, response) < 0 ||
> > +        VIR_STRDUP(data->expectArgs, cmdargs) < 0)
> > +        goto error;
> > +
> > +    if (apostrophe) {
> > +        char *tmp = data->expectArgs;
> > +
> > +        while (*tmp != '\0') {
> > +            if (*tmp == '\'')
> > +                *tmp = '"';
> > +
> > +            tmp++;
> > +        }
> 
> Would there ever be a time when apostrophe would be false?

It certainly can be. If you construct a proper JSON string, then
basically everything is enclosed in quotes. But those are very hard to
do in C code, thus you can cut the corner by using apostrophes. This
won't work though if you e.g. want to send a string containing an
apostrophe, thus you will need to do it properly and set @apostrophe to
false.
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 801 bytes
Desc: Digital signature
URL: <http://listman.redhat.com/archives/libvir-list/attachments/20161005/c593eb72/attachment-0001.sig>


More information about the libvir-list mailing list