summaryrefslogtreecommitdiffstats
path: root/tests/cluster.rc
blob: 49bd3caedec301c7970f63d0b9b66fb6a84cb36a (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
#!/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 $2;
    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 -p ${!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";
        sopt="management.glusterd-sockfile=${!b}/glusterd/gd.sock"
        #Get the logdir
        logdir=`gluster --print-logdir`
        #Fetch the testcases name and prefix the glusterd log with it
        logfile=`echo ${0##*/}`_glusterd$i.log
        lopt="--log-file=$logdir/$logfile"
        if [ "$2" == "-LDEBUG" ]; then
            eval "glusterd_$i='glusterd -LDEBUG --xlator-option $wopt --xlator-option $bopt --xlator-option $sopt $lopt $popt'";
            eval "glusterd$i='glusterd -LDEBUG --xlator-option $wopt --xlator-option $bopt --xlator-option $sopt $lopt $popt'";
        else
            eval "glusterd_$i='glusterd --xlator-option $wopt --xlator-option $bopt --xlator-option $sopt $lopt $popt'";
            eval "glusterd$i='glusterd --xlator-option $wopt --xlator-option $bopt --xlator-option $sopt $lopt $popt'";
        fi
    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";
	case $OSTYPE in
	NetBSD)
		ifconfig lo0 alias ${CLUSTER_PFX}.$i 2>/dev/null
		;;
	*)
		;;
	esac
    done
}


function define_clis() {
    local count=$1;
    local h;

    for i in `seq 1 $count`; do
	b="B$i";
	eval "CLI_$i='$CLI --glusterd-sock=${!b}/glusterd/gd.sock'";
	eval "CLI$i='$CLI --glusterd-sock=${!b}/glusterd/gd.sock'";
    done
}

function peer_count() {
    $CLI_1 peer status | grep 'Peer in Cluster (Connected)' | wc -l
}