[libvirt] [PATCH 2/2] qemumonitorjsontest: Introduce DO_TEST_SIMPLE
John Ferlan
jferlan at redhat.com
Fri Sep 20 10:32:59 UTC 2013
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 at redhat.com>
> ---
> 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);
>
>
More information about the libvir-list
mailing list