3 source $CEPH_ROOT/qa
/standalone
/ceph-helpers.sh
9 export CEPH_MON_A
="127.0.0.1:7150" # git grep '\<7150\>' : there must be only one
10 export CEPH_MON_B
="127.0.0.1:7151" # git grep '\<7151\>' : there must be only one
11 export CEPH_MON_C
="127.0.0.1:7152" # git grep '\<7152\>' : there must be only one
12 export CEPH_MON_D
="127.0.0.1:7153" # git grep '\<7153\>' : there must be only one
13 export CEPH_MON_E
="127.0.0.1:7154" # git grep '\<7154\>' : there must be only one
15 CEPH_ARGS
+="--fsid=$(uuidgen) --auth-supported=none "
16 export ORIG_CEPH_ARGS
="$CEPH_ARGS"
18 local funcs
=${@:-$(set | ${SED} -n -e 's/^\(TEST_[0-9a-z_]*\) .*/\1/p')}
19 for func
in $funcs ; do
20 setup
$dir ||
return 1
21 $func $dir ||
return 1
22 kill_daemons
$dir KILL ||
return 1
23 teardown
$dir ||
return 1
27 function TEST_1_mon_checks
() {
30 CEPH_ARGS
="$ORIG_CEPH_ARGS --mon-host=$CEPH_MON_A "
32 run_mon
$dir a
--public-addr=$CEPH_MON_A ||
return 1
34 ceph mon ok-to-stop dne ||
return 1
35 ! ceph mon ok-to-stop a ||
return 1
37 ! ceph mon ok-to-add-offline ||
return 1
39 ! ceph mon ok-to-rm a ||
return 1
40 ceph mon ok-to-rm dne ||
return 1
43 function TEST_2_mons_checks
() {
46 CEPH_ARGS
="$ORIG_CEPH_ARGS --mon-host=$CEPH_MON_A,$CEPH_MON_B "
48 run_mon
$dir a
--public-addr=$CEPH_MON_A ||
return 1
49 run_mon
$dir b
--public-addr=$CEPH_MON_B ||
return 1
51 ceph mon ok-to-stop dne ||
return 1
52 ! ceph mon ok-to-stop a ||
return 1
53 ! ceph mon ok-to-stop b ||
return 1
54 ! ceph mon ok-to-stop a b ||
return 1
56 ceph mon ok-to-add-offline ||
return 1
58 ceph mon ok-to-rm a ||
return 1
59 ceph mon ok-to-rm b ||
return 1
60 ceph mon ok-to-rm dne ||
return 1
63 function TEST_3_mons_checks
() {
66 CEPH_ARGS
="$ORIG_CEPH_ARGS --mon-host=$CEPH_MON_A,$CEPH_MON_B,$CEPH_MON_C "
68 run_mon
$dir a
--public-addr=$CEPH_MON_A ||
return 1
69 run_mon
$dir b
--public-addr=$CEPH_MON_B ||
return 1
70 run_mon
$dir c
--public-addr=$CEPH_MON_C ||
return 1
73 ceph mon ok-to-stop dne ||
return 1
74 ceph mon ok-to-stop a ||
return 1
75 ceph mon ok-to-stop b ||
return 1
76 ceph mon ok-to-stop c ||
return 1
77 ! ceph mon ok-to-stop a b ||
return 1
78 ! ceph mon ok-to-stop b c ||
return 1
79 ! ceph mon ok-to-stop a b c ||
return 1
81 ceph mon ok-to-add-offline ||
return 1
83 ceph mon ok-to-rm a ||
return 1
84 ceph mon ok-to-rm b ||
return 1
85 ceph mon ok-to-rm c ||
return 1
87 kill_daemons
$dir KILL mon.b
90 ! ceph mon ok-to-stop a ||
return 1
91 ceph mon ok-to-stop b ||
return 1
92 ! ceph mon ok-to-stop c ||
return 1
94 ! ceph mon ok-to-add-offline ||
return 1
96 ! ceph mon ok-to-rm a ||
return 1
97 ceph mon ok-to-rm b ||
return 1
98 ! ceph mon ok-to-rm c ||
return 1
101 function TEST_4_mons_checks
() {
104 CEPH_ARGS
="$ORIG_CEPH_ARGS --mon-host=$CEPH_MON_A,$CEPH_MON_B,$CEPH_MON_C,$CEPH_MON_D "
106 run_mon
$dir a
--public-addr=$CEPH_MON_A ||
return 1
107 run_mon
$dir b
--public-addr=$CEPH_MON_B ||
return 1
108 run_mon
$dir c
--public-addr=$CEPH_MON_C ||
return 1
109 run_mon
$dir d
--public-addr=$CEPH_MON_D ||
return 1
112 ceph mon ok-to-stop dne ||
return 1
113 ceph mon ok-to-stop a ||
return 1
114 ceph mon ok-to-stop b ||
return 1
115 ceph mon ok-to-stop c ||
return 1
116 ceph mon ok-to-stop d ||
return 1
117 ! ceph mon ok-to-stop a b ||
return 1
118 ! ceph mon ok-to-stop c d ||
return 1
120 ceph mon ok-to-add-offline ||
return 1
122 ceph mon ok-to-rm a ||
return 1
123 ceph mon ok-to-rm b ||
return 1
124 ceph mon ok-to-rm c ||
return 1
126 kill_daemons
$dir KILL mon.a
129 ceph mon ok-to-stop a ||
return 1
130 ! ceph mon ok-to-stop b ||
return 1
131 ! ceph mon ok-to-stop c ||
return 1
132 ! ceph mon ok-to-stop d ||
return 1
134 ceph mon ok-to-add-offline ||
return 1
136 ceph mon ok-to-rm a ||
return 1
137 ceph mon ok-to-rm b ||
return 1
138 ceph mon ok-to-rm c ||
return 1
139 ceph mon ok-to-rm d ||
return 1
142 function TEST_5_mons_checks
() {
145 CEPH_ARGS
="$ORIG_CEPH_ARGS --mon-host=$CEPH_MON_A,$CEPH_MON_B,$CEPH_MON_C,$CEPH_MON_D,$CEPH_MON_E "
147 run_mon
$dir a
--public-addr=$CEPH_MON_A ||
return 1
148 run_mon
$dir b
--public-addr=$CEPH_MON_B ||
return 1
149 run_mon
$dir c
--public-addr=$CEPH_MON_C ||
return 1
150 run_mon
$dir d
--public-addr=$CEPH_MON_D ||
return 1
151 run_mon
$dir e
--public-addr=$CEPH_MON_E ||
return 1
154 ceph mon ok-to-stop dne ||
return 1
155 ceph mon ok-to-stop a ||
return 1
156 ceph mon ok-to-stop b ||
return 1
157 ceph mon ok-to-stop c ||
return 1
158 ceph mon ok-to-stop d ||
return 1
159 ceph mon ok-to-stop e ||
return 1
160 ceph mon ok-to-stop a b ||
return 1
161 ceph mon ok-to-stop c d ||
return 1
162 ! ceph mon ok-to-stop a b c ||
return 1
164 ceph mon ok-to-add-offline ||
return 1
166 ceph mon ok-to-rm a ||
return 1
167 ceph mon ok-to-rm b ||
return 1
168 ceph mon ok-to-rm c ||
return 1
169 ceph mon ok-to-rm d ||
return 1
170 ceph mon ok-to-rm e ||
return 1
172 kill_daemons
$dir KILL mon.a
175 ceph mon ok-to-stop a ||
return 1
176 ceph mon ok-to-stop b ||
return 1
177 ceph mon ok-to-stop c ||
return 1
178 ceph mon ok-to-stop d ||
return 1
179 ceph mon ok-to-stop e ||
return 1
181 ceph mon ok-to-add-offline ||
return 1
183 ceph mon ok-to-rm a ||
return 1
184 ceph mon ok-to-rm b ||
return 1
185 ceph mon ok-to-rm c ||
return 1
186 ceph mon ok-to-rm d ||
return 1
187 ceph mon ok-to-rm e ||
return 1
189 kill_daemons
$dir KILL mon.e
192 ceph mon ok-to-stop a ||
return 1
193 ! ceph mon ok-to-stop b ||
return 1
194 ! ceph mon ok-to-stop c ||
return 1
195 ! ceph mon ok-to-stop d ||
return 1
196 ceph mon ok-to-stop e ||
return 1
198 ! ceph mon ok-to-add-offline ||
return 1
200 ceph mon ok-to-rm a ||
return 1
201 ! ceph mon ok-to-rm b ||
return 1
202 ! ceph mon ok-to-rm c ||
return 1
203 ! ceph mon ok-to-rm d ||
return 1
204 ceph mon ok-to-rm e ||
return 1
207 function TEST_0_mds
() {
210 CEPH_ARGS
="$ORIG_CEPH_ARGS --mon-host=$CEPH_MON_A "
212 run_mon
$dir a
--public-addr=$CEPH_MON_A ||
return 1
213 run_mgr
$dir x ||
return 1
214 run_osd
$dir 0 ||
return 1
215 run_mds
$dir a ||
return 1
217 ceph osd pool create meta
1 ||
return 1
218 ceph osd pool create data
1 ||
return 1
219 ceph fs new myfs meta data ||
return 1
222 ! ceph mds ok-to-stop a ||
return 1
223 ! ceph mds ok-to-stop a dne ||
return 1
224 ceph mds ok-to-stop dne ||
return 1
226 run_mds
$dir b ||
return 1
229 ceph mds ok-to-stop a ||
return 1
230 ceph mds ok-to-stop b ||
return 1
231 ! ceph mds ok-to-stop a b ||
return 1
232 ceph mds ok-to-stop a dne1 dne2 ||
return 1
233 ceph mds ok-to-stop b dne ||
return 1
234 ! ceph mds ok-to-stop a b dne ||
return 1
235 ceph mds ok-to-stop dne1 dne2 ||
return 1
237 kill_daemons
$dir KILL mds.a
240 function TEST_0_osd
() {
243 CEPH_ARGS
="$ORIG_CEPH_ARGS --mon-host=$CEPH_MON_A "
245 run_mon
$dir a
--public-addr=$CEPH_MON_A ||
return 1
246 run_mgr
$dir x ||
return 1
247 run_osd
$dir 0 ||
return 1
248 run_osd
$dir 1 ||
return 1
249 run_osd
$dir 2 ||
return 1
250 run_osd
$dir 3 ||
return 1
252 ceph osd erasure-code-profile
set ec-profile m
=2 k
=2 crush-failure-domain
=osd ||
return 1
253 ceph osd pool create ec erasure ec-profile ||
return 1
255 wait_for_clean ||
return 1
257 # with min_size 3, we can stop only 1 osd
258 ceph osd pool
set ec min_size
3 ||
return 1
259 wait_for_clean ||
return 1
261 ceph osd ok-to-stop
0 ||
return 1
262 ceph osd ok-to-stop
1 ||
return 1
263 ceph osd ok-to-stop
2 ||
return 1
264 ceph osd ok-to-stop
3 ||
return 1
265 ! ceph osd ok-to-stop
0 1 ||
return 1
266 ! ceph osd ok-to-stop
2 3 ||
return 1
267 ceph osd ok-to-stop
0 --max 2 |
grep '[0]' ||
return 1
268 ceph osd ok-to-stop
1 --max 2 |
grep '[1]' ||
return 1
270 # with min_size 2 we can stop 1 osds
271 ceph osd pool
set ec min_size
2 ||
return 1
272 wait_for_clean ||
return 1
274 ceph osd ok-to-stop
0 1 ||
return 1
275 ceph osd ok-to-stop
2 3 ||
return 1
276 ! ceph osd ok-to-stop
0 1 2 ||
return 1
277 ! ceph osd ok-to-stop
1 2 3 ||
return 1
279 ceph osd ok-to-stop
0 --max 2 |
grep '[0,1]' ||
return 1
280 ceph osd ok-to-stop
0 --max 20 |
grep '[0,1]' ||
return 1
281 ceph osd ok-to-stop
2 --max 2 |
grep '[2,3]' ||
return 1
282 ceph osd ok-to-stop
2 --max 20 |
grep '[2,3]' ||
return 1
284 # we should get the same result with one of the osds already down
285 kill_daemons
$dir TERM osd
.0 ||
return 1
286 ceph osd down
0 ||
return 1
287 wait_for_peered ||
return 1
289 ceph osd ok-to-stop
0 ||
return 1
290 ceph osd ok-to-stop
0 1 ||
return 1
291 ! ceph osd ok-to-stop
0 1 2 ||
return 1
292 ! ceph osd ok-to-stop
1 2 3 ||
return 1