diff options
author | Anand Avati <avati@redhat.com> | 2013-02-21 18:49:43 -0800 |
---|---|---|
committer | Vijay Bellur <vbellur@redhat.com> | 2013-02-26 09:07:13 -0800 |
commit | 89ea4583161382de7e56007b3dee3359e2a41b98 (patch) | |
tree | 1fa75c53e0fe24eeb1b55847031def3a6f03b468 /tests/cluster.rc | |
parent | 5e6dfce0b0d55d96b5bdad6a693fdb2826c20b92 (diff) |
tests/cluster.rc: support for virtual multi-server glusterd tests
Since http://review.gluster.org/4556 glusterd is capable of running
many instances of itself on a single system. This patch exploits
that feature and enhances the regression test framework to expose
handy primitives so that test cases may be written to test glusterd
in a cluster.
Usage:
1. Include "$(dirname)/../cluster.rc" to get access to the extensions
2. Call launch_cluster $N where $N is the count of virtual servers
Calling launch_cluster, starts $N glusterds which bind to $N different
IPs and dynamically defines these primitives:
- Variables $H1 .. $Hn assigned to hostnames of each "server".
- Variables $CLI_1 .. $CLI_n assigned as commands to run CLI commands
on the corresponding N'th server.
- Variables $B1 .. $Bn assigned to the backend directories on each
"server".
- Function kill_glusterd, which accepts a parameter - index number of
glusterd to be killed.
- Variables $glusterd_1 .. $glusterd_n assigned to the command lines
to restart the corresponding glusterd, if it was previously killed.
The current set of primitives and functions were implemented with the goal
of satisfying ./tests/bugs/bug-913555.t. The API will be made richer as
we add more cluster test cases
Change-Id: Ieb13ed9f4a72ac0321db0ca0844c7b294145bb32
BUG: 913555
Signed-off-by: Anand Avati <avati@redhat.com>
Reviewed-on: http://review.gluster.org/4566
Tested-by: Gluster Build System <jenkins@build.gluster.com>
Reviewed-by: Krishnan Parthasarathi <kparthas@redhat.com>
Reviewed-by: Jeff Darcy <jdarcy@redhat.com>
Diffstat (limited to 'tests/cluster.rc')
-rwxr-xr-x | tests/cluster.rc | 106 |
1 files changed, 106 insertions, 0 deletions
diff --git a/tests/cluster.rc b/tests/cluster.rc new file mode 100755 index 00000000000..1c06bca4766 --- /dev/null +++ b/tests/cluster.rc @@ -0,0 +1,106 @@ +#!/bin/bash + +CLUSTER_PFX="127.1.1"; # ".x" for each glusterd +CLUSTER_COUNT=1; # Just initial definition + +function launch_cluster() { + local count=$1; + + CLUSTER_COUNT=$count; + + define_backends $count; + define_hosts $count; + define_glusterds $count; + define_clis $count; + + start_glusterds; +} + + +function define_backends() { + local b; + + for i in `seq 1 $count`; do + eval "B$i=$B0/$i"; + done + + for i in `seq 1 $count`; do + b="B$i"; + mkdir -pv ${!b}/glusterd; + done +} + + +function define_glusterds() { + local count=$1; + local h; + local b; + local wopt; + local bopt; + local popt; + + for i in `seq 1 $count`; do + b="B$i"; + h="H$i"; + wopt="management.working-directory=${!b}/glusterd"; + bopt="management.transport.socket.bind-address=${!h}"; + popt="--pid-file=${!b}/glusterd.pid"; + eval "glusterd_$i='glusterd --xlator-option $wopt --xlator-option $bopt $popt'"; + eval "glusterd$i='glusterd --xlator-option $wopt --xlator-option $bopt $popt'"; + done +} + + +function start_glusterds() { + local g; + + for i in `seq 1 $CLUSTER_COUNT`; do + g="glusterd_$i"; + ${!g}; + done +} + + +function kill_glusterd() { + local index=$1; + local b; + local pidfile; + + b="B$index"; + pidfile="${!b}/glusterd.pid"; + + kill `cat $pidfile`; +} + + +function kill_node() { + local index=$1; + local h; + + h="H$index"; + + kill -9 $(ps -ef | grep gluster | grep ${!h} | awk '{print $2}'); +} + + +function define_hosts() { + local count=$1; + + for i in `seq 1 $count`; do + eval "H_$i=${CLUSTER_PFX}.$i" + eval "H$i=${CLUSTER_PFX}.$i"; + done +} + + +function define_clis() { + local count=$1; + local h; + + for i in `seq 1 $count`; do + h="H$i"; + eval "CLI_$i='$CLI --remote-host=${!h}'"; + eval "CLI$i='$CLI --remote-host=${!h}'"; + done +} + |