Commit 49c70ff9 authored by Rohit Gupta's avatar Rohit Gupta

fixed sudo permission issue of autotests

parent 36c9872e
...@@ -7,8 +7,11 @@ else ...@@ -7,8 +7,11 @@ else
exit 1 exit 1
fi fi
trap handle_ctrl_c INT
source $OPENAIR_DIR/cmake_targets/tools/test_helper source $OPENAIR_DIR/cmake_targets/tools/test_helper
#SUDO="sudo -E " #SUDO="sudo -E "
tdir=$OPENAIR_DIR/cmake_targets/autotests tdir=$OPENAIR_DIR/cmake_targets/autotests
rm -fr $tdir/bin $tdir/log rm -fr $tdir/bin $tdir/log
...@@ -36,7 +39,7 @@ cd $tdir ...@@ -36,7 +39,7 @@ cd $tdir
#\param $12 -> class of the test case (compilation, 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 #\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 #\param $14 -> tags to help identify the test case for readability in output xml file
test_compile() { function test_compile() {
xUnit_start xUnit_start
test_case_name=$1 test_case_name=$1
...@@ -130,8 +133,9 @@ test_compile() { ...@@ -130,8 +133,9 @@ test_compile() {
#\param $12 -> class of the test case (compilation, 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 #\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 #\param $14 -> tags to help identify the test case for readability in output xml file
#\param $15 => password for the user to run certain commands as sudo
test_compile_and_run() { function test_compile_and_run() {
xUnit_start xUnit_start
test_case_name=$1 test_case_name=$1
log_dir=$tdir/log log_dir=$tdir/log
...@@ -149,16 +153,13 @@ test_compile_and_run() { ...@@ -149,16 +153,13 @@ test_compile_and_run() {
class=${12} class=${12}
compile_prog_out=${13} compile_prog_out=${13}
tags=${14} tags=${14}
mypassword=${15}
build_dir=$tdir/$1/build build_dir=$tdir/$1/build
exec_file=$build_dir/$6 exec_file=$build_dir/$6
#Temporary log file where execution log is stored. #Temporary log file where execution log is stored.
temp_exec_log=$log_dir/temp_log.txt temp_exec_log=$log_dir/temp_log.txt
#echo "log_dir = $log_dir" #echo "log_dir = $log_dir"
#echo "log_file = $log_file" #echo "log_file = $log_file"
#echo "exec_file = $exec_file" #echo "exec_file = $exec_file"
...@@ -217,7 +218,8 @@ test_compile_and_run() { ...@@ -217,7 +218,8 @@ test_compile_and_run() {
echo "<EXECUTION LOG Run = $run_index >" >> $log_file 2>&1 echo "<EXECUTION LOG Run = $run_index >" >> $log_file 2>&1
if [ -n "$pre_exec_file" ]; then if [ -n "$pre_exec_file" ]; then
{ eval "source $pre_exec_file $pre_exec_args"; } >> $log_file 2>&1 { eval " echo '$mypassword' |sudo -S -E $pre_exec_file $pre_exec_args " ; }>> $log_file 2>&1
fi fi
echo "Executing $exec_file $main_exec_args_array_index " echo "Executing $exec_file $main_exec_args_array_index "
echo "Executing $exec_file $main_exec_args_array_index " >> $log_file echo "Executing $exec_file $main_exec_args_array_index " >> $log_file
...@@ -280,29 +282,8 @@ test_compile_and_run() { ...@@ -280,29 +282,8 @@ test_compile_and_run() {
dbin=$OPENAIR_DIR/cmake_targets/autotests/bin dbin=$OPENAIR_DIR/cmake_targets/autotests/bin
dlog=$OPENAIR_DIR/cmake_targets/autotests/log dlog=$OPENAIR_DIR/cmake_targets/autotests/log
run_test() {
case=case$1; shift
cmd=$1; shift
expected=$3; shift
echo "expected = $expected"
exit
$cmd > $dlog/$case.txt 2>&1 function print_help() {
if [ $expected = "true" ] ; then
if $* $dlog/$case.txt; then
echo_success "test $case, command: $cmd ok"
else
echo_error "test $case, command: $cmd Failed"
fi
else
if $* $dlog/$case.txt; then
echo_error "test $case, command: $cmd Failed"
else
echo_success "test $case, command: $cmd ok"
fi
fi
}
print_help() {
echo_info ' echo_info '
This program runs automated test case system for OpenAirInterface This program runs automated test case system for OpenAirInterface
You should have ubuntu 14.xx, updated, and the Linux kernel >= 3.14 You should have ubuntu 14.xx, updated, and the Linux kernel >= 3.14
...@@ -314,11 +295,13 @@ Options ...@@ -314,11 +295,13 @@ Options
' '
} }
main () { function main () {
RUN_GROUP=0 RUN_GROUP=0
test_case_group="" test_case_group=""
test_case_group_array=() test_case_group_array=()
test_case_array=() test_case_array=()
echo_info "Note that the user should be sudoer for executing certain commands, for example loading kernel modules"
read -s -p "Enter Password: " mypassword
until [ -z "$1" ] until [ -z "$1" ]
do do
...@@ -421,7 +404,7 @@ for search_expr in "${test_case_array[@]}" ...@@ -421,7 +404,7 @@ for search_expr in "${test_case_array[@]}"
if [ "$class" == "compilation" ]; then 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" "$compile_prog_out" "$tags" 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 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" "$compile_prog_out" "$tags" 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"
else else
echo "Unexpected class of test case...Exiting...." echo "Unexpected class of test case...Exiting...."
fi fi
......
...@@ -54,6 +54,8 @@ CFLAGS_PROCESSOR_USER="" ...@@ -54,6 +54,8 @@ CFLAGS_PROCESSOR_USER=""
RUN_GROUP=0 RUN_GROUP=0
TEST_CASE_GROUP="" TEST_CASE_GROUP=""
trap handle_ctrl_c INT
function print_help() { function print_help() {
echo_info ' echo_info '
This program installs OpenAirInterface Software This program installs OpenAirInterface Software
...@@ -583,13 +585,16 @@ function main() { ...@@ -583,13 +585,16 @@ function main() {
##################### #####################
if [ "$OAI_TEST" = "1" ]; then if [ "$OAI_TEST" = "1" ]; then
echo_info "10. Running OAI pre commit tests (pre-ci) ..." echo_info "10. Running OAI pre commit tests (pre-ci) ..."
echo_info "The log file for the autotests is located here: $OPENAIR_DIR/cmake_targets/autotests/log/autotests.log "
echo_info "You can hit CTRL-C any time to terminate the autotests..."
rm -fr $OPENAIR_DIR/cmake_targets/autotests/log rm -fr $OPENAIR_DIR/cmake_targets/autotests/log
mkdir -p $OPENAIR_DIR/cmake_targets/autotests/log mkdir -p $OPENAIR_DIR/cmake_targets/autotests/log
if [ "$RUN_GROUP" -eq "1" ]; then if [ "$RUN_GROUP" -eq "1" ]; then
$SUDO $OPENAIR_DIR/cmake_targets/autotests/run_exec_autotests.bash -g "$TEST_CASE_GROUP" $OPENAIR_DIR/cmake_targets/autotests/run_exec_autotests.bash -g "$TEST_CASE_GROUP" >& $OPENAIR_DIR/cmake_targets/autotests/log/autotests.log &
else else
$SUDO $OPENAIR_DIR/cmake_targets/autotests/run_exec_autotests.bash $OPENAIR_DIR/cmake_targets/autotests/run_exec_autotests.bash >& $OPENAIR_DIR/cmake_targets/autotests/log/autotests.log &
fi fi
wait
else else
echo_info "10. Bypassing the Tests ..." echo_info "10. Bypassing the Tests ..."
fi fi
......
...@@ -319,3 +319,38 @@ set_openair_env(){ ...@@ -319,3 +319,38 @@ set_openair_env(){
export OPENAIR_TARGETS=$openair_path/targets export OPENAIR_TARGETS=$openair_path/targets
} }
################################
# Function to killall the subprocesses when Ctrl-C Key is hit
###############################
function handle_ctrl_c(){
CURPID=$$
ppid=$$
arraycounter=1
echo_info "** Trapped CTRL-C. Killing all subprocesses now..."
while true
do
FORLOOP=FALSE
# Get all the child process id
for i in `ps -ef| awk '$3 == '$ppid' { print $2 }'`
do
if [ $i -ne $CURPID ] ; then
procid[$arraycounter]=$i
arraycounter=`expr $arraycounter + 1`
ppid=$i
FORLOOP=TRUE
fi
done
if [ "$FORLOOP" = "FALSE" ] ; then
arraycounter=`expr $arraycounter - 1`
## We want to kill child process id first and then parent id's
while [ $arraycounter -ne 0 ]
do
$SUDO kill -9 "${procid[$arraycounter]}" >/dev/null
arraycounter=`expr $arraycounter - 1`
done
exit
fi
done
}
File mode changed from 100644 to 100755
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment