]>
Commit | Line | Data |
---|---|---|
11fdf7f2 TL |
1 | #!/usr/bin/env bash |
2 | ||
3 | source $CEPH_ROOT/qa/standalone/ceph-helpers.sh | |
4 | ||
5 | function run() { | |
6 | local dir=$1 | |
7 | shift | |
8 | ||
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 | |
14 | export CEPH_ARGS | |
15 | CEPH_ARGS+="--fsid=$(uuidgen) --auth-supported=none " | |
16 | export ORIG_CEPH_ARGS="$CEPH_ARGS" | |
17 | ||
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 | |
24 | done | |
25 | } | |
26 | ||
27 | function TEST_1_mon_checks() { | |
28 | local dir=$1 | |
29 | ||
30 | CEPH_ARGS="$ORIG_CEPH_ARGS --mon-host=$CEPH_MON_A " | |
31 | ||
32 | run_mon $dir a --public-addr=$CEPH_MON_A || return 1 | |
33 | ||
34 | ceph mon ok-to-stop dne || return 1 | |
35 | ! ceph mon ok-to-stop a || return 1 | |
36 | ||
37 | ! ceph mon ok-to-add-offline || return 1 | |
38 | ||
39 | ! ceph mon ok-to-rm a || return 1 | |
40 | ceph mon ok-to-rm dne || return 1 | |
41 | } | |
42 | ||
43 | function TEST_2_mons_checks() { | |
44 | local dir=$1 | |
45 | ||
46 | CEPH_ARGS="$ORIG_CEPH_ARGS --mon-host=$CEPH_MON_A,$CEPH_MON_B " | |
47 | ||
48 | run_mon $dir a --public-addr=$CEPH_MON_A || return 1 | |
49 | run_mon $dir b --public-addr=$CEPH_MON_B || return 1 | |
50 | ||
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 | |
55 | ||
56 | ceph mon ok-to-add-offline || return 1 | |
57 | ||
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 | |
61 | } | |
62 | ||
63 | function TEST_3_mons_checks() { | |
64 | local dir=$1 | |
65 | ||
66 | CEPH_ARGS="$ORIG_CEPH_ARGS --mon-host=$CEPH_MON_A,$CEPH_MON_B,$CEPH_MON_C " | |
67 | ||
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 | |
71 | wait_for_quorum 60 3 | |
72 | ||
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 | |
80 | ||
81 | ceph mon ok-to-add-offline || return 1 | |
82 | ||
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 | |
86 | ||
87 | kill_daemons $dir KILL mon.b | |
88 | wait_for_quorum 60 2 | |
89 | ||
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 | |
93 | ||
94 | ! ceph mon ok-to-add-offline || return 1 | |
95 | ||
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 | |
99 | } | |
100 | ||
101 | function TEST_4_mons_checks() { | |
102 | local dir=$1 | |
103 | ||
104 | CEPH_ARGS="$ORIG_CEPH_ARGS --mon-host=$CEPH_MON_A,$CEPH_MON_B,$CEPH_MON_C,$CEPH_MON_D " | |
105 | ||
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 | |
110 | wait_for_quorum 60 4 | |
111 | ||
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 | |
119 | ||
120 | ceph mon ok-to-add-offline || return 1 | |
121 | ||
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 | |
125 | ||
126 | kill_daemons $dir KILL mon.a | |
127 | wait_for_quorum 60 3 | |
128 | ||
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 | |
133 | ||
134 | ceph mon ok-to-add-offline || return 1 | |
135 | ||
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 | |
140 | } | |
141 | ||
142 | function TEST_5_mons_checks() { | |
143 | local dir=$1 | |
144 | ||
145 | CEPH_ARGS="$ORIG_CEPH_ARGS --mon-host=$CEPH_MON_A,$CEPH_MON_B,$CEPH_MON_C,$CEPH_MON_D,$CEPH_MON_E " | |
146 | ||
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 | |
152 | wait_for_quorum 60 5 | |
153 | ||
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 | |
163 | ||
164 | ceph mon ok-to-add-offline || return 1 | |
165 | ||
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 | |
171 | ||
172 | kill_daemons $dir KILL mon.a | |
173 | wait_for_quorum 60 4 | |
174 | ||
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 | |
180 | ||
181 | ceph mon ok-to-add-offline || return 1 | |
182 | ||
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 | |
188 | ||
189 | kill_daemons $dir KILL mon.e | |
190 | wait_for_quorum 60 3 | |
191 | ||
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 | |
197 | ||
198 | ! ceph mon ok-to-add-offline || return 1 | |
199 | ||
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 | |
205 | } | |
206 | ||
207 | function TEST_0_mds() { | |
208 | local dir=$1 | |
209 | ||
210 | CEPH_ARGS="$ORIG_CEPH_ARGS --mon-host=$CEPH_MON_A " | |
211 | ||
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 | |
216 | ||
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 | |
220 | sleep 5 | |
221 | ||
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 | |
225 | ||
226 | run_mds $dir b || return 1 | |
227 | sleep 5 | |
228 | ||
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 | |
236 | ||
237 | kill_daemons $dir KILL mds.a | |
238 | } | |
239 | ||
92f5a8d4 TL |
240 | function TEST_0_osd() { |
241 | local dir=$1 | |
242 | ||
243 | CEPH_ARGS="$ORIG_CEPH_ARGS --mon-host=$CEPH_MON_A " | |
244 | ||
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 | |
251 | ||
252 | ceph osd erasure-code-profile set ec-profile m=2 k=2 crush-failure-domain=osd || return 1 | |
9f95a23c | 253 | ceph osd pool create ec erasure ec-profile || return 1 |
92f5a8d4 TL |
254 | |
255 | wait_for_clean || return 1 | |
256 | ||
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 | |
260 | ||
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 | ||
268 | # with min_size 2 we can stop 1 osds | |
269 | ceph osd pool set ec min_size 2 || return 1 | |
270 | wait_for_clean || return 1 | |
271 | ||
272 | ceph osd ok-to-stop 0 1 || return 1 | |
273 | ceph osd ok-to-stop 2 3 || return 1 | |
274 | ! ceph osd ok-to-stop 0 1 2 || return 1 | |
275 | ! ceph osd ok-to-stop 1 2 3 || return 1 | |
276 | ||
277 | # we should get the same result with one of the osds already down | |
278 | kill_daemons $dir TERM osd.0 || return 1 | |
279 | ceph osd down 0 || return 1 | |
280 | wait_for_peered || return 1 | |
281 | ||
282 | ceph osd ok-to-stop 0 || return 1 | |
283 | ceph osd ok-to-stop 0 1 || return 1 | |
284 | ! ceph osd ok-to-stop 0 1 2 || return 1 | |
285 | ! ceph osd ok-to-stop 1 2 3 || return 1 | |
286 | } | |
287 | ||
11fdf7f2 TL |
288 | |
289 | main ok-to-stop "$@" |