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