diff options
Diffstat (limited to 'tests/basic/ec/ec.t')
| -rw-r--r-- | tests/basic/ec/ec.t | 83 |
1 files changed, 53 insertions, 30 deletions
diff --git a/tests/basic/ec/ec.t b/tests/basic/ec/ec.t index c12aba3afe6..cc882771501 100644 --- a/tests/basic/ec/ec.t +++ b/tests/basic/ec/ec.t @@ -1,5 +1,6 @@ #!/bin/bash +. $(dirname $0)/../../traps.rc . $(dirname $0)/../../include.rc . $(dirname $0)/../../volume.rc @@ -11,7 +12,7 @@ function my_getfattr { } function get_rep_count { - v=$(my_getfattr -n trusted.nsr.rep-count $1) + v=$(my_getfattr -n trusted.jbr.rep-count $1) #echo $v > /dev/tty echo $v } @@ -45,66 +46,97 @@ function check_truncate { } function check_hard_link { + stat $M0/hard-link-1 + stat $M0/hard-link-2 for b in $*; do inum1=$(ls -i $b/hard-link-1 | cut -d' ' -f1) inum2=$(ls -i $b/hard-link-2 | cut -d' ' -f1) - [ "$inum1" = "$inum2" ] || return 1 + if [ "$inum1" != "$inum2" ]; then + echo "N" + return 0 + fi done echo "Y" return 0 } function check_soft_link { + stat $M0/soft-link for b in $*; do - [ "$(readlink $b/soft-link)" = "soft-link-tgt" ] || return 1 + if [ "$(readlink $b/soft-link)" != "soft-link-tgt" ]; then + echo "N" + return 0 + fi done echo "Y" return 0 } function check_unlink { + stat $M0/unlink for b in $*; do - [ ! -e $b/unlink ] || return 1 + if [ -e $b/unlink ]; then + echo "N" + return 0 + fi done echo "Y" return 0 } function check_mkdir { + getfattr -m. -d $M0/mkdir for b in $*; do - [ -d $b/mkdir ] || return 1 + if [ ! -d $b/mkdir ]; then + echo "N" + return 0 + fi done echo "Y" return 0 } function check_rmdir { + getfattr -m. -d $M0/rmdir for b in $*; do - [ ! -e $b/rmdir ] || return 1 + if [ -e $b/rmdir ]; then + echo "N" + return 0 + fi done echo "Y" return 0 } function check_setxattr { + getfattr -d -m. -e hex $M0/setxattr for b in $*; do v=$(my_getfattr -n user.foo $b/setxattr) - [ "$v" = "ash_nazg_durbatuluk" ] || return 1 + if [ "$v" != "ash_nazg_durbatuluk" ]; then + echo "N" + return 0 + fi done echo "Y" return 0 } function check_removexattr { + getfattr -d -m. -e hex $M0/removexattr for b in $*; do my_getfattr -n user.bar $b/removexattr 2> /dev/null - [ $? = 0 ] && return 1 + if [ $? -eq 0 ]; then + echo "N" + return 0 + fi done echo "Y" return 0 } function check_perm_file { + stat $M0/perm_dir/perm_file + getfattr -m. -d $M0/perm_dir b1=$1 shift 1 ftext=$(stat -c "%u %g %a" $b1/perm_dir/perm_file) @@ -113,7 +145,8 @@ function check_perm_file { btext=$(stat -c "%u %g %a" $b/perm_dir/perm_file) #echo " next u/a/a = $btext" > /dev/tty if [ x"$btext" != x"$ftext" ]; then - return 1 + echo "N" + return 0 fi done echo "Y" @@ -123,7 +156,7 @@ function check_perm_file { cleanup TEST useradd -o -M -u ${TEST_UID} ${TEST_USER} -trap "userdel --force ${TEST_USER}" EXIT +push_trapfunc "userdel --force ${TEST_USER}" TEST glusterd TEST pidof glusterd @@ -145,7 +178,7 @@ EXPECT_WITHIN $CHILD_UP_TIMEOUT "10" ec_child_up_count $V0 0 # Create local files for comparisons etc. tmpdir=$(mktemp -d -t ${0##*/}.XXXXXX) -trap "rm -rf $tmpdir" EXIT +push_trapfunc "rm -rf $tmpdir" TEST create_file $tmpdir/create-write 10 TEST create_file $tmpdir/truncate 10 @@ -158,6 +191,8 @@ TEST touch $M0/setxattr TEST touch $M0/removexattr TEST setfattr -n user.bar -v "ash_nazg_gimbatul" $M0/removexattr +sleep 2 + # Kill a couple of bricks and allow some time for things to settle. TEST kill_brick $V0 $H0 $B0/${V0}3 TEST kill_brick $V0 $H0 $B0/${V0}8 @@ -184,14 +219,16 @@ TEST setfattr -x user.bar $M0/removexattr # Test uid/gid behavior TEST setup_perm_file $M0 +sleep 2 + # Unmount/remount so that create/write and truncate don't see cached data. -TEST umount $M0 -TEST $GFS -s $H0 --volfile-id $V0 $M0 +EXPECT_WITHIN $UMOUNT_TIMEOUT "Y" force_umount $M0 +TEST $GFS -s $H0 --volfile-id $V0 $M1 EXPECT_WITHIN $CHILD_UP_TIMEOUT "8" ec_child_up_count $V0 0 # Test create/write and truncate *before* the bricks are brought back. -TEST check_create_write $M0 -TEST check_truncate $M0 +TEST check_create_write $M1 +TEST check_truncate $M1 # Restart the bricks and allow repair to occur. TEST $CLI volume start $V0 force @@ -199,7 +236,7 @@ EXPECT_WITHIN $PROCESS_UP_TIMEOUT 'Started' volinfo_field $V0 'Status' EXPECT_WITHIN $CHILD_UP_TIMEOUT "10" ec_child_up_count $V0 0 # Unmount/remount again, same reason as before. -TEST umount $M0 +EXPECT_WITHIN $UMOUNT_TIMEOUT "Y" force_umount $M1 TEST $GFS -s $H0 --volfile-id $V0 $M0 EXPECT_WITHIN $CHILD_UP_TIMEOUT "10" ec_child_up_count $V0 0 @@ -210,17 +247,6 @@ EXPECT_WITHIN $CHILD_UP_TIMEOUT "10" ec_child_up_count $V0 0 TEST check_create_write $M0 TEST check_truncate $M0 -TEST stat $M0/hard-link-1 -TEST stat $M0/hard-link-2 -TEST stat $M0/soft-link -TEST ! stat $M0/unlink -TEST ! stat $M0/rmdir -TEST stat $M0/mkdir -TEST stat $M0/setxattr -TEST stat $M0/removexattr -TEST stat $M0/perm_dir -TEST stat $M0/perm_dir/perm_file - EXPECT_WITHIN $HEAL_TIMEOUT "Y" check_hard_link $B0/${V0}{0..9} EXPECT_WITHIN $HEAL_TIMEOUT "Y" check_soft_link $B0/${V0}{0..9} EXPECT_WITHIN $HEAL_TIMEOUT "Y" check_unlink $B0/${V0}{0..9} @@ -230,7 +256,4 @@ EXPECT_WITHIN $HEAL_TIMEOUT "Y" check_setxattr $B0/${V0}{0..9} EXPECT_WITHIN $HEAL_TIMEOUT "Y" check_removexattr $B0/${V0}{0..9} EXPECT_WITHIN $HEAL_TIMEOUT "Y" check_perm_file $B0/${V0}{0..9} -TEST rm -rf $tmpdir -TEST userdel --force ${TEST_USER} - cleanup |
