3 # rbd_mirror_ha.sh - test rbd-mirror daemons in HA mode
8 RBD_MIRROR_INSTANCES
=${RBD_MIRROR_INSTANCES:-7}
10 . $
(dirname $0)/rbd_mirror_helpers.sh
19 test -n "${pool}" || pool
=${POOL}
21 admin_daemon
"${CLUSTER1}:${instance}" \
22 rbd mirror status
${pool} ${CLUSTER2}${PEER_CLUSTER_SUFFIX} |
30 for s
in 1 1 2 4 4 4 4 4 8 8 8 8 16 16 32 64; do
32 for instance
in `seq 0 ${LAST_MIRROR_INSTANCE}`; do
33 is_leader
${instance} ||
continue
46 local cmd
="rbd mirror leader release"
48 test -n "${pool}" && cmd="${cmd} ${pool} ${CLUSTER2}"
50 admin_daemon
"${CLUSTER1}:${LEADER}" ${cmd}
53 wait_for_leader_released()
59 is_leader ${LEADER} || return 0
71 wait_for_image_replay_started ${CLUSTER1}:${LEADER} ${POOL} ${image}
72 write_image ${CLUSTER2} ${POOL} ${image} 100
73 wait_for_replay_complete ${CLUSTER1}:${LEADER} ${CLUSTER2} ${POOL} \
75 wait_for_status_in_pool_dir ${CLUSTER1} ${POOL} ${image} 'up+replaying' \
77 "${MIRROR_USER_ID_PREFIX}${LEADER} on $
(hostname
-s)"
78 if [ -z "${RBD_MIRROR_USE_RBD_MIRROR}" ]; then
79 wait_for_status_in_pool_dir ${CLUSTER2} ${POOL} ${image} \
82 compare_images ${POOL} ${image}
86 testlog "TEST
: start first daemon instance and
test replay
"
87 start_mirror ${CLUSTER1}:0
89 create_image ${CLUSTER2} ${POOL} ${image1}
93 testlog "TEST
: release leader and
wait it is reacquired
"
95 is_leader 0 ${PARENT_POOL}
96 release_leader ${POOL}
97 wait_for_leader_released
98 is_leader 0 ${PARENT_POOL}
101 wait_for_leader_released
102 expect_failure "" is_leader 0 ${PARENT_POOL}
105 testlog "TEST
: start second daemon instance and
test replay
"
106 start_mirror ${CLUSTER1}:1
108 create_image ${CLUSTER2} ${POOL} ${image2}
109 test_replay ${image1} ${image2}
111 testlog "TEST
: release leader and
test it is acquired by secondary
"
113 is_leader 0 ${PARENT_POOL}
114 release_leader ${POOL}
115 wait_for_leader_released
117 test_replay ${image1} ${image2}
119 wait_for_leader_released
123 testlog "TEST
: stop first daemon instance and
test replay
"
124 stop_mirror ${CLUSTER1}:0
126 create_image ${CLUSTER2} ${POOL} ${image3}
128 test_replay ${image1} ${image2} ${image3}
130 testlog "TEST
: start first daemon instance and
test replay
"
131 start_mirror ${CLUSTER1}:0
133 create_image ${CLUSTER2} ${POOL} ${image4}
134 test_replay ${image3} ${image4}
136 testlog "TEST
: crash leader and
test replay
"
137 stop_mirror ${CLUSTER1}:1 -KILL
139 create_image ${CLUSTER2} ${POOL} ${image5}
141 test_replay ${image1} ${image4} ${image5}
143 testlog "TEST
: start crashed leader and
test replay
"
144 start_mirror ${CLUSTER1}:1
146 create_image ${CLUSTER2} ${POOL} ${image6}
147 test_replay ${image1} ${image6}
149 testlog "TEST
: start yet another daemon instance and
test replay
"
150 start_mirror ${CLUSTER1}:2
152 create_image ${CLUSTER2} ${POOL} ${image7}
153 test_replay ${image1} ${image7}
155 testlog "TEST
: release leader and
test it is acquired by secondary
"
158 wait_for_leader_released
160 test_replay ${image1} ${image2}
162 testlog "TEST
: stop leader and
test replay
"
163 stop_mirror ${CLUSTER1}:${LEADER}
165 create_image ${CLUSTER2} ${POOL} ${image8}
166 prev_leader=${LEADER}
168 test_replay ${image1} ${image8}
170 testlog "TEST
: start previous leader and
test replay
"
171 start_mirror ${CLUSTER1}:${prev_leader}
173 create_image ${CLUSTER2} ${POOL} ${image9}
174 test_replay ${image1} ${image9}
176 testlog "TEST
: crash leader and
test replay
"
177 stop_mirror ${CLUSTER1}:${LEADER} -KILL
179 create_image ${CLUSTER2} ${POOL} ${image10}
180 prev_leader=${LEADER}
182 test_replay ${image1} ${image10}
184 testlog "TEST
: start previous leader and
test replay
"
185 start_mirror ${CLUSTER1}:${prev_leader}
187 create_image ${CLUSTER2} ${POOL} ${image11}
188 test_replay ${image1} ${image11}
190 testlog "TEST
: start some
more daemon instances and
test replay
"
191 start_mirror ${CLUSTER1}:3
192 start_mirror ${CLUSTER1}:4
193 start_mirror ${CLUSTER1}:5
194 start_mirror ${CLUSTER1}:6
196 create_image ${CLUSTER2} ${POOL} ${image13}
197 test_replay ${leader} ${image1} ${image13}
199 testlog "TEST
: release leader and
test it is acquired by secondary
"
201 wait_for_leader_released
203 test_replay ${image1} ${image2}
205 testlog "TEST
: in loop
: stop leader and
test replay
"
206 for i in 0 1 2 3 4 5; do
207 stop_mirror ${CLUSTER1}:${LEADER}
209 test_replay ${image1}
212 stop_mirror ${CLUSTER1}:${LEADER}