On 09/18/2013 12:16 PM, Michal Privoznik wrote: > This macro is there to test the simplest monitor functions we have, > those in the form of: int ( *func) (qemuMonitorPtr). So far, we have > seven such functions. > > Signed-off-by: Michal Privoznik <mprivozn@xxxxxxxxxx> > --- > tests/qemumonitorjsontest.c | 47 +++++++++++++++++++++++++++++++++++++++++++++ > 1 file changed, 47 insertions(+) > > diff --git a/tests/qemumonitorjsontest.c b/tests/qemumonitorjsontest.c > index 0a3f717..b451e8e 100644 > --- a/tests/qemumonitorjsontest.c > +++ b/tests/qemumonitorjsontest.c > @@ -31,6 +31,15 @@ > > #define VIR_FROM_THIS VIR_FROM_NONE > > +typedef struct _testQemuMonitorJSONSimpleFuncData testQemuMonitorJSONSimpleFuncData; > +typedef testQemuMonitorJSONSimpleFuncData *testQemuMonitorJSONSimpleFuncDataPtr; > +struct _testQemuMonitorJSONSimpleFuncData { > + const char *cmd; > + int (* func) (qemuMonitorPtr mon); > + virDomainXMLOptionPtr xmlopt; > + const char *reply; > +}; > + > static int > testQemuMonitorJSONGetStatus(const void *data) > { > @@ -999,10 +1008,35 @@ cleanup: > } > > static int > +testQemuMonitorJSONSimpleFunc(const void *opaque) > +{ > + const testQemuMonitorJSONSimpleFuncDataPtr data = (const testQemuMonitorJSONSimpleFuncDataPtr) opaque; > + virDomainXMLOptionPtr xmlopt = data->xmlopt; > + qemuMonitorTestPtr test = qemuMonitorTestNewSimple(true, xmlopt); Same here: (1) Event returned_null: Function "qemuMonitorTestNew(bool, virDomainXMLOptionPtr, virDomainObjPtr, virQEMUDriverPtr)" returns null (checked 14 out of 16 times). [details] (11) Event var_assigned: Assigning: "test" = null return value from "qemuMonitorTestNew(bool, virDomainXMLOptionPtr, virDomainObjPtr, virQEMUDriverPtr)". > + const char *reply = data->reply; > + int ret = -1; > + > + if (!reply) > + reply = "{\"return\":{}}"; > + > + if (qemuMonitorTestAddItem(test, data->cmd, reply) < 0) (13) Event dereference: Dereferencing a pointer that might be null "test" when calling "qemuMonitorTestAddItem(qemuMonitorTestPtr, char const *, char const *)". [details] > + goto cleanup; > + > + if (data->func(qemuMonitorTestGetMonitor(test)) < 0) > + goto cleanup; > + > + ret = 0; > +cleanup: > + qemuMonitorTestFree(test); > + return ret; > +} > + > +static int > mymain(void) > { > int ret = 0; > virDomainXMLOptionPtr xmlopt; > + testQemuMonitorJSONSimpleFuncData simpleFunc; > > #if !WITH_YAJL > fputs("libvirt not compiled with yajl, skipping this test\n", stderr); > @@ -1019,6 +1053,12 @@ mymain(void) > if (virtTestRun(# name, 1, testQemuMonitorJSON ## name, xmlopt) < 0) \ > ret = -1 > > +#define DO_TEST_SIMPLE(CMD, FNC, ...) \ > + simpleFunc = (testQemuMonitorJSONSimpleFuncData) {.cmd = CMD, .func = FNC, \ > + .xmlopt = xmlopt, __VA_ARGS__ }; \ > + if (virtTestRun(# FNC, 1, testQemuMonitorJSONSimpleFunc, &simpleFunc) < 0) \ > + ret = -1 > + > DO_TEST(GetStatus); > DO_TEST(GetVersion); > DO_TEST(GetMachines); > @@ -1033,6 +1073,13 @@ mymain(void) > DO_TEST(SetObjectProperty); > DO_TEST(GetDeviceAliases); > DO_TEST(CPU); > + DO_TEST_SIMPLE("qmp_capabilities", qemuMonitorJSONSetCapabilities); > + DO_TEST_SIMPLE("system_powerdown", qemuMonitorSystemPowerdown); > + DO_TEST_SIMPLE("system_reset", qemuMonitorJSONSystemReset); > + DO_TEST_SIMPLE("migrate_cancel", qemuMonitorJSONMigrateCancel); > + DO_TEST_SIMPLE("inject-nmi", qemuMonitorJSONInjectNMI); > + DO_TEST_SIMPLE("system_wakeup", qemuMonitorJSONSystemWakeup); > + DO_TEST_SIMPLE("nbd-server-stop", qemuMonitorJSONNBDServerStop); > > virObjectUnref(xmlopt); > > -- libvir-list mailing list libvir-list@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/libvir-list