summaryrefslogtreecommitdiffstats
path: root/tests/bitrot/bug-1294786.t
blob: 2bfae36fd8632854511bc2841cc6326a64eec4e6 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
#!/bin/bash

. $(dirname $0)/../include.rc
. $(dirname $0)/../volume.rc
. $(dirname $0)/../cluster.rc

function get_bitd_count_1 {
        ps auxww | grep glusterfs | grep bitd.pid | grep -v grep | grep $H1 | wc -l
}

function get_bitd_count_2 {
        ps auxww | grep glusterfs | grep bitd.pid | grep -v grep | grep $H2 | wc -l
}

function get_node_uuid {
        getfattr -n trusted.glusterfs.node-uuid --only-values $M0/FILE 2>/dev/null
}

cleanup;

TEST launch_cluster 2

TEST $CLI_1 peer probe $H2;
EXPECT_WITHIN $PROBE_TIMEOUT 1 peer_count;

TEST $CLI_1 volume create $V0 replica 2 $H1:$B1 $H2:$B2
EXPECT 'Created' volinfo_field_1 $V0 'Status';

TEST $CLI_1 volume start $V0
EXPECT 'Started' volinfo_field_1 $V0 'Status';

uuid1=$($CLI_1 system:: uuid get | awk '{print $2}')
uuid2=$($CLI_2 system:: uuid get | awk '{print $2}')

##Mount $V0
TEST $GFS --volfile-id=$V0 --volfile-server=$H1 $M0

#Enable bitrot
TEST $CLI_1 volume bitrot $V0 enable
EXPECT_WITHIN $PROCESS_UP_TIMEOUT "1" get_bitd_count_1
EXPECT_WITHIN $PROCESS_UP_TIMEOUT "1" get_bitd_count_2

#Create sample file
TEST `echo "1234" > $M0/FILE`

EXPECT "$uuid1" get_node_uuid;

#Corrupt file from back-end
TEST stat $B1/FILE
echo "Corrupted data" >> $B1/FILE
#Manually set bad-file xattr since we can't wait for an hour for scrubber.
TEST setfattr -n trusted.bit-rot.bad-file -v 0x3100 $B1/FILE

TEST $CLI_1 volume stop $V0
TEST $CLI_1 volume start $V0
EXPECT 'Started' volinfo_field_1 $V0 'Status';
EXPECT_WITHIN $PROCESS_UP_TIMEOUT "1" brick_up_status_1 $V0 $H1 $B1
EXPECT_WITHIN $PROCESS_UP_TIMEOUT "1" brick_up_status_1 $V0 $H2 $B2
EXPECT_WITHIN $CHILD_UP_TIMEOUT "1" afr_child_up_status $V0 0
EXPECT_WITHIN $CHILD_UP_TIMEOUT "1" afr_child_up_status $V0 1
EXPECT_WITHIN $PROCESS_UP_TIMEOUT "1" get_bitd_count_1
EXPECT_WITHIN $PROCESS_UP_TIMEOUT "1" get_bitd_count_2
#Trigger lookup so that bitrot xlator marks file as bad in its inode context.
TEST stat $M0/FILE

EXPECT "$uuid2" get_node_uuid;

cleanup;