3
. $(dirname $0)/../include.rc
4
. $(dirname $0)/../volume.rc
5
. $(dirname $0)/../nfs.rc
9
function gluster_client_list_bitd_status () {
10
gluster volume status $V0 client-list | sed -n '/bitd/'p | wc -l
13
function gluster_client_list_scrub_status () {
14
gluster volume status $V0 client-list | sed -n '/scrub/'p | wc -l
22
## Create a distribute volume
23
TEST $CLI volume create $V0 $H0:$B0/${V0}1 $H0:$B0/${V0}2 $H0:$B0/${V0}3;
24
TEST $CLI volume start $V0;
26
## Enable bitrot on volume $V0
27
TEST $CLI volume bitrot $V0 enable
29
EXPECT_WITHIN $PROCESS_UP_TIMEOUT "1" get_bitd_count
30
EXPECT_WITHIN $PROCESS_UP_TIMEOUT "1" get_scrubd_count
32
## Check status client-list to verify that bitd and scrubd figure in it
33
EXPECT_WITHIN $PROCESS_UP_TIMEOUT "1" gluster_client_list_bitd_status
34
EXPECT_WITHIN $PROCESS_UP_TIMEOUT "1" gluster_client_list_scrub_status
36
## perform a series of scrub related state change tests. As of now, there'
37
## no way to check if a given change has been correctly acknowledged by
38
## the scrub process as there isn't an _interface_ to check scrub internal
39
## state (yet). What's been verified here is scrub state machine execution
40
## w.r.t. locking and faults.
42
## 0x0: verify scrub rescheduling
43
TEST $CLI volume bitrot $V0 scrub-frequency monthly
44
TEST $CLI volume bitrot $V0 scrub-frequency daily
45
TEST $CLI volume bitrot $V0 scrub-frequency hourly
47
## 0x1: test reschedule after pause/resume
48
TEST $CLI volume bitrot $V0 scrub pause
49
TEST $CLI volume bitrot $V0 scrub-frequency daily
50
TEST $CLI volume bitrot $V0 scrub resume
52
## 0x2: test reschedule w/ an offline brick
53
TEST kill_brick $V0 $H0 $B0/${V0}1
55
TEST $CLI volume bitrot $V0 scrub-frequency hourly
56
TEST $CLI volume bitrot $V0 scrub-throttle aggressive
58
## 0x3: test pause/resume w/ an offline brick
59
TEST $CLI volume bitrot $V0 scrub pause
60
TEST $CLI volume bitrot $V0 scrub-frequency monthly
61
TEST $CLI volume bitrot $V0 scrub resume
63
## 0x4: test "start" from a paused scrub state
65
TEST $CLI volume bitrot $V0 scrub pause
66
TEST $CLI volume start $V0 force
68
## 0x4a: try pausing an already paused scrub
69
TEST ! $CLI volume bitrot $V0 scrub pause
71
## 0x4b: perform configuration changes
72
TEST $CLI volume bitrot $V0 scrub-frequency hourly
73
TEST $CLI volume bitrot $V0 scrub-throttle lazy
74
TEST $CLI volume bitrot $V0 scrub resume
76
## 0x5: test cleanup upon brick going offline
77
TEST kill_brick $V0 $H0 $B0/${V0}1
78
TEST kill_brick $V0 $H0 $B0/${V0}2
79
TEST kill_brick $V0 $H0 $B0/${V0}3
81
## 0x6: test cleanup upon brick going offline when srubber is paused
82
## (initially paused and otherwise)
84
## 0x6a: initially paused case
85
TEST $CLI volume bitrot $V0 scrub pause
86
TEST $CLI volume start $V0 force
87
TEST kill_brick $V0 $H0 $B0/${V0}3
88
TEST $CLI volume bitrot $V0 scrub resume
90
## 0x6b: paused _after_ execution
91
TEST $CLI volume start $V0 force
92
TEST $CLI volume bitrot $V0 scrub pause
93
TEST kill_brick $V0 $H0 $B0/${V0}2
96
#G_TESTDEF_TEST_STATUS_NETBSD7=KNOWN_ISSUE,BUG=1332473