summaryrefslogtreecommitdiffstats
path: root/tests
diff options
context:
space:
mode:
authorPranith Kumar K <pkarampu@redhat.com>2015-02-02 18:49:01 +0530
committerPranith Kumar Karampuri <pkarampu@redhat.com>2015-03-05 21:56:20 -0800
commit3797caabb95ad8e62dee74a5331d324ddffc654f (patch)
treeffc7c647e40388e9229b80a5aff710538c710f73 /tests
parent8fa36bc7a11968086e31ac32b9a24de07dd50d15 (diff)
cluster/afr: Implementation of quorum-reads
Provide a way of disabling reads when quorum is not met. Change-Id: Ic4f57c2b87a0b8514600759de3a7a47e217fe3b5 BUG: 1187885 Signed-off-by: Pranith Kumar K <pkarampu@redhat.com> Reviewed-on: http://review.gluster.org/9543 Reviewed-by: Ravishankar N <ravishankar@redhat.com> Tested-by: Gluster Build System <jenkins@build.gluster.com>
Diffstat (limited to 'tests')
-rw-r--r--tests/basic/afr/quorum.t44
-rw-r--r--tests/include.rc1
-rw-r--r--tests/volume.rc8
3 files changed, 51 insertions, 2 deletions
diff --git a/tests/basic/afr/quorum.t b/tests/basic/afr/quorum.t
index dbf8895e7ed..c105290445a 100644
--- a/tests/basic/afr/quorum.t
+++ b/tests/basic/afr/quorum.t
@@ -13,10 +13,16 @@ function test_write {
#Tests for quorum-type option for replica 2
TEST $CLI volume create $V0 replica 2 $H0:$B0/${V0}{1,2};
+TEST $CLI volume set $V0 performance.quick-read off
+TEST $CLI volume set $V0 performance.io-cache off
+TEST $CLI volume set $V0 performance.write-behind off
+TEST $CLI volume set $V0 performance.stat-prefetch off
+TEST $CLI volume set $V0 performance.read-ahead off
TEST $CLI volume start $V0
-TEST $GFS -s $H0 --volfile-id=$V0 $M0;
+TEST $GFS -s $H0 --volfile-id=$V0 $M0 --direct-io-mode=enable;
touch $M0/a
+echo abc > $M0/b
TEST ! $CLI volume set $V0 cluster.quorum-type ""
TEST $CLI volume set $V0 cluster.quorum-type fixed
@@ -25,6 +31,11 @@ TEST $CLI volume set $V0 cluster.quorum-count 2
TEST test_write
TEST kill_brick $V0 $H0 $B0/${V0}1
TEST ! test_write
+EXPECT "abc" cat $M0/b
+TEST $CLI volume set $V0 cluster.quorum-reads on
+EXPECT_WITHIN $CONFIG_UPDATE_TIMEOUT "1" mount_get_option_value $M0 $V0-replicate-0 quorum-reads
+TEST ! cat $M0/b
+TEST $CLI volume reset $V0 cluster.quorum-reads
TEST $CLI volume set $V0 cluster.quorum-type auto
EXPECT auto volume_option $V0 cluster.quorum-type
@@ -33,6 +44,11 @@ EXPECT_WITHIN $PROCESS_UP_TIMEOUT "1" afr_child_up_status $V0 0
TEST test_write
TEST kill_brick $V0 $H0 $B0/${V0}1
TEST ! test_write
+EXPECT "abc" cat $M0/b
+TEST $CLI volume set $V0 cluster.quorum-reads on
+EXPECT_WITHIN $CONFIG_UPDATE_TIMEOUT "1" mount_get_option_value $M0 $V0-replicate-0 quorum-reads
+TEST ! cat $M0/b
+TEST $CLI volume reset $V0 cluster.quorum-reads
TEST $CLI volume set $V0 cluster.quorum-type none
EXPECT none volume_option $V0 cluster.quorum-type
@@ -40,6 +56,12 @@ TEST test_write
#Default is 'none' for even number of bricks in replication
TEST $CLI volume reset $V0 cluster.quorum-type
TEST test_write
+EXPECT "abc" cat $M0/b
+TEST $CLI volume set $V0 cluster.quorum-reads on
+EXPECT_WITHIN $CONFIG_UPDATE_TIMEOUT "1" mount_get_option_value $M0 $V0-replicate-0 quorum-reads
+EXPECT "abc" cat $M0/b
+TEST $CLI volume reset $V0 cluster.quorum-reads
+
cleanup;
TEST glusterd;
@@ -47,10 +69,16 @@ TEST pidof glusterd
#Tests for quorum-type option for replica 3
TEST $CLI volume create $V0 replica 3 $H0:$B0/${V0}{1,2,3};
+TEST $CLI volume set $V0 performance.quick-read off
+TEST $CLI volume set $V0 performance.io-cache off
+TEST $CLI volume set $V0 performance.write-behind off
+TEST $CLI volume set $V0 performance.stat-prefetch off
+TEST $CLI volume set $V0 performance.read-ahead off
TEST $CLI volume start $V0
-TEST $GFS -s $H0 --volfile-id=$V0 $M0;
+TEST $GFS -s $H0 --volfile-id=$V0 $M0 --direct-io-mode=enable;
touch $M0/a
+echo abc > $M0/b
TEST $CLI volume set $V0 cluster.quorum-type fixed
EXPECT fixed volume_option $V0 cluster.quorum-type
@@ -58,12 +86,24 @@ TEST $CLI volume set $V0 cluster.quorum-count 3
TEST test_write
TEST kill_brick $V0 $H0 $B0/${V0}1
TEST ! test_write
+EXPECT "abc" cat $M0/b
+TEST $CLI volume set $V0 cluster.quorum-reads on
+EXPECT_WITHIN $CONFIG_UPDATE_TIMEOUT "1" mount_get_option_value $M0 $V0-replicate-0 quorum-reads
+TEST ! cat $M0/b
+TEST $CLI volume reset $V0 cluster.quorum-reads
+
TEST $CLI volume set $V0 cluster.quorum-type auto
EXPECT auto volume_option $V0 cluster.quorum-type
TEST test_write
TEST kill_brick $V0 $H0 $B0/${V0}3
TEST ! test_write
+EXPECT "abc" cat $M0/b
+TEST $CLI volume set $V0 cluster.quorum-reads on
+EXPECT_WITHIN $CONFIG_UPDATE_TIMEOUT "1" mount_get_option_value $M0 $V0-replicate-0 quorum-reads
+TEST ! cat $M0/b
+TEST $CLI volume reset $V0 cluster.quorum-reads
+
TEST $CLI volume set $V0 cluster.quorum-type none
EXPECT none volume_option $V0 cluster.quorum-type
diff --git a/tests/include.rc b/tests/include.rc
index 8e4e4617411..81c4df91727 100644
--- a/tests/include.rc
+++ b/tests/include.rc
@@ -61,6 +61,7 @@ HEAL_TIMEOUT=60
MARKER_UPDATE_TIMEOUT=20
JANITOR_TIMEOUT=60
UMOUNT_TIMEOUT=5
+CONFIG_UPDATE_TIMEOUT=5
statedumpdir=`gluster --print-statedumpdir`; # Default directory for statedump
diff --git a/tests/volume.rc b/tests/volume.rc
index 887a9cae861..6abf68dc75c 100644
--- a/tests/volume.rc
+++ b/tests/volume.rc
@@ -457,3 +457,11 @@ function volgen_volume_option {
local xl_option="$5"
sed -e "/./{H;\$!d;}" -e "x;/volume $xl_vol/!d;/type $xl_type\/$xl_feature/!d;/option $xl_option/!d" $volfile | grep " $xl_option " | awk '{print $3}'
}
+
+function mount_get_option_value {
+ local m=$1
+ local subvol=$2
+ local key=$3
+
+ grep "$3" $m/.meta/graphs/active/$subvol/private | awk '{print $3}'
+}