From 60a4288f0a2444821e17ac6eaeb402b466dd4a1a Mon Sep 17 00:00:00 2001 From: Pranith Kumar K Date: Fri, 30 Oct 2015 15:56:14 +0530 Subject: mgmt/glusterd: Store arbiter-count and restore it Backport of http://review.gluster.com/12475 Problem: 1) Glusterd doesn't remember about arbiter information of replica volume in store. When glusterd goes down and comes backup, arbiter volumes will become replica volumes. 2) Glusterd doesn't import/export arbiter information to/from the other peers. 3) Volume info doesn't show any arbiter count in the output. Fix: 1) Persist arbiter information in glusterd-store 2) Import/Export arbiter information of the volume 3) Change volume info output to show arbiter count. >Change-Id: I2db81e73d2694b01f7d07b08a17b41ad5a55c361 >BUG: 1276675 >Signed-off-by: Pranith Kumar K BUG: 1276907 Change-Id: I95c9857d645e02831892092bdd07539cc1a58270 Signed-off-by: Pranith Kumar K Reviewed-on: http://review.gluster.org/12479 Tested-by: NetBSD Build System Reviewed-by: Ravishankar N Tested-by: Gluster Build System --- tests/basic/glusterd/arbiter-volume-probe.t | 25 ++++++++++++++++++++++ tests/basic/glusterd/arbiter-volume.t | 32 +++++++++++++++++++++++++++++ tests/cluster.rc | 16 +++++++++++++++ 3 files changed, 73 insertions(+) create mode 100644 tests/basic/glusterd/arbiter-volume-probe.t create mode 100644 tests/basic/glusterd/arbiter-volume.t (limited to 'tests') diff --git a/tests/basic/glusterd/arbiter-volume-probe.t b/tests/basic/glusterd/arbiter-volume-probe.t new file mode 100644 index 00000000000..cb05f4ada42 --- /dev/null +++ b/tests/basic/glusterd/arbiter-volume-probe.t @@ -0,0 +1,25 @@ +#!/bin/bash + +. $(dirname $0)/../../include.rc +. $(dirname $0)/../../cluster.rc + +#This tests if the arbiter-count is transferred to the other peer. +function check_peers { + $CLI_1 peer status | grep 'Peer in Cluster (Connected)' | wc -l +} + +cleanup; + +TEST launch_cluster 2; +TEST $CLI_1 peer probe $H2; + +EXPECT_WITHIN $PROBE_TIMEOUT 1 check_peers + +kill_glusterd 2 +$CLI_1 volume create $V0 replica 3 arbiter 1 $H0:$B0/b{1..3} +TEST $glusterd_2 +EXPECT_WITHIN $PROBE_TIMEOUT 1 check_peers +EXPECT "1 x \(2 \+ 1\) = 3" volinfo_field_1 $V0 "Number of Bricks" +EXPECT "1 x \(2 \+ 1\) = 3" volinfo_field_2 $V0 "Number of Bricks" + +cleanup; diff --git a/tests/basic/glusterd/arbiter-volume.t b/tests/basic/glusterd/arbiter-volume.t new file mode 100644 index 00000000000..03f9aca2daf --- /dev/null +++ b/tests/basic/glusterd/arbiter-volume.t @@ -0,0 +1,32 @@ +#!/bin/bash + +. $(dirname $0)/../../include.rc +. $(dirname $0)/../../volume.rc + +# This command tests the volume create command validation for arbiter volumes. + +cleanup; +TEST glusterd +TEST pidof glusterd + +TEST $CLI volume create $V0 replica 3 arbiter 1 $H0:$B0/b1 $H0:$B0/b2 $H0:$B0/b3 +EXPECT "1 x \(2 \+ 1\) = 3" volinfo_field $V0 "Number of Bricks" + +TEST $CLI volume delete $V0 +TEST $CLI volume create $V0 replica 3 arbiter 1 $H0:$B0/b{4..9} +EXPECT "2 x \(2 \+ 1\) = 6" volinfo_field $V0 "Number of Bricks" + +TEST $CLI volume delete $V0 +TEST $CLI volume create $V0 stripe 2 replica 3 arbiter 1 $H0:$B0/b{10..15} +EXPECT "1 x 2 x \(2 \+ 1\) = 6" volinfo_field $V0 "Number of Bricks" + +TEST $CLI volume delete $V0 +TEST rm -rf $B0/b{1..3} +TEST $CLI volume create $V0 replica 3 arbiter 1 $H0:$B0/b1 $H0:$B0/b2 $H0:$B0/b3 +EXPECT "1 x \(2 \+ 1\) = 3" volinfo_field $V0 "Number of Bricks" +TEST killall -15 glusterd +TEST glusterd +TEST pidof glusterd +EXPECT "1 x \(2 \+ 1\) = 3" volinfo_field $V0 "Number of Bricks" + +#cleanup diff --git a/tests/cluster.rc b/tests/cluster.rc index 6fd74bc8ba4..d210ca2932e 100644 --- a/tests/cluster.rc +++ b/tests/cluster.rc @@ -154,3 +154,19 @@ function cluster_volinfo_field() local field=$3; eval \$CLI_$1 volume info $vol | grep "^$field: " | sed 's/.*: //'; } + +function volinfo_field_1() +{ + local vol=$1; + local field=$2; + + $CLI_1 volume info $vol | grep "^$field: " | sed 's/.*: //'; +} + +function volinfo_field_2() +{ + local vol=$1; + local field=$2; + + $CLI_2 volume info $vol | grep "^$field: " | sed 's/.*: //'; +} -- cgit