Fix misc failures in test suite & make test cases more robust to future changes

This commit is contained in:
Daniel P. Berrange 2009-03-04 13:04:06 +00:00
parent b9739b4709
commit 4ebe4c108d
7 changed files with 68 additions and 127 deletions

View File

@ -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

View 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;
}

View 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" \

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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