Skip to content

Commit

Permalink
test: fixup and improvements for rbd-mirror test
Browse files Browse the repository at this point in the history
Signed-off-by: Mykola Golub <mgolub@mirantis.com>
  • Loading branch information
Mykola Golub committed Mar 14, 2016
1 parent 1d685bb commit c8887e8
Showing 1 changed file with 46 additions and 13 deletions.
59 changes: 46 additions & 13 deletions qa/workunits/rbd/rbd_mirror.sh
Expand Up @@ -17,7 +17,12 @@ setup()
local c
trap cleanup INT TERM EXIT

TEMPDIR=`mktemp -d`
if [ -n "${RBD_MIRROR_TEMDIR}" ]; then
mkdir "${RBD_MIRROR_TEMDIR}"
TEMPDIR="${RBD_MIRROR_TEMDIR}"
else
TEMPDIR=`mktemp -d`
fi

cd ${SRC_DIR}
./mstart.sh ${LOC_CLUSTER} -n
Expand Down Expand Up @@ -113,26 +118,50 @@ flush()
ceph --admin-daemon ${TEMPDIR}/rbd-mirror.asok ${cmd}
}

wait_for_image_replay_started()
test_image_replay_state()
{
local image=$1
local image_id s
local image_id=$1
local test_state=$2
local current_state=stopped

test -n "${RBD_MIRROR_ASOK}"

ceph --admin-daemon ${RBD_MIRROR_ASOK} help | fgrep "${image_id}" &&
current_state=started
test "${test_state}" = "${current_state}"
}

wait_for_image_replay_state()
{
local image=$1
local state=$2
local image_id s

image_id=$(remote_image_id ${image})
test -n "${image_id}"

# TODO: add a way to force rbd-mirror to update replayers

for s in 1 2 4 8 8 8 8 8 8 8 8; do
sleep ${s}
ceph --admin-daemon ${RBD_MIRROR_ASOK} help | grep "${image_id}" &&
return 0
test_image_replay_state "${image_id}" "${state}" && return 0
done
return 1
}

wait_for_image_replay_started()
{
local image=$1

wait_for_image_replay_state ${image} started
}

wait_for_image_replay_stopped()
{
local image=$1

wait_for_image_replay_state ${image} stopped
}

get_position()
{
local image=$1
Expand Down Expand Up @@ -174,7 +203,7 @@ wait_for_replay_complete()
local image=$1
local s master_pos mirror_pos

for s in 0.2 0.4 0.8 1.6 2 2 4 4 8; do
for s in 0.2 0.4 0.8 1.6 2 2 4 4 8 8 16 16; do
sleep ${s}
flush ${image}
master_pos=$(get_master_position ${image})
Expand Down Expand Up @@ -260,6 +289,10 @@ compare_images()
if [ "$1" = clean ]; then
TEMPDIR=$2

if [ -z "${TEMPDIR}" -a -n "${RBD_MIRROR_TEMDIR}" ]; then
TEMPDIR="${RBD_MIRROR_TEMDIR}"
fi

test -n "${TEMPDIR}"

RBD_MIRROR_PID_FILE=${TEMPDIR}/rbd-mirror.pid
Expand All @@ -274,27 +307,27 @@ set -xe

setup

# add image and test replay
echo "TEST: add image and test replay"
image=test
create_remote_image ${image}
wait_for_image_replay_started ${image}
write_image ${image} 100
wait_for_replay_complete ${image}
compare_images ${image}

# stop mirror, add image, start mirror and test replay
echo "TEST: stop mirror, add image, start mirror and test replay"
stop_mirror
image1=test1
create_remote_image ${image1}
write_image ${image1} 100
start_mirror
wait_for_image_replay_started ${image1}
wait_for_replay_complete ${image}
wait_for_replay_complete ${image1}
compare_images ${image1}

# test the first image is replaying after restart
echo "TEST: test the first image is replaying after restart"
write_image ${image} 100
wait_for_image_replay_started ${image}
wait_for_replay_complete ${image}
compare_images ${image}

echo OK

0 comments on commit c8887e8

Please sign in to comment.