From: Peter Krempa Date: Thu, 1 Aug 2013 09:38:21 +0000 (+0200) Subject: qemuagenttest: Test arbitrary command passthrough X-Git-Url: http://xenbits.xensource.com/gitweb?a=commitdiff_plain;h=ce01ec42b2b28fe7f4f3235c3fb84d60752027ce;p=libvirt.git qemuagenttest: Test arbitrary command passthrough Exercise the arbitrary command passthrough API. --- diff --git a/tests/qemuagenttest.c b/tests/qemuagenttest.c index 7d6773c3e8..be9995f34f 100644 --- a/tests/qemuagenttest.c +++ b/tests/qemuagenttest.c @@ -474,6 +474,50 @@ cleanup: } +static const char testQemuAgentArbitraryCommandResponse[] = + "{\"return\":\"bla\"}"; + +static int +testQemuAgentArbitraryCommand(const void *data) +{ + virDomainXMLOptionPtr xmlopt = (virDomainXMLOptionPtr)data; + qemuMonitorTestPtr test = qemuMonitorTestNewAgent(xmlopt); + int ret = -1; + char *reply = NULL; + + if (!test) + return -1; + + if (qemuMonitorTestAddAgentSyncResponse(test) < 0) + goto cleanup; + + if (qemuMonitorTestAddItem(test, "ble", + testQemuAgentArbitraryCommandResponse) < 0) + goto cleanup; + + if (qemuAgentArbitraryCommand(qemuMonitorTestGetAgent(test), + "{\"execute\":\"ble\"}", + &reply, + VIR_DOMAIN_QEMU_AGENT_COMMAND_BLOCK) < 0) + goto cleanup; + + if (STRNEQ(reply, testQemuAgentArbitraryCommandResponse)) { + virReportError(VIR_ERR_INTERNAL_ERROR, + "invalid processing of guest agent reply: " + "got '%s' expected '%s'", + reply, testQemuAgentArbitraryCommandResponse); + goto cleanup; + } + + ret = 0; + +cleanup: + VIR_FREE(reply); + qemuMonitorTestFree(test); + return ret; +} + + static int mymain(void) { @@ -501,6 +545,7 @@ mymain(void) DO_TEST(Suspend); DO_TEST(Shutdown); DO_TEST(CPU); + DO_TEST(ArbitraryCommand); virObjectUnref(xmlopt);