memory created in line 10 was not freed.
[csql.git] / test / execTests.ksh
blobd005bea271d763a0796a77bb47b5e9edc93a2c7c
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} &
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 if [ "$MODULE" = "system/lock" ]
48 then
49 echo "Restarting the server for lock module"
50 kill ${SERVER_PID}
51 echo "csqlserver killed PID=${SERVER_PID}" >>$TEST_LOG
52 $CSQL_INSTALL_ROOT/bin/csqlserver >${SERVOUT} &
53 SERVER_PID=$!
54 echo "csqlserver restarted with PID=${SERVER_PID}" >>$TEST_LOG
55 echo "Restarting Server"
56 sleep 5
58 TEST_SCRIPT_DIR=${ROOT_DIR}/${MODULE}
59 TEST_RUN_DIR=${TEST_RUN_ROOT}/${MODULE}
60 if [ -s "$TEST_RUN_DIR" ]
61 then
62 echo "TEST_RUN_ROOT directory is not empty. Clean and try again."
63 exit 1
65 mkdir -p $TEST_RUN_DIR
67 # TODO::check whether server is running
69 TEST_LOG=$TEST_RUN_DIR/testlog
71 if [ -s "$TEST_LOG" ]
72 then
73 echo "TEST_RUN_DIR has files in it. Remove before running the tests"
74 exit 1
77 TEST_EXEC_DIR=$TEST_RUN_DIR/tests
78 mkdir $TEST_EXEC_DIR
81 echo "Test Executor log file" >$TEST_LOG
82 echo "----------------------" >>$TEST_LOG
84 TestList=`ls ${TEST_SCRIPT_DIR}/test*`
85 for test in $TestList
87 echo "Running $test"
88 echo "Running $test" >>$TEST_LOG
89 echo "Test started at : `date` "
90 echo "Test started at : `date` " >>$TEST_LOG
92 expPresent="no"
93 EXP_FILE=exp.`basename ${test}`
94 #echo "EXP_FILE is $EXP_FILE"
95 if [ -s "${TEST_SCRIPT_DIR}/${EXP_FILE}" ]
96 then
97 expPresent="yes"
100 HANG_FLAG=No
101 trap timeout_handler USR1
102 sleep ${HANG_TIMEOUT} && kill -s USR1 $$ &
103 SLEEP_PID=$!
105 if [ "$expPresent" = "yes" ]
106 then
107 cp ${TEST_SCRIPT_DIR}/${EXP_FILE} ${TEST_EXEC_DIR}
108 ${test} > ${TEST_EXEC_DIR}/cur.${EXP_FILE} 2>&1 &
109 else
110 ${test} >> ${TEST_LOG} 2>&1 &
112 CMD_PID=$!
113 wait ${CMD_PID} 2>/dev/null
114 ret=$?
115 echo "Test Ended at : `date` "
116 echo "Test Ended at : `date` " >>$TEST_LOG
117 unset CMD_PID
118 trap "" USR1
119 kill ${SLEEP_PID} 2>/dev/null
121 if [ "$HANG_FLAG" = "Yes" ]
122 then
123 echo "Test Hung. so it is killed." >>$TEST_LOG
124 echo "FAILED:Test $test failed" >>$TEST_LOG
125 #TODO::Reinitalize the database, as it may be in corrupted state.
126 CURTIME=`date +%s`
127 mv ${SERVOUT} ${SERVOUT}.${SERVER_PID}.${CURTIME}
128 kill ${SERVER_PID}
129 echo "csqlserver killed PID=${SERVER_PID}" >>$TEST_LOG
130 $CSQL_INSTALL_ROOT/bin/csqlserver >${SERVOUT} &
131 SERVER_PID=$!
132 echo "csqlserver restarted with PID=${SERVER_PID}" >>$TEST_LOG
133 echo "Restarting Server"
134 sleep 5
135 continue
138 HANG_FLAG=No
140 if [ $ret -eq 0 ]
141 then
142 if [ "$expPresent" = "yes" ]
143 then
144 #compare exp and current output
145 diff ${TEST_SCRIPT_DIR}/${EXP_FILE} ${TEST_EXEC_DIR}/cur.${EXP_FILE} > ${TEST_EXEC_DIR}/diff.${EXP_FILE}
146 if [ $? -eq 0 ]
147 then
149 echo "Exp and current output matched."
150 echo "Test $test passed"
151 echo "Exp and current output matched." >>$TEST_LOG
152 echo "PASSED:Test $test passed" >>$TEST_LOG
153 rm ${TEST_EXEC_DIR}/cur.${EXP_FILE}
154 rm ${TEST_EXEC_DIR}/diff.${EXP_FILE}
155 rm ${TEST_EXEC_DIR}/${EXP_FILE}
156 else
157 echo "Exp and current output not matched."
158 echo "Test $test failed"
159 echo "Exp and current output not matched." >>${TEST_LOG}
160 echo "FAILED:Test $test failed" >>$TEST_LOG
161 #TODO::Reinitalize the database, as it may be in corrupted state.
162 CURTIME=`date +%s`
163 mv ${SERVOUT} ${SERVOUT}.${SERVER_PID}.${CURTIME}
164 echo "Refer ${SERVOUT}.${SERVER_PID}.${CURTIME} file for server log" >>$TEST_LOG
165 kill ${SERVER_PID}
166 echo "csqlserver killed PID=${SERVER_PID}" >>${TEST_LOG}
167 $CSQL_INSTALL_ROOT/bin/csqlserver >${SERVOUT} &
168 SERVER_PID=$!
169 echo "csqlserver restarted with PID=${SERVER_PID}" >>${TEST_LOG}
170 echo "Restarting Server"
171 sleep 5
173 else
174 echo "Returned 0."
175 echo "Test $test passed"
176 echo "Returned 0." >>$TEST_LOG
177 echo "PASSED:Test $test passed" >>$TEST_LOG
180 else
181 echo "Returned $ret "
182 echo "Test $test failed"
183 echo "Returned $ret " >>$TEST_LOG
184 echo "FAILED:Test $test failed" >>$TEST_LOG
185 #TODO::Reinitalize the database, as it may be in corrupted state.
186 CURTIME=`date +%s`
187 mv ${SERVOUT} ${SERVOUT}.${SERVER_PID}.${CURTIME}
188 echo "Refer ${SERVOUT}.${SERVER_PID}.${CURTIME} file for server log" >>$TEST_LOG
189 kill ${SERVER_PID}
190 echo "csqlserver killed PID=${SERVER_PID}" >>$TEST_LOG
191 $CSQL_INSTALL_ROOT/bin/csqlserver >${SERVOUT} 2>${SERVOUT} &
192 SERVER_PID=$!
193 echo "csqlserver restarted with PID=${SERVER_PID}" >>${TEST_LOG}
194 echo "Restarting Server"
195 sleep 5
198 done
199 done < TestModules
201 kill ${SERVER_PID}
202 echo "csqlserver killed PID=${SERVER_PID}" >>${TEST_LOG}
204 exit 0