Sync with 5.4.0
[deliverable/titan.core.git] / regression_test / logger / emergency_logging / EmergencyLogTest.sh
1 #!/bin/bash
2 ###############################################################################
3 # Copyright (c) 2000-2015 Ericsson Telecom AB
4 # All rights reserved. This program and the accompanying materials
5 # are made available under the terms of the Eclipse Public License v1.0
6 # which accompanies this distribution, and is available at
7 # http://www.eclipse.org/legal/epl-v10.html
8 ###############################################################################
9
10 MYEXE="EmergencyLogTest"
11 LOGDIR="logs"
12 SUCCESS=0
13 LIST_OF_FAILED="failed_testcases.txt"
14 DEBUG="true"
15
16 #####################################
17 #init:
18 # sets TTCN3_DIR, if is needed
19 # makes executable
20 #####################################
21 init() {
22 if [ "$TTCN3_DIR" == "" ]
23 then
24 echo "TTCN3_DIR should be set"
25 exit
26 fi
27
28 make
29 chmod +x ./$MYEXE
30 success=0
31 failed=0
32 echo "Failed tests:" > ${LIST_OF_FAILED}
33 rm -f logs/*
34 #TODO: set cut off length according to TimeStampFormat
35 }
36
37 #####################################
38 # debug
39 # $1 : log file
40 #####################################
41 debug(){
42 if [ "$DEBUG" == "true" ] ; then
43 echo "$1"
44 fi
45 }
46
47 #####################################
48 # modify_logfile
49 # $1 : log file
50 #####################################
51 modify_logfile() {
52 #remove timestamps, data different for run by run
53 debug "Modifying file $1"
54 cmd='
55 s/\ (No such file or directory)//g
56 s/^EXECUTOR_RUNTIME - MTC was created. Process id: [0-9]*\./EXECUTOR_RUNTIME - MTC was created. Process id:/g
57 s/rocess id: [0-9][0-9]*/rocess id: X/g
58 s/I\/O: [0-9][0-9]*/I\/O: Y/g
59 s/switches: [0-9][0-9]*/switches: S/g
60 s/block output operations: [0-9]*/block output operations: B/g
61 s/block input operations: [0-9]*/block input operations: I/g
62 s/system time: [0-9]*\.[0-9]*/system time: SYS/g
63 s/user time: [0-9]*\.[0-9]*/user time: T/g
64 s/seed [0-9][0-9]*[.][0-9]*/seed /g
65 s/returned [0-9][0-9]*[.][0-9]*/returned R/g
66 s/srand48.[\-]*[0-9]*.\./srand X/g
67 s/t1: [0-9]e-[0-9]* s/t1: T s/g
68 s/t1: [0-9e.-]* s/t1: T s/g
69 s/t: [0-9e.-]* s/t: T s/g
70 s/Mytime: [0-9.]*e-[0-9]* s/Mytime: T s/g
71 s/Mytime: [0-9.]* s/Mytime: T s/g
72 s/reference [0-9]* finished/reference R finished/g
73 s/started on [a-zA-Z0-9._-]*. Version: .*/started on X. Version: V/g
74 s/^[0-9.:]* //g
75 s/[0-9]*\.[0-9]*\.[0-9]*\.[0-9]*/a\.b\.c\.d/g
76 s/The address of MC was set to [a-zA-Z0-9._-]*/The address of MC was set to X/g
77 s/resident set size: [0-9]*/resident set size: S/g
78 s/Action: Finish:[0-9][0-9]*[.][0-9]*/Action: Finish: F/g
79 s/Action: Elapsed time:[0-9][0-9]*[.][0-9]*/Action: Elapsed time:E/g
80 s/Read timer t: [0-9e.-]* s/Read timer t: T s/g
81 s/Read timer t1: [0-9e.-]* s/Read timer t1: T s/g
82 s/Action: Start:[0-9e.-]* s/Action: Start: S s/g
83 s/^PARALLEL_PTC.*//g
84 s/UNIX pathname .*$/UNIX pathname /g
85 s/^EXECUTOR_COMPONENT.*$//g
86 s/^PORTEVENT_MQUEUE.*$//g
87 s/^$//g
88 '
89 sed -e "$cmd" < "$1" > "${LOGDIR}/tmp"
90
91 sed -e "/^$/d" < "${LOGDIR}/tmp" > "$1"
92 #mv "${LOGDIR}/tmp" "$1"
93 }
94
95 #####################################
96 # run_and_modify_logfile
97 # $1 : cfg file
98 # $2 : cfg file base without extension
99 #####################################
100 run_and_modify_logfile() {
101 $TTCN3_DIR/bin/ttcn3_start $MYEXE $1
102 cp $LOGDIR/${MYEXE}-mtc.log $LOGDIR/${2}-mtc.log
103 cp $LOGDIR/${MYEXE}-hc.log $LOGDIR/${2}-hc.log
104
105 #remove timestamp, diff data:
106 modify_logfile "${LOGDIR}/${2}-mtc.log"
107 modify_logfile "${LOGDIR}/${2}-hc.log"
108
109 #emergency log handling
110 if [ -e "$LOGDIR/${MYEXE}-mtc.log_emergency" ]
111 then
112 debug "Emergency log file name: $LOGDIR/${2}-mtc.log_emergency"
113 cp "$LOGDIR/${MYEXE}-mtc.log_emergency" "$LOGDIR/${2}-mtc.log_emergency"
114 modify_logfile "$LOGDIR/${2}-mtc.log_emergency"
115 fi
116
117 i=3
118 while [ -e "$LOGDIR/${MYEXE}-$i.log" ]
119 do
120 cp "$LOGDIR/${MYEXE}-$i.log" "$LOGDIR/${2}-$i.log"
121 modify_logfile "$LOGDIR/${2}-$i.log"
122 let "i = $i + 1"
123 done
124 }
125 #####################################
126 # create EmergencyLogCommentedOut (ELCO) file from the original log file
127 # $1:original config file
128 # output "${1}_ELCO.cfg"
129 #####################################
130 create_ELCO_config() {
131 elco_cfg=`basename $1 ".cfg"`
132 elco_cfg="${elco_cfg}_ELCO.cfg"
133 cp $1 "${elco_cfg}"
134 cmd='
135 s/^\*\.Emergency/#\*\.Emergency/g'
136 sed -e "$cmd" < "${elco_cfg}" > tmp
137 mv tmp "${elco_cfg}"
138 debug "OLD cfg name: $1"
139 debug "ELCO cfg name: ${elco_cfg}"
140 }
141 #####################################
142 # compare_with_ELCO
143 # $1: componenent id (mtc, hc, 3, 4 etc)
144 #####################################
145 compare_with_ELCO() {
146 diff -u "$LOGDIR/${elco_cfg_base}-$1.log" "$LOGDIR/${orig_cfg_base}-$1.log" > "${LOGDIR}/diff_${orig_cfg_base}_$1.log"
147 if [ "$?" -eq $SUCCESS ]
148 then
149 debug ">>>tc $orig_cfg_base $1 part success<<<"
150 let "success = $success + 1"
151 else
152 debug ">>>tc $orig_cfg_base $1 part failed<<<"
153 echo "tc $orig_cfg_base $1 part failed" >> ${LIST_OF_FAILED}
154 let "failed = $failed + 1"
155 fi
156 debug "success: ${success} failed: ${failed}"
157 }
158
159 #####################################
160 # compare_with_expected
161 # $1: componenent id (mtc, hc, 3, 4 etc)
162 # $2: expected log
163 #####################################
164 compare_with_expected() {
165 diff -u "$2" "${LOGDIR}/${orig_cfg_base}-$1.log" > "${LOGDIR}/diff_${orig_cfg_base}_$1.log"
166 if [ "$?" -eq $SUCCESS ]
167 then
168 debug ">>>tc $orig_cfg_base $1 part success<<<"
169 let "success = $success + 1"
170 else
171 debug ">>>tc $orig_cfg_base $1 part failed<<<"
172 echo "tc $orig_cfg_base $1 part failed" >> ${LIST_OF_FAILED}
173 let "failed = $failed + 1"
174 fi
175 debug "success: ${success} failed: ${failed}"
176 }
177
178 #####################################
179 # compare_with_expected_emergency
180 # $1: componenent id (mtc, hc, 3, 4 etc)
181 # $2: expected log
182 #####################################
183 compare_with_expected_emergency() {
184 #debug "==>diff -u $4 ${LOGDIR}/${orig_cfg_base}-$1.log_emergency > ${LOGDIR}/diff_${orig_cfg_base}_$1.log_emergency"
185 diff -u "$2" "${LOGDIR}/${orig_cfg_base}-$1.log_emergency" > "${LOGDIR}/diff_${orig_cfg_base}_$1.log_emergency"
186 if [ "$?" -eq $SUCCESS ]
187 then
188 debug ">>>tc $orig_cfg_base $1 part success<<<"
189 let "success = $success + 1"
190 else
191 debug ">>>tc $orig_cfg_base $1 part failed<<<"
192 echo "tc $orig_cfg_base $1 emergency part failed" >> ${LIST_OF_FAILED}
193 let "failed = $failed + 1"
194 fi
195 debug "success: ${success} failed: ${failed}"
196 }
197 #####################################
198 # run_and_compare_log_files
199 # $1 first config file
200 # $2 2nd config file
201 # $3 output file (diff_)
202 #####################################
203 run_and_compare_log_files() {
204 #running with orig cfg:
205 rm ${LOGDIR}/${MYEXE}*.log
206 orig_cfg_base=`basename $1 ".cfg"`
207 run_and_modify_logfile "$1" "$orig_cfg_base"
208
209 if [ "$2" == "" ]; then
210 #running with modified cfg:
211 create_ELCO_config "$1"
212 else
213 elco_cfg=$2
214 fi
215
216 elco_cfg_base=`basename "$elco_cfg" ".cfg"`
217 debug "ELCO cfg name: ${elco_cfg}"
218 run_and_modify_logfile "${elco_cfg}" "$elco_cfg_base"
219
220 #diff:
221 compare_with_ELCO "mtc"
222 compare_with_ELCO "hc"
223
224 i=3
225 while [ -e "$LOGDIR/${elco_cfg_base}-$i.log" -a -e "$LOGDIR/${orig_cfg_base}-$i.log" ]
226 do
227 compare_with_ELCO "$i"
228 let "i = $i + 1"
229 done
230
231 }
232 #####################################
233 # run_and_compare_log_file_with_expected
234 # $1 first config file
235 # $2 expected mtc log file
236 # $3 expected hc log file
237 # $4 expected emergency log file
238 #####################################
239 run_and_compare_log_file_with_expected() {
240 rm -f ${LOGDIR}/${MYEXE}*.log*
241 #running with orig cfg:
242 orig_cfg_base=`basename $1 ".cfg"`
243 run_and_modify_logfile "$1" "$orig_cfg_base"
244
245
246 debug "cfg: $1"
247 debug "mtclog: $2"
248 debug "hclog: $3"
249 #diff mtc with the expected:
250 if [ -e "$2" ]; then
251 modify_logfile "$2"
252 compare_with_expected "mtc" "$2"
253 else
254 debug ">>>tc $orig_cfg_base mtc part failed, not existing expected log file $2<<<"
255 echo "tc $orig_cfg_base mtc part failed" >> ${LIST_OF_FAILED}
256 let "failed = $failed + 1"
257 fi
258
259 #diff:
260
261 if [ "$3" != "" ]; then
262 if [ -e "$3" ]; then
263 modify_logfile "$3"
264 compare_with_expected "hc" "$3"
265 else
266 debug ">>>tc $orig_cfg_base mtc part failed, not existing expected log file $3<<<"
267 echo "tc $orig_cfg_base mtc part failed" >> ${LIST_OF_FAILED}
268 let "failed = $failed + 1"
269 fi
270 fi
271
272 #mtc emergency log kezeles
273 if [ "$4" != "" ]; then
274 if [ -e "$4" ]; then
275 modify_logfile "$4"
276 compare_with_expected_emergency "mtc" "$4"
277 else
278 debug ">>>tc $orig_cfg_base mtc part failed, not existing expected log file $4<<<"
279 echo "tc $orig_cfg_base mtc part failed, not existing expected log file $4" >> ${LIST_OF_FAILED}
280 let "failed = $failed + 1"
281 fi
282 fi
283 }
284
285 #####################################
286 # evaluate
287 #####################################
288 evaluate() {
289 echo "Summary: success: ${success}, failed: ${failed} "
290 if [ $failed -eq 0 ]
291 then
292 echo "Overall verdict: success"
293 exit_code=0
294 else
295 echo "Overall verdict: failed"
296 cat ${LIST_OF_FAILED} |
297 while read line
298 do
299 echo $line
300 done
301 exit_code=1
302 fi
303
304 exit $exit_code
305 }
306
307 #### MAIN ###
308
309 # see the files "logs/diff*.log" !
310
311 init
312 #======= Buffer All ========
313 run_and_compare_log_files EL_BufferAll_1.cfg #compatibility test with minimal coverage (compare logs with/without EL setting if EL-event does not happen
314 run_and_compare_log_files EL_BufferAll_2.cfg #compatibility test with coverage "tc_parallel_portconn" (compare logs with/without EL setting if EL-event does not happen) - NOT STABILE, hc FAILED
315 run_and_compare_log_files EL_BufferAll_3.cfg EL_BufferAll_3_NOEL.cfg #the same log expected with two different log files: EL and NOEL, EL-event occurs in the first case - PASSED
316 run_and_compare_log_files EL_BufferAll_4.cfg #compatibility test with "tc_timer" (compare logs with/without EL setting if EL-event does not happen) - hc FAILED
317 run_and_compare_log_files EL_BufferAll_5.cfg #compatibility test "with Titan_LogTest.tc_encdec" - NOT STABILE, mtc PASSED, hc PASSED
318 run_and_compare_log_files EL_BufferAll_6.cfg #compatibility test with "tc_function_rnd and tc_encdec" - mtc PASSED, hc PASSED
319 run_and_compare_log_file_with_expected "EL_BufferAll_7.cfg" "EL_BufferAll_7_mtc_expected.log" # - mtc PASSED
320 run_and_compare_log_file_with_expected "EL_BufferAll_7A.cfg" "EL_BufferAll_7A_mtc_expected.log" # - mtc PASSED
321 run_and_compare_log_files EL_BufferAll_8.cfg #compatibility test with MAXIMAL coverage - NOT STABILE; mtc PASSED hc FAILED (1 line order problem,
322 run_and_compare_log_file_with_expected "EL_BufferAll_9.cfg" "EL_BufferAll_9_mtc_expected.log" # - More EL-event can be logged after each other - mtc FAILED ( 1 line missing), hc FAILED
323 run_and_compare_log_file_with_expected "EL_BufferAll_10.cfg" "EL_BufferAll_10_mtc_expected.log" # - More EL-event with big buffer - mtc PASSED
324 run_and_compare_log_file_with_expected "EL_BufferAll_11.cfg" "EL_BufferAll_11_mtc_expected.log" # - More EL-event with big buffer - mtc PASSED
325 run_and_compare_log_file_with_expected "EL_BufferAll_12.cfg" "EL_BufferAll_12_mtc_expected.log" # - More EL-event with very small buffer - (buffer size=2) - mtc FAILED, one line missing
326 run_and_compare_log_file_with_expected "EL_BufferAll_13.cfg" "EL_BufferAll_13_mtc_expected.log" # - More EL-event with very small buffer - (buffer size=3) - mtc FAILED, one line missing
327 #======= Buffer Masked ========
328 run_and_compare_log_files EL_BufferMasked_1.cfg #compatibility test with minimal coverage (compare logs with/without EL setting if EL-event does not happen
329 run_and_compare_log_files EL_BufferMasked_2.cfg #compatibility test with coverage "tc_parallel_portconn" (compare logs with/without EL setting if EL-event does not happen) - NOT STABILE
330 run_and_compare_log_files EL_BufferMasked_4.cfg #compatibility test with "tc_timer" (compare logs with/without EL setting if EL-event does not happen) - PASSED
331 run_and_compare_log_files EL_BufferMasked_5.cfg #compatibility test "with Titan_LogTest.tc_encdec" - NOT STABILE
332 run_and_compare_log_files EL_BufferMasked_3.cfg EL_BufferMasked_3_NOEL.cfg #the same log expected with two different log files: EL and NOEL, EL-event occurs in the first case - PASSED
333 run_and_compare_log_files EL_BufferMasked_6.cfg #compatibility test with "tc_function_rnd and tc_encdec" - PASSED
334 run_and_compare_log_file_with_expected "EL_BufferMasked_7.cfg" "EL_BufferMasked_7_mtc_expected.log" "" "EL_BufferMasked_7_mtc_expected.log_emergency" # - PASSED
335 run_and_compare_log_files EL_BufferMasked_8.cfg #compatibility test with MAXIMAL coverage - NOT STABILE
336 run_and_compare_log_file_with_expected "EL_BufferMasked_9.cfg" "EL_BufferMasked_9_mtc_expected.log" "" "EL_BufferMasked_9_mtc_expected.log_emergency" # - More EL-event can be logged after each other - PASSED
337 run_and_compare_log_file_with_expected "EL_BufferMasked_10.cfg" "EL_BufferMasked_10_mtc_expected.log" "" "EL_BufferMasked_10_mtc_expected.log_emergency" # - More EL-event with big buffer - PASSED
338 run_and_compare_log_file_with_expected "EL_BufferMasked_11.cfg" "EL_BufferMasked_11_mtc_expected.log" "" "EL_BufferMasked_11_mtc_expected.log_emergency" # - More EL-event with big buffer - PASSED
339 run_and_compare_log_file_with_expected "EL_BufferMasked_12.cfg" "EL_BufferMasked_12_mtc_expected.log" "" "EL_BufferMasked_12_mtc_expected.log_emergency" # - More EL-event with very small buffer - (buffer size=2) - mtc.log_emergency FAILED (wrong order)
340 run_and_compare_log_file_with_expected "EL_BufferMasked_13.cfg" "EL_BufferMasked_13_mtc_expected.log" "" "EL_BufferMasked_13_mtc_expected.log_emergency" # - More EL-event with very small buffer - (buffer size=3) - mtc.log_emergency FAILED (wrong order)
341 #Stat: 63 success/ 0 failed
342 evaluate
This page took 0.046176 seconds and 5 git commands to generate.