summaryrefslogtreecommitdiffstats
path: root/tests/basic/ec/ec.t
diff options
context:
space:
mode:
Diffstat (limited to 'tests/basic/ec/ec.t')
-rw-r--r--tests/basic/ec/ec.t111
1 files changed, 69 insertions, 42 deletions
diff --git a/tests/basic/ec/ec.t b/tests/basic/ec/ec.t
index 569f4c7098a..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
}
@@ -37,7 +38,7 @@ function check_create_write {
}
function check_truncate {
- truncate --size=8192 $tmpdir/truncate
+ truncate -s 8192 $tmpdir/truncate
for b in $*; do
cmp $tmpdir/truncate $b/truncate || return 1
done
@@ -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
@@ -137,14 +170,15 @@ EXPECT 'Created' volinfo_field $V0 'Status'
EXPECT '10' brick_count $V0
TEST $CLI volume start $V0
-EXPECT 'Started' volinfo_field $V0 'Status'
+EXPECT_WITHIN $PROCESS_UP_TIMEOUT 'Started' volinfo_field $V0 'Status'
# Mount FUSE with caching disabled
TEST $GFS -s $H0 --volfile-id $V0 $M0
+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
@@ -157,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
@@ -165,7 +201,7 @@ sleep 10
# Test create+write
TEST cp $tmpdir/create-write $M0/
# Test truncate
-TEST truncate --size=8192 $M0/truncate
+TEST truncate -s 8192 $M0/truncate
# Test hard link
TEST ln $M0/hard-link-1 $M0/hard-link-2
# Test soft link
@@ -183,21 +219,26 @@ 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
-sleep 10
+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
# Make sure everything is as it should be. Most tests check for consistency
# between the bricks and the front end. This is not valid for disperse, so we
@@ -206,27 +247,13 @@ TEST $GFS -s $H0 --volfile-id $V0 $M0
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 5 "Y" check_hard_link $B0/${V0}{0..9}
-EXPECT_WITHIN 5 "Y" check_soft_link $B0/${V0}{0..9}
-EXPECT_WITHIN 5 "Y" check_unlink $B0/${V0}{0..9}
-EXPECT_WITHIN 5 "Y" check_rmdir $B0/${V0}{0..9}
-EXPECT_WITHIN 5 "Y" check_mkdir $B0/${V0}{0..9}
-EXPECT_WITHIN 5 "Y" check_setxattr $B0/${V0}{0..9}
-EXPECT_WITHIN 5 "Y" check_removexattr $B0/${V0}{0..9}
-EXPECT_WITHIN 5 "Y" check_perm_file $B0/${V0}{0..9}
-
-rm -rf $tmpdir
-userdel --force ${TEST_USER}
+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}
+EXPECT_WITHIN $HEAL_TIMEOUT "Y" check_rmdir $B0/${V0}{0..9}
+EXPECT_WITHIN $HEAL_TIMEOUT "Y" check_mkdir $B0/${V0}{0..9}
+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}
cleanup