[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