From: Ilya Dryomov Date: Fri, 10 Feb 2023 12:56:57 +0000 (+0100) Subject: qa/suites/rbd: fix sporadic "rx-only direction" test failures X-Git-Tag: v18.1.0~394^2 X-Git-Url: http://git.apps.os.sepia.ceph.com/?a=commitdiff_plain;h=5cec2670be569ac9161743dec84f139b9e529d07;p=ceph.git qa/suites/rbd: fix sporadic "rx-only direction" test failures The existing xmlstarlet sel -t -v '//mirror/peers/peer[1]/uuid')" = "" test is bogus since a tx-only peer gets added after the remote rbd-mirror daemon pings the local cluster. It happened to pass most of the time because xmlstarlet filter just failed on an empty peers array, producing the wrongly expected empty string by accident. Fixes: https://tracker.ceph.com/issues/58688 Signed-off-by: Ilya Dryomov --- diff --git a/qa/workunits/rbd/rbd_mirror_bootstrap.sh b/qa/workunits/rbd/rbd_mirror_bootstrap.sh index fb77c0d9bf869..6ef06f2b82cbb 100755 --- a/qa/workunits/rbd/rbd_mirror_bootstrap.sh +++ b/qa/workunits/rbd/rbd_mirror_bootstrap.sh @@ -24,8 +24,13 @@ start_mirrors ${CLUSTER1} start_mirrors ${CLUSTER2} testlog "TEST: verify rx-only direction" -[ "$(rbd --cluster ${CLUSTER1} --pool ${POOL} mirror pool info --format xml | - ${XMLSTARLET} sel -t -v '//mirror/peers/peer[1]/uuid')" = "" ] +# rx-only peer is added immediately by "rbd mirror pool peer bootstrap import" +rbd --cluster ${CLUSTER2} --pool ${POOL} mirror pool info --format json | jq -e '.peers[0].direction == "rx-only"' +# tx-only peer is added asynchronously by mirror_peer_ping class method +while ! rbd --cluster ${CLUSTER1} --pool ${POOL} mirror pool info --format json | jq -e '.peers | length > 0'; do + sleep 1 +done +rbd --cluster ${CLUSTER1} --pool ${POOL} mirror pool info --format json | jq -e '.peers[0].direction == "tx-only"' create_image_and_enable_mirror ${CLUSTER1} ${POOL} image1 @@ -34,6 +39,10 @@ write_image ${CLUSTER1} ${POOL} image1 100 wait_for_replay_complete ${CLUSTER2} ${CLUSTER1} ${POOL} image1 testlog "TEST: verify rx-tx direction" +# both rx-tx peers are added immediately by "rbd mirror pool peer bootstrap import" +rbd --cluster ${CLUSTER1} --pool ${PARENT_POOL} mirror pool info --format json | jq -e '.peers[0].direction == "rx-tx"' +rbd --cluster ${CLUSTER2} --pool ${PARENT_POOL} mirror pool info --format json | jq -e '.peers[0].direction == "rx-tx"' + create_image ${CLUSTER1} ${PARENT_POOL} image1 create_image ${CLUSTER2} ${PARENT_POOL} image2