diff options
-rw-r--r-- | tests/00-geo-rep/01-georep-glusterd-tests.t | 203 | ||||
-rw-r--r-- | tests/geo-rep.rc | 19 | ||||
-rw-r--r-- | tests/include.rc | 1 |
3 files changed, 223 insertions, 0 deletions
diff --git a/tests/00-geo-rep/01-georep-glusterd-tests.t b/tests/00-geo-rep/01-georep-glusterd-tests.t new file mode 100644 index 00000000000..95b26a704d0 --- /dev/null +++ b/tests/00-geo-rep/01-georep-glusterd-tests.t @@ -0,0 +1,203 @@ +#!/bin/bash + +. $(dirname $0)/../include.rc +. $(dirname $0)/../volume.rc +. $(dirname $0)/../geo-rep.rc +. $(dirname $0)/../env.rc + +SCRIPT_TIMEOUT=300 + +#Cleanup and start glusterd +cleanup; +TEST glusterd; +TEST pidof glusterd + + +#Variables +GEOREP_CLI="$CLI volume geo-replication" +master=$GMV0 +SH0="127.0.0.1" +slave=${SH0}::${GSV0} +slave1=root@${SH0}::${GSV1} +num_active=2 +num_passive=2 +master_mnt=$M0 +slave_mnt=$M1 + +############################################################ +#SETUP VOLUMES AND GEO-REPLICATION +############################################################ + +#create_and_start_master_volume +TEST $CLI volume create $GMV0 replica 3 $H0:$B0/${GMV0}{1,2,3}; + +#Negative testase: Create geo-rep session, master is not started +TEST ! $GEOREP_CLI $master $slave create push-pem + +TEST $CLI volume start $GMV0 + +#create_and_start_slave_volume +TEST $CLI volume create $GSV0 replica 3 $H0:$B0/${GSV0}{1,2,3}; + +#Negative testcase: Create geo-rep session, slave is not started +TEST ! $GEOREP_CLI $master $slave create push-pem + +TEST $CLI volume start $GSV0 + +#create_and_start_slave1_volume +TEST $CLI volume create $GSV1 replica 3 $H0:$B0/${GSV1}{1,2,3}; +TEST $CLI volume start $GSV1 + +#Create, start and mount meta_volume +TEST $CLI volume create $META_VOL replica 3 $H0:$B0/${META_VOL}{1,2,3}; +TEST $CLI volume start $META_VOL +TEST mkdir -p $META_MNT +TEST glusterfs -s $H0 --volfile-id $META_VOL $META_MNT + +#Mount master +TEST glusterfs -s $H0 --volfile-id $GMV0 $M0 + +#Mount slave +TEST glusterfs -s $H0 --volfile-id $GSV0 $M1 + +############################################################ +#BASIC GEO-REPLICATION GLUSTERD TESTS WITH FANOUT SETUP +############################################################ + +#Negative testcase: Test invalid master +TEST ! $GEOREP_CLI master1 ${SH0}::${GSV0} create push-pem + +#Negatvie testcase: Test invalid slave +TEST ! $GEOREP_CLI $master ${SH0}::slave3 create push-pem + +##------------------- Session 1 Creation Begin-----------------## +#Create geo-rep session +TEST create_georep_session $master $slave + +#Config gluster-command-dir +TEST $GEOREP_CLI $master $slave config gluster-command-dir ${GLUSTER_CMD_DIR} + +#Config gluster-command-dir +TEST $GEOREP_CLI $master $slave config slave-gluster-command-dir ${GLUSTER_CMD_DIR} + +#Enable_metavolume +TEST $GEOREP_CLI $master $slave config use_meta_volume true +##------------------- Session 1 Creation End-----------------## + +##------------------- Session 2 Creation Begin-----------------## +#Create geo-rep session2 +TEST $GEOREP_CLI $master $slave1 create ssh-port 22 no-verify + +#Config gluster-command-dir for session2 +TEST $GEOREP_CLI $master $slave1 config gluster-command-dir ${GLUSTER_CMD_DIR} + +#Config gluster-command-dir for session2 +TEST $GEOREP_CLI $master $slave1 config slave-gluster-command-dir ${GLUSTER_CMD_DIR} + +#Enable_metavolume for session2 +TEST $GEOREP_CLI $master $slave1 config use_meta_volume true +##------------------- Session 2 Creation End-----------------## + +#Wait for common secret pem file to be created +EXPECT_WITHIN $GEO_REP_TIMEOUT 0 check_common_secret_file + +#Verify the keys are distributed +EXPECT_WITHIN $GEO_REP_TIMEOUT 0 check_keys_distributed + +#Start_georep +TEST $GEOREP_CLI $master $slave start + +#Start_georep force +TEST $GEOREP_CLI $master $slave1 start force + +#Negative testcase: Create the same session after start, fails +#With root@ prefix +TEST ! $GEOREP_CLI $master $slave1 create push-pem +#Without root@ prefix +TEST ! $GEOREP_CLI $master ${SH0}::${GSV1} create push-pem +TEST $GEOREP_CLI $master $slave1 create push-pem force + +##------------------- Fanout status testcases Begin --------------## +EXPECT_WITHIN $GEO_REP_TIMEOUT 1 check_status_num_rows "Active" +EXPECT_WITHIN $GEO_REP_TIMEOUT 2 check_status_num_rows "Passive" + +EXPECT_WITHIN $GEO_REP_TIMEOUT 2 check_fanout_status_num_rows "Active" +EXPECT_WITHIN $GEO_REP_TIMEOUT 4 check_fanout_status_num_rows "Passive" + +EXPECT_WITHIN $GEO_REP_TIMEOUT 2 check_all_status_num_rows "Active" +EXPECT_WITHIN $GEO_REP_TIMEOUT 4 check_all_status_num_rows "Passive" +##------------------- Fanout status testcases End --------------## + +##------Checkpoint Testcase Begin---------------## +#Write I/O +echo "test data" > $M0/file1 +TEST $GEOREP_CLI $master $slave config checkpoint now +EXPECT_WITHIN $GEO_REP_TIMEOUT 0 verify_checkpoint_met $master $slave +touch $M0 +EXPECT_WITHIN $GEO_REP_TIMEOUT 1 verify_checkpoint_met $master $slave +##------Checkpoint Testcase End---------------## + +##------------------ Geo-rep config testcases Begin--------------------## +TEST $GEOREP_CLI $master $slave config +TEST ! $GEOREP_CLI $master $slave config arsync-options '-W' +TEST $GEOREP_CLI $master $slave config rsync-options '-W' +TEST $GEOREP_CLI $master $slave config rsync-options +TEST $GEOREP_CLI $master $slave config \!rsync-options +TEST $GEOREP_CLI $master $slave config sync-xattrs false +##------------------ Geo-rep config testcases End --------------------## + +##---------------- Pause/Resume testcase Begin-------------## +#Negative testcase: Resume geo-replication session when not paused +TEST ! $GEOREP_CLI $master $slave1 resume +TEST $GEOREP_CLI $master $slave1 resume force + +#Pause geo-replication session with root@ +TEST $GEOREP_CLI $master $slave1 pause force + +#Resume geo-replication session with root@ +TEST $GEOREP_CLI $master $slave1 resume force + +#Stop Geo-rep +TEST $GEOREP_CLI $master $slave1 stop force + +#Negative testcase: Resume geo-replication session after geo-rep stop +TEST ! $GEOREP_CLI $master $slave1 resume +##---------------- Pause/Resume testcase End-------------## + +##-----------------glusterd slave key/value upgrade testcase Begin ---------## +#Upgrade test of slave key stored in glusterd info file +src=$(grep slave2 /var/lib/glusterd/vols/$master/info) +#Remove slave uuuid (last part after divided by : ) +dst=${src%:*} + +#Update glusterd info file with old slave format +sed -i "s|$src|$dst|g" /var/lib/glusterd/vols/$master/info +TEST ! grep $src /var/lib/glusterd/vols/$master/info + +#Restart glusterd to update in-memory volinfo +TEST pkill glusterd +TEST glusterd; +TEST pidof glusterd + +#Start geo-rep and validate slave format is updated +TEST $GEOREP_CLI $master $slave1 start force +TEST grep $src /var/lib/glusterd/vols/$master/info +##-----------------glusted slave key/value upgrade testcase End ---------## + +#Negative testcase: Delete Geo-rep 2 fails as geo-rep is running +TEST ! $GEOREP_CLI $master $slave1 delete + +#Stop and Delete Geo-rep 2 +TEST $GEOREP_CLI $master $slave1 stop force +TEST $GEOREP_CLI $master $slave1 delete reset-sync-time + +#Stop and Delete Geo-rep 1 +TEST $GEOREP_CLI $master $slave stop +TEST $GEOREP_CLI $master $slave delete + +#Cleanup authorized keys +sed -i '/^command=.*SSH_ORIGINAL_COMMAND#.*/d' ~/.ssh/authorized_keys +sed -i '/^command=.*gsyncd.*/d' ~/.ssh/authorized_keys + +cleanup; +#G_TESTDEF_TEST_STATUS_NETBSD7=BAD_TEST,BUG=000000 diff --git a/tests/geo-rep.rc b/tests/geo-rep.rc index e4f014eb6f8..83a33939dd0 100644 --- a/tests/geo-rep.rc +++ b/tests/geo-rep.rc @@ -6,6 +6,25 @@ function check_status_num_rows() $GEOREP_CLI $master $slave status | grep -F "$search_key" | wc -l } +function check_fanout_status_num_rows() +{ + local search_key=$1 + $GEOREP_CLI $master status | grep -F "$search_key" | wc -l +} + +function check_all_status_num_rows() +{ + local search_key=$1 + $GEOREP_CLI status | grep -F "$search_key" | wc -l +} + +function verify_checkpoint_met() +{ + local master=$1 + local slave=$2 + $GEOREP_CLI $master $slave status detail| grep -F "Yes" | wc -l +} + function check_keys_distributed() { local search_key=$(cat /var/lib/glusterd/geo-replication/master_slave_common_secret.pem.pub) diff --git a/tests/include.rc b/tests/include.rc index bf90e1945b3..af78172fee2 100644 --- a/tests/include.rc +++ b/tests/include.rc @@ -11,6 +11,7 @@ V0=${V0:=patchy}; # volume name to use in tests V1=${V1:=patchy1}; # volume name to use in tests GMV0=${GMV0:=master}; # master volume name to use in geo-rep tests GSV0=${GSV0:=slave}; # slave volume name to use in geo-rep tests +GSV1=${GSV1:=slave1}; # slave volume name to use in geo-rep tests B0=${B0:=/d/backends}; # top level of brick directories WORKDIRS="$B0 $M0 $M1 $M2 $M3 $N0 $N1" |