On Wed, Jan 11, 2017 at 10:48:17AM +0100, Peter Krempa wrote: > Add test monitor infrastructure that will test the commands verbatim > rather than trying to do any smart handling. > --- > tests/qemumonitortestutils.c | 89 ++++++++++++++++++++++++++++++++++++++++++++ > tests/qemumonitortestutils.h | 5 +++ > 2 files changed, 94 insertions(+) > > diff --git a/tests/qemumonitortestutils.c b/tests/qemumonitortestutils.c > index fb4f51c54..50042f960 100644 > --- a/tests/qemumonitortestutils.c > +++ b/tests/qemumonitortestutils.c > @@ -508,6 +508,7 @@ struct _qemuMonitorTestCommandArgs { > > struct qemuMonitorTestHandlerData { > char *command_name; > + char *cmderr; > char *response; > size_t nargs; > qemuMonitorTestCommandArgsPtr args; > @@ -529,6 +530,7 @@ qemuMonitorTestHandlerDataFree(void *opaque) > } > > VIR_FREE(data->command_name); > + VIR_FREE(data->cmderr); > VIR_FREE(data->response); > VIR_FREE(data->args); > VIR_FREE(data->expectArgs); > @@ -606,6 +608,93 @@ qemuMonitorTestAddItem(qemuMonitorTestPtr test, > > > static int > +qemuMonitorTestProcessCommandVerbatim(qemuMonitorTestPtr test, > + qemuMonitorTestItemPtr item, > + const char *cmdstr) > +{ > + struct qemuMonitorTestHandlerData *data = item->opaque; > + char *reformatted = NULL; > + char *errmsg = NULL; > + int ret = -1; > + > + /* JSON strings will be reformatted to simplify checking */ > + if (test->json || test->agent) { > + if (!(reformatted = virJSONStringReformat(cmdstr, false))) > + return -1; > + > + cmdstr = reformatted; > + } > + > + if (STREQ(data->command_name, cmdstr)) { > + ret = qemuMonitorTestAddResponse(test, data->response); > + } else { > + if (data->cmderr) { > + if (virAsprintf(&errmsg, "%s: %s", data->cmderr, cmdstr) < 0) > + goto cleanup; > + > + ret = qemuMonitorTestAddErrorResponse(test, errmsg); > + } else { > + ret = qemuMonitorTestAddInvalidCommandResponse(test, > + data->command_name, > + cmdstr); > + } > + } > + > + cleanup: > + VIR_FREE(errmsg); > + VIR_FREE(reformatted); > + return ret; > +} > + > + > +/** > + * qemuMonitorTestAddItemVerbatim: > + * @test: monitor test object > + * @command: full expected command syntax > + * @cmderr: possible explanation of expected command (may be NULL) > + * @response: full reply of @command > + * > + * Adds a test command for the simulated monitor. The full syntax is checked > + * as specified in @command. For JSON monitor tests formatting/whitespace is > + * ignored. If the command on the monitor is not as expected an error containing > + * @cmderr is returned. Otherwise @response is put as-is on the monitor. > + * > + * Returns 0 when command was succesfully added, -1 on error. s/succesfully/successfully/ ACK Pavel
Attachment:
signature.asc
Description: Digital signature
-- libvir-list mailing list libvir-list@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/libvir-list