mirror of https://gitee.com/openkylin/libvirt.git
Fix misc failures in test suite & make test cases more robust to future changes
This commit is contained in:
parent
b9739b4709
commit
4ebe4c108d
20
ChangeLog
20
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
|
||||
|
|
51
src/virsh.c
51
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;
|
||||
}
|
||||
|
||||
|
||||
|
|
|
@ -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" \
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
|
@ -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
|
||||
|
|
Loading…
Reference in New Issue