mirror of https://gitee.com/openkylin/libvirt.git
tests: qemu: Add QMP schema checking in qemuMonitorTestProcessCommandVerbatim
In case when we are testing a QMP command we can try to schema check it so that we catch inconsistencies. Signed-off-by: Peter Krempa <pkrempa@redhat.com> Reviewed-by: Eric Blake <eblake@redhat.com>
This commit is contained in:
parent
e4013f9ff7
commit
56c2f2b45b
|
@ -690,14 +690,30 @@ qemuMonitorTestProcessCommandVerbatim(qemuMonitorTestPtr test,
|
|||
struct qemuMonitorTestHandlerData *data = item->opaque;
|
||||
VIR_AUTOFREE(char *) reformatted = NULL;
|
||||
VIR_AUTOFREE(char *) errmsg = NULL;
|
||||
VIR_AUTOPTR(virJSONValue) json = NULL;
|
||||
virJSONValuePtr cmdargs;
|
||||
const char *cmdname;
|
||||
int ret = -1;
|
||||
int rc;
|
||||
|
||||
/* JSON strings will be reformatted to simplify checking */
|
||||
if (test->json || test->agent) {
|
||||
if (!(reformatted = virJSONStringReformat(cmdstr, false)))
|
||||
if (!(json = virJSONValueFromString(cmdstr)) ||
|
||||
!(reformatted = virJSONValueToString(json, false)))
|
||||
return -1;
|
||||
|
||||
cmdstr = reformatted;
|
||||
|
||||
/* in this case we do a best-effort schema check if we can find the command */
|
||||
if ((cmdname = virJSONValueObjectGetString(json, "execute"))) {
|
||||
cmdargs = virJSONValueObjectGet(json, "arguments");
|
||||
|
||||
if ((rc = qemuMonitorTestProcessCommandDefaultValidate(test, cmdname, cmdargs)) < 0)
|
||||
return -1;
|
||||
|
||||
if (rc == 1)
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
|
||||
if (STREQ(data->command_name, cmdstr)) {
|
||||
|
|
Loading…
Reference in New Issue