diff options
| -rw-r--r-- | tests/basic/ec/nfs.t | 3 | ||||
| -rwxr-xr-x | tests/basic/mount.t | 16 | ||||
| -rw-r--r-- | tests/basic/nufa.t | 6 | ||||
| -rwxr-xr-x | tests/basic/quota.t | 3 | ||||
| -rw-r--r-- | tests/basic/uss.t | 3 | ||||
| -rw-r--r-- | tests/basic/volume-status.t | 7 | ||||
| -rwxr-xr-x | tests/bugs/bug-1043886.t | 3 | ||||
| -rwxr-xr-x | tests/bugs/bug-1070734.t | 3 | ||||
| -rw-r--r-- | tests/bugs/bug-867253.t | 2 | ||||
| -rwxr-xr-x | tests/bugs/bug-887145.t | 2 | ||||
| -rwxr-xr-x | tests/bugs/bug-927616.t | 2 | ||||
| -rw-r--r-- | tests/include.rc | 24 | ||||
| -rw-r--r-- | tests/nfs.rc | 46 | 
13 files changed, 101 insertions, 19 deletions
diff --git a/tests/basic/ec/nfs.t b/tests/basic/ec/nfs.t index 53ec30c92b0..b2e51c03af5 100644 --- a/tests/basic/ec/nfs.t +++ b/tests/basic/ec/nfs.t @@ -15,4 +15,7 @@ TEST mount_nfs $H0:/$V0 $N0  TEST dd if=/dev/zero of=$N0/test bs=1024k count=1k +## Before killing daemon to avoid deadlocks +EXPECT_WITHIN $UMOUNT_TIMEOUT "Y" umount_nfs $N0   +  cleanup diff --git a/tests/basic/mount.t b/tests/basic/mount.t index c77317f37f5..d67bc8ab998 100755 --- a/tests/basic/mount.t +++ b/tests/basic/mount.t @@ -39,21 +39,21 @@ TEST $CLI volume set $V0 performance.stat-prefetch off;  TEST glusterfs --entry-timeout=0 --attribute-timeout=0 -s $H0 --volfile-id $V0 $M0;  ## Check consistent "rw" option -TEST 'mount -t fuse.glusterfs | grep -E "^$H0:$V0 .+ \(rw,"'; -TEST 'grep -E "^$H0:$V0 .+ ,?rw," /proc/mounts'; +TEST 'mount -t $MOUNT_TYPE_FUSE | grep -E "^$H0:$V0 "|$GREP_MOUNT_OPT_RW'; +TEST 'grep -E "^$H0:$V0 .+ ,?rw,?" /proc/mounts';  ## Mount FUSE with caching disabled (read-only)  TEST glusterfs --entry-timeout=0 --attribute-timeout=0 --read-only -s $H0 --volfile-id $V0 $M1;  ## Check consistent "ro" option -TEST 'mount -t fuse.glusterfs | grep -E "^$H0:$V0 .+ \(ro,"'; -TEST 'grep -E "^$H0:$V0 .+ ,?ro,.+" /proc/mounts'; +TEST 'mount -t $MOUNT_TYPE_FUSE | grep -E "^$H0:$V0 "|$GREP_MOUNT_OPT_RO'; +TEST 'grep -E "^$H0:$V0 .+ ,?ro(,.+)?" /proc/mounts';  ## Wait for volume to register with rpc.mountd  EXPECT_WITHIN $NFS_EXPORT_TIMEOUT "1" is_nfs_export_available;  ## Mount NFS -TEST mount -t nfs -o nolock,soft,intr $H0:/$V0 $N0; +TEST mount_nfs $H0:/$V0 $N0 nolock;  ## Test for consistent views between NFS and FUSE mounts @@ -63,11 +63,13 @@ TEST ! touch $M1/newfile;  TEST touch $M0/newfile;  TEST stat $M1/newfile;  TEST stat $N0/newfile; -TEST ! rm $M1/newfile; -TEST rm $N0/newfile; +TEST ! rm -f $M1/newfile; +TEST rm -f $N0/newfile;  TEST ! stat $M0/newfile;  TEST ! stat $M1/newfile; +## Before killing daemon to avoid deadlocks +EXPECT_WITHIN $UMOUNT_TIMEOUT "Y" umount_nfs $N0  ## Finish up  TEST $CLI volume stop $V0; diff --git a/tests/basic/nufa.t b/tests/basic/nufa.t index 0d4c229a0fa..4235539c658 100644 --- a/tests/basic/nufa.t +++ b/tests/basic/nufa.t @@ -2,6 +2,7 @@  . $(dirname $0)/../include.rc  . $(dirname $0)/../volume.rc +. $(dirname $0)/../nfs.rc  cleanup; @@ -27,6 +28,9 @@ TEST glusterfs --entry-timeout=0 --attribute-timeout=0 --read-only -s $H0 --volf  sleep 5;  ## Mount NFS -TEST mount -t nfs -o nolock,soft,intr $H0:/$V0 $N0; +TEST mount_nfs $H0:/$V0 $N0 nolock; + +## Before killing daemon to avoid deadlocks +EXPECT_WITHIN $UMOUNT_TIMEOUT "Y" umount_nfs $N0  cleanup; diff --git a/tests/basic/quota.t b/tests/basic/quota.t index 2fef251e485..1d23cfc8688 100755 --- a/tests/basic/quota.t +++ b/tests/basic/quota.t @@ -2,6 +2,7 @@  . $(dirname $0)/../include.rc  . $(dirname $0)/../volume.rc +. $(dirname $0)/../nfs.rc  . $(dirname $0)/../dht.rc  cleanup; @@ -97,7 +98,7 @@ EXPECT_WITHIN $MARKER_UPDATE_TIMEOUT "0Bytes" usage "/test_dir"  #  though this may change.  ## ----------------------------- -TEST mount -t nfs -o nolock,soft,intr $H0:/$V0 $N0; +TEST mount_nfs $H0:/$V0 $N0 nolock;  TEST $CLI volume quota $V0 limit-usage /test_dir 100MB  TEST $CLI volume quota $V0 limit-usage /test_dir/in_test_dir 150MB diff --git a/tests/basic/uss.t b/tests/basic/uss.t index 8c6a8982eea..ad7fcaf270a 100644 --- a/tests/basic/uss.t +++ b/tests/basic/uss.t @@ -243,4 +243,7 @@ TEST fd_close $fd1;  TEST fd_close $fd2;  TEST fd_close $fd3; +## Before killing daemon to avoid deadlocks +EXPECT_WITHIN $UMOUNT_TIMEOUT "Y" umount_nfs $N0 +  cleanup; diff --git a/tests/basic/volume-status.t b/tests/basic/volume-status.t index a91db3cc50a..9b636cfa936 100644 --- a/tests/basic/volume-status.t +++ b/tests/basic/volume-status.t @@ -2,6 +2,7 @@  . $(dirname $0)/../include.rc  . $(dirname $0)/../volume.rc +. $(dirname $0)/../nfs.rc  cleanup; @@ -19,7 +20,7 @@ sleep 2  TEST glusterfs -s $H0 --volfile-id $V0 $M0;  ## Mount NFS -TEST mount -t nfs -o vers=3,nolock,soft,intr $H0:/$V0 $N0; +TEST mount_nfs $H0:/$V0 $N0 nolock;  TEST $CLI volume status all  TEST $CLI volume status $V0 @@ -62,5 +63,9 @@ TEST test_shd_cmds;  TEST test_nfs_cmds;  TEST test_brick_cmds; + +## Before killing daemon to avoid deadlocks +EXPECT_WITHIN $UMOUNT_TIMEOUT "Y" umount_nfs $N0 +  cleanup; diff --git a/tests/bugs/bug-1043886.t b/tests/bugs/bug-1043886.t index 9a125c2de2c..710fcd2064d 100755 --- a/tests/bugs/bug-1043886.t +++ b/tests/bugs/bug-1043886.t @@ -46,6 +46,9 @@ TEST [ "$(stat -c %u:%g $N0/other/file)" = "$uid:$gid" ];  TEST mkdir $M0/other/dir 2>/dev/null;  TEST [ "$(stat -c %u:%g $N0/other/dir)" = "$uid:$gid" ]; +## Before killing daemon to avoid deadlocks +EXPECT_WITHIN $UMOUNT_TIMEOUT "Y" umount_nfs $N0 +  TEST $CLI volume stop $V0;  TEST $CLI volume delete $V0; diff --git a/tests/bugs/bug-1070734.t b/tests/bugs/bug-1070734.t index fd7bbe01cf6..3928983c345 100755 --- a/tests/bugs/bug-1070734.t +++ b/tests/bugs/bug-1070734.t @@ -68,4 +68,7 @@ TEST [ -f ${OTHERBRICK}/DIR/file ]  EXPECT "0x00000001000000000000000000000000" dht_get_layout $HASHED/DIR ;  EXPECT "0x000000010000000000000000ffffffff" dht_get_layout $OTHERBRICK/DIR; +## Before killing daemon to avoid deadlocks +EXPECT_WITHIN $UMOUNT_TIMEOUT "Y" umount_nfs $N0 +  cleanup diff --git a/tests/bugs/bug-867253.t b/tests/bugs/bug-867253.t index 6b0332959e9..47c194b4b52 100644 --- a/tests/bugs/bug-867253.t +++ b/tests/bugs/bug-867253.t @@ -30,7 +30,7 @@ TEST $CLI volume start $V0  EXPECT_WITHIN $NFS_EXPORT_TIMEOUT "1" is_nfs_export_available;  ## Mount nfs, with nocache option -TEST mount -o vers=3,nolock,noac -t nfs $H0:/$V0 $M0; +TEST mount_nfs $H0:/$V0 $M0 nolock,noac;  touch $M0/files{1..1000}; diff --git a/tests/bugs/bug-887145.t b/tests/bugs/bug-887145.t index ee19036e0c1..554e6ce95d6 100755 --- a/tests/bugs/bug-887145.t +++ b/tests/bugs/bug-887145.t @@ -80,6 +80,8 @@ TEST [ $? -ne 0 ]  userdel tmp_user;  rm -rf /home/tmp_user; +EXPECT_WITHIN $UMOUNT_TIMEOUT "Y" umount_nfs $N0 +  TEST $CLI volume stop $V0;  TEST $CLI volume delete $V0; diff --git a/tests/bugs/bug-927616.t b/tests/bugs/bug-927616.t index 58f961dc80a..4525ddbb747 100755 --- a/tests/bugs/bug-927616.t +++ b/tests/bugs/bug-927616.t @@ -54,6 +54,8 @@ TEST [ $? -eq 0 ]  mkdir $N0/old 2>/dev/null;  TEST [ $? -eq 0 ] +EXPECT_WITHIN $UMOUNT_TIMEOUT "Y" umount_nfs $N0 +  TEST $CLI volume stop $V0;  TEST $CLI volume delete $V0; diff --git a/tests/include.rc b/tests/include.rc index 78488b37975..e6648a7ad73 100644 --- a/tests/include.rc +++ b/tests/include.rc @@ -20,12 +20,21 @@ if [ ! -f ${PWD}/tests/env.rc ]; then  fi  . ${PWD}/tests/env.rc +H0=${H0:=`hostname`}; # hostname +MOUNT_TYPE_FUSE="fuse.glusterfs" +GREP_MOUNT_OPT_RO="grep (ro" +GREP_MOUNT_OPT_RW="grep (rw" +  case $OSTYPE in  Linux)    H0=${H0:=`hostname --fqdn`}; # hostname    ;; +NetBSD) +  MOUNT_TYPE_FUSE="puffs|perfuse|fuse.glusterfs" +  GREP_MOUNT_OPT_RO="grep (read-only" +  GREP_MOUNT_OPT_RW="grep -v (read-only" +  ;;  *) -  H0=${H0:=`hostname`}; # hostname    ;;  esac @@ -297,6 +306,13 @@ stat -c %s /dev/null > /dev/null 2>&1 || {  function cleanup()  { +        # unmount filesystems before killing daemons to avoid deadllocks +        MOUNTPOINTS=`mount | grep "$B0/" | awk '{print $3}'` +        for m in $MOUNTPOINTS; +        do +                umount $m +        done +  	killall -15 glusterfs glusterfsd glusterd 2>/dev/null || true;  	test "x`uname -s` = "xNetBSD" && pkill -15 perfused || true          # allow completion of signal handlers for SIGTERM before issue SIGKILL @@ -304,12 +320,6 @@ function cleanup()  	killall -9 glusterfs glusterfsd glusterd 2>/dev/null || true;  	test "x`uname -s` = "xNetBSD" && pkill -9 perfused || true -        MOUNTPOINTS=`mount | grep "$B0/" | awk '{print $3}'` -        for m in $MOUNTPOINTS; -        do -                umount $m -        done -          # unregister nfs and related services from portmapper/rpcbind          ## nfs          rpcinfo -d 100003 3 diff --git a/tests/nfs.rc b/tests/nfs.rc index c27452395e1..a2d7c140012 100644 --- a/tests/nfs.rc +++ b/tests/nfs.rc @@ -23,5 +23,49 @@ function mount_nfs ()          local m=$2          local opt=$3          if [ ! -z "$opt" ]; then opt=",$opt"; fi -        mount -t nfs -o soft,intr,vers=3"$opt" $e $m +        opt="soft,intr,vers=3$opt" + +        nopt="" +        for o in ${opt//,/ }; do  +                case $OSTYPE in +                NetBSD) +                        test "x${nopt}" = "x" && nopt="tcp," + +                        case $o in +                        nolock|noac|actimeo=*|mountproto=udp) +                                continue +                                ;; +                        proto=tcp) +                                o="tcp" +                                ;; +                        vers=3) +                                o="nfsv3" +                                ;; +                        retry=*) +                                o=${o/retry=/-R} +                                ;; +                        timeo=*) +                                o=${o/timeo=/-t} +                                ;; +                        retrans=*) +                                o=${o/retrans=/-x} +                                ;; +                        *) +                                ;; +                        esac         +                        ;; +                *) +                        ;; +                esac +                if [ ! -z "$nopt" ]; then nopt="${nopt},"; fi +                nopt="${nopt}$o" +        done + +        mount -t nfs -o $nopt $e $m  } + +function umount_nfs { +        umount -f $1 +        if [ $? -eq 0 ]; then echo "Y"; else echo "N"; fi +} +  | 
