From 3ff6ae5b17e6e0bf1754db4c0de820aa41eb4318 Mon Sep 17 00:00:00 2001 From: Peter Krempa Date: Thu, 1 Aug 2013 11:43:41 +0200 Subject: [PATCH] qemuagenttest: Test timeout of agent commands If VIR_TEST_EXPENSIVE is enabled, test timeout of agent commands. This test takes 6 seconds to finish. --- tests/qemuagenttest.c | 60 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 60 insertions(+) diff --git a/tests/qemuagenttest.c b/tests/qemuagenttest.c index be9995f34f..e338c984ee 100644 --- a/tests/qemuagenttest.c +++ b/tests/qemuagenttest.c @@ -518,6 +518,65 @@ cleanup: } +static int +qemuAgentTimeoutTestMonitorHandler(qemuMonitorTestPtr test ATTRIBUTE_UNUSED, + qemuMonitorTestItemPtr item ATTRIBUTE_UNUSED, + const char *cmdstr ATTRIBUTE_UNUSED) +{ + return 0; +} + + +static int +testQemuAgentTimeout(const void *data) +{ + virDomainXMLOptionPtr xmlopt = (virDomainXMLOptionPtr)data; + qemuMonitorTestPtr test = qemuMonitorTestNewAgent(xmlopt); + char *reply = NULL; + int ret = -1; + + if (!test) + return -1; + + if (virTestGetExpensive() == 0) + return EXIT_AM_SKIP; + + if (qemuMonitorTestAddHandler(test, qemuAgentTimeoutTestMonitorHandler, + NULL, NULL) < 0) + goto cleanup; + + if (qemuAgentFSFreeze(qemuMonitorTestGetAgent(test)) != -1) { + virReportError(VIR_ERR_INTERNAL_ERROR, "%s", + "agent command should have failed"); + goto cleanup; + } + + /* test timeout */ + if (qemuMonitorTestAddAgentSyncResponse(test) < 0) + goto cleanup; + + if (qemuMonitorTestAddHandler(test, qemuAgentTimeoutTestMonitorHandler, + NULL, NULL) < 0) + goto cleanup; + + if (qemuAgentArbitraryCommand(qemuMonitorTestGetAgent(test), + "{\"execute\":\"ble\"}", + &reply, + 1) != -2) { + virReportError(VIR_ERR_INTERNAL_ERROR, "%s", + "agent command didn't time out"); + goto cleanup; + } + + ret = 0; + +cleanup: + VIR_FREE(reply); + qemuMonitorTestFree(test); + return ret; +} + + static int mymain(void) { @@ -546,6 +605,7 @@ mymain(void) DO_TEST(Shutdown); DO_TEST(CPU); DO_TEST(ArbitraryCommand); + DO_TEST(Timeout); virObjectUnref(xmlopt); -- GitLab