summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDaniel P. Berrange <berrange@redhat.com>2009-03-04 13:04:06 +0000
committerDaniel P. Berrange <berrange@redhat.com>2009-03-04 13:04:06 +0000
commit4ebe4c108d5cfa80d0bb006fa79fd842735034b9 (patch)
tree4dc3390ca08a2e25d98893d594a22bdd050277f0
parentb9739b47095a16cfe6b612494cc3033809cf0a23 (diff)
downloadlibvirt-4ebe4c108d5cfa80d0bb006fa79fd842735034b9.tar.gz
Fix misc failures in test suite & make test cases more robust to future changes
-rw-r--r--ChangeLog20
-rw-r--r--src/virsh.c51
-rw-r--r--tests/Makefile.am3
-rwxr-xr-xtests/daemon-conf13
-rwxr-xr-xtests/libvirtd-fail9
-rwxr-xr-xtests/libvirtd-net-persist58
-rwxr-xr-xtests/libvirtd-pool41
7 files changed, 68 insertions, 127 deletions
diff --git a/ChangeLog b/ChangeLog
index db620c0f63..243b8e3304 100644
--- 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
diff --git a/src/virsh.c b/src/virsh.c
index 6a257ca2e4..9a7b0ed673 100644
--- a/src/virsh.c
+++ b/src/virsh.c
@@ -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;
}
diff --git a/tests/Makefile.am b/tests/Makefile.am
index 8b4bd0c771..28b273702c 100644
--- a/tests/Makefile.am
+++ b/tests/Makefile.am
@@ -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" \
diff --git a/tests/daemon-conf b/tests/daemon-conf
index a5e86ae575..4fa82a42ec 100755
--- a/tests/daemon-conf
+++ b/tests/daemon-conf
@@ -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
diff --git a/tests/libvirtd-fail b/tests/libvirtd-fail
index 92b82c4b0b..eeb1ee68fc 100755
--- a/tests/libvirtd-fail
+++ b/tests/libvirtd-fail
@@ -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
index 50a1ef4299..0000000000
--- a/tests/libvirtd-net-persist
+++ /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
diff --git a/tests/libvirtd-pool b/tests/libvirtd-pool
index 370f3b1c70..59da5a696d 100755
--- a/tests/libvirtd-pool
+++ b/tests/libvirtd-pool
@@ -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