mirror of
https://gitlab.com/libvirt/libvirt.git
synced 2024-08-07 01:13:49 +00:00
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;
|
struct qemuMonitorTestHandlerData *data = item->opaque;
|
||||||
VIR_AUTOFREE(char *) reformatted = NULL;
|
VIR_AUTOFREE(char *) reformatted = NULL;
|
||||||
VIR_AUTOFREE(char *) errmsg = NULL;
|
VIR_AUTOFREE(char *) errmsg = NULL;
|
||||||
|
VIR_AUTOPTR(virJSONValue) json = NULL;
|
||||||
|
virJSONValuePtr cmdargs;
|
||||||
|
const char *cmdname;
|
||||||
int ret = -1;
|
int ret = -1;
|
||||||
|
int rc;
|
||||||
|
|
||||||
/* JSON strings will be reformatted to simplify checking */
|
/* JSON strings will be reformatted to simplify checking */
|
||||||
if (test->json || test->agent) {
|
if (test->json || test->agent) {
|
||||||
if (!(reformatted = virJSONStringReformat(cmdstr, false)))
|
if (!(json = virJSONValueFromString(cmdstr)) ||
|
||||||
|
!(reformatted = virJSONValueToString(json, false)))
|
||||||
return -1;
|
return -1;
|
||||||
|
|
||||||
cmdstr = reformatted;
|
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)) {
|
if (STREQ(data->command_name, cmdstr)) {
|
||||||
|
Loading…
Reference in New Issue
Block a user