395ad565278e8850052d35eefbbf705495f64797
[IRC.git] / Robust / src / Benchmarks / Recovery / runjava.sh
1 # !/bin/sh
2 BASEDIR=`pwd`
3 ITERATIONS=10
4 WAITTIME=30
5
6 # killClients <fileName> <# of machines>
7 function killclients {
8   i=1;
9   fileName=$1
10   while [ $i -le $2 ]; do
11     echo "killing dc-$i ${fileName}"
12     ssh dc-${i} pkill -u jihoonl -f ${fileName} 
13     i=`expr $i + 1`
14   done
15 }
16
17 # killonemachine <Benchmark file name> <machine_num>
18 function killonemachine {
19   fileName=$1
20   let "machine= $2";
21   echo "killing dc-$machine ${fileName}";
22   ssh dc-${machine} pkill -u jihoonl -f ${fileName}
23 }
24
25 # runmachines <log filename>
26 function runMachines {
27   echo "Running on ${NUM_MACHINE} machines ... "
28   
29   # Start machines
30   echo "Running machines"
31   let "k= $NUM_MACHINE"
32   
33   echo ${BASEDIR}/${BM_DIR} > ~/.tmpdir
34   DIR=`echo ${BASEDIR}\/${BM_DIR}`;
35   echo "DIR = $DIR";
36   
37   # Run machines
38   while [ $k -gt 1 ]; do
39     echo "SSH into dc-${k}"
40     ssh dc-${k} 'cd '$DIR'; ./'$BM_NAME'.bin '>> $1'-'$k &
41     k=`expr $k - 1`
42     sleep 1
43   done
44   echo "Running master machine ... "
45   echo "ssh dc-1 cd $DIR'; ./$BM_NAME.bin master $NUM_MACHINE $BM_ARGS";
46   ssh dc-1 'cd '$DIR'; ./'$BM_NAME'.bin master '$NUM_MACHINE $BM_ARGS >> $1'-1' &
47 }
48
49 ########### Normal execution
50 function runNormalTest {
51 # Run java version
52   j=1;
53   BM_DIR=${BM_NAME}
54   fileName="$BM_NAME.bin";
55   cd ${BM_DIR}
56
57   echo $NUM_MACHINE
58   tt=1;
59   while [ $tt -le $NUM_MACHINE ]; do
60     echo "------------------------------- Normal Test $1 ----------------------------" >> log-$tt
61     tt=`expr $tt + 1`
62   done
63   
64 # run test
65   runMachines log
66   
67   sleep $WAITTIME
68
69   killclients $fileName 8
70   sleep 10
71   cd -
72 }
73
74 ########### Failure case
75 function runFailureTest {
76 # Run java version
77   j=1;
78   BM_DIR=${BM_NAME}
79   fileName="$BM_NAME.bin";
80   cd ${BM_DIR}
81
82   tt=1;
83   while [ $tt -le $NUM_MACHINE ]; do
84     echo "------------------------------- Failure Test $1 ----------------------------" >> log-$tt
85     tt=`expr $tt + 1`
86   done
87
88   # run all machines
89   runMachines log
90   sleep 10 # wait until all machine run
91   # Kill machines
92   for k in 2 4 6 8
93   do
94    echo "------------------------ dc-$k is killed ------------------------" >> log-$k
95    killonemachine $fileName $k
96    sleep 10
97   done
98
99  sleep $WAITTIME # wait the end of execution
100  killclients $fileName 8 # kill alive machines
101  sleep 10
102  cd -
103 }
104
105
106 echo "---------- Starting Benchmarks ----------"
107 exec < bm_args.txt
108 while read line
109 do
110   BM_NAME=`echo $line | cut -f1 -d":"`
111   BM_ARGS=`echo $line | cut -f2 -d":"`
112
113   # Setup for remote machine
114   echo "" > ~/.bmargs
115   echo "BM_NAME='$BM_NAME'" > ~/.bmargs
116   echo "BM_ARGS='$BM_ARGS'" > ~/.bmargs
117
118   fileName=${BM_NAME}.bin
119   echo "fileName='$fileName'"
120
121   # terminate if it doesn't have parameter
122   let "NUM_MACHINE= $1 + 0";
123
124   if [ $NUM_MACHINE -eq 0 ];
125   then
126     echo "Wrong input"
127     let "Num= 8";
128     exit 0
129   fi
130
131   echo "BM_NAME= $BM_NAME"
132   echo "BM_ARGS= $BM_ARGS"
133   echo "NUM_M = $NUM_MACHINE"
134
135
136   echo "=================================== 1 ================================="
137   runNormalTest $NUM_MACHINES 1
138   echo "======================================================================="
139
140   t=2;
141   while [ $t -le $ITERATIONS ]; do
142     echo "==================================== $t ============================="
143 #    runFailureTest $NUM_MACHINES 1
144 #    sleep 10
145     echo "====================================================================="
146     t=`expr $t + 1`
147   done
148
149   killclients $fileName 8
150
151 done
152
153 echo "----------- done ------------"
154