changing ksh to sh as ksh is not installed by default in linux installation
[csql.git] / test / execTests.ksh
blob02809ac9ab41507d90ec3617f0dd8666aa8498aa
1 #!/bin/sh
3 ################### Settings ########################################
4 #Timeout value for the hanging scripts
5 HANG_TIMEOUT=60
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 $CMD_PID 2>/dev/null
17 ##################### Test Executor main starts here ##################
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
30 ROOT_DIR=`pwd`
31 mkdir -p $TEST_RUN_ROOT
32 SERVOUT=$TEST_RUN_ROOT/serv.out
33 touch $SERVOUT
34 $CSQL_INSTALL_ROOT/bin/csqlserver >$SERVOUT 2>$SERVOUT &
35 SERVER_PID=$!
36 echo "Starting Server"
37 sleep 5
38 while read MODULE
40 echo $MODULE | grep "#" >/dev/null
41 if [ $? -eq 0 ]
42 then
43 continue
45 #echo "MODULE READ is $MODULE"
47 TEST_SCRIPT_DIR=${ROOT_DIR}/${MODULE}
48 TEST_RUN_DIR=${TEST_RUN_ROOT}/${MODULE}
49 if [ -s "$TEST_RUN_DIR" ]
50 then
51 echo "TEST_RUN_ROOT directory is not empty. Clean and try again."
52 exit 1
54 mkdir -p $TEST_RUN_DIR
56 # TODO::check whether server is running
58 TEST_LOG=$TEST_RUN_DIR/testlog
60 if [ -s "$TEST_LOG" ]
61 then
62 echo "TEST_RUN_DIR has files in it. Remove before running the tests"
63 exit 1
66 TEST_EXEC_DIR=$TEST_RUN_DIR/tests
67 mkdir $TEST_EXEC_DIR
70 echo "Test Executor log file" >$TEST_LOG
71 echo "----------------------" >>$TEST_LOG
73 TestList=`ls ${TEST_SCRIPT_DIR}/test*`
74 for test in $TestList
76 echo "Running $test"
77 echo "Running $test" >>$TEST_LOG
78 echo "Test started at : `date` "
79 echo "Test started at : `date` " >>$TEST_LOG
81 expPresent="no"
82 EXP_FILE=exp.`basename ${test}`
83 #echo "EXP_FILE is $EXP_FILE"
84 if [ -s "${TEST_SCRIPT_DIR}/${EXP_FILE}" ]
85 then
86 expPresent="yes"
89 HANG_FLAG=No
90 trap timeout_handler USR1
91 sleep ${HANG_TIMEOUT} && kill -s USR1 $$ &
92 SLEEP_PID=$!
94 if [ "$expPresent" = "yes" ]
95 then
96 cp ${TEST_SCRIPT_DIR}/${EXP_FILE} ${TEST_EXEC_DIR}
97 ${test} > ${TEST_EXEC_DIR}/cur.${EXP_FILE} 2>&1 &
98 else
99 ${test} >> ${TEST_LOG} 2>&1 &
101 CMD_PID=$!
102 wait ${CMD_PID} 2>/dev/null
103 ret=$?
104 echo "Test Ended at : `date` "
105 echo "Test Ended at : `date` " >>$TEST_LOG
106 unset CMD_PID
107 trap "" USR1
108 kill ${SLEEP_PID} 2>/dev/null
110 if [ "$HANG_FLAG" = "Yes" ]
111 then
112 echo "Test Hung. so it is killed." >>$TEST_LOG
113 echo "FAILED:Test $test failed" >>$TEST_LOG
114 #TODO::Reinitalize the database, as it may be in corrupted state.
115 CURTIME=`date +%s`
116 mv ${SERVOUT} ${SERVOUT}.${SERVER_PID}.${CURTIME}
117 kill -9 ${SERVER_PID}
118 echo "csqlserver killed PID=${SERVER_PID}" >>$TEST_LOG
119 $CSQL_INSTALL_ROOT/bin/csqlserver >$SERVOUT 2>$SERVOUT &
120 SERVER_PID=$!
121 echo "csqlserver restarted with PID=${SERVER_PID}" >>$TEST_LOG
122 echo "Restarting Server"
123 sleep 5
124 continue
127 HANG_FLAG=No
129 if [ $ret -eq 0 ]
130 then
131 if [ "$expPresent" = "yes" ]
132 then
133 #compare exp and current output
134 diff ${TEST_SCRIPT_DIR}/${EXP_FILE} ${TEST_EXEC_DIR}/cur.${EXP_FILE} > ${TEST_EXEC_DIR}/diff.${EXP_FILE}
135 if [ $? -eq 0 ]
136 then
138 echo "Exp and current output matched."
139 echo "Test $test passed"
140 echo "Exp and current output matched." >>$TEST_LOG
141 echo "PASSED:Test $test passed" >>$TEST_LOG
142 rm ${TEST_EXEC_DIR}/cur.${EXP_FILE}
143 rm ${TEST_EXEC_DIR}/diff.${EXP_FILE}
144 rm ${TEST_EXEC_DIR}/${EXP_FILE}
145 else
146 echo "Exp and current output not matched."
147 echo "Test $test failed"
148 echo "Exp and current output not matched." >>$TEST_LOG
149 echo "FAILED:Test $test failed" >>$TEST_LOG
150 #TODO::Reinitalize the database, as it may be in corrupted state.
151 CURTIME=`date +%s`
152 mv ${SERVOUT} ${SERVOUT}.${SERVER_PID}.${CURTIME}
153 echo "Refer ${SERVOUT}.${SERVER_PID}.${CURTIME} file for server log" >>$TEST_LOG
154 kill -9 ${SERVER_PID}
155 echo "csqlserver killed PID=${SERVER_PID}" >>$TEST_LOG
156 $CSQL_INSTALL_ROOT/bin/csqlserver >$SERVOUT 2>$SERVOUT &
157 SERVER_PID=$!
158 echo "csqlserver restarted with PID=${SERVER_PID}" >>$TEST_LOG
159 echo "Restarting Server"
160 sleep 5
162 else
163 echo "Returned 0."
164 echo "Test $test passed"
165 echo "Returned 0." >>$TEST_LOG
166 echo "PASSED:Test $test passed" >>$TEST_LOG
169 else
170 echo "Returned $ret "
171 echo "Test $test failed"
172 echo "Returned $ret " >>$TEST_LOG
173 echo "FAILED:Test $test failed" >>$TEST_LOG
174 #TODO::Reinitalize the database, as it may be in corrupted state.
175 CURTIME=`date +%s`
176 mv ${SERVOUT} ${SERVOUT}.${SERVER_PID}.${CURTIME}
177 echo "Refer ${SERVOUT}.${SERVER_PID}.${CURTIME} file for server log" >>$TEST_LOG
178 kill -9 ${SERVER_PID}
179 echo "csqlserver killed PID=${SERVER_PID}" >>$TEST_LOG
180 $CSQL_INSTALL_ROOT/bin/csqlserver >$SERVOUT 2>$SERVOUT &
181 SERVER_PID=$!
182 echo "csqlserver restarted with PID=${SERVER_PID}" >>$TEST_LOG
183 echo "Restarting Server"
184 sleep 5
187 done
188 done < TestModules
190 kill -9 ${SERVER_PID}
191 echo "csqlserver killed PID=${SERVER_PID}" >>$TEST_LOG
193 exit 0