[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]

[Libvir] [PATCH] Tidy up the error messages produced by test driver



This minor patch:

* Introduces a VIR_FROM_TEST class of errors and makes errors generated by test come from that class.

* Provides a reasonable error message if the user forgets to supply a path. Also stops the driver from trying to open ("/"). Example:
     $ src/virsh -c test:/// capabilities
     libvir: Test error : invalid argument in testOpen: supply a
     path or use test:///default
     lt-virsh: error: failed to connect to the hypervisor

* Arranges that Xen-unified appears last in the list of drivers, because qemu and test have well-defined URI syntaxes so can be checked first.

'make check' passes all tests with this patch.

Rich.

--
Emerging Technologies, Red Hat  http://et.redhat.com/~rjones/
64 Baker Street, London, W1U 7DF     Mobile: +44 7866 314 421

Registered Address: Red Hat UK Ltd, Amberley Place, 107-111 Peascod
Street, Windsor, Berkshire, SL4 1TE, United Kingdom.
Registered in England and Wales under Company Registration No. 3798903
Directors: Michael Cunningham (USA), Charlie Peters (USA) and David
Owens (Ireland)
Index: src/libvirt.c
===================================================================
RCS file: /data/cvs/libvirt/src/libvirt.c,v
retrieving revision 1.67
diff -u -r1.67 libvirt.c
--- src/libvirt.c	12 Apr 2007 14:18:39 -0000	1.67
+++ src/libvirt.c	18 Apr 2007 09:29:14 -0000
@@ -64,15 +64,15 @@
      * Note that the order is important: the first ones have a higher
      * priority when calling virConnectOpen.
      */
-#ifdef WITH_XEN
-    if (xenUnifiedRegister () == -1) return -1;
-#endif
 #ifdef WITH_TEST
     if (testRegister() == -1) return -1;
 #endif
 #ifdef WITH_QEMU
     if (qemuRegister() == -1) return -1;
 #endif
+#ifdef WITH_XEN
+    if (xenUnifiedRegister () == -1) return -1;
+#endif
 
     return(0);
 }
Index: src/test.c
===================================================================
RCS file: /data/cvs/libvirt/src/test.c,v
retrieving revision 1.27
diff -u -r1.27 test.c
--- src/test.c	6 Apr 2007 15:34:09 -0000	1.27
+++ src/test.c	18 Apr 2007 09:29:15 -0000
@@ -213,7 +213,7 @@
         return;
 
     errmsg = __virErrorMsg(error, info);
-    __virRaiseError(con, dom, NULL, VIR_FROM_XEN, error, VIR_ERR_ERROR,
+    __virRaiseError(con, dom, NULL, VIR_FROM_TEST, error, VIR_ERR_ERROR,
                     errmsg, info, NULL, 0, 0, errmsg, info, 0);
 }
 
@@ -722,13 +722,19 @@
         return VIR_DRV_OPEN_DECLINED;
     }
 
-    if (!uri->scheme ||
-        strcmp(uri->scheme, "test") ||
-        !uri->path) {
+    if (!uri->scheme || strcmp(uri->scheme, "test") != 0) {
         xmlFreeURI(uri);
         return VIR_DRV_OPEN_DECLINED;
     }
 
+    /* From this point on, the connection is for us. */
+    if (!uri->path
+        || uri->path[0] == '\0'
+        || (uri->path[0] == '/' && uri->path[1] == '\0')) {
+        testError (conn, NULL, VIR_ERR_INVALID_ARG,
+                   _("testOpen: supply a path or use test:///default"));
+        return VIR_DRV_OPEN_ERROR;
+    }
 
     if ((connid = getNextConnection()) < 0) {
         testError(NULL, NULL, VIR_ERR_INTERNAL_ERROR, _("too many connections"));
@@ -738,12 +744,12 @@
     /* Allocate per-connection private data. */
     priv = conn->privateData = malloc (sizeof (struct _testPrivate));
     if (!priv) {
-        testError(NULL, NULL, VIR_ERR_NO_MEMORY, "allocating private data");
+        testError(conn, NULL, VIR_ERR_NO_MEMORY, _("allocating private data"));
         return VIR_DRV_OPEN_ERROR;
     }
     priv->handle = -1;
 
-    if (!strcmp(uri->path, "/default")) {
+    if (strcmp(uri->path, "/default") == 0) {
         ret = testOpenDefault(conn,
                               connid);
     } else {
Index: src/virterror.c
===================================================================
RCS file: /data/cvs/libvirt/src/virterror.c,v
retrieving revision 1.23
diff -u -r1.23 virterror.c
--- src/virterror.c	15 Mar 2007 17:24:57 -0000	1.23
+++ src/virterror.c	18 Apr 2007 09:29:16 -0000
@@ -274,6 +274,9 @@
         case VIR_FROM_NET:
             dom = "Network ";
             break;
+        case VIR_FROM_TEST:
+            dom = "Test ";
+            break;
     }
     if ((err->dom != NULL) && (err->code != VIR_ERR_INVALID_DOMAIN)) {
         domain = err->dom->name;
Index: tests/.cvsignore
===================================================================
RCS file: /data/cvs/libvirt/tests/.cvsignore,v
retrieving revision 1.7
diff -u -r1.7 .cvsignore
--- tests/.cvsignore	23 Feb 2007 17:15:42 -0000	1.7
+++ tests/.cvsignore	18 Apr 2007 09:29:16 -0000
@@ -9,6 +9,7 @@
 conftest
 reconnect
 xmconfigtest
+xencapstest
 *.gcda
 *.gcno
 

Attachment: smime.p7s
Description: S/MIME Cryptographic Signature


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]