From 30631888046f3951ba2635067c326af6067df5b3 Mon Sep 17 00:00:00 2001
From: Rohit Gupta <rohit.gupta@eurecom.fr>
Date: Mon, 12 Oct 2015 19:09:18 +0200
Subject: [PATCH] fixed bugs in autotests script

---
 .../autotests/run_exec_autotests.bash         | 45 ++++++++++++++++---
 cmake_targets/autotests/test_case_list.xml    |  6 ++-
 cmake_targets/tools/test_helper               |  6 +--
 3 files changed, 47 insertions(+), 10 deletions(-)

diff --git a/cmake_targets/autotests/run_exec_autotests.bash b/cmake_targets/autotests/run_exec_autotests.bash
index 6c9ec4c366..edf2040f0e 100755
--- a/cmake_targets/autotests/run_exec_autotests.bash
+++ b/cmake_targets/autotests/run_exec_autotests.bash
@@ -34,7 +34,7 @@ cd $tdir
 #\param $10 -> number of runs
 #\param $11 -> pre_compile program execution
 #\param $12 -> class of the test case (compilation, execution)
-
+#\param $13 -> output of compilation program that needs to be found for test case to pass
 test_compile() {
 
     xUnit_start
@@ -51,6 +51,7 @@ test_compile() {
     nruns=${10}
     pre_compile_prog=${11}
     class=${12}
+    compile_prog_out=${13}
     build_dir=$tdir/$1/build
     exec_file=$build_dir/$6
     
@@ -94,7 +95,7 @@ test_compile() {
        }>> $log_file 2>&1
        echo "</COMPILATION LOG>" >> $log_file 2>&1
        if [ "$class" == "compilation" ]; then
-         if [ -s "$compile_prog_array_index" ] ; then
+         if [ -s "$compile_prog_array_index" ] || [ -s "$compile_prog_out" ] ; then
            echo_success "$test_case_name $compile_prog_array_index compiled"
            xUnit_success "compilation" "$test_case_name.$compile_prog_array_index" "PASS" "$run_index"
          else
@@ -284,12 +285,43 @@ else
   fi
 fi
 }
+print_help() {
+ 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"
+'
+}
 
 main () {
+RUN_GROUP=0
+test_case_list=""
+
+until [ -z "$1" ]
+  do
+    case "$1" in
+       -g | --run-group)
+            RUN_GROUP=1
+            test_case_list=$2
+            "Will execute test cases only in group $test_case_list"
+            shift 2;;
+        -h | --help)
+            print_help
+            exit 1;;
+	*)
+	    print_help
+            echo_fatal "Unknown option $1"
+            break;;
+   esac
+  done
 
 xml_conf="$OPENAIR_DIR/cmake_targets/autotests/test_case_list.xml"
 
-test_case_list=`xmlstarlet sel -T -t -m /xml/testCaseList/testCase -s D:N:- "@id" -v "@id" -n $xml_conf`
+test_case_list=`xmlstarlet sel -T -t -m /xml/testCaseList/testCase -s A:N:- "@id" -v "@id" -n $xml_conf`
 
 echo "test_case_list = $test_case_list"
 
@@ -310,7 +342,8 @@ for search_expr in "${test_case_array[@]}"
     search_expr_true=`xmlstarlet sel -t -v "/xml/testCaseList/testCase[@id='$search_expr']/search_expr_true" $xml_conf`
     search_expr_false=`xmlstarlet sel -t -v "/xml/testCaseList/testCase[@id='$search_expr']/search_expr_false" $xml_conf`
     nruns=`xmlstarlet sel -t -v "/xml/testCaseList/testCase[@id='$search_expr']/nruns" $xml_conf`
-    
+    compile_prog_out=`xmlstarlet sel -t -v "/xml/testCaseList/testCase[@id='$search_expr']/compile_prog_out" $xml_conf`
+
     echo "class = $class"
     echo "name = $name"
     echo "Description = $desc"
@@ -343,7 +376,7 @@ for search_expr in "${test_case_array[@]}"
     #echo "arg1 = ${search_array_true[0]}"
     #echo " arg2 = ${search_array_true[1]}"
     if [ "$class" == "compilation" ]; then
-        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"
+        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"
     elif  "$class" == "execution" ]; then
         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"
     else
@@ -356,7 +389,7 @@ for search_expr in "${test_case_array[@]}"
 
 }
 
-main
+main "$@"
 
 xUnit_write "$results_file"
 
diff --git a/cmake_targets/autotests/test_case_list.xml b/cmake_targets/autotests/test_case_list.xml
index 5186d6d5e5..6945d75598 100644
--- a/cmake_targets/autotests/test_case_list.xml
+++ b/cmake_targets/autotests/test_case_list.xml
@@ -1,6 +1,6 @@
 <xml>
 
-  <testCaseList>
+ <testCaseList>
      <testCase id="010101" >
      <class>compilation</class>
      <desc>Build oaisim.Rel8</desc>
@@ -128,6 +128,7 @@
      <pre_compile_prog></pre_compile_prog>
      <compile_prog>nasmesh</compile_prog>
      <compile_prog_args></compile_prog_args>
+     <compile_prog_out>CMakeFiles/nasmesh/nasmesh.ko</compile_prog_out>
      <pre_exec></pre_exec>
      <pre_exec_args></pre_exec_args>
      <main_exec></main_exec>
@@ -155,6 +156,9 @@
      </testCase>
   </testCaseList>
 
+
+
+
 </xml>
 
 
diff --git a/cmake_targets/tools/test_helper b/cmake_targets/tools/test_helper
index 59ab9bc840..628567e762 100644
--- a/cmake_targets/tools/test_helper
+++ b/cmake_targets/tools/test_helper
@@ -33,12 +33,12 @@ xUnit_fail() {
   currtime=$(date +%s.%N)
   time=$(echo "$currtime - $XUNIT_START" | bc -l)
   xml="<testcase classname='$class' name='$test_case' run='$run_index' time='$time' RESULT='$result'></testcase>"
-  XUNIT_TESTCASES_XML="$XUNIT_TESTCASES_XML \n$xml"
+  XUNIT_TESTCASES_XML="$xml \n$XUNIT_TESTCASES_XML"
   XUNIT_FAILED=$((XUNIT_FAILED+1))
 }
 
 ## Call this after the testcase finished successfully.
-# \sa xUnit_fail()
+# \sa xUnit_success()
 # \pre xUnit_start() must have been called before
 # \param $1 classname
 # \param $2 testcase name
@@ -52,7 +52,7 @@ xUnit_success() {
   currtime=$(date +%s.%N)
   time=$(echo "$currtime - $XUNIT_START" | bc -l)
   xml="<testcase classname='$class' name='$test_case' run='$run_index' time='$time' RESULT='$result'></testcase>"
-  XUNIT_TESTCASES_XML="$XUNIT_TESTCASES_XML \n$xml"
+  XUNIT_TESTCASES_XML="$xml \n$XUNIT_TESTCASES_XML"
   XUNIT_SUCCESS=$((XUNIT_SUCCESS+1))
 }
 
-- 
GitLab