3
. $(dirname $0)/../../include.rc
4
. $(dirname $0)/../../volume.rc
11
## Start and create a volume
14
TEST $CLI volume create $V0 replica 2 $H0:$B0/${V0}-{0,1}
16
TEST $CLI volume set $V0 performance.io-cache off;
17
TEST $CLI volume set $V0 performance.write-behind off;
18
TEST $CLI volume set $V0 performance.stat-prefetch off
20
TEST $CLI volume start $V0;
23
TEST glusterfs --volfile-server=$H0 --volfile-id=$V0 $M0
25
#returns success if 'olddir' is absent
26
#'olddir' must be absent in both replicas
27
function rm_succeeded () {
29
[[ -d $H0:$B0/${V0}-0/$dir1 || -d $H0:$B0/${V0}-1/$dir1 ]] && return 0
33
# returns successes if 'newdir' is present
34
#'newdir' must be present in both replicas
35
function mv_succeeded () {
37
[[ -d $H0:$B0/${V0}-0/$dir1 && -d $H0:$B0/${V0}-1/$dir1 ]] && return 1
41
# returns zero on success
42
# Only one of rm and mv can succeed. This is captured by the XOR below
44
function chk_backend_consistency(){
47
local rm_status=rm_succeeded $dir1
48
local mv_status=mv_succeeded $dir2
49
[[ ( $rm_status && ! $mv_status ) || ( ! $rm_status && $mv_status ) ]] && return 0
53
#concurrent removal/rename of dirs
54
function rm_mv_correctness () {
59
mv $M0/"dir"$i $M0/"adir"$i &
61
tmp_ret=$(chk_backend_consistency "dir"$i "adir"$i)
72
#test rename fop when one of the bricks is down
73
kill_brick ${V0} ${H0} ${B0}/${V0}-1;
77
TEST $CLI volume start $V0 force;
79
EXPECT_WITHIN $CHILD_UP_TIMEOUT "1" afr_child_up_status $V0 1;
80
find $M0 2>/dev/null 1>/dev/null;
81
find $M0 | xargs stat 2>/dev/null 1>/dev/null;
83
TEST rm_mv_correctness;
84
EXPECT_WITHIN $UMOUNT_TIMEOUT "Y" force_umount $M0