]> xenbits.xensource.com Git - people/dariof/libvirt.git/commitdiff
tests: Remove temporary directories in qemumonitorjsontest
authorPeter Krempa <pkrempa@redhat.com>
Mon, 12 Nov 2012 14:33:55 +0000 (15:33 +0100)
committerPeter Krempa <pkrempa@redhat.com>
Tue, 13 Nov 2012 08:32:15 +0000 (09:32 +0100)
qemumonitorjsontest creates a temporary directory to hold the socket
that is simulating the monitor socket. The directory containing the
socket wasn't disposed properly at the end of the test leaving garbage
in the temporary folder.

tests/qemumonitortestutils.c

index 7f7c855438679e81f52273d6b58cf7b4423d95e8..b55d86718709033c2cee18bfe3ec502fd9888fb6 100644 (file)
@@ -65,6 +65,8 @@ struct _qemuMonitorTest {
 
     qemuMonitorPtr mon;
 
+    char *tmpdir;
+
     size_t nitems;
     qemuMonitorTestItemPtr *items;
 
@@ -378,6 +380,11 @@ void qemuMonitorTestFree(qemuMonitorTestPtr test)
         qemuMonitorTestItemFree(test->items[i]);
     VIR_FREE(test->items);
 
+    if (test->tmpdir && rmdir(test->tmpdir) < 0)
+        VIR_WARN("Failed to remove tempdir: %s", strerror(errno));
+
+    VIR_FREE(test->tmpdir);
+
     virMutexDestroy(&test->lock);
     VIR_FREE(test);
 }
@@ -438,31 +445,11 @@ qemuMonitorTestPtr qemuMonitorTestNew(bool json, virCapsPtr caps)
 {
     qemuMonitorTestPtr test = NULL;
     virDomainChrSourceDef src;
+    char *path = NULL;
+    char *tmpdir_template = NULL;
 
-    char *tmpdir = NULL, *path = NULL;
-    char template[] = "/tmp/libvirt_XXXXXX";
-
-    tmpdir = mkdtemp(template);
-    if (tmpdir == NULL) {
-        virReportSystemError(errno, "%s",
-                             "Failed to create temporary directory");
-        goto error;
-    }
-
-    if (virAsprintf(&path, "%s/qemumonitorjsontest.sock", tmpdir) < 0) {
-        virReportOOMError();
-        goto error;
-    }
-
-    memset(&src, 0, sizeof(src));
-    src.type = VIR_DOMAIN_CHR_TYPE_UNIX;
-    src.data.nix.path = (char *)path;
-    src.data.nix.listen = false;
-
-    if (VIR_ALLOC(test) < 0) {
-        virReportOOMError();
-        return NULL;
-    }
+    if (VIR_ALLOC(test) < 0)
+        goto no_memory;
 
     if (virMutexInit(&test->lock) < 0) {
         virReportError(VIR_ERR_INTERNAL_ERROR, "%s",
@@ -471,6 +458,20 @@ qemuMonitorTestPtr qemuMonitorTestNew(bool json, virCapsPtr caps)
         return NULL;
     }
 
+    if (!(tmpdir_template = strdup("/tmp/libvirt_XXXXXX")))
+        goto no_memory;
+
+    if (!(test->tmpdir = mkdtemp(tmpdir_template))) {
+        virReportSystemError(errno, "%s",
+                             "Failed to create temporary directory");
+        goto error;
+    }
+
+    tmpdir_template = NULL;
+
+    if (virAsprintf(&path, "%s/qemumonitorjsontest.sock", test->tmpdir) < 0)
+        goto no_memory;
+
     test->json = json;
     if (!(test->vm = virDomainObjNew(caps)))
         goto error;
@@ -482,6 +483,10 @@ qemuMonitorTestPtr qemuMonitorTestNew(bool json, virCapsPtr caps)
                                   &test->server) < 0)
         goto error;
 
+    memset(&src, 0, sizeof(src));
+    src.type = VIR_DOMAIN_CHR_TYPE_UNIX;
+    src.data.nix.path = (char *)path;
+    src.data.nix.listen = false;
 
     if (virNetSocketListen(test->server, 1) < 0)
         goto error;
@@ -522,13 +527,14 @@ qemuMonitorTestPtr qemuMonitorTestNew(bool json, virCapsPtr caps)
     virMutexUnlock(&test->lock);
 
 cleanup:
-    if (tmpdir)
-        if (rmdir(tmpdir) < 0)
-            VIR_WARN("Failed to remove tempdir: %s", strerror(errno));
     VIR_FREE(path);
     return test;
 
+no_memory:
+    virReportOOMError();
+
 error:
+    VIR_FREE(tmpdir_template);
     qemuMonitorTestFree(test);
     goto cleanup;
 }