[libvirt] [PATCH 4/4] Add inputpool to storagevolxml2argvtest

John Ferlan jferlan at redhat.com
Fri Jul 26 11:02:32 UTC 2013


<...snip...?>> diff --git a/tests/storagevolxml2argvtest.c
b/tests/storagevolxml2argvtest.c
> index b220994..3c338ce 100644
> --- a/tests/storagevolxml2argvtest.c
> +++ b/tests/storagevolxml2argvtest.c
> @@ -11,10 +11,32 @@
>  
>  const char create_tool[] = "qemu-img";
>  
> +/* createVol sets this on volume creation */
> +static void
> +testSetVolumeType(virStorageVolDefPtr vol,
> +                  virStoragePoolDefPtr pool)
> +{
> +    if (!vol)
> +        return;
> +
> +    switch (pool->type) {
> +    case VIR_STORAGE_POOL_DIR:
> +    case VIR_STORAGE_POOL_FS:
> +    case VIR_STORAGE_POOL_NETFS:
> +        vol->type = VIR_STORAGE_VOL_FILE;
> +        return;
> +
> +    case VIR_STORAGE_POOL_LOGICAL:
> +        vol->type = VIR_STORAGE_VOL_BLOCK;
> +        return;
> +    }
> +}
> +
>  static int
>  testCompareXMLToArgvFiles(bool shouldFail,
>                            const char *poolxml,
>                            const char *volxml,
> +                          const char *inputpoolxml,
>                            const char *inputvolxml,
>                            const char *cmdline,
>                            unsigned int flags,
> @@ -22,6 +44,7 @@ testCompareXMLToArgvFiles(bool shouldFail,
>  {
>      char *volXmlData = NULL;
>      char *poolXmlData = NULL;
> +    char *inputpoolXmlData = NULL;
>      char *inputvolXmlData = NULL;
>      char *expectedCmdline = NULL;
>      char *actualCmdline = NULL;
> @@ -34,6 +57,7 @@ testCompareXMLToArgvFiles(bool shouldFail,
>  
>      virStorageVolDefPtr vol = NULL, inputvol = NULL;
>      virStoragePoolDefPtr pool = NULL;
> +    virStoragePoolDefPtr inputpool = NULL;
>      virStoragePoolObj poolobj = {.def = NULL };
>  
>  
> @@ -53,13 +77,23 @@ testCompareXMLToArgvFiles(bool shouldFail,
>  
>      poolobj.def = pool;
>  
> +    if (inputpoolxml) {
> +        if (virtTestLoadFile(inputpoolxml, &inputpoolXmlData) < 0)
> +            goto cleanup;
> +        if (!(inputpool = virStoragePoolDefParseString(inputpoolXmlData)))
> +            goto cleanup;
> +    }
> +
>      if (!(vol = virStorageVolDefParseString(pool, volXmlData)))
>          goto cleanup;
>  
>      if (inputvolxml &&
> -        !(inputvol = virStorageVolDefParseString(pool, inputvolXmlData)))
> +        !(inputvol = virStorageVolDefParseString(inputpool, inputvolXmlData)))
>          goto cleanup;
>  
> +    testSetVolumeType(vol, pool);
> +    testSetVolumeType(inputvol, inputpool);

Coverity is grumpy (FORWARD_NULL) right here as inputpool could be NULL
since setting 'inputpool' has been based upon 'inputpoolxml' being true
up to this point

94   	    testSetVolumeType(vol, pool);

(13) Event var_deref_model: 	Passing null pointer "inputpool" to
function "testSetVolumeType(virStorageVolDefPtr, virStoragePoolDefPtr)",
which dereferences it. [details]
Also see events: 	[assign_zero]

95   	    testSetVolumeType(inputvol, inputpool);


> +
>      cmd = virStorageBackendCreateQemuImgCmd(conn, &poolobj, vol, inputvol,
>                                              flags, create_tool, imgformat);
>      if (!cmd) {
> @@ -88,11 +122,13 @@ testCompareXMLToArgvFiles(bool shouldFail,
>  
>  cleanup:
>      virStoragePoolDefFree(pool);
> +    virStoragePoolDefFree(inputpool);
>      virStorageVolDefFree(vol);
>      virStorageVolDefFree(inputvol);
>      virCommandFree(cmd);
>      VIR_FREE(actualCmdline);
>      VIR_FREE(expectedCmdline);
> +    VIR_FREE(inputpoolXmlData);
>      VIR_FREE(poolXmlData);
>      VIR_FREE(volXmlData);
>      VIR_FREE(inputvolXmlData);
> @@ -104,6 +140,7 @@ struct testInfo {
>      bool shouldFail;
>      const char *pool;
>      const char *vol;
> +    const char *inputpool;
>      const char *inputvol;
>      const char *cmdline;
>      unsigned int flags;
> @@ -116,6 +153,7 @@ testCompareXMLToArgvHelper(const void *data)
>      int result = -1;
>      const struct testInfo *info = data;
>      char *poolxml = NULL;
> +    char *inputpoolxml = NULL;
>      char *volxml = NULL;
>      char *inputvolxml = NULL;
>      char *cmdline = NULL;
> @@ -124,6 +162,10 @@ testCompareXMLToArgvHelper(const void *data)
>          virAsprintf(&inputvolxml, "%s/storagevolxml2xmlin/%s.xml",
>                      abs_srcdir, info->inputvol) < 0)
>          goto cleanup;
> +    if (info->inputpool &&
> +        virAsprintf(&inputpoolxml, "%s/storagepoolxml2xmlin/%s.xml",
> +                    abs_srcdir, info->inputpool) < 0)
> +        goto cleanup;
>      if (virAsprintf(&poolxml, "%s/storagepoolxml2xmlin/%s.xml",
>                      abs_srcdir, info->pool) < 0 ||
>          virAsprintf(&volxml, "%s/storagevolxml2xmlin/%s.xml",
> @@ -135,13 +177,15 @@ testCompareXMLToArgvHelper(const void *data)
>          goto cleanup;
>  
>      result = testCompareXMLToArgvFiles(info->shouldFail, poolxml, volxml,
> -                                       inputvolxml, cmdline, info->flags,
> +                                       inputpoolxml, inputvolxml,
> +                                       cmdline, info->flags,
>                                         info->imgformat);
>  
>  cleanup:
>      VIR_FREE(poolxml);
>      VIR_FREE(volxml);
>      VIR_FREE(inputvolxml);
> +    VIR_FREE(inputpoolxml);
>      VIR_FREE(cmdline);
>  
>      return result;
<...snip...>




More information about the libvir-list mailing list