Statement fixed as history implementation was affecting.
[csql.git] / test / execTests.ksh
bloba5838b1d67c2b3e4db94396b91e29e784a8f588b
1 #!/bin/sh
3 ################### Settings ########################################
4 #Timeout value for the hanging scripts
5 HANG_TIMEOUT=150
7 ################### TIMEOUT HANDLER #################################
8 timeout_handler() {
9 if [ $CMD_PID != "" ]
10 then
11 HANG_FLAG=Yes
12 echo "HANG_FLAG is set here"
13 kill -9 $CMD_PID 2>/dev/null
17 ##################### Test Executor main starts here ##################
18 echo MY pid is $$
19 #TEST_RUN_DIR should be set before running this
20 if [ ! "$TEST_RUN_ROOT" ]
21 then
22 echo "TEST_RUN_ROOT should be set before running the tests"
23 exit 1
25 if [ ! "$CSQL_INSTALL_ROOT" ]
26 then
27 echo "CSQL_INSTALL_ROOT should be set before running the tests"
28 exit 1
31 if [ ! "$CSQL_CONFIG_FILE" ]
32 then
33 echo "setupenv.ksh should be run before running the tests"
34 exit 1
36 DBFILE=`grep DATABASE_FILE $CSQL_CONFIG_FILE| awk -F= '{ print $2}'`
37 CACHECONFFILE=`grep TABLE_CONFIG_FILE $CSQL_CONFIG_FILE| awk -F= '{ print $2}'`
38 rm $DBFILE
39 rm $CACHECONFFILE
40 echo $DBFILE
41 ROOT_DIR=`pwd`
42 mkdir -p $TEST_RUN_ROOT
43 SERVOUT=$TEST_RUN_ROOT/serv.out
44 touch $SERVOUT
46 export CSQL_CONFIG_FILE=csql.conf
47 $CSQL_INSTALL_ROOT/bin/csqlserver >${SERVOUT} &
48 SERVER_PID=$!
49 echo "Starting Server"
50 sleep 5
51 while read MODULE
53 echo $MODULE | grep "#" >/dev/null
54 if [ $? -eq 0 ]
55 then
56 continue
58 echo "MODULE READ is $MODULE"
60 if [ "$MODULE" = "system/lock" -o "$MODULE" = "system/Allocator" ]
61 then
62 echo "Restarting the server for lock module"
63 kill -9 ${SERVER_PID}
64 ipcrm -M 2222 -M 3333
65 echo "csqlserver killed PID=${SERVER_PID}" >>$TEST_LOG
66 rm $DBFILE
67 $CSQL_INSTALL_ROOT/bin/csqlserver >${SERVOUT} &
68 SERVER_PID=$!
69 echo "csqlserver restarted with PID=${SERVER_PID}" >>$TEST_LOG
70 echo "Restarting Server"
71 sleep 5
74 TEST_SCRIPT_DIR=${ROOT_DIR}/${MODULE}
75 TEST_RUN_DIR=${TEST_RUN_ROOT}/${MODULE}
76 if [ -s "$TEST_RUN_DIR" ]
77 then
78 echo "TEST_RUN_ROOT directory is not empty. Clean and try again."
79 exit 1
81 mkdir -p $TEST_RUN_DIR
83 # TODO::check whether server is running
85 TEST_LOG=$TEST_RUN_DIR/testlog
87 if [ -s "$TEST_LOG" ]
88 then
89 echo "TEST_RUN_DIR has files in it. Remove before running the tests"
90 exit 1
93 TEST_EXEC_DIR=$TEST_RUN_DIR/tests
94 mkdir $TEST_EXEC_DIR
97 echo "Test Executor log file" >$TEST_LOG
98 echo "----------------------" >>$TEST_LOG
100 TestList=`ls ${TEST_SCRIPT_DIR}/test*`
101 for test in $TestList
103 echo "Running $test"
104 echo "Running $test" >>$TEST_LOG
105 echo "Test started at : `date` "
106 echo "Test started at : `date` " >>$TEST_LOG
108 expPresent="no"
109 EXP_FILE=exp.`basename ${test}`
110 #echo "EXP_FILE is $EXP_FILE"
111 if [ -s "${TEST_SCRIPT_DIR}/${EXP_FILE}" ]
112 then
113 expPresent="yes"
116 HANG_FLAG=No
117 trap timeout_handler USR1
118 sleep ${HANG_TIMEOUT} && kill -s USR1 $$ &
119 SLEEP_PID=$!
121 if [ "$expPresent" = "yes" ]
122 then
123 cp ${TEST_SCRIPT_DIR}/${EXP_FILE} ${TEST_EXEC_DIR}
124 ${test} > ${TEST_EXEC_DIR}/cur.${EXP_FILE} 2>/dev/null &
125 else
126 ${test} >> ${TEST_LOG} 2>/dev/null &
128 CMD_PID=$!
129 wait ${CMD_PID} 2>/dev/null
130 ret=$?
131 echo "Test Ended at : `date` "
132 echo "Test Ended at : `date` " >>$TEST_LOG
133 unset CMD_PID
134 trap "" USR1
135 kill -9 ${SLEEP_PID} 2>/dev/null
137 if [ "$HANG_FLAG" = "Yes" ]
138 then
139 echo "Test Hung. so it is killed." >>$TEST_LOG
140 echo "FAILED:Test $test failed" >>$TEST_LOG
141 #TODO::Reinitalize the database, as it may be in corrupted state.
142 CURTIME=`date +%s`
143 mv ${SERVOUT} ${SERVOUT}.${SERVER_PID}.${CURTIME}
144 kill -9 ${SERVER_PID}
145 ipcrm -M 2222 -M 3333
146 echo "csqlserver killed PID=${SERVER_PID}" >>$TEST_LOG
147 $CSQL_INSTALL_ROOT/bin/csqlserver >${SERVOUT} &
148 SERVER_PID=$!
149 echo "csqlserver restarted with PID=${SERVER_PID}" >>$TEST_LOG
150 echo "Restarting Server"
151 sleep 5
152 continue
155 HANG_FLAG=No
157 if [ $ret -eq 0 ]
158 then
159 if [ "$expPresent" = "yes" ]
160 then
161 #compare exp and current output
162 diff ${TEST_SCRIPT_DIR}/${EXP_FILE} ${TEST_EXEC_DIR}/cur.${EXP_FILE} > ${TEST_EXEC_DIR}/diff.${EXP_FILE}
163 if [ $? -eq 0 ]
164 then
166 echo "Exp and current output matched."
167 echo "Test $test passed"
168 echo "Exp and current output matched." >>$TEST_LOG
169 echo "PASSED:Test $test passed" >>$TEST_LOG
170 rm ${TEST_EXEC_DIR}/cur.${EXP_FILE}
171 rm ${TEST_EXEC_DIR}/diff.${EXP_FILE}
172 rm ${TEST_EXEC_DIR}/${EXP_FILE}
173 else
174 echo "Exp and current output not matched."
175 echo "Test $test failed"
176 echo "Exp and current output not matched." >>${TEST_LOG}
177 echo "FAILED:Test $test failed" >>$TEST_LOG
178 #TODO::Reinitalize the database, as it may be in corrupted state.
179 CURTIME=`date +%s`
180 mv ${SERVOUT} ${SERVOUT}.${SERVER_PID}.${CURTIME}
181 echo "Refer ${SERVOUT}.${SERVER_PID}.${CURTIME} file for server log" >>$TEST_LOG
182 kill -9 ${SERVER_PID}
183 ipcrm -M 2222 -M 3333
184 echo "csqlserver killed PID=${SERVER_PID}" >>${TEST_LOG}
185 rm $DBFILE
186 $CSQL_INSTALL_ROOT/bin/csqlserver >${SERVOUT} &
187 SERVER_PID=$!
188 echo "csqlserver restarted with PID=${SERVER_PID}" >>${TEST_LOG}
189 echo "Restarting Server"
190 sleep 5
192 else
193 echo "Returned 0."
194 echo "Test $test passed"
195 echo "Returned 0." >>$TEST_LOG
196 echo "PASSED:Test $test passed" >>$TEST_LOG
199 else
200 echo "Returned $ret "
201 echo "Test $test failed"
202 echo "Returned $ret " >>$TEST_LOG
203 echo "FAILED:Test $test failed" >>$TEST_LOG
204 #TODO::Reinitalize the database, as it may be in corrupted state.
205 CURTIME=`date +%s`
206 mv ${SERVOUT} ${SERVOUT}.${SERVER_PID}.${CURTIME}
207 echo "Refer ${SERVOUT}.${SERVER_PID}.${CURTIME} file for server log" >>$TEST_LOG
208 kill -9 ${SERVER_PID}
209 ipcrm -M 2222 -M 3333
210 echo "csqlserver killed PID=${SERVER_PID}" >>$TEST_LOG
211 rm $DBFILE
212 $CSQL_INSTALL_ROOT/bin/csqlserver >${SERVOUT} 2>${SERVOUT} &
213 SERVER_PID=$!
214 echo "csqlserver restarted with PID=${SERVER_PID}" >>${TEST_LOG}
215 echo "Restarting Server"
216 sleep 5
219 done
220 done < TestModules
221 kill `ps -e | grep csqlsqlserver | gawk -F" " '{ print $1 }'`
222 kill -9 ${SERVER_PID}
223 ipcrm -M 2222 -M 3333
224 echo "csqlserver killed PID=${SERVER_PID}" >>${TEST_LOG}
225 rm $DBFILE
227 exit 0