From 4ebe4c108d5cfa80d0bb006fa79fd842735034b9 Mon Sep 17 00:00:00 2001 From: "Daniel P. Berrange" Date: Wed, 4 Mar 2009 13:04:06 +0000 Subject: [PATCH] Fix misc failures in test suite & make test cases more robust to future changes --- ChangeLog | 20 +++++++++++++ src/virsh.c | 51 ++++++++++++++++++++------------- tests/Makefile.am | 3 +- tests/daemon-conf | 13 +++------ tests/libvirtd-fail | 9 ++---- tests/libvirtd-net-persist | 58 -------------------------------------- tests/libvirtd-pool | 41 ++++++--------------------- 7 files changed, 68 insertions(+), 127 deletions(-) delete mode 100755 tests/libvirtd-net-persist 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 + + 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 * 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 < net.xml < - N - - -EOF - -cat > exp < 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 < 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/.*/-/' 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 < pool-list-exp -Pool P defined - P - - - 0 - 0 - 0 + + + + S /target-path - - 0700 - 500 - 500 - EOF compare pool-list-exp out || fail=1 -compare /dev/null libvirtd-log || fail=1 exit $fail -- GitLab