From c550ae69526ad60b2f288ddc98a59141b9e64dcc Mon Sep 17 00:00:00 2001 From: Ravishankar N Date: Fri, 13 Sep 2013 18:48:38 +0530 Subject: cli/glusterd: improve rebalance fix-layout status reporting Problem: Currenly the CLI rebalance status command output does not indicate the 'type' of rebalance, i.e. whether a full rebalance or only a fix-layout was carried out. Fix: After the rebalance status of all peers is received by the originator glusterd, alter it to reflect the type of rebalance before passing it on to the CLI process. Change-Id: I1940ffda0d36e25e5b33c84a0ea210394cc9e1d3 BUG: 1004744 Signed-off-by: Ravishankar N Reviewed-on: http://review.gluster.org/5826 Reviewed-by: Krishnan Parthasarathi Tested-by: Gluster Build System Reviewed-by: Anand Avati --- tests/bugs/bug-1004744.t | 48 ++++++++++++++++++++++++++++++++++++++++++++++++ tests/bugs/bug-853258.t | 4 ++-- tests/volume.rc | 7 ++++++- 3 files changed, 56 insertions(+), 3 deletions(-) create mode 100644 tests/bugs/bug-1004744.t (limited to 'tests') diff --git a/tests/bugs/bug-1004744.t b/tests/bugs/bug-1004744.t new file mode 100644 index 000000000..0290119ef --- /dev/null +++ b/tests/bugs/bug-1004744.t @@ -0,0 +1,48 @@ +#!/bin/bash + +#Test case: After a rebalance fix-layout, check if the rebalance status command +#displays the appropriate message at the CLI. + +. $(dirname $0)/../include.rc +. $(dirname $0)/../volume.rc + +cleanup; + +#Basic checks +TEST glusterd +TEST pidof glusterd +TEST $CLI volume info + +#Create a 2x1 distributed volume +TEST $CLI volume create $V0 $H0:$B0/${V0}{1,2}; +TEST $CLI volume start $V0 + +# Mount FUSE and create file/directory +TEST glusterfs -s $H0 --volfile-id $V0 $M0 +for i in `seq 1 10`; +do + mkdir $M0/dir_$i + echo file>$M0/dir_$i/file_$i + for j in `seq 1 100`; + do + mkdir $M0/dir_$i/dir_$j + echo file>$M0/dir_$i/dir_$j/file_$j + done +done + +#add 2 bricks +TEST $CLI volume add-brick $V0 $H0:$B0/${V0}{3,4}; + +#perform rebalance fix-layout +TEST $CLI volume rebalance $V0 fix-layout start + +EXPECT_WITHIN 1 "fix-layout in progress" rebalance_status_field $V0; + +EXPECT_WITHIN 20 "fix-layout completed" rebalance_status_field $V0; + +TEST umount $M0 +TEST $CLI volume stop $V0 +TEST $CLI volume delete $V0; +TEST ! $CLI volume info $V0; + +cleanup; diff --git a/tests/bugs/bug-853258.t b/tests/bugs/bug-853258.t index 79cb88099..0ca995551 100755 --- a/tests/bugs/bug-853258.t +++ b/tests/bugs/bug-853258.t @@ -20,7 +20,7 @@ EXPECT_WITHIN 15 'Started' volinfo_field $V0 'Status'; # Force assignment of initial ranges. TEST $CLI volume rebalance $V0 fix-layout start -EXPECT_WITHIN 15 "completed" rebalance_status_field $V0 +EXPECT_WITHIN 15 "fix-layout completed" rebalance_status_field $V0 # Get the original values. xattrs="" @@ -32,7 +32,7 @@ done TEST $CLI volume add-brick $V0 $H0:$B0/${V0}3 # Force assignment of initial ranges. TEST $CLI volume rebalance $V0 fix-layout start -EXPECT_WITHIN 15 "completed" rebalance_status_field $V0 +EXPECT_WITHIN 15 "fix-layout completed" rebalance_status_field $V0 for i in $(seq 0 3); do xattrs="$xattrs $(dht_get_layout $B0/${V0}$i)" diff --git a/tests/volume.rc b/tests/volume.rc index 470fe9a7c..987122420 100644 --- a/tests/volume.rc +++ b/tests/volume.rc @@ -27,7 +27,12 @@ function volume_option() } function rebalance_status_field { - $CLI volume rebalance $1 status | awk '{print $7}' | sed -n 3p + #The rebalance status can be upto 3 words, (ex:'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.(ex:'completed 3.00'). + #So we trim the numbers out with `tr`. Finally remove the trailing white spaces with sed. What we get is one of the + #strings in the 'cli_vol_task_status_str' char array of cli-rpc-ops.c + + $CLI volume rebalance $1 status | awk '{print $7,$8,$9}' |sed -n 3p |tr -d '[^0-9+\.]'|sed 's/ *$//g' } function remove_brick_status_completed_field { -- cgit