run_exec_autotests.bash 20.5 KB
Newer Older
thomasl's avatar
thomasl committed
1
#!/bin/bash
Rohit Gupta's avatar
Rohit Gupta committed
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
#******************************************************************************

#    OpenAirInterface 
#    Copyright(c) 1999 - 2014 Eurecom

#    OpenAirInterface is free software: you can redistribute it and/or modify
#    it under the terms of the GNU General Public License as published by
#    the Free Software Foundation, either version 3 of the License, or
#    (at your option) any later version.


#    OpenAirInterface is distributed in the hope that it will be useful,
#    but WITHOUT ANY WARRANTY; without even the implied warranty of
#    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
#    GNU General Public License for more details.

#   You should have received a copy of the GNU General Public License
#   along with OpenAirInterface.The full GNU General Public License is 
#   included in this distribution in the file called "COPYING". If not, 
#   see <http://www.gnu.org/licenses/>.

#  Contact Information
#  OpenAirInterface Admin: openair_admin@eurecom.fr
#  OpenAirInterface Tech : openair_tech@eurecom.fr
#  OpenAirInterface Dev  : openair4g-devel@lists.eurecom.fr
  
#  Address      : Eurecom, Campus SophiaTech, 450 Route des Chappes, CS 50193 - 06904 Biot Sophia Antipolis cedex, FRANCE

# *******************************************************************************/
# \author Navid Nikaein, Rohit Gupta
thomasl's avatar
thomasl committed
32

33
34
if [ -s $OPENAIR_DIR/cmake_targets/tools/build_helper ] ; then
   source $OPENAIR_DIR/cmake_targets/tools/build_helper
thomasl's avatar
thomasl committed
35
36
37
38
39
else
   echo "Error: no file in the file tree: is OPENAIR_DIR variable set?"
   exit 1
fi

40
41
trap handle_ctrl_c INT

42
source $OPENAIR_DIR/cmake_targets/tools/test_helper
guptar's avatar
guptar committed
43

44

45
SUDO="sudo -E -S"
guptar's avatar
guptar committed
46
tdir=$OPENAIR_DIR/cmake_targets/autotests
47
48
rm -fr $tdir/bin 
mkdir -p $tdir/bin
Rohit Gupta's avatar
Rohit Gupta committed
49
results_file="$tdir/log/results_autotests.xml"
guptar's avatar
guptar committed
50
51
52
53
54
55
56
57

updated=$(svn st -q $OPENAIR_DIR)
if [ "$updated" != "" ] ; then
	echo "some files are not in svn:\n $updated"
fi

cd $tdir 

Rohit Gupta's avatar
Rohit Gupta committed
58
59
60
61
62
63
64
65
66
67
68
69
#\param $1 -> name of test case
#\param $2 -> name of compilation program
#\param $3 -> arguments for compilation program
#\param $4 -> name of pre-executable to install kernel modules, etc
#\param $5 -> arguments of pre-executable
#\param $6 -> name of executable
#\param $7 -> arguments for running the program
#\param $8 -> search expression
#\param $9 -> search expression which should NOT be found (for ex. segmentation fault) 
#\param $10 -> number of runs
#\param $11 -> pre_compile program execution
#\param $12 -> class of the test case (compilation, execution)
Rohit Gupta's avatar
Rohit Gupta committed
70
#\param $13 -> output of compilation program that needs to be found for test case to pass
71
#\param $14 -> tags to help identify the test case for readability in output xml file
72
function test_compile() {
Rohit Gupta's avatar
Rohit Gupta committed
73
74
75

    xUnit_start
    test_case_name=$1
76
77
    log_dir=$tdir/log/$test_case_name
    log_file=$log_dir/test.$1.log.txt
Rohit Gupta's avatar
Rohit Gupta committed
78
79
80
81
82
83
84
85
86
87
    compile_prog=$2
    compile_args=$3
    pre_exec_file=$4
    pre_exec_args=$5
    exec_args=$7
    search_expr_array=("${!8}")
    search_expr_negative=$9
    nruns=${10}
    pre_compile_prog=${11}
    class=${12}
Rohit Gupta's avatar
Rohit Gupta committed
88
    compile_prog_out=${13}
89
    tags=${14}
90
91
92
    xmlfile_testcase=$log_dir/test.$1.xml
    #build_dir=$tdir/$1/build
    #exec_file=$build_dir/$6
Rohit Gupta's avatar
Rohit Gupta committed
93
    
94
95
96
97
    #compile_prog_out=`eval "echo $compile_prog_out"`
    #echo "compile_prog_out = $compile_prog_out"
    read -a compile_prog_out_array <<< "$compile_prog_out"

Rohit Gupta's avatar
Rohit Gupta committed
98
99
    #Temporary log file where execution log is stored.
    temp_exec_log=$log_dir/temp_log.txt
100
101
    rm -fr $log_dir
    mkdir -p $log_dir
Rohit Gupta's avatar
Rohit Gupta committed
102
103
104
105
106
107
108
109
110
111
112
113
114
115



    #echo "log_dir = $log_dir"
    #echo "log_file = $log_file"
    #echo "exec_file = $exec_file"
    #echo "exec_args = $exec_args"
    #echo "search_expr = $search_expr"
    #echo "pre_exec_file = $pre_exec_file"
    #echo "nruns = $nruns"
    echo "class = $class"
    
    compile_prog_array=()
    read -a compile_prog_array <<<"$compile_prog"
116
    
117
118
    #tags_array=()
    #read -a tags_array <<<"$tags"
119
    
120
121
122
123
    #pre_compile_prog_array=()
    #readarray -t pre_compile_prog_array <<< "$pre_compile_prog"
    result=1
    result_string=""
Rohit Gupta's avatar
Rohit Gupta committed
124
125
    for (( run_index=1; run_index <= $nruns; run_index++ ))
    do
126
127
128
129
       
    #tags_array_index=0
    #for pre_compile_prog_array_index in "${pre_compile_prog_array[@]}"  
    #do
130
    
131
132
133
134
135
136
137
138
    #for compile_prog_array_index in "${compile_prog_array[@]}"  
    #do
       echo "Compiling test case $test_case_name.${tags} Log file = $log_file"  
       date=`date`
       echo "<COMPILATION LOG file=$test_case_name.${tags} , Run = $run_index>, Date = $date " >> $log_file
       #rm -fr $build_dir
       #mkdir -p $build_dir
       cd $log_dir
Rohit Gupta's avatar
Rohit Gupta committed
139
       {   
140
          uname -a
141
142
143
          compile_log_dir=`eval echo \"$OPENAIR_DIR/cmake_targets/log/\"`
          echo "Removing compilation log files in $compile_log_dir"
          rm -frv $compile_log_dir
144
145
          echo "Executing $pre_exec_file $pre_exe_args ...."
          eval $pre_exec_file  $pre_exec_args
146
147
148
149
          echo "Executing $compile_prog $compile_prog_args ...."
          eval $compile_prog  $compile_prog_args
          echo "Copying compilation log files to test case log directory: $log_dir"
          cp -fvr $OPENAIR_DIR/cmake_targets/log/ $log_dir/compile_log
Rohit Gupta's avatar
Rohit Gupta committed
150
151
152
       }>> $log_file 2>&1
       echo "</COMPILATION LOG>" >> $log_file 2>&1
       if [ "$class" == "compilation" ]; then
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
         for compile_prog_out_index in ${compile_prog_out_array[@]}
            do 
                if  [ -s "$compile_prog_out_index" ]; then
                    let "result = result&1"
                    
                    echo_success "$test_case_name.${tags} RUN = $run_index $compile_prog_out_index = compiled"
                    
                else
                    let "result = result&0"
                            
                    echo_error "$test_case_name.${tags} RUN = $run_index $compile_prog_out_index failed"
                    
                 fi
            done #end of for loop compile_prog_out_index
         if [ "$result" == "1" ]; then
            result_string=$result_string" Run_$run_index = PASS"
         else   
            result_string=$result_string" Run_$run_index = FAIL"           
Rohit Gupta's avatar
Rohit Gupta committed
171
         fi
172

Rohit Gupta's avatar
Rohit Gupta committed
173
       fi
174
175
176
       #let "tags_array_index++"
    #done # End of for loop compile_prog_array
    #done # End of for loop (pre_compile_prog_array_index)
Rohit Gupta's avatar
Rohit Gupta committed
177
    done #End of for loop (run_index)
178
179
180
181
182
183
184
185
186
187
    
   
    #If for for some reason upper for loop does not execute, we fail the test case completely
    if [ "$result_string" == "" ]; then
      result=0
    fi
    if [ "$result" == "1" ]; then
      echo_success "$test_case_name.${tags} PASSED"
      xUnit_success "compilation" "$test_case_name.$tags" "PASS" "$result_string" "$xmlfile_testcase"
    else             
Rohit Gupta's avatar
Rohit Gupta committed
188
189
      echo_error "$test_case_name.${tags} FAILED"
      xUnit_fail "compilation" "$test_case_name.$tags" "FAIL" "$result_string" "$xmlfile_testcase"
190
    fi
Rohit Gupta's avatar
Rohit Gupta committed
191
192
193
}


guptar's avatar
guptar committed
194
195
196
197
198
199
200
201
202

#\param $1 -> name of test case
#\param $2 -> name of compilation program
#\param $3 -> arguments for compilation program
#\param $4 -> name of pre-executable to install kernel modules, etc
#\param $5 -> arguments of pre-executable
#\param $6 -> name of executable
#\param $7 -> arguments for running the program
#\param $8 -> search expression
203
204
#\param $9 -> search expression which should NOT be found (for ex. segmentation fault) 
#\param $10 -> number of runs
Rohit Gupta's avatar
Rohit Gupta committed
205
206
#\param $11 -> pre_compile program execution
#\param $12 -> class of the test case (compilation, execution)
207
208
#\param $13 -> output of compilation program that needs to be found for test case to pass
#\param $14 -> tags to help identify the test case for readability in output xml file
209
#\param $15 => password for the user to run certain commands as sudo
210
#\param $16 => test config file params to be modified
guptar's avatar
guptar committed
211

212
function test_compile_and_run() {
guptar's avatar
guptar committed
213
    xUnit_start
Rohit Gupta's avatar
Rohit Gupta committed
214
    test_case_name=$1
215
216
    log_dir=$tdir/log/$test_case_name
    log_file=$log_dir/test.$1.log.txt
guptar's avatar
guptar committed
217
218
219
220
    compile_prog=$2
    compile_args=$3
    pre_exec_file=$4
    pre_exec_args=$5
221
    main_exec=$6
guptar's avatar
guptar committed
222
    exec_args=$7
guptar's avatar
guptar committed
223
    search_expr_array=("${!8}")
224
225
    search_expr_negative=$9
    nruns=${10}
Rohit Gupta's avatar
Rohit Gupta committed
226
227
    pre_compile_prog=${11}
    class=${12}
228
229
    compile_prog_out=${13}
    tags=${14}
230
    mypassword=${15}
231
232
    test_config_file=${16}

guptar's avatar
guptar committed
233
    build_dir=$tdir/$1/build
234
235
    #exec_file=$build_dir/$6
    xmlfile_testcase=$log_dir/test.$1.xml
guptar's avatar
guptar committed
236
237
    #Temporary log file where execution log is stored.
    temp_exec_log=$log_dir/temp_log.txt
238
    export OPENAIR_LOGDIR=$log_dir
239
240
241
242
243
244
245
    rm -fr $log_dir
    mkdir -p $log_dir
    
    rm -fr $OPENAIR_DIR/cmake_targets/log

    echo "" > $temp_exec_log
    echo "" > $log_file
246
247
248
    #echo "log_dir = $log_dir"
    #echo "log_file = $log_file"
    #echo "exec_file = $exec_file"
Rohit Gupta's avatar
Rohit Gupta committed
249
    #echo "exec_args = $exec_args"
250
251
252
    #echo "search_expr = $search_expr"
    #echo "pre_exec_file = $pre_exec_file"
    #echo "nruns = $nruns"
Rohit Gupta's avatar
Rohit Gupta committed
253
    echo "class = $class"
guptar's avatar
guptar committed
254
    
255
256
    #compile_prog_array=()
    #read -a compile_prog_array <<<"$compile_prog"
257
258
259
260

    #test_config_file=`eval "echo \"$test_config_file\" "`

    #echo "test_config_file = $test_config_file"
Rohit Gupta's avatar
Rohit Gupta committed
261
  
262
263
264
265
266
    tags_array=()
    read -a tags_array <<<"$tags"
    
    main_exec_args_array=()
    readarray -t main_exec_args_array <<< "$exec_args"
267
268
269
270
271
272
    
    
    #for search_expr in "${compile_prog_array[@]}"  
    #do
       echo "Compiling test case $test_case_name Log file = $log_file"  
       echo "<COMPILATION LOG file=$log_file>" >> $log_file
Rohit Gupta's avatar
Rohit Gupta committed
273

274
275
       #rm -fr $build_dir
       #mkdir -p $build_dir
Rohit Gupta's avatar
Rohit Gupta committed
276

277
       cd $log_dir
Rohit Gupta's avatar
Rohit Gupta committed
278
       {   
279
          uname -a
280
281
282
283
284
285
286
287
          echo "Executing $pre_compile_prog"
          eval $pre_compile_prog
 
          if [ "$test_config_file" != "" ]; then
            echo "Modifying test_config_file parameters..."
            echo "$test_config_file" |xargs -L 1 $OPENAIR_DIR/cmake_targets/autotests/tools/search_repl.py 
          fi
          echo "Executing $compile_prog $compile_args"
288
289
290
          eval "$compile_prog $compile_args"
          echo "Copying compilation log files to test case log directory: $log_dir"
          cp -fvr $OPENAIR_DIR/cmake_targets/log/ $log_dir/compile_log
Rohit Gupta's avatar
Rohit Gupta committed
291
292
       }>> $log_file 2>&1
       echo "</COMPILATION LOG>" >> $log_file 2>&1
293
    #done
294
    
Rohit Gupta's avatar
Rohit Gupta committed
295
296
    #process the test case if it is that of execution
    if [ "$class" == "execution" ]; then
297
298
299
      tags_array_index=0
      for main_exec_args_array_index in "${main_exec_args_array[@]}"  
      do
300
301
302
303
        global_result=1
        result_string=""
        
       for (( run_index=1; run_index <= $nruns; run_index++ ))
Rohit Gupta's avatar
Rohit Gupta committed
304
        do
305
306
          temp_exec_log=$log_dir/test.$test_case_name.${tags_array[$tags_array_index]}.run_$run_index
          echo "" > $temp_exec_log
guptar's avatar
guptar committed
307

308
309
310
311
312
          echo "Executing test case $test_case_name.${tags_array[$tags_array_index]}, Run Index = $run_index, Execution Log file = $temp_exec_log"

          echo "-----------------------------------------------------------------------------" >> $temp_exec_log  2>&1
          echo "<EXECUTION LOG Test Case = $test_case_name.${tags_array[$tags_array_index]}, Run = $run_index >" >> $temp_exec_log  2>&1
           
313
          if [ -n "$pre_exec_file" ]; then
314
            {  echo " Executing $pre_exec_file $pre_exec_args " 
315
               eval " $pre_exec_file $pre_exec_args " ; }>> $temp_exec_log  2>&1
316

317
          fi
318
319
          echo "Executing $main_exec $main_exec_args_array_index "
          echo "Executing $main_exec $main_exec_args_array_index " >> $temp_exec_log
320
          { uname -a ; eval "$main_exec $main_exec_args_array_index" ;} >> $temp_exec_log  2>&1
321

322
          echo "</EXECUTION LOG Test Case = $test_case_name.${tags_array[$tags_array_index]},  Run = $run_index >" >> $temp_exec_log  2>&1
323
          cat $temp_exec_log >> $log_file  2>&1
324
          
guptar's avatar
guptar committed
325
    
326
327
328
          result=1
          for search_expr in "${search_expr_array[@]}"
          do
guptar's avatar
guptar committed
329
     
330
            search_result=`grep -E "$search_expr" $temp_exec_log`
guptar's avatar
guptar committed
331

332
333
            #echo "search_expr  =   $search_expr"
            #echo "search_result = $search_result"
guptar's avatar
guptar committed
334

335
336
337
338
339
340
            if [ -z "$search_result" ]; then
              let "result = result & 0"
            else
              let "result = result & 1"
            fi
          done
341
342
343
344
345
346
347
          
          #If we find a negative search result then there is crash of program and test case is failed even if above condition is true
          search_result=`grep -iE "$search_expr_negative" $temp_exec_log`
          if [ -n "$search_result" ]; then
            result=0
          fi
          let "global_result = global_result & result"
guptar's avatar
guptar committed
348

349
          #echo "result = $result"
350
351
352
          
          #this is a result of this run
          #test_case_result=""
353
          if [ "$result" -eq "0" ]; then
354
355
            result_string=$result_string" Run_$run_index =FAIL"
            echo_error "$test_case_name.${tags_array[$tags_array_index]} RUN = $run_index Result = FAIL"
356
          fi
guptar's avatar
guptar committed
357

358
          if [ "$result" -eq "1" ]; then
359
360
            result_string=$result_string" Run_$run_index =PASS"
            echo_success "$test_case_name.${tags_array[$tags_array_index]} RUN = $run_index Result = PASS"
361
          fi
guptar's avatar
guptar committed
362

363
          
364
365
366
367
368
369
        done #End of for loop (nindex)

       echo " Result String = $result_string" 

       if [ "$result_string" == "" ]; then
           echo_error "execution $test_case_name.$compile_prog.${tags_array[$tags_array_index]} Run_Result = \"$result_string\"  Result = FAIL"
Rohit Gupta's avatar
Rohit Gupta committed
370
	   xUnit_fail "execution" "$test_case_name.${tags_array[$tags_array_index]}" "FAIL" "$result_string" "$xmlfile_testcase"
371
372
373
374
375
376
377
378
379
380
381
382
       else
        if [ "$global_result" == "0" ]; then
           echo_error "execution $test_case_name.${tags_array[$tags_array_index]} Run_Result = \"$result_string\" Result =  FAIL"
           xUnit_fail "execution" "$test_case_name.${tags_array[$tags_array_index]}" "FAIL" "$result_string" "$xmlfile_testcase"
        fi

        if [ "$global_result" == "1" ]; then
            echo_success "execution $test_case_name.${tags_array[$tags_array_index]} Run_Result = \"$result_string\"  Result = PASS "
	    xUnit_success "execution" "$test_case_name.${tags_array[$tags_array_index]}" "PASS" "$result_string"   "$xmlfile_testcase"     
        fi  
       fi

383
       let "tags_array_index++"
384
     done 
Rohit Gupta's avatar
Rohit Gupta committed
385
   fi
386
   rm -fr $build_dir
guptar's avatar
guptar committed
387
388
}

thomasl's avatar
thomasl committed
389
390
391
dbin=$OPENAIR_DIR/cmake_targets/autotests/bin
dlog=$OPENAIR_DIR/cmake_targets/autotests/log

guptar's avatar
guptar committed
392

393
function print_help() {
Rohit Gupta's avatar
Rohit Gupta committed
394
395
396
397
398
399
400
401
 echo_info '
This program runs automated test case system for OpenAirInterface
You should have ubuntu 14.xx, updated, and the Linux kernel >= 3.14
Options
-h | --help
   This help
-g | --run-group
   Run test cases in a group. For example, ./run_exec_autotests "0101* 010102"
Rohit Gupta's avatar
Rohit Gupta committed
402
403
-p
   Use password for logging
Rohit Gupta's avatar
Rohit Gupta committed
404
405
'
}
thomasl's avatar
thomasl committed
406

407
function main () {
Rohit Gupta's avatar
Rohit Gupta committed
408
RUN_GROUP=0
Rohit Gupta's avatar
Rohit Gupta committed
409
410
SET_PASSWORD=0
passwd=""
411
412
413
test_case_group=""
test_case_group_array=()
test_case_array=()
414
echo_info "Note that the user should be sudoer for executing certain commands, for example loading kernel modules"
Rohit Gupta's avatar
Rohit Gupta committed
415

Rohit Gupta's avatar
Rohit Gupta committed
416
417
418
419
420
421

until [ -z "$1" ]
  do
    case "$1" in
       -g | --run-group)
            RUN_GROUP=1
422
            test_case_group=$2
423
            test_case_group=`sed "s/\+/\*/g" <<<  "${test_case_group}"` # Replace + with * for bash string substituion
424
            echo_info "Will execute test cases only in group $test_case_group"
Rohit Gupta's avatar
Rohit Gupta committed
425
            shift 2;;
Rohit Gupta's avatar
Rohit Gupta committed
426
427
428
429
        -p)
            SET_PASSWORD=1
            passwd=$2
            shift 2;;
Rohit Gupta's avatar
Rohit Gupta committed
430
431
432
433
434
435
436
437
438
        -h | --help)
            print_help
            exit 1;;
	*)
	    print_help
            echo_fatal "Unknown option $1"
            break;;
   esac
  done
Rohit Gupta's avatar
Rohit Gupta committed
439

440
441
if [ "$SET_PASSWORD" != "1" ]; then
   read -s -p "Enter Password: " passwd
Rohit Gupta's avatar
Rohit Gupta committed
442
443
444
fi

tmpfile=`mktemp`
445
echo $passwd | $SUDO echo $HOME > $tmpfile
Rohit Gupta's avatar
Rohit Gupta committed
446
tstsudo=`cat $tmpfile`
Rohit Gupta's avatar
Rohit Gupta committed
447
if [ "$tstsudo" != "$HOME" ]; then
448
  echo "$USER might not have sudo privileges. Exiting" 
Rohit Gupta's avatar
Rohit Gupta committed
449
  exit
450
451
else
  echo "$USER has sudo privileges"
Rohit Gupta's avatar
Rohit Gupta committed
452
453
454
fi
echo "tstsudo = $tstsudo"
rm -fr $tmpfile
455

Rohit Gupta's avatar
Rohit Gupta committed
456
457
xml_conf="$OPENAIR_DIR/cmake_targets/autotests/test_case_list.xml"

458
test_case_list=`xmlstarlet sel -T -t -m /testCaseList/testCase -s A:N:- "@id" -v "@id" -n $xml_conf`
459
460
461
462
463
464
test_case_excl_list=`xmlstarlet sel -t -v "/testCaseList/TestCaseExclusionList" $xml_conf`
echo "Test Case Exclusion List = $test_case_excl_list "

test_case_excl_list=`sed "s/\+/\*/g" <<< "$test_case_excl_list" ` # Replace + with * for bash string substituion

read -a test_case_excl_array <<< "$test_case_excl_list"
Rohit Gupta's avatar
Rohit Gupta committed
465
466
467

echo "test_case_list = $test_case_list"

468
469
echo "Test Case Exclusion List = $test_case_excl_list \n"

Rohit Gupta's avatar
Rohit Gupta committed
470
471
readarray -t test_case_array <<<"$test_case_list"

472
473
read -a test_case_group_array <<< "$test_case_group"
 
Rohit Gupta's avatar
Rohit Gupta committed
474
475
for search_expr in "${test_case_array[@]}"
  do
476
477
478
479
480
481
482
483
484
485
486
487
488
489
    flag_run_test_case=0
    # search if this test case needs to be executed
    if [ "$RUN_GROUP" -eq "1" ]; then
       for search_group in "${test_case_group_array[@]}"
       do  
          if [[ $search_expr == $search_group ]];then
             flag_run_test_case=1
             echo_info "Test case $search_expr match found in group"
             break
          fi
       done
    else
       flag_run_test_case=1
    fi
490

491
492
493
494
495
496
497
498
499
    for search_excl in "${test_case_excl_array[@]}"
       do  
          if [[ $search_expr == $search_excl ]];then
             flag_run_test_case=0
             echo_info "Test case $search_expr match found in test case excl group. Will skip the test case for execution..."
             break
          fi
       done

500

501
502
503
504
505
    #We skip this test case if it is not in the group list
    if [ "$flag_run_test_case" -ne "1" ]; then
      continue
    fi

Rohit Gupta's avatar
Rohit Gupta committed
506
    name=$search_expr
507
508
509
510
511
512
513
514
515
516
517
518
519
520
    class=`xmlstarlet sel -t -v "/testCaseList/testCase[@id='$search_expr']/class" $xml_conf`
    desc=`xmlstarlet sel -t -v "/testCaseList/testCase[@id='$search_expr']/desc" $xml_conf`
    pre_compile_prog=`xmlstarlet sel -t -v "/testCaseList/testCase[@id='$search_expr']/pre_compile_prog" $xml_conf`
    compile_prog=`xmlstarlet sel -t -v "/testCaseList/testCase[@id='$search_expr']/compile_prog" $xml_conf`
    compile_prog_args=`xmlstarlet sel -t -v "/testCaseList/testCase[@id='$search_expr']/compile_prog_args" $xml_conf`
    pre_exec=`xmlstarlet sel -t -v "/testCaseList/testCase[@id='$search_expr']/pre_exec" $xml_conf`
    pre_exec_args=`xmlstarlet sel -t -v "/testCaseList/testCase[@id='$search_expr']/pre_exec_args" $xml_conf`
    main_exec=`xmlstarlet sel -t -v "/testCaseList/testCase[@id='$search_expr']/main_exec" $xml_conf`
    main_exec_args=`xmlstarlet sel -t -v "/testCaseList/testCase[@id='$search_expr']/main_exec_args" $xml_conf`
    search_expr_true=`xmlstarlet sel -t -v "/testCaseList/testCase[@id='$search_expr']/search_expr_true" $xml_conf`
    search_expr_false=`xmlstarlet sel -t -v "/testCaseList/testCase[@id='$search_expr']/search_expr_false" $xml_conf`
    nruns=`xmlstarlet sel -t -v "/testCaseList/testCase[@id='$search_expr']/nruns" $xml_conf`
    compile_prog_out=`xmlstarlet sel -t -v "/testCaseList/testCase[@id='$search_expr']/compile_prog_out" $xml_conf`
    tags=`xmlstarlet sel -t -v "/testCaseList/testCase[@id='$search_expr']/tags" $xml_conf`
521
    test_config_file=`xmlstarlet sel -t -v "/testCaseList/testCase[@id='$search_expr']/test_config_file" $xml_conf`
Rohit Gupta's avatar
Rohit Gupta committed
522

Rohit Gupta's avatar
Rohit Gupta committed
523
524
525
526
527
    echo "class = $class"
    echo "name = $name"
    echo "Description = $desc"
    echo "pre_compile_prog = $pre_compile_prog"
    echo "compile_prog = $compile_prog"
528
529
    echo "compile_prog_args = $compile_prog_args"
    echo "compile_prog_out = $compile_prog_out"
Rohit Gupta's avatar
Rohit Gupta committed
530
531
532
533
534
535
536
537
    echo "pre_exec = $pre_exec"
    echo "pre_exec_args = $pre_exec_args"
    echo "main_exec = $main_exec"
    echo "main_exec_args = $main_exec_args"
    echo "search_expr_true = $search_expr_true"
    echo "search_expr_false = $search_expr_false"
    echo "nruns = $nruns"

538

Rohit Gupta's avatar
Rohit Gupta committed
539
    #eval $pre_exec
540
    compile_prog_out=`eval echo \"$compile_prog_out\"`
Rohit Gupta's avatar
Rohit Gupta committed
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558

    search_array_true=()

    IFS=\"                  #set the shell's field separator
    set -f                  #don't try to glob 
    #set -- $search_expr_true             #split on $IFS
    for i in $search_expr_true
      do echo "i = $i"
        if [ -n "$i" ] && [ "$i" != " " ]; then
          search_array_true+=("$i")
          #echo "inside i = \"$i\" "
        fi 
      done
    unset IFS 

    #echo "arg1 = ${search_array_true[0]}"
    #echo " arg2 = ${search_array_true[1]}"
    if [ "$class" == "compilation" ]; then
559
560
        test_compile "$name" "$compile_prog" "$compile_prog_args" "$pre_exec" "$pre_exec_args" "$main_exec" "$main_exec_args" "search_array_true[@]" "$search_expr_false" "$nruns" "$pre_compile_prog" "$class" "$compile_prog_out" "$tags"
    elif  [ "$class" == "execution" ]; then
561
        echo \'passwd\' | $SUDO killall -q oaisim_nos1
562
        test_compile_and_run "$name" "$compile_prog" "$compile_prog_args" "$pre_exec" "$pre_exec_args" "$main_exec" "$main_exec_args" "search_array_true[@]" "$search_expr_false" "$nruns" "$pre_compile_prog" "$class" "$compile_prog_out" "$tags" "$mypassword" "$test_config_file"
Rohit Gupta's avatar
Rohit Gupta committed
563
    else
Rohit Gupta's avatar
Rohit Gupta committed
564
        echo "Unexpected class of test case...Skipping the test case $name ...."
Rohit Gupta's avatar
Rohit Gupta committed
565
566
567
568
569
570
571
572
    fi

    done
    
    

}

573
574
uname -a

Rohit Gupta's avatar
Rohit Gupta committed
575
main "$@"
Rohit Gupta's avatar
Rohit Gupta committed
576
577
578
579
580
581
582
583
584

xUnit_write "$results_file"

echo "Test Results are written to $results_file"

exit