diff options
author | Richard W.M. Jones <rjones@redhat.com> | 2012-07-09 15:56:47 +0100 |
---|---|---|
committer | Richard W.M. Jones <rjones@redhat.com> | 2012-07-09 17:44:50 +0100 |
commit | 8df259496a80bc74edbab4436e3679d0900bd173 (patch) | |
tree | 4b17ac5968ec226b13338971404f5a1cc43300d9 /fuse/test-fuse-umount-race.sh | |
parent | 5546ea6d68532caa69fbede1f29385afe34e7362 (diff) | |
download | libguestfs-8df259496a80bc74edbab4436e3679d0900bd173.tar.gz libguestfs-8df259496a80bc74edbab4436e3679d0900bd173.tar.xz libguestfs-8df259496a80bc74edbab4436e3679d0900bd173.zip |
fuse: Add regression test for RHBZ#838592.
Diffstat (limited to 'fuse/test-fuse-umount-race.sh')
-rwxr-xr-x | fuse/test-fuse-umount-race.sh | 77 |
1 files changed, 77 insertions, 0 deletions
diff --git a/fuse/test-fuse-umount-race.sh b/fuse/test-fuse-umount-race.sh new file mode 100755 index 00000000..a5a6e21d --- /dev/null +++ b/fuse/test-fuse-umount-race.sh @@ -0,0 +1,77 @@ +#!/bin/bash - +# libguestfs +# Copyright (C) 2012 Red Hat Inc. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + +# https://bugzilla.redhat.com/show_bug.cgi?id=838592 +# This tests that the --pid-file option can be used to fix the race. + +unset CDPATH +set -e +#set -v + +if [ -n "$SKIP_TEST_FUSE_SH" ]; then + echo "$0: test skipped because environment variable is set." + exit 0 +fi + +if [ ! -w /dev/fuse ]; then + echo "SKIPPING guestmount test, because there is no /dev/fuse." + exit 0 +fi + +rm -f test.qcow2 test-copy.qcow2 test.pid +rm -rf mp + +# Make a copy of the Fedora image so we can write to it then discard it. +qemu-img create -F raw -b ../tests/guests/fedora.img -f qcow2 test.qcow2 + +mkdir mp +./guestmount -a test.qcow2 -m /dev/VG/Root --pid-file test.pid mp +cp $0 mp/test-umount + +count=10 +while ! fusermount -u mp && [ $count -gt 0 ]; do + sleep 1 + ((count--)) +done +if [ $count -eq 0 ]; then + echo "$0: fusermount failed after 10 attempts" + exit 1 +fi + +# Wait for guestmount to exit. +count=10 +while kill -0 `cat test.pid` 2>/dev/null && [ $count -gt 0 ]; do + sleep 1 + ((count--)) +done +if [ $count -eq 0 ]; then + echo "$0: wait for guestmount to exit failed after 10 seconds" + exit 1 +fi + +# It should now be safe to copy and read the disk image. +cp test.qcow2 test-copy.qcow2 + +if [ "$(../fish/guestfish -a test-copy.qcow2 --ro -i is-file /test-umount)" != "true" ]; then + echo "$0: test failed" + exit 1 +fi + +rm test.qcow2 test-copy.qcow2 +rm -f test.pid +rm -r mp |