blob: 9144b4a50002abe6c7d703b206600e8e2e836184 (
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
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
|
#!/bin/bash
. $(dirname $0)/../../include.rc
. $(dirname $0)/../../cluster.rc
. $(dirname $0)/../../volume.rc
cleanup;
function get_rebalanced_info()
{
local rebal_info_key=$2
$CLI volume rebalance $1 status | awk '{print $'$rebal_info_key'}' |sed -n 3p| sed 's/ *$//g'
}
volname="StartMigrationDuringRebalanceTest"
TEST glusterd
TEST pidof glusterd;
TEST $CLI volume info;
TEST $CLI volume create $volname $H0:$B0/${volname}{1..4};
TEST $CLI volume start $volname;
#bug-1046308 - validate rebalance on a specified volume name
TEST $CLI volume rebalance $volname start;
#bug-1089668 - validation of rebalance status and remove brick status
#bug-963541 - after remove brick start rebalance/remove brick start without commiting should fail
TEST ! $CLI volume remove-brick $volname $H0:$B0/${volname}1 status
EXPECT_WITHIN $REBALANCE_TIMEOUT "completed" rebalance_status_field $volname
TEST $CLI volume remove-brick $volname $H0:$B0/${volname}1 start
TEST ! $CLI volume rebalance $volname start
TEST ! $CLI volume rebalance $volname status
TEST ! $CLI volume remove-brick $volname $H0:$B0/${volname}2 start
EXPECT_WITHIN $REBALANCE_TIMEOUT "completed" remove_brick_status_completed_field \
"$volname" "$H0:$B0/${volname}1"
TEST $CLI volume remove-brick $volname $H0:$B0/${volname}1 commit
TEST $CLI volume rebalance $volname start
EXPECT_WITHIN $REBALANCE_TIMEOUT "completed" rebalance_status_field $volname
TEST $CLI volume rebalance $volname stop
TEST $CLI volume remove-brick $volname $H0:$B0/${volname}2 start
TEST $CLI volume remove-brick $volname $H0:$B0/${volname}2 stop
#bug-1351021-rebalance-info-post-glusterd-restart
TEST $CLI volume create $V0 $H0:$B0/${V0}{1..3};
TEST $CLI volume start $V0;
#Mount volume and create data
TEST glusterfs -s $H0 --volfile-id $V0 $M0;
TEST mkdir $M0/dir{1..10}
TEST touch $M0/dir{1..10}/file{1..10}
# Add-brick and start rebalance
TEST $CLI volume add-brick $V0 $H0:$B0/${V0}4
TEST $CLI volume rebalance $V0 start
EXPECT_WITHIN $REBALANCE_TIMEOUT "completed" rebalance_status_field $V0
#Rebalance info before glusterd restart
OLD_REBAL_FILES=$(get_rebalanced_info $V0 2)
OLD_SIZE=$(get_rebalanced_info $V0 3)
OLD_SCANNED=$(get_rebalanced_info $V0 4)
OLD_FAILURES=$(get_rebalanced_info $V0 5)
OLD_SKIPPED=$(get_rebalanced_info $V0 6)
pkill glusterd;
pkill glusterfsd;
TEST glusterd
#Rebalance info after glusterd restart
NEW_REBAL_FILES=$(get_rebalanced_info $V0 2)
NEW_SIZE=$(get_rebalanced_info $V0 3)
NEW_SCANNED=$(get_rebalanced_info $V0 4)
NEW_FAILURES=$(get_rebalanced_info $V0 5)
NEW_SKIPPED=$(get_rebalanced_info $V0 6)
#Check rebalance info before and after glusterd restart
TEST [ $OLD_REBAL_FILES == $NEW_REBAL_FILES ]
TEST [ $OLD_SIZE == $NEW_SIZE ]
TEST [ $OLD_SCANNED == $NEW_SCANNED ]
TEST [ $OLD_FAILURES == $NEW_FAILURES ]
TEST [ $OLD_SKIPPED == $NEW_SKIPPED ]
EXPECT_WITHIN $UMOUNT_TIMEOUT "Y" force_umount $M0
#bug-1004744 - validation of rebalance fix layout
TEST $CLI volume start $V0 force
TEST glusterfs -s $H0 --volfile-id $V0 $M0;
for i in `seq 11 20`;
do
mkdir $M0/dir_$i
echo file>$M0/dir_$i/file_$i
for j in `seq 1 100`;
do
mkdir $M0/dir_$i/dir_$j
echo file>$M0/dir_$i/dir_$j/file_$j
done
done
#add 2 bricks
TEST $CLI volume add-brick $V0 $H0:$B0/${V0}{5,6};
#perform rebalance fix-layout
TEST $CLI volume rebalance $V0 fix-layout start
EXPECT_WITHIN $REBALANCE_TIMEOUT "fix-layout completed" fix-layout_status_field $V0;
#bug-1075087 - rebalance post add brick
TEST mkdir $M0/dir{21..30};
TEST touch $M0/dir{21..30}/files{1..10};
TEST $CLI volume add-brick $V0 $H0:$B0/${V0}{7,8}
TEST $CLI volume rebalance $V0 start force
EXPECT_WITHIN 90 "completed" rebalance_status_field $V0
TEST pkill gluster
TEST glusterd
TEST pidof glusterd
# status should be "completed" immediate after glusterd has respawned.
EXPECT_WITHIN 5 "completed" rebalance_status_field $V0
cleanup
|