From b15ff2f41967d00cf0e2929557f8f403a97b34c2 Mon Sep 17 00:00:00 2001 From: Mykola Golub Date: Wed, 16 Mar 2016 23:07:07 +0200 Subject: [PATCH] test: rbd-mirror: compare positions using all fields Comparing by only entry_tid may give false positives. Signed-off-by: Mykola Golub --- qa/workunits/rbd/rbd_mirror.sh | 13 +++---------- qa/workunits/rbd/rbd_mirror_image_replay.sh | 13 +++---------- 2 files changed, 6 insertions(+), 20 deletions(-) diff --git a/qa/workunits/rbd/rbd_mirror.sh b/qa/workunits/rbd/rbd_mirror.sh index b84fd241b6ccc..b8bc942ca6043 100755 --- a/qa/workunits/rbd/rbd_mirror.sh +++ b/qa/workunits/rbd/rbd_mirror.sh @@ -216,21 +216,14 @@ get_position() local image=$1 local id_regexp=$2 - # Parse line like below, looking for the first entry_tid + # Parse line like below, looking for the first position # [id=, commit_position=[positions=[[object_number=1, tag_tid=3, entry_tid=9], [object_number=0, tag_tid=3, entry_tid=8], [object_number=3, tag_tid=3, entry_tid=7], [object_number=2, tag_tid=3, entry_tid=6]]]] local status_log=${TEMPDIR}/${RMT_CLUSTER}-${POOL}-${image}.status rbd --cluster ${RMT_CLUSTER} -p ${POOL} journal status --image ${image} | tee ${status_log} >&2 - sed -Ee 's/[][,]/ /g' ${status_log} | - awk '$1 ~ /id='"${id_regexp}"'$/ { - for (i = 1; i < NF; i++) { - if ($i ~ /entry_tid=/) { - print $i; - exit - } - } - }' + sed -nEe 's/^.*\[id='"${id_regexp}"',.*positions=\[\[([^]]*)\],.*$/\1/p' \ + ${status_log} } get_master_position() diff --git a/qa/workunits/rbd/rbd_mirror_image_replay.sh b/qa/workunits/rbd/rbd_mirror_image_replay.sh index e5c701391bfca..b9ddaf71a725b 100755 --- a/qa/workunits/rbd/rbd_mirror_image_replay.sh +++ b/qa/workunits/rbd/rbd_mirror_image_replay.sh @@ -110,20 +110,13 @@ get_position() { local id=$1 - # Parse line like below, looking for the first entry_tid + # Parse line like below, looking for the first position # [id=, commit_position=[positions=[[object_number=1, tag_tid=3, entry_tid=9], [object_number=0, tag_tid=3, entry_tid=8], [object_number=3, tag_tid=3, entry_tid=7], [object_number=2, tag_tid=3, entry_tid=6]]]] local status_log=${TEMPDIR}/${RMT_POOL}-${IMAGE}.status rbd -p ${RMT_POOL} journal status --image ${IMAGE} | tee ${status_log} >&2 - sed -Ee 's/[][,]/ /g' ${status_log} | - awk '$1 == "id='${id}'" { - for (i = 1; i < NF; i++) { - if ($i ~ /entry_tid=/) { - print $i; - exit - } - } - }' + sed -nEe 's/^.*\[id='"${id}"',.*positions=\[\[([^]]*)\],.*$/\1/p' \ + ${status_log} } get_master_position() -- 2.39.5