From 0ef62933649392051e73fe01c028e41baddec489 Mon Sep 17 00:00:00 2001 From: Mohammed Rafi KC Date: Tue, 8 Sep 2015 13:04:45 +0530 Subject: tier/shd: make shd commands compatible with tiering tiering volfiles may contain afr and disperse together or multiple time based on configuration. And the informations for those configurations are stored in tier_info. So most of the volgen code generation need to be changed to make compatible with it. Change-Id: I563d1ca6f281f59090ebd470b7fda1cc4b1b7e1d BUG: 1261276 Signed-off-by: Mohammed Rafi KC Reviewed-on: http://review.gluster.org/12135 Tested-by: NetBSD Build System Tested-by: Gluster Build System Reviewed-by: Pranith Kumar Karampuri --- tests/basic/tier/tier-heald.t | 97 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 97 insertions(+) create mode 100644 tests/basic/tier/tier-heald.t (limited to 'tests/basic/tier') diff --git a/tests/basic/tier/tier-heald.t b/tests/basic/tier/tier-heald.t new file mode 100644 index 00000000000..05b19e437c0 --- /dev/null +++ b/tests/basic/tier/tier-heald.t @@ -0,0 +1,97 @@ +#!/bin/bash + +. $(dirname $0)/../../include.rc +. $(dirname $0)/../../volume.rc + +# This test contains volume heal commands handled by glusterd. +# Covers enable/disable at the moment. Will be enhanced later to include +# the other commands as well. + +cleanup; +TEST glusterd +TEST pidof glusterd + +volfile=$(gluster system:: getwd)"/glustershd/glustershd-server.vol" + +# Commands should fail when both tiers are not of distribute type. +# Glustershd shouldn't be running as long as there are no replicate/disperse +# volumes +TEST $CLI volume create dist_tier $H0:$B0/cold +TEST $CLI volume start dist_tier +TEST $CLI volume attach-tier dist_tier $H0:$B0/hot + +TEST "[ -z $(get_shd_process_pid)]" +TEST ! $CLI volume heal dist_tier enable +TEST ! $CLI volume heal dist_tier disable + +# Commands should work on replicate/disperse volume. +TEST $CLI volume create r2 replica 2 $H0:$B0/r2_0 $H0:$B0/r2_1 +TEST "[ -z $(get_shd_process_pid)]" +TEST $CLI volume start r2 + +TEST $CLI volume attach-tier r2 $H0:$B0/r2_hot + +EXPECT_WITHIN $PROCESS_UP_TIMEOUT "[0-9][0-9]*" get_shd_process_pid +TEST $CLI volume heal r2 enable +EXPECT "enable" volume_option r2 "cluster.self-heal-daemon" +EXPECT "enable" volgen_volume_option $volfile r2-replicate-0 cluster replicate self-heal-daemon +EXPECT_WITHIN $PROCESS_UP_TIMEOUT "[0-9][0-9]*" get_shd_process_pid +TEST $CLI volume heal r2 disable +EXPECT "disable" volume_option r2 "cluster.self-heal-daemon" +EXPECT "disable" volgen_volume_option $volfile r2-replicate-0 cluster replicate self-heal-daemon +EXPECT_WITHIN $PROCESS_UP_TIMEOUT "[0-9][0-9]*" get_shd_process_pid +# Commands should work on disperse volume. +TEST $CLI volume create ec2 disperse 3 redundancy 1 $H0:$B0/ec2_0 $H0:$B0/ec2_1 $H0:$B0/ec2_2 +TEST $CLI volume start ec2 + +TEST $CLI volume attach-tier ec2 replica 2 $H0:$B0/ec2_hot{1..4} +EXPECT_WITHIN $PROCESS_UP_TIMEOUT "[0-9][0-9]*" get_shd_process_pid +TEST $CLI volume heal ec2 enable +EXPECT "enable" volume_option ec2 "cluster.disperse-self-heal-daemon" +EXPECT "enable" volgen_volume_option $volfile ec2-disperse-0 cluster disperse self-heal-daemon +EXPECT_WITHIN $PROCESS_UP_TIMEOUT "[0-9][0-9]*" get_shd_process_pid +TEST $CLI volume heal ec2 disable +EXPECT "disable" volume_option ec2 "cluster.disperse-self-heal-daemon" +EXPECT "disable" volgen_volume_option $volfile ec2-disperse-0 cluster disperse self-heal-daemon +EXPECT_WITHIN $PROCESS_UP_TIMEOUT "[0-9][0-9]*" get_shd_process_pid + +#Check that shd graph is rewritten correctly on volume stop/start +EXPECT "Y" volgen_volume_exists $volfile ec2-disperse-0 cluster disperse +EXPECT "Y" volgen_volume_exists $volfile r2-replicate-0 cluster replicate +TEST $CLI volume stop r2 +EXPECT "Y" volgen_volume_exists $volfile ec2-disperse-0 cluster disperse +EXPECT "N" volgen_volume_exists $volfile r2-replicate-0 cluster replicate +TEST $CLI volume stop ec2 +# When both the volumes are stopped glustershd volfile is not modified just the +# process is stopped +TEST "[ -z $(get_shd_process_pid) ]" + +TEST $CLI volume start r2 +EXPECT "N" volgen_volume_exists $volfile ec2-disperse-0 cluster disperse +EXPECT "Y" volgen_volume_exists $volfile r2-replicate-0 cluster replicate + +TEST $CLI volume start ec2 + +EXPECT "Y" volgen_volume_exists $volfile ec2-disperse-0 cluster disperse +EXPECT "Y" volgen_volume_exists $volfile ec2-replicate-0 cluster replicate + +TEST $CLI volume detach-tier ec2 force + +EXPECT "Y" volgen_volume_exists $volfile ec2-disperse-0 cluster disperse +EXPECT "N" volgen_volume_exists $volfile ec2-replicate-0 cluster replicate + +TEST $CLI volume set r2 self-heal-daemon on +TEST $CLI volume set r2 cluster.self-heal-daemon off +TEST ! $CLI volume set ec2 self-heal-daemon off +TEST ! $CLI volume set ec2 cluster.self-heal-daemon on +TEST ! $CLI volume set dist self-heal-daemon off +TEST ! $CLI volume set dist cluster.self-heal-daemon on + +TEST $CLI volume set ec2 disperse-self-heal-daemon off +TEST $CLI volume set ec2 cluster.disperse-self-heal-daemon on +TEST ! $CLI volume set r2 disperse-self-heal-daemon on +TEST ! $CLI volume set r2 cluster.disperse-self-heal-daemon off +TEST ! $CLI volume set dist disperse-self-heal-daemon off +TEST ! $CLI volume set dist cluster.disperse-self-heal-daemon on + +cleanup -- cgit