glusterfs

Форк
0
/
bug-765564.t 
85 строк · 2.1 Кб
1
#!/bin/bash
2

3
. $(dirname $0)/../../include.rc
4
. $(dirname $0)/../../volume.rc
5

6
cleanup;
7

8
TEST glusterd
9
TEST pidof glusterd
10

11
## Start and create a volume
12
mkdir -p ${B0}/${V0}-0
13
mkdir -p ${B0}/${V0}-1
14
TEST $CLI volume create $V0 replica 2 $H0:$B0/${V0}-{0,1}
15

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
19

20
TEST $CLI volume start $V0;
21

22
## Mount native
23
TEST glusterfs --volfile-server=$H0 --volfile-id=$V0 $M0
24

25
#returns success if 'olddir' is absent
26
#'olddir' must be absent in both replicas
27
function rm_succeeded () {
28
    local dir1=$1
29
    [[ -d $H0:$B0/${V0}-0/$dir1 || -d $H0:$B0/${V0}-1/$dir1 ]] && return 0
30
    return 1
31
}
32

33
# returns successes if 'newdir' is present
34
#'newdir' must be present in both replicas
35
function mv_succeeded () {
36
    local dir1=$1
37
    [[ -d $H0:$B0/${V0}-0/$dir1 && -d $H0:$B0/${V0}-1/$dir1 ]] && return 1
38
    return 0
39
}
40

41
# returns zero on success
42
# Only one of rm and mv can succeed. This is captured by the XOR below
43

44
function chk_backend_consistency(){
45
    local dir1=$1
46
    local dir2=$2
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
50
    return 1
51
}
52

53
#concurrent removal/rename of dirs
54
function rm_mv_correctness () {
55
    ret=0
56
    for i in {1..100}; do
57
        mkdir $M0/"dir"$i
58
        rmdir $M0/"dir"$i &
59
        mv $M0/"dir"$i $M0/"adir"$i &
60
        wait
61
        tmp_ret=$(chk_backend_consistency "dir"$i "adir"$i)
62
        (( ret += tmp_ret ))
63
        rm -rf $M0/"dir"$i
64
        rm -rf $M0/"adir"$i
65
    done
66
    return $ret
67
}
68

69
TEST touch $M0/a;
70
TEST mv $M0/a $M0/b;
71

72
#test rename fop when one of the bricks is down
73
kill_brick ${V0} ${H0} ${B0}/${V0}-1;
74
TEST touch $M0/h;
75
TEST mv $M0/h $M0/1;
76

77
TEST $CLI volume start $V0 force;
78

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;
82

83
TEST rm_mv_correctness;
84
EXPECT_WITHIN $UMOUNT_TIMEOUT "Y" force_umount $M0
85
cleanup;
86

87

Использование cookies

Мы используем файлы cookie в соответствии с Политикой конфиденциальности и Политикой использования cookies.

Нажимая кнопку «Принимаю», Вы даете АО «СберТех» согласие на обработку Ваших персональных данных в целях совершенствования нашего веб-сайта и Сервиса GitVerse, а также повышения удобства их использования.

Запретить использование cookies Вы можете самостоятельно в настройках Вашего браузера.