#!/bin/bash
. $(dirname $0)/../include.rc
. $(dirname $0)/../volume.rc
cleanup;
TEST useradd tmpuser
function set_facl_user {
for i in `seq 1 10`
do
setfacl -m u:tmpuser:rw ./tmp${i}
if [ "$?" = "0" ]
then
succ=$((succ+1))
else
fail=$((fail+1))
fi
done
}
function set_facl_default {
for i in `seq 1 10`
do
setfacl -m d:o:rw ./tmp${i}
if [ "$?" = "0" ]
then
succ1=$((succ1+1))
else
fail1=$((fail1+1))
fi
done
}
TEST glusterd
TEST pidof glusterd
TEST $CLI volume create $V0 $H0:$B0/${V0}{0,1,2,3,4,5}
TEST $CLI volume set $V0 diagnostics.client-log-level DEBUG
TEST $CLI volume start $V0
TEST glusterfs --volfile-id=$V0 --acl --volfile-server=$H0 --entry-timeout=0 $M0;
cd $M0
TEST mkdir tmp{1..10}
TEST setfacl -m u:tmpuser:rwx ./tmp{1..10}
count=`getfacl -p $M0/tmp{1..10} | grep -c "user:tmpuser:rwx"`
EXPECT "10" echo $count
TEST setfacl -m d:o:rwx ./tmp{1..10}
count=`getfacl -p $M0/tmp{1..10} | grep -c "default:other::rwx"`
EXPECT "10" echo $count
count=`getfacl -p $B0/${V0}5/tmp{1..10} | grep -c "user:tmpuser:rwx"`
EXPECT "10" echo $count
count=`getfacl -p $B0/${V0}5/tmp{1..10} | grep -c "default:other::rwx"`
EXPECT "10" echo $count
TEST kill_brick $V0 $H0 $B0/${V0}5
EXPECT_WITHIN ${PROCESS_UP_TIMEOUT} "5" online_brick_count
succ=fail=0
## Update acl attributes on dir after kill one brick
set_facl_user
succ1=fail1=0
set_facl_default
TEST $CLI volume start $V0 force
EXPECT_WITHIN ${PROCESS_UP_TIMEOUT} "6" online_brick_count
cd -
TEST umount $M0
TEST glusterfs --volfile-id=$V0 --acl --volfile-server=$H0 --entry-timeout=0 $M0;
cd $M0
## At this point dht will heal xatts on down brick only for those hashed_subvol
## was up at the time of updated xattrs
TEST stat ./tmp{1..10}
## Compare succ value with updated acl attributes
count=`getfacl -p $B0/${V0}5/tmp{1..10} | grep -c "user:tmpuser:rw-"`
EXPECT "$succ" echo $count
count=`getfacl -p $B0/${V0}5/tmp{1..10} | grep -c "default:other::rw-"`
EXPECT "$succ1" echo $count
cd -
userdel --force tmpuser
cleanup