From e1f780ca8f17b8b9615356796093dc7a75f5ff8a Mon Sep 17 00:00:00 2001 From: Atin Mukherjee Date: Thu, 9 Nov 2017 22:42:22 +0530 Subject: tests: fix bug-1483058-replace-brick-quorum-validation.t spurious failure >mainline patch : https://review.gluster.org/#/c/18710/ Change-Id: I04c35305bfb663eabbf715eee78695adfd4a2d20 BUG: 1512435 Signed-off-by: Atin Mukherjee (cherry picked from commit 76a83f98b78a0bdf29bbb0f8e4c9ab74dae52be4) --- .../glusterd/bug-1483058-replace-brick-quorum-validation.t | 9 ++++++++- tests/cluster.rc | 10 ++++++++++ tests/include.rc | 1 + 3 files changed, 19 insertions(+), 1 deletion(-) diff --git a/tests/bugs/glusterd/bug-1483058-replace-brick-quorum-validation.t b/tests/bugs/glusterd/bug-1483058-replace-brick-quorum-validation.t index 3dbe28a7917..2d9e5287818 100644 --- a/tests/bugs/glusterd/bug-1483058-replace-brick-quorum-validation.t +++ b/tests/bugs/glusterd/bug-1483058-replace-brick-quorum-validation.t @@ -45,7 +45,14 @@ TEST start_glusterd 2 EXPECT_WITHIN $PROBE_TIMEOUT 2 peer_count +# checking peer_count is not enough to call that quorum is regained as +# peer_count is based on peerinfo->connected where as quorum is calculated based +# on peerinfo->quorum_contrib. To avoid this spurious race of replace brick +# commit force to execute and fail before the quorum is regained run the command +# in EXPECT_WITHIN to ensure that with multiple attempts the command goes +# through once the quorum is regained. + # Now quorum is met. replace-brick will execute successfuly -TEST $CLI_1 volume replace-brick $V0 $H2:$B2/${V0}1 $H1:$B1/${V0}1_new commit force +EXPECT_WITHIN $PEER_SYNC_TIMEOUT 0 attempt_replace_brick 1 $V0 $H2:$B2/${V0}1 $H1:$B1/${V0}1_new #cleanup; diff --git a/tests/cluster.rc b/tests/cluster.rc index c1ff8ab5b74..e258b586847 100644 --- a/tests/cluster.rc +++ b/tests/cluster.rc @@ -142,6 +142,16 @@ function peer_count() { $CLI_1 peer status | grep 'Peer in Cluster (Connected)' | wc -l } +function attempt_replace_brick { + local cli_no=$1 + local vol=$2; + local src_brick=$3; + local dst_brick=$4; + + eval \$CLI_$cli_no volume replace-brick $vol $src_brick $dst_brick commit force; + echo $? +} + function cluster_rebalance_status_field { #The rebalance status can be up to 3 words, (e.g.:'fix-layout in progress'), hence the awk-print $7 thru $9. #But if the status is less than 3 words, it also prints the next field i.e the run_time_in_secs.(e.g.:'completed 3.00'). diff --git a/tests/include.rc b/tests/include.rc index 7cd15a2d249..f3b94336179 100644 --- a/tests/include.rc +++ b/tests/include.rc @@ -74,6 +74,7 @@ PROCESS_UP_TIMEOUT=30 NFS_EXPORT_TIMEOUT=20 CHILD_UP_TIMEOUT=20 PROBE_TIMEOUT=60 +PEER_SYNC_TIMEOUT=20 REBALANCE_TIMEOUT=360 REOPEN_TIMEOUT=20 HEAL_TIMEOUT=80 -- cgit