tests: qemucapsprobemock: Prepare 'qemucapsprobe' for the new format

Change the output of qemucapsprobe to record the commands used for
querying. This allows to easily identify which reply belongs to which
command and also will allow to test whether we use stable queries.

This change includes changing dropping of the QMP greeting from the file
and reformatting of the query and output to stdout.

Signed-off-by: Peter Krempa <pkrempa@redhat.com>
Reviewed-by: John Ferlan <jferlan@redhat.com>
This commit is contained in:
Peter Krempa 2018-05-03 17:29:36 +02:00
parent 9369348eb8
commit e00ecd1bed

View File

@ -37,6 +37,7 @@
} \
} while (0)
static bool first = true;
static void
printLineSkipEmpty(const char *line,
@ -60,9 +61,22 @@ int
qemuMonitorSend(qemuMonitorPtr mon,
qemuMonitorMessagePtr msg)
{
char *reformatted;
REAL_SYM(realQemuMonitorSend);
fprintf(stderr, "%s", msg->txBuffer);
if (!(reformatted = virJSONStringReformat(msg->txBuffer, true))) {
fprintf(stderr, "Failed to reformat command string '%s'\n", msg->txBuffer);
abort();
}
if (first)
first = false;
else
printLineSkipEmpty("\n", stdout);
printLineSkipEmpty(reformatted, stdout);
VIR_FREE(reformatted);
return realQemuMonitorSend(mon, msg);
}
@ -77,7 +91,6 @@ qemuMonitorJSONIOProcessLine(qemuMonitorPtr mon,
const char *line,
qemuMonitorMessagePtr msg)
{
static bool first = true;
virJSONValuePtr value = NULL;
char *json = NULL;
int ret;
@ -93,14 +106,14 @@ qemuMonitorJSONIOProcessLine(qemuMonitorPtr mon,
abort();
}
if (first) {
/* Ignore QMP greeting */
if (virJSONValueObjectHasKey(value, "QMP"))
goto cleanup;
if (first)
first = false;
} else {
/* Ignore QMP greeting if it's not the first one */
if (virJSONValueObjectHasKey(value, "QMP"))
goto cleanup;
putchar('\n');
}
else
printLineSkipEmpty("\n", stdout);
printLineSkipEmpty(json, stdout);
}