From e00ecd1bed2b9247b77fd22f4197a27c5859ec35 Mon Sep 17 00:00:00 2001 From: Peter Krempa Date: Thu, 3 May 2018 17:29:36 +0200 Subject: [PATCH] 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 Reviewed-by: John Ferlan --- tests/qemucapsprobemock.c | 31 ++++++++++++++++++++++--------- 1 file changed, 22 insertions(+), 9 deletions(-) diff --git a/tests/qemucapsprobemock.c b/tests/qemucapsprobemock.c index a0d2acb69a..5936975505 100644 --- a/tests/qemucapsprobemock.c +++ b/tests/qemucapsprobemock.c @@ -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); } -- GitLab