]> xenbits.xensource.com Git - libvirt.git/commitdiff
Fix misc failures in test suite & make test cases more robust to future changes
authorDaniel P. Berrange <berrange@redhat.com>
Wed, 4 Mar 2009 13:04:06 +0000 (13:04 +0000)
committerDaniel P. Berrange <berrange@redhat.com>
Wed, 4 Mar 2009 13:04:06 +0000 (13:04 +0000)
ChangeLog
src/virsh.c
tests/Makefile.am
tests/daemon-conf
tests/libvirtd-fail
tests/libvirtd-net-persist [deleted file]
tests/libvirtd-pool

index db620c0f63203f90c71676f4c8c2cad82f002665..243b8e3304a26b063e160c28da0eeada58c9055e 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,23 @@
+Wed Mar  4 12:37:13 GMT 2009 Daniel P. Berrange <berrange@redhat.com>
+
+       Fix misc failures in test suite & make test cases more robust
+       to future changes
+       * src/virsh.c: Add a new --print-xml option to pool-define-as
+       and pool-create-as, to allow printing of generated XML doc.
+       * tests/Makefile.am: Fix setting of CONFIG_HEADER variable
+       * tests/daemon-conf: Don't diff entire of libvirtd stdout,
+       just grep for the diagnostic we care about, to avoid breaking
+       everytime libvirtd prints new unrelated diagnostics
+       * tests/libvirtd-fail: Check status of libvirtd when run with
+       bogus config file to detect failure, rather than relying on
+       diff of unpredictable stdout logs
+       * tests/libvirtd-net-persist: Remove test which breaks if
+       QEMU driver can't be started, and conflicts with running
+       session daemon
+       * tests/libvirtd-pool: Use new --print-xml option to virsh
+       to directly test XML generation, rather than indirectly
+       checking via the QEMU driver
+
 Tue Mar  3 19:31:13 GMT 2009 Daniel P. Berrange <berrange@redhat.com>
 
        * src/libvirt.c: Fix return status s/-2/-1/ for virNodeGetSecurityModel
index 6a257ca2e4cd6c94f3692cd4f63cd8af146f09c2..9a7b0ed6733f8e5f6b51696b334e9c19ba160279 100644 (file)
@@ -2923,6 +2923,7 @@ cmdPoolCreate(vshControl *ctl, const vshCmd *cmd)
  */
 static const vshCmdOptDef opts_pool_X_as[] = {
     {"name", VSH_OT_DATA, VSH_OFLAG_REQ, gettext_noop("name of the pool")},
+    {"print-xml", VSH_OT_BOOL, 0, gettext_noop("print XML document, but don't define/create")},
     {"type", VSH_OT_DATA, VSH_OFLAG_REQ, gettext_noop("type of the pool")},
     {"source-host", VSH_OT_DATA, 0, gettext_noop("source-host for underlying storage")},
     {"source-path", VSH_OT_DATA, 0, gettext_noop("source path for underlying storage")},
@@ -3002,6 +3003,7 @@ cmdPoolCreateAs(vshControl *ctl, const vshCmd *cmd)
 {
     virStoragePoolPtr pool;
     char *xml, *name;
+    int printXML = vshCommandOptBool(cmd, "print-xml");
 
     if (!vshConnectionUsability(ctl, ctl->conn, TRUE))
         return FALSE;
@@ -3009,18 +3011,22 @@ cmdPoolCreateAs(vshControl *ctl, const vshCmd *cmd)
     if (!buildPoolXML(cmd, &name, &xml))
         return FALSE;
 
-    pool = virStoragePoolCreateXML(ctl->conn, xml, 0);
-    free (xml);
-
-    if (pool != NULL) {
-        vshPrint(ctl, _("Pool %s created\n"), name);
-        virStoragePoolFree(pool);
-        return TRUE;
+    if (printXML) {
+        printf("%s", xml);
+        free (xml);
     } else {
-        vshError(ctl, FALSE, _("Failed to create pool %s"), name);
-    }
+        pool = virStoragePoolCreateXML(ctl->conn, xml, 0);
+        free (xml);
 
-    return FALSE;
+        if (pool != NULL) {
+            vshPrint(ctl, _("Pool %s created\n"), name);
+            virStoragePoolFree(pool);
+        } else {
+            vshError(ctl, FALSE, _("Failed to create pool %s"), name);
+            return FALSE;
+        }
+    }
+    return TRUE;
 }
 
 
@@ -3085,6 +3091,7 @@ cmdPoolDefineAs(vshControl *ctl, const vshCmd *cmd)
 {
     virStoragePoolPtr pool;
     char *xml, *name;
+    int printXML = vshCommandOptBool(cmd, "print-xml");
 
     if (!vshConnectionUsability(ctl, ctl->conn, TRUE))
         return FALSE;
@@ -3092,18 +3099,22 @@ cmdPoolDefineAs(vshControl *ctl, const vshCmd *cmd)
     if (!buildPoolXML(cmd, &name, &xml))
         return FALSE;
 
-    pool = virStoragePoolDefineXML(ctl->conn, xml, 0);
-    free (xml);
-
-    if (pool != NULL) {
-        vshPrint(ctl, _("Pool %s defined\n"), name);
-        virStoragePoolFree(pool);
-        return TRUE;
+    if (printXML) {
+        printf("%s", xml);
+        free (xml);
     } else {
-        vshError(ctl, FALSE, _("Failed to define pool %s"), name);
-    }
+        pool = virStoragePoolDefineXML(ctl->conn, xml, 0);
+        free (xml);
 
-    return FALSE;
+        if (pool != NULL) {
+            vshPrint(ctl, _("Pool %s defined\n"), name);
+            virStoragePoolFree(pool);
+        } else {
+            vshError(ctl, FALSE, _("Failed to define pool %s"), name);
+            return FALSE;
+        }
+    }
+    return TRUE;
 }
 
 
index 8b4bd0c771b1454fa6e5960b5ca0bd34a4753226..28b273702ceebd72d7b500029357abc5c42808c0 100644 (file)
@@ -82,7 +82,6 @@ test_scripts +=                               \
        define-dev-segfault             \
        int-overflow                    \
        libvirtd-fail                   \
-       libvirtd-net-persist            \
        libvirtd-pool                   \
        read-bufsiz                     \
        read-non-seekable               \
@@ -127,7 +126,7 @@ TESTS_ENVIRONMENT =                         \
   abs_top_srcdir=`cd '$(top_srcdir)'; pwd`     \
   abs_builddir=`cd '$(builddir)'; pwd`         \
   abs_srcdir=`cd '$(srcdir)'; pwd`             \
-  CONFIG_HEADER='$(abs_top_builddir)/config.h' \
+  CONFIG_HEADER="`cd '$(top_builddir)'; pwd`/config.h" \
   PATH="$(path_add)$(PATH_SEPARATOR)$$PATH"    \
   SHELL="$(SHELL)"                             \
   LIBVIRT_DRIVER_DIR="$(abs_top_builddir)/src/.libs" \
index a5e86ae5757674fc053a7bdfb1b826c6507f54dd..4fa82a42ec9b061fba59dea71b5477929eeb4885 100755 (executable)
@@ -52,15 +52,10 @@ while :; do
 
   test $i = $n && break
 
-  # Filter out some ignorable diagnostics and drop timestamps
-  sed \
-      -e 's/.*: error : //' \
-      -e '/^Cannot set group when not running as root$/d' \
-      -e '/^libnuma: Warning: .sys not mounted or no numa system/d' \
-    err > k && mv k err
-
-  printf '%s\n\n' "remoteReadConfigFile: $f: $param_name: $msg" > expected-err
-  diff -u expected-err err || fail=1
+  # Check that the diagnostic we want appears
+  grep "$msg" err 1>/dev/null 2>&1
+  RET=$?
+  test "$RET" = "0" || fail=1
 
   i=$(expr $i + 1)
 done
index 92b82c4b0b44e11414425a3a8b5c1af097b3858b..eeb1ee68fc5dd9fd4b8f7f43f6abcb09e4f7c93f 100755 (executable)
@@ -12,10 +12,7 @@ test -z "$abs_top_srcdir" && abs_top_srcdir=$(pwd)/..
 
 fail=0
 
-libvirtd --config=no-such-file > log 2>&1 && fail=1
-cat <<\EOF > exp
-Failed to open file 'no-such-file': No such file or directory
-EOF
+libvirtd --config=no-such-conf --timeout=5 2> log
+RET=$?
 
-compare exp log || fail=1
-exit $fail
+test "$RET" != "0" && exit 0 || exit 1
diff --git a/tests/libvirtd-net-persist b/tests/libvirtd-net-persist
deleted file mode 100755 (executable)
index 50a1ef4..0000000
+++ /dev/null
@@ -1,58 +0,0 @@
-#!/bin/sh
-# ensure that net-destroy doesn't make network disappear (persistence-related)
-
-if test "$VERBOSE" = yes; then
-  set -x
-  libvirtd --version
-  virsh --version
-fi
-
-test -z "$srcdir" && srcdir=$(pwd)
-test -z "$abs_top_srcdir" && abs_top_srcdir=$(pwd)/..
-. "$srcdir/test-lib.sh"
-
-fail=0
-
-pwd=$(pwd) || fail=1
-sock_dir="$pwd"
-cat > conf <<EOF || fail=1
-unix_sock_dir = "$sock_dir"
-log_outputs = "3:file:$pwd/log"
-EOF
-
-cat > net.xml <<EOF || fail=1
-<network>
-  <name>N</name>
-  <ip address="192.168.199.1" netmask="255.255.255.0"></ip>
-</network>
-EOF
-
-cat > exp <<EOF || fail=1
-Network N defined from net.xml
-
-Network N destroyed
-
-Name                 State      Autostart
------------------------------------------
-N                    inactive no
-
-EOF
-
-libvirtd --config=conf > libvirtd-log 2>&1 & pid=$!
-sleep 1
-
-url="qemu:///session?socket=@$sock_dir/libvirt-sock"
-virsh -c "$url" \
-    'net-define net.xml; net-destroy N; net-list --all' > out 2>&1 \
-  || fail=1
-
-# if libvird's log is empty, sleep for a second before killing it
-test -s libvirtd-log || sleep 1
-kill $pid
-
-compare exp out || fail=1
-
-printf "Shutting down network 'N'\n" > log-exp
-compare log-exp libvirtd-log || fail=1
-
-exit $fail
index 370f3b1c705ea8512f252115178ccb3273ea664a..59da5a696dd41cd94d2d64fd5e6f69291e40d468 100755 (executable)
@@ -1,9 +1,8 @@
 #!/bin/sh
-# Get coverage of libvirtd's config-parsing code.
+# Get coverage of virsh pool-define-as XML formatting
 
 if test "$VERBOSE" = yes; then
   set -x
-  libvirtd --version
   virsh --version
 fi
 
@@ -14,50 +13,28 @@ test -z "$abs_top_srcdir" && abs_top_srcdir=$(pwd)/..
 fail=0
 
 pwd=$(pwd) || fail=1
-sock_dir="$pwd"
-cat > conf <<EOF || fail=1
-unix_sock_dir = "$sock_dir"
-log_outputs = "3:file:$pwd/log"
-EOF
-
-libvirtd --config=conf > libvirtd-log 2>&1 & pid=$!
-sleep 1
-
-url="qemu:///session?socket=@$sock_dir/libvirt-sock"
-virsh --connect "$url" \
-    pool-define-as P dir src-host /src/path /src/dev S /target-path > out 2>&1 \
-  || fail=1
-virsh --connect "$url" pool-dumpxml P >> out 2>&1 || fail=1
 
-# remove random uuid
-sed 's/<uuid>.*/-/' out > k && mv k out || fail=1
-
-kill $pid
+virsh --connect test:///default \
+  pool-define-as --print-xml \
+  P dir src-host /src/path /src/dev S /target-path \
+  1>out 2>&1
 
 cat <<EOF > pool-list-exp
-Pool P defined
-
 <pool type='dir'>
   <name>P</name>
-  -
-  <capacity>0</capacity>
-  <allocation>0</allocation>
-  <available>0</available>
   <source>
+    <host name='src-host'/>
+    <dir path='/src/path'/>
+    <device path='/src/dev'/>
+    <name>S</name>
   </source>
   <target>
     <path>/target-path</path>
-    <permissions>
-      <mode>0700</mode>
-      <owner>500</owner>
-      <group>500</group>
-    </permissions>
   </target>
 </pool>
 
 EOF
 
 compare pool-list-exp out || fail=1
-compare /dev/null libvirtd-log || fail=1
 
 exit $fail