Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
O
OpenXG-RAN
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Analytics
Analytics
CI / CD
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
ZhouShuya
OpenXG-RAN
Commits
73b08015
Commit
73b08015
authored
Nov 11, 2015
by
Rohit Gupta
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
added file for executing softmodem tests remotely
parent
11171446
Changes
1
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
878 additions
and
0 deletions
+878
-0
cmake_targets/autotests/run_exec_lte-softmodem_tests.py
cmake_targets/autotests/run_exec_lte-softmodem_tests.py
+878
-0
No files found.
cmake_targets/autotests/run_exec_lte-softmodem_tests.py
0 → 100644
View file @
73b08015
#! /usr/bin/python
#******************************************************************************
# 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
# *******************************************************************************/
# \file test01.py
# \brief test 01 for OAI
# \author Navid Nikaein
# \date 2013 - 2015
# \version 0.1
# @ingroup _test
import
tempfile
import
threading
import
sys
import
traceback
import
wave
import
os
import
time
import
datetime
import
getpass
import
math
#from time import clock
import
xml.etree.ElementTree
as
ET
import
log
import
case01
import
case02
import
case03
import
case04
import
case05
from
openair
import
*
import
paramiko
def
write_file
(
filename
,
string
,
mode
=
"w"
):
text_file
=
open
(
filename
,
mode
)
text_file
.
write
(
string
)
text_file
.
close
()
def
sftp_module
(
username
,
password
,
hostname
,
ports
,
localfile
,
remotefile
,
logfile
,
operation
):
localD
=
localfile
remoteD
=
remotefile
#fd, paramiko_logfile = tempfile.mkstemp()
#res = os.close(fd )
#paramiko logfile path should not be changed with multiple calls. The logs seem to in first file regardless
paramiko_logfile
=
os
.
path
.
expandvars
(
'$OPENAIR_DIR/cmake_targets/autotests/log/paramiko.log'
)
error
=
""
try
:
res
=
os
.
system
(
' echo > '
+
paramiko_logfile
)
paramiko
.
util
.
log_to_file
(
paramiko_logfile
)
transport
=
paramiko
.
Transport
((
hostname
,
ports
))
transport
.
connect
(
username
=
username
,
password
=
password
)
sftp
=
paramiko
.
SFTPClient
.
from_transport
(
transport
)
if
operation
==
"put"
:
sftp
.
put
(
remotepath
=
remoteD
,
localpath
=
localD
)
elif
operation
==
"get"
:
sftp
.
get
(
remotepath
=
remoteD
,
localpath
=
localD
)
else
:
print
"sftp_module: unidentified operation. Exiting now"
print
"hostname = "
+
hostname
print
"ports = "
+
ports
print
"localfile = "
+
localfile
print
"remotefile = "
+
remotefile
print
"logfile = "
+
logfile
print
"operation = "
+
operation
sys
.
exit
()
sftp
.
close
()
transport
.
close
()
except
Exception
,
e
:
error
=
' In function: '
+
sys
.
_getframe
().
f_code
.
co_name
+
': *** Caught exception: '
+
str
(
e
.
__class__
)
+
" : "
+
str
(
e
)
error
=
error
+
'
\n
username = '
+
username
+
'
\n
hostname = '
+
hostname
+
'
\n
localfile = '
+
localfile
+
'
\n
remotefile = '
+
remotefile
+
'
\n
operation = '
+
operation
+
'
\n
logfile = '
+
logfile
+
'
\n
ports = '
+
str
(
ports
)
+
'
\n
'
error
=
error
+
traceback
.
format_exc
()
res
=
os
.
system
(
'
\n
echo
\'
SFTP Module Log for Machine: <'
+
hostname
+
'> starts...
\'
>> '
+
logfile
+
' 2>&1 '
)
res
=
os
.
system
(
'cat '
+
paramiko_logfile
+
' >> '
+
logfile
+
' 2>&1
\n
'
)
write_file
(
logfile
,
error
,
"a"
)
res
=
os
.
system
(
'
\n
echo
\'
SFTP Module Log for Machine: <'
+
hostname
+
'> ends...
\'
>> '
+
logfile
+
' 2>&1
\n
'
)
def
finalize_deploy_script
(
timeout_cmd
,
terminate_missing_procs
=
'True'
):
cmd
=
'declare -i timeout_cmd='
+
str
(
timeout_cmd
)
+
'
\n
'
if
terminate_missing_procs
==
'True'
:
cmd
=
cmd
+
"""
#The code below checks if one the processes launched in background has crashed.
#If it does, then the code below terminates all the child processes created by this script
declare -i wakeup_interval=1
declare -i step=0
echo
\"
Array pid = ${array_exec_pid[@]}
\"
while [ "$step" -lt "$timeout_cmd" ]
do
declare -i break_while_loop=0
#Iterate over each process ID in array_exec_pid
for i in "${array_exec_pid[@]}"
do
numchild=`pstree -p $i | perl -ne 's/\((\d+)\)/print " $1"/ge' |wc -w`
echo "PID = $i, numchild = $numchild"
if [ "$numchild" -eq "0" ] ; then
echo "Process ID $i has finished unexpectedly. Now preparing to kill all the processes "
break_while_loop=1
break
fi
done
if [ "$break_while_loop" -eq "1" ] ; then
break
fi
step=$(( step + wakeup_interval ))
sleep $wakeup_interval
done
echo "Final time step (Duration of test case) = $step "
"""
else
:
#We do not terminate the script if one of the processes has existed prematurely
cmd
=
cmd
+
'sleep '
+
str
(
timeout_cmd
)
+
'
\n
'
return
cmd
def
update_config_file
(
oai
,
config_string
,
logdirRepo
,
python_script
):
if
config_string
:
stringArray
=
config_string
.
splitlines
()
cmd
=
""
#python_script = '$OPENAIR_DIR/targets/autotests/tools/search_repl.py'
for
string
in
stringArray
:
#split the string based on space now
string1
=
string
.
split
()
cmd
=
cmd
+
'python '
+
python_script
+
' '
+
logdirRepo
+
'/'
+
string1
[
0
]
+
' '
+
string1
[
1
]
+
' '
+
string1
[
2
]
+
'
\n
'
#cmd = cmd + 'perl -p -i -e \'s/'+ string1[1] + '\\s*=\\s*"\\S*"\\s*/' + string1[1] + ' = "' + string1[2] +'"' + '/g\' ' + logdirRepo + '/' +string1[0] + '\n'
return
cmd
#result = oai.send_recv(cmd)
#Function to clean old programs that might be running from earlier execution
#oai - parameter for making connection to machine
#programList - list of programs that must be terminated before execution of any test case
def
cleanOldPrograms
(
oai
,
programList
,
CleanUpAluLteBox
):
cmd
=
'killall -q -r '
+
programList
result
=
oai
.
send
(
cmd
,
True
)
print
"Killing old programs..."
+
result
programArray
=
programList
.
split
()
programListJoin
=
'|'
.
join
(
programArray
)
cmd
=
cleanupOldProgramsScript
+
' '
+
'
\'
'
+
programListJoin
+
'
\'
'
#result = oai.send_recv(cmd)
#print result
result
=
oai
.
send_expect_false
(
cmd
,
'Match found'
,
False
)
print
result
res
=
oai
.
send_recv
(
CleanUpAluLteBox
,
True
)
class
myThread
(
threading
.
Thread
):
def
__init__
(
self
,
threadID
,
name
,
counter
):
threading
.
Thread
.
__init__
(
self
)
self
.
threadID
=
threadID
self
.
name
=
name
self
.
counter
=
counter
def
run
(
self
):
print
"Starting "
+
self
.
name
class
oaiThread
(
threading
.
Thread
):
def
__init__
(
self
,
threadID
,
name
,
oai
,
cmd
,
sudo
,
timeout
):
threading
.
Thread
.
__init__
(
self
)
self
.
threadID
=
threadID
self
.
name
=
name
#self.counter = counter
self
.
oai
=
oai
self
.
cmd
=
cmd
self
.
sudo
=
sudo
self
.
timeout
=
timeout
def
run
(
self
):
print
"Starting "
+
self
.
name
result
=
self
.
oai
.
send_recv
(
self
.
cmd
,
self
.
sudo
,
self
.
timeout
)
print
"result = "
+
result
print
"Exiting "
+
self
.
name
def
addsudo
(
cmd
,
password
=
""
):
cmd
=
'echo
\'
'
+
password
+
'
\'
| sudo -S -E bash -c
\'
'
+
cmd
+
'
\'
'
return
cmd
#Function to handle test case class : lte-softmodem
def
handle_testcaseclass_softmodem
(
testcase
,
oldprogramList
,
oai_list
,
logdirOAI5GRepo
,
logdirOpenaircnRepo
,
MachineList
,
password
,
CleanUpAluLteBox
):
#We ignore the password sent to this function for secuirity reasons for password present in log files
#It is recommended to add a line in /etc/sudoers that looks something like below. The line below will run sudo without password prompt
# your_user_name ALL=(ALL:ALL) NOPASSWD: ALL
mypassword
=
''
#addsudo = 'echo \'' + mypassword + '\' | sudo -S -E '
addpass
=
'echo
\'
'
+
mypassword
+
'
\'
| '
user
=
getpass
.
getuser
()
testcasename
=
testcase
.
get
(
'id'
)
timeout_cmd
=
testcase
.
findtext
(
'TimeOut_cmd'
,
default
=
''
)
timeout_cmd
=
int
(
float
(
timeout_cmd
))
#Timeout_thread is more than that of cmd to have room for compilation time, etc
timeout_thread
=
timeout_cmd
+
300
nruns
=
testcase
.
findtext
(
'nruns'
,
default
=
''
)
nruns
=
int
(
float
(
nruns
))
eNBMachine
=
testcase
.
findtext
(
'eNB'
,
default
=
''
)
eNB_config_file
=
testcase
.
findtext
(
'eNB_config_file'
,
default
=
''
)
eNB_compile_prog
=
testcase
.
findtext
(
'eNB_compile_prog'
,
default
=
''
)
eNB_compile_prog_args
=
testcase
.
findtext
(
'eNB_compile_prog_args'
,
default
=
''
)
eNB_pre_exec
=
testcase
.
findtext
(
'eNB_pre_exec'
,
default
=
''
)
eNB_pre_exec_args
=
testcase
.
findtext
(
'eNB_pre_exec_args'
,
default
=
''
)
eNB_main_exec
=
testcase
.
findtext
(
'eNB_main_exec'
,
default
=
''
)
eNB_main_exec_args
=
testcase
.
findtext
(
'eNB_main_exec_args'
,
default
=
''
)
eNB_traffic_exec
=
testcase
.
findtext
(
'eNB_traffic_exec'
,
default
=
''
)
eNB_traffic_exec_args
=
testcase
.
findtext
(
'eNB_traffic_exec_args'
,
default
=
''
)
eNB_terminate_missing_procs
=
testcase
.
findtext
(
'eNB_terminate_missing_procs'
,
default
=
'True'
)
UEMachine
=
testcase
.
findtext
(
'UE'
,
default
=
''
)
UE_config_file
=
testcase
.
findtext
(
'UE_config_file'
,
default
=
''
)
UE_compile_prog
=
testcase
.
findtext
(
'UE_compile_prog'
,
default
=
''
)
UE_compile_prog_args
=
testcase
.
findtext
(
'UE_compile_prog_args'
,
default
=
''
)
UE_pre_exec
=
testcase
.
findtext
(
'UE_pre_exec'
,
default
=
''
)
UE_pre_exec_args
=
testcase
.
findtext
(
'UE_pre_exec_args'
,
default
=
''
)
UE_main_exec
=
testcase
.
findtext
(
'UE_main_exec'
,
default
=
''
)
UE_main_exec_args
=
testcase
.
findtext
(
'UE_main_exec_args'
,
default
=
''
)
UE_traffic_exec
=
testcase
.
findtext
(
'UE_traffic_exec'
,
default
=
''
)
UE_traffic_exec_args
=
testcase
.
findtext
(
'UE_traffic_exec_args'
,
default
=
''
)
UE_terminate_missing_procs
=
testcase
.
findtext
(
'UE_terminate_missing_procs'
,
default
=
'True'
)
EPCMachine
=
testcase
.
findtext
(
'EPC'
,
default
=
''
)
EPC_config_file
=
testcase
.
findtext
(
'EPC_config_file'
,
default
=
''
)
EPC_compile_prog
=
testcase
.
findtext
(
'EPC_compile_prog'
,
default
=
''
)
EPC_compile_prog_args
=
testcase
.
findtext
(
'EPC_compile_prog_args'
,
default
=
''
)
HSS_compile_prog
=
testcase
.
findtext
(
'HSS_compile_prog'
,
default
=
''
)
HSS_compile_prog_args
=
testcase
.
findtext
(
'HSS_compile_prog_args'
,
default
=
''
)
EPC_pre_exec
=
testcase
.
findtext
(
'EPC_pre_exec'
,
default
=
''
)
EPC_pre_exec_args
=
testcase
.
findtext
(
'EPC_pre_exec_args'
,
default
=
''
)
EPC_main_exec
=
testcase
.
findtext
(
'EPC_main_exec'
,
default
=
''
)
EPC_main_exec_args
=
testcase
.
findtext
(
'EPC_main_exec_args'
,
default
=
''
)
HSS_main_exec
=
testcase
.
findtext
(
'HSS_main_exec'
,
default
=
''
)
HSS_main_exec_args
=
testcase
.
findtext
(
'HSS_main_exec_args'
,
default
=
''
)
EPC_traffic_exec
=
testcase
.
findtext
(
'EPC_traffic_exec'
,
default
=
''
)
EPC_traffic_exec_args
=
testcase
.
findtext
(
'EPC_traffic_exec_args'
,
default
=
''
)
EPC_terminate_missing_procs
=
testcase
.
findtext
(
'EPC_terminate_missing_procs'
,
default
=
'True'
)
index_eNBMachine
=
MachineList
.
index
(
eNBMachine
)
index_UEMachine
=
MachineList
.
index
(
UEMachine
)
index_EPCMachine
=
MachineList
.
index
(
EPCMachine
)
oai_eNB
=
oai_list
[
index_eNBMachine
]
oai_UE
=
oai_list
[
index_UEMachine
]
#We need to create two ssh sessions to avoid race conditions
if
index_eNBMachine
==
index_EPCMachine
:
oai_EPC
=
openair
(
'localdomain'
,
EPCMachine
)
oai_EPC
.
connect
(
user
,
password
)
else
:
oai_EPC
=
oai_list
[
index_EPCMachine
]
cleanOldPrograms
(
oai_eNB
,
oldprogramList
,
CleanUpAluLteBox
)
cleanOldPrograms
(
oai_UE
,
oldprogramList
,
CleanUpAluLteBox
)
cleanOldPrograms
(
oai_EPC
,
oldprogramList
,
CleanUpAluLteBox
)
logdir_eNB
=
logdirOAI5GRepo
+
'/cmake_targets/autotests/log/'
+
testcasename
logdir_UE
=
logdirOAI5GRepo
+
'/cmake_targets/autotests/log/'
+
testcasename
logdir_EPC
=
logdirOpenaircnRepo
+
'/TEST/autotests/log/'
+
testcasename
logdir_local
=
os
.
environ
.
get
(
'OPENAIR_DIR'
)
if
logdir_local
is
None
:
print
"Environment variable OPENAIR_DIR not set correctly"
sys
.
exit
()
#Make the log directory of test case
#cmd = 'mkdir -p ' + logdir_eNB
#result = oai_eNB.send_recv(cmd)
#cmd = 'mkdir -p ' + logdir_UE
#result = oai_UE.send_recv(cmd)
#cmd = 'mkdir -p ' + logdir_EPC
#result = oai_EPC.send_recv(cmd)
print
"Updating the config files for ENB/UE/EPC..."
#updating the eNB/UE/EPC configuration file from the test case
#update_config_file(oai_eNB, eNB_config_file, logdirOAI5GRepo)
#update_config_file(oai_UE, UE_config_file, logdirOAI5GRepo)
#update_config_file(oai_EPC, EPC_config_file, logdirOpenaircnRepo)
for
run
in
range
(
0
,
nruns
):
logdir_eNB
=
logdirOAI5GRepo
+
'/cmake_targets/autotests/log/'
+
testcasename
+
'/run_'
+
str
(
run
)
logdir_UE
=
logdirOAI5GRepo
+
'/cmake_targets/autotests/log/'
+
testcasename
+
'/run_'
+
str
(
run
)
logdir_EPC
=
logdirOpenaircnRepo
+
'/TEST/autotests/log/'
+
testcasename
+
'/run_'
+
str
(
run
)
logdir_local_testcase
=
logdir_local
+
'/cmake_targets/autotests/log/'
+
testcasename
+
'/run_'
+
str
(
run
)
#Make the log directory of test case
cmd
=
'rm -fr '
+
logdir_eNB
+
' ; mkdir -p '
+
logdir_eNB
result
=
oai_eNB
.
send_recv
(
cmd
)
cmd
=
'rm -fr '
+
logdir_UE
+
' ; mkdir -p '
+
logdir_UE
result
=
oai_UE
.
send_recv
(
cmd
)
cmd
=
'rm -fr '
+
logdir_EPC
+
'; mkdir -p '
+
logdir_EPC
result
=
oai_EPC
.
send_recv
(
cmd
)
cmd
=
' rm -fr '
+
logdir_local_testcase
+
' ; mkdir -p '
+
logdir_local_testcase
result
=
os
.
system
(
cmd
)
logfile_compile_eNB
=
logdir_eNB
+
'/eNB_compile'
+
'_'
+
str
(
run
)
+
'_.log'
logfile_exec_eNB
=
logdir_eNB
+
'/eNB_exec'
+
'_'
+
str
(
run
)
+
'_.log'
logfile_pre_exec_eNB
=
logdir_eNB
+
'/eNB_pre_exec'
+
'_'
+
str
(
run
)
+
'_.log'
logfile_traffic_eNB
=
logdir_eNB
+
'/eNB_traffic'
+
'_'
+
str
(
run
)
+
'_.log'
logfile_task_eNB_out
=
logdir_eNB
+
'/eNB_task_out'
+
'_'
+
str
(
run
)
+
'_.log'
logfile_task_eNB
=
logdir_local_testcase
+
'/eNB_task'
+
'_'
+
str
(
run
)
+
'_.log'
task_eNB
=
' (
\n
'
task_eNB
=
task_eNB
+
'cd '
+
logdirOAI5GRepo
+
' ; source oaienv ; source cmake_targets/tools/build_helper
\n
'
task_eNB
=
task_eNB
+
'env |grep OPENAIR
\n
'
task_eNB
=
task_eNB
+
update_config_file
(
oai_eNB
,
eNB_config_file
,
logdirOAI5GRepo
,
'$OPENAIR_DIR/cmake_targets/autotests/tools/search_repl.py'
)
+
'
\n
'
if
eNB_compile_prog
!=
""
:
task_eNB
=
task_eNB
+
' ( '
+
eNB_compile_prog
+
' '
+
eNB_compile_prog_args
+
' ) > '
+
logfile_compile_eNB
+
' 2>&1
\n
'
if
eNB_pre_exec
!=
""
:
task_eNB
=
task_eNB
+
' ( '
+
eNB_pre_exec
+
' '
+
eNB_pre_exec_args
+
' ) > '
+
logfile_pre_exec_eNB
+
' 2>&1
\n
'
if
eNB_main_exec
!=
""
:
task_eNB
=
task_eNB
+
' ( '
+
addsudo
(
eNB_main_exec
+
' '
+
eNB_main_exec_args
,
mypassword
)
+
' ) > '
+
logfile_exec_eNB
+
' 2>&1 &
\n
'
task_eNB
=
task_eNB
+
'array_exec_pid+=($!)
\n
'
task_eNB
=
task_eNB
+
'echo eNB_main_exec PID = $!
\n
'
if
eNB_traffic_exec
!=
""
:
task_eNB
=
task_eNB
+
' ( '
+
eNB_traffic_exec
+
' '
+
eNB_traffic_exec_args
+
' ) > '
+
logfile_traffic_eNB
+
' 2>&1 &
\n
'
task_eNB
=
task_eNB
+
'array_exec_pid+=($!)
\n
'
task_eNB
=
task_eNB
+
'echo eNB_traffic_exec PID = $!
\n
'
#terminate the eNB test case after timeout_cmd seconds
task_eNB
=
task_eNB
+
finalize_deploy_script
(
timeout_cmd
,
eNB_terminate_missing_procs
)
+
'
\n
'
#task_eNB = task_eNB + 'sleep ' + str(timeout_cmd) + ' \n'
task_eNB
=
task_eNB
+
'handle_ctrl_c'
+
'
\n
'
task_eNB
=
task_eNB
+
' ) > '
+
logfile_task_eNB_out
+
' 2>&1 '
write_file
(
logfile_task_eNB
,
task_eNB
,
mode
=
"w"
)
#task_eNB = 'echo \" ' + task_eNB + '\" > ' + logfile_script_eNB + ' 2>&1 ; ' + task_eNB
logfile_compile_UE
=
logdir_UE
+
'/UE_compile'
+
'_'
+
str
(
run
)
+
'_.log'
logfile_exec_UE
=
logdir_UE
+
'/UE_exec'
+
'_'
+
str
(
run
)
+
'_.log'
logfile_pre_exec_UE
=
logdir_UE
+
'/UE_pre_exec'
+
'_'
+
str
(
run
)
+
'_.log'
logfile_traffic_UE
=
logdir_UE
+
'/UE_traffic'
+
'_'
+
str
(
run
)
+
'_.log'
logfile_task_UE_out
=
logdir_UE
+
'/UE_task_out'
+
'_'
+
str
(
run
)
+
'_.log'
logfile_task_UE
=
logdir_local_testcase
+
'/UE_task'
+
'_'
+
str
(
run
)
+
'_.log'
task_UE
=
' (
\n
'
task_UE
=
task_UE
+
'array_exec_pid=()'
+
'
\n
'
task_UE
=
task_UE
+
'cd '
+
logdirOAI5GRepo
+
'
\n
'
task_UE
=
task_UE
+
'source oaienv
\n
'
task_UE
=
task_UE
+
'source cmake_targets/tools/build_helper
\n
'
task_UE
=
task_UE
+
'env |grep OPENAIR
\n
'
task_UE
=
task_UE
+
update_config_file
(
oai_UE
,
UE_config_file
,
logdirOAI5GRepo
,
'$OPENAIR_DIR/cmake_targets/autotests/tools/search_repl.py'
)
+
'
\n
'
if
UE_compile_prog
!=
""
:
task_UE
=
task_UE
+
' ( '
+
UE_compile_prog
+
' '
+
UE_compile_prog_args
+
' ) > '
+
logfile_compile_UE
+
' 2>&1
\n
'
if
UE_pre_exec
!=
""
:
task_UE
=
task_UE
+
' ( '
+
UE_pre_exec
+
' '
+
UE_pre_exec_args
+
' ) > '
+
logfile_pre_exec_UE
+
' 2>&1
\n
'
if
UE_main_exec
!=
""
:
task_UE
=
task_UE
+
' ( '
+
addsudo
(
UE_main_exec
+
' '
+
UE_main_exec_args
,
mypassword
)
+
' ) > '
+
logfile_exec_UE
+
' 2>&1 &
\n
'
task_UE
=
task_UE
+
'array_exec_pid+=($!)
\n
'
task_UE
=
task_UE
+
'echo UE_main_exec PID = $!
\n
'
if
UE_traffic_exec
!=
""
:
task_UE
=
task_UE
+
' ( '
+
UE_traffic_exec
+
' '
+
UE_traffic_exec_args
+
' ) >'
+
logfile_traffic_UE
+
' 2>&1 &
\n
'
task_UE
=
task_UE
+
'array_exec_pid+=($!)
\n
'
task_UE
=
task_UE
+
'echo UE_traffic_exec PID = $!
\n
'
#terminate the UE test case after timeout_cmd seconds
task_UE
=
task_UE
+
finalize_deploy_script
(
timeout_cmd
,
UE_terminate_missing_procs
)
+
'
\n
'
#task_UE = task_UE + 'sleep ' + str(timeout_cmd) + ' \n'
task_UE
=
task_UE
+
'handle_ctrl_c'
+
'
\n
'
task_UE
=
task_UE
+
' ) > '
+
logfile_task_UE_out
+
' 2>&1 '
write_file
(
logfile_task_UE
,
task_UE
,
mode
=
"w"
)
#task_UE = 'echo \" ' + task_UE + '\" > ' + logfile_script_UE + ' 2>&1 ; ' + task_UE
logfile_compile_EPC
=
logdir_EPC
+
'/EPC_compile'
+
'_'
+
str
(
run
)
+
'_.log'
logfile_compile_HSS
=
logdir_EPC
+
'/HSS_compile'
+
'_'
+
str
(
run
)
+
'_.log'
logfile_exec_EPC
=
logdir_EPC
+
'/EPC_exec'
+
'_'
+
str
(
run
)
+
'_.log'
logfile_pre_exec_EPC
=
logdir_EPC
+
'/EPC_pre_exec'
+
'_'
+
str
(
run
)
+
'_.log'
logfile_exec_HSS
=
logdir_EPC
+
'/HSS_exec'
+
'_'
+
str
(
run
)
+
'_.log'
logfile_traffic_EPC
=
logdir_EPC
+
'/EPC_traffic'
+
'_'
+
str
(
run
)
+
'_.log'
logfile_task_EPC_out
=
logdir_EPC
+
'/EPC_task_out'
+
'_'
+
str
(
run
)
+
'_.log'
logfile_task_EPC
=
logdir_local_testcase
+
'/EPC_task'
+
'_'
+
str
(
run
)
+
'_.log'
task_EPC
=
' (
\n
'
task_EPC
=
task_EPC
+
'array_exec_pid=()'
+
'
\n
'
task_EPC
=
task_EPC
+
'cd '
+
logdirOpenaircnRepo
+
'
\n
'
task_EPC
=
task_EPC
+
update_config_file
(
oai_EPC
,
EPC_config_file
,
logdirOpenaircnRepo
,
logdirOpenaircnRepo
+
'/TEST/autotests/tools/search_repl.py'
)
+
'
\n
'
task_EPC
=
task_EPC
+
'source BUILD/TOOLS/build_helper
\n
'
if
EPC_compile_prog
!=
""
:
task_EPC
=
task_EPC
+
'('
+
EPC_compile_prog
+
' '
+
EPC_compile_prog_args
+
' ) > '
+
logfile_compile_EPC
+
' 2>&1
\n
'
if
HSS_compile_prog
!=
""
:
task_EPC
=
task_EPC
+
'('
+
HSS_compile_prog
+
' '
+
HSS_compile_prog_args
+
' ) > '
+
logfile_compile_HSS
+
' 2>&1
\n
'
if
EPC_pre_exec
!=
""
:
task_EPC
=
task_EPC
+
' ( '
+
EPC_pre_exec
+
' '
+
EPC_pre_exec_args
+
' ) > '
+
logfile_pre_exec_EPC
+
' 2>&1
\n
'
if
EPC_main_exec
!=
""
:
task_EPC
=
task_EPC
+
'('
+
addsudo
(
EPC_main_exec
+
' '
+
EPC_main_exec_args
,
mypassword
)
+
' ) > '
+
logfile_exec_EPC
+
' 2>&1 &
\n
'
task_EPC
=
task_EPC
+
'array_exec_pid+=($!)
\n
'
task_EPC
=
task_EPC
+
'echo EPC_main_exec PID = $!
\n
'
if
HSS_main_exec
!=
""
:
task_EPC
=
task_EPC
+
'('
+
addsudo
(
HSS_main_exec
+
' '
+
HSS_main_exec_args
,
mypassword
)
+
' ) > '
+
logfile_exec_HSS
+
' 2>&1 &
\n
'
task_EPC
=
task_EPC
+
'array_exec_pid+=($!)
\n
'
task_EPC
=
task_EPC
+
'echo HSS_main_exec PID = $!
\n
'
if
EPC_traffic_exec
!=
""
:
task_EPC
=
task_EPC
+
'('
+
EPC_traffic_exec
+
' '
+
EPC_traffic_exec_args
+
' ) > '
+
logfile_traffic_EPC
+
' 2>&1 &
\n
'
task_EPC
=
task_EPC
+
'array_exec_pid+=($!)
\n
'
task_EPC
=
task_EPC
+
'echo EPC_traffic_exec PID = $!
\n
'
#terminate the EPC test case after timeout_cmd seconds
task_EPC
=
task_EPC
+
finalize_deploy_script
(
timeout_cmd
,
EPC_terminate_missing_procs
)
+
'
\n
'
#task_EPC = task_EPC + 'sleep ' + str(timeout_cmd) + '\n'
task_EPC
=
task_EPC
+
'handle_ctrl_c'
'
\n
'
task_EPC
=
task_EPC
+
' ) > '
+
logfile_task_EPC_out
+
' 2>&1 '
write_file
(
logfile_task_EPC
,
task_EPC
,
mode
=
"w"
)
thread_EPC
=
oaiThread
(
1
,
"EPC_thread"
,
oai_EPC
,
task_EPC
,
False
,
timeout_thread
)
thread_eNB
=
oaiThread
(
2
,
"eNB_thread"
,
oai_eNB
,
task_eNB
,
False
,
timeout_thread
)
thread_UE
=
oaiThread
(
3
,
"UE_thread"
,
oai_UE
,
task_UE
,
False
,
timeout_thread
)
threads
=
[]
threads
.
append
(
thread_eNB
)
threads
.
append
(
thread_UE
)
threads
.
append
(
thread_EPC
)
# Start new Threads
thread_eNB
.
start
()
thread_UE
.
start
()
thread_EPC
.
start
()
#Wait for all the compile threads to complete
for
t
in
threads
:
t
.
join
()
#Now we get the log files from remote machines on the local machine
cleanOldPrograms
(
oai_eNB
,
oldprogramList
,
CleanUpAluLteBox
)
cleanOldPrograms
(
oai_UE
,
oldprogramList
,
CleanUpAluLteBox
)
cleanOldPrograms
(
oai_EPC
,
oldprogramList
,
CleanUpAluLteBox
)
localfile
=
logdir_local_testcase
+
'/eNB_compile'
+
'_'
+
str
(
run
)
+
'_.log'
remotefile
=
logdir_eNB
+
'/eNB_compile'
+
'_'
+
str
(
run
)
+
'_.log'
sftp_log
=
os
.
path
.
expandvars
(
logdir_local_testcase
+
'/sftp_module.log'
)
ports
=
22
sftp_module
(
user
,
password
,
eNBMachine
,
ports
,
localfile
,
remotefile
,
sftp_log
,
"get"
)
localfile
=
logdir_local_testcase
+
'/eNB_exec'
+
'_'
+
str
(
run
)
+
'_.log'
remotefile
=
logdir_eNB
+
'/eNB_exec'
+
'_'
+
str
(
run
)
+
'_.log'
sftp_module
(
user
,
password
,
eNBMachine
,
ports
,
localfile
,
remotefile
,
sftp_log
,
"get"
)
localfile
=
logdir_local_testcase
+
'/eNB_pre_exec'
+
'_'
+
str
(
run
)
+
'_.log'
remotefile
=
logdir_eNB
+
'/eNB_pre_exec'
+
'_'
+
str
(
run
)
+
'_.log'
sftp_module
(
user
,
password
,
eNBMachine
,
ports
,
localfile
,
remotefile
,
sftp_log
,
"get"
)
localfile
=
logdir_local_testcase
+
'/eNB_traffic'
+
'_'
+
str
(
run
)
+
'_.log'
remotefile
=
logdir_eNB
+
'/eNB_traffic'
+
'_'
+
str
(
run
)
+
'_.log'
sftp_module
(
user
,
password
,
eNBMachine
,
ports
,
localfile
,
remotefile
,
sftp_log
,
"get"
)
localfile
=
logdir_local_testcase
+
'/eNB_task_out'
+
'_'
+
str
(
run
)
+
'_.log'
remotefile
=
logdir_eNB
+
'/eNB_task_out'
+
'_'
+
str
(
run
)
+
'_.log'
sftp_module
(
user
,
password
,
eNBMachine
,
ports
,
localfile
,
remotefile
,
sftp_log
,
"get"
)
localfile
=
logdir_local_testcase
+
'/UE_compile'
+
'_'
+
str
(
run
)
+
'_.log'
remotefile
=
logdir_UE
+
'/UE_compile'
+
'_'
+
str
(
run
)
+
'_.log'
sftp_module
(
user
,
password
,
UEMachine
,
ports
,
localfile
,
remotefile
,
sftp_log
,
"get"
)
localfile
=
logdir_local_testcase
+
'/UE_exec'
+
'_'
+
str
(
run
)
+
'_.log'
remotefile
=
logdir_UE
+
'/UE_exec'
+
'_'
+
str
(
run
)
+
'_.log'
sftp_module
(
user
,
password
,
UEMachine
,
ports
,
localfile
,
remotefile
,
sftp_log
,
"get"
)
localfile
=
logdir_local_testcase
+
'/UE_pre_exec'
+
'_'
+
str
(
run
)
+
'_.log'
remotefile
=
logdir_UE
+
'/UE_pre_exec'
+
'_'
+
str
(
run
)
+
'_.log'
sftp_module
(
user
,
password
,
UEMachine
,
ports
,
localfile
,
remotefile
,
sftp_log
,
"get"
)
localfile
=
logdir_local_testcase
+
'/UE_traffic'
+
'_'
+
str
(
run
)
+
'_.log'
remotefile
=
logdir_UE
+
'/UE_traffic'
+
'_'
+
str
(
run
)
+
'_.log'
sftp_module
(
user
,
password
,
UEMachine
,
ports
,
localfile
,
remotefile
,
sftp_log
,
"get"
)
localfile
=
logdir_local_testcase
+
'/UE_task_out'
+
'_'
+
str
(
run
)
+
'_.log'
remotefile
=
logdir_UE
+
'/UE_task_out'
+
'_'
+
str
(
run
)
+
'_.log'
sftp_module
(
user
,
password
,
UEMachine
,
ports
,
localfile
,
remotefile
,
sftp_log
,
"get"
)
localfile
=
logdir_local_testcase
+
'/EPC_compile'
+
'_'
+
str
(
run
)
+
'_.log'
remotefile
=
logdir_EPC
+
'/EPC_compile'
+
'_'
+
str
(
run
)
+
'_.log'
sftp_module
(
user
,
password
,
EPCMachine
,
ports
,
localfile
,
remotefile
,
sftp_log
,
"get"
)
localfile
=
logdir_local_testcase
+
'/EPC_exec'
+
'_'
+
str
(
run
)
+
'_.log'
remotefile
=
logdir_EPC
+
'/EPC_exec'
+
'_'
+
str
(
run
)
+
'_.log'
sftp_module
(
user
,
password
,
EPCMachine
,
ports
,
localfile
,
remotefile
,
sftp_log
,
"get"
)
localfile
=
logdir_local_testcase
+
'/HSS_compile'
+
'_'
+
str
(
run
)
+
'_.log'
remotefile
=
logdir_EPC
+
'/HSS_compile'
+
'_'
+
str
(
run
)
+
'_.log'
sftp_module
(
user
,
password
,
EPCMachine
,
ports
,
localfile
,
remotefile
,
sftp_log
,
"get"
)
localfile
=
logdir_local_testcase
+
'/HSS_exec'
+
'_'
+
str
(
run
)
+
'_.log'
remotefile
=
logdir_EPC
+
'/HSS_exec'
+
'_'
+
str
(
run
)
+
'_.log'
sftp_module
(
user
,
password
,
EPCMachine
,
ports
,
localfile
,
remotefile
,
sftp_log
,
"get"
)
localfile
=
logdir_local_testcase
+
'/EPC_pre_exec'
+
'_'
+
str
(
run
)
+
'_.log'
remotefile
=
logdir_EPC
+
'/EPC_pre_exec'
+
'_'
+
str
(
run
)
+
'_.log'
sftp_module
(
user
,
password
,
EPCMachine
,
ports
,
localfile
,
remotefile
,
sftp_log
,
"get"
)
localfile
=
logdir_local_testcase
+
'/EPC_traffic'
+
'_'
+
str
(
run
)
+
'_.log'
remotefile
=
logdir_EPC
+
'/EPC_traffic'
+
'_'
+
str
(
run
)
+
'_.log'
sftp_module
(
user
,
password
,
EPCMachine
,
ports
,
localfile
,
remotefile
,
sftp_log
,
"get"
)
localfile
=
logdir_local_testcase
+
'/EPC_task_out'
+
'_'
+
str
(
run
)
+
'_.log'
remotefile
=
logdir_EPC
+
'/EPC_task_out'
+
'_'
+
str
(
run
)
+
'_.log'
sftp_module
(
user
,
password
,
EPCMachine
,
ports
,
localfile
,
remotefile
,
sftp_log
,
"get"
)
#We need to close the new ssh session that was created
if
index_eNBMachine
==
index_EPCMachine
:
oai_EPC
.
disconnect
()
#thread1 = myThread(1, "Thread-1", 1)
debug
=
0
pw
=
''
i
=
0
dlsim
=
0
localshell
=
0
is_compiled
=
0
timeout
=
2000
xmlInputFile
=
"./test_case_list.xml"
NFSResultsDir
=
'/mnt/sradio'
cleanupOldProgramsScript
=
'$OPENAIR_DIR/cmake_targets/autotests/tools/remove_old_programs.bash'
logdir
=
'/tmp/'
+
'OAITestFrameWork-'
+
getpass
.
getuser
()
+
'/'
logdirOAI5GRepo
=
logdir
+
'openairinterface5g/'
logdirOpenaircnRepo
=
logdir
+
'openair-cn/'
openairdir_local
=
os
.
environ
.
get
(
'OPENAIR_DIR'
)
if
openairdir_local
is
None
:
print
"Environment variable OPENAIR_DIR not set correctly"
sys
.
exit
()
locallogdir
=
openairdir_local
+
'/cmake_targets/autotests/log/'
#Remove the contents of local log directory
os
.
system
(
' rm -fr '
+
locallogdir
+
'; mkdir -p '
+
locallogdir
)
for
arg
in
sys
.
argv
:
if
arg
==
'-d'
:
debug
=
1
elif
arg
==
'-dd'
:
debug
=
2
elif
arg
==
'-p'
:
prompt2
=
sys
.
argv
[
i
+
1
]
elif
arg
==
'-w'
:
pw
=
sys
.
argv
[
i
+
1
]
elif
arg
==
'-P'
:
dlsim
=
1
elif
arg
==
'-l'
:
localshell
=
1
elif
arg
==
'-c'
:
is_compiled
=
1
elif
arg
==
'-t'
:
timeout
=
sys
.
argv
[
i
+
1
]
elif
arg
==
'-h'
:
print
"-d: low debug level"
print
"-dd: high debug level"
print
"-p: set the prompt"
print
"-w: set the password for ssh to localhost"
print
"-l: use local shell instead of ssh connection"
print
"-t: set the time out in second for commands"
sys
.
exit
()
i
=
i
+
1
try
:
os
.
environ
[
"OPENAIR1_DIR"
]
except
KeyError
:
print
"Please set the environment variable OPENAIR1_DIR in the .bashrc"
sys
.
exit
(
1
)
try
:
os
.
environ
[
"OPENAIR2_DIR"
]
except
KeyError
:
print
"Please set the environment variable OPENAIR2_DIR in the .bashrc"
sys
.
exit
(
1
)
try
:
os
.
environ
[
"OPENAIR_TARGETS"
]
except
KeyError
:
print
"Please set the environment variable OPENAIR_TARGETS in the .bashrc"
sys
.
exit
(
1
)
# get the oai object
host
=
os
.
uname
()[
1
]
#oai = openair('localdomain','calisson')
oai_list
=
{}
#start_time = time.time() # datetime.datetime.now()
user
=
getpass
.
getuser
()
print
"host = "
+
host
print
"user = "
+
user
pw
=
getpass
.
getpass
()
#Now we parse the xml file for basic configuration
xmlTree
=
ET
.
parse
(
xmlInputFile
)
xmlRoot
=
xmlTree
.
getroot
()
MachineList
=
xmlRoot
.
findtext
(
'MachineList'
,
default
=
''
)
NFSResultsShare
=
xmlRoot
.
findtext
(
'NFSResultsShare'
,
default
=
''
)
GitOpenaircnRepo
=
xmlRoot
.
findtext
(
'GitOpenair-cnRepo'
,
default
=
''
)
GitOAI5GRepo
=
xmlRoot
.
findtext
(
'GitOAI5GRepo'
,
default
=
''
)
GitOAI5GRepoBranch
=
xmlRoot
.
findtext
(
'GitOAI5GRepoBranch'
,
default
=
''
)
GitOpenaircnRepoBranch
=
xmlRoot
.
findtext
(
'GitOpenair-cnRepoBranch'
,
default
=
''
)
CleanUpOldProgs
=
xmlRoot
.
findtext
(
'CleanUpOldProgs'
,
default
=
''
)
CleanUpAluLteBox
=
xmlRoot
.
findtext
(
'CleanUpAluLteBox'
,
default
=
''
)
print
"MachineList = "
+
MachineList
print
"GitOpenair-cnRepo = "
+
GitOpenaircnRepo
print
"GitOAI5GRepo = "
+
GitOAI5GRepo
print
"GitOAI5GBranch = "
+
GitOAI5GRepoBranch
print
"GitOpenaircnRepoBranch = "
+
GitOpenaircnRepoBranch
print
"NFSResultsShare = "
+
NFSResultsShare
cmd
=
"git show-ref --heads -s "
+
GitOAI5GRepoBranch
GitOAI5GHeadVersion
=
subprocess
.
check_output
([
cmd
],
shell
=
True
)
print
"GitOAI5GHeadVersion = "
+
GitOAI5GHeadVersion
print
"CleanUpOldProgs = "
+
CleanUpOldProgs
MachineList
=
MachineList
.
split
()
index
=
0
for
machine
in
MachineList
:
oai_list
[
index
]
=
openair
(
'localdomain'
,
machine
)
index
=
index
+
1
#myThread (1,"sddsf", 1)
#thread1 = oaiThread1(1, "Thread-1", 1)
#def __init__(self, threadID, name, counter, oai, cmd, sudo, timeout):
#sys.exit()
print
"
\n
Testing the sanity of machines used for testing..."
if
localshell
==
0
:
try
:
index
=
0
for
machine
in
MachineList
:
print
'
\n
******* Note that the user <'
+
user
+
'> should be a sudoer *******
\n
'
print
'******* Connecting to the machine <'
+
machine
+
'> to perform the test *******
\n
'
if
not
pw
:
print
"username: "
+
user
#pw = getpass.getpass()
#print "password: " + pw
else
:
print
"username: "
+
user
#print "password: " + pw
# issues in ubuntu 12.04
oai_list
[
index
].
connect
(
user
,
pw
)
#print "result = " + result
#print '\nCleaning Older running programs : ' + CleanUpOldProgs
#cleanOldPrograms(oai_list[index], CleanUpOldProgs)
print
'
\n
Checking for sudo permissions on machine <'
+
machine
+
'>...'
result
=
oai_list
[
index
].
send_expect_false
(
'sudo -S -v'
,
'may not run sudo'
,
True
)
print
"Sudo permissions..."
+
result
print
'
\n
Cleaning Older running programs : '
+
CleanUpOldProgs
cleanOldPrograms
(
oai_list
[
index
],
CleanUpOldProgs
,
CleanUpAluLteBox
)
result
=
oai_list
[
index
].
send
(
'mount '
+
NFSResultsDir
,
True
)
print
"Mounting NFS Share "
+
NFSResultsDir
+
"..."
+
result
# Check if NFS share is mounted correctly.
print
'Checking if NFS Share<'
+
NFSResultsDir
+
'> is mounted correctly...'
#result = oai_list[index].send_expect('mount | grep ' + NFSResultsDir, NFSResultsDir )
cmd
=
'if grep -qs '
+
NFSResultsDir
+
' /proc/mounts; then echo
\'
'
+
NFSResultsDir
+
' is mounted
\'
; fi'
search_expr
=
NFSResultsDir
+
' is mounted'
print
"cmd = "
+
cmd
print
"search_expr = "
+
search_expr
result
=
oai_list
[
index
].
send_expect
(
cmd
,
search_expr
)
print
"Mount NFS_Results_Dir..."
+
result
index
=
index
+
1
#oai.connect2(user,pw)
#oai.get_shell()
except
:
print
'Fail to connect to the machine: '
+
machine
sys
.
exit
(
1
)
else
:
pw
=
''
oai_list
[
0
].
connect_localshell
()
cpu_freq
=
int
(
oai_list
[
0
].
cpu_freq
())
if
timeout
==
2000
:
if
cpu_freq
<=
2000
:
timeout
=
3000
elif
cpu_freq
<
2700
:
timeout
=
2000
elif
cpu_freq
<
3300
:
timeout
=
1500
print
"cpu freq(MHz): "
+
str
(
cpu_freq
)
+
"timeout(s): "
+
str
(
timeout
)
# The log files are stored in branch/version/
#result = oai_list[0].send('uname -a ' )
#print result
#We now prepare the machines for testing
#index=0
for
index
in
oai_list
:
try
:
print
"setting up machine: "
+
MachineList
[
index
]
#print oai_list[oai].send_recv('echo \''+pw+'\' |sudo -S -v')
#print oai_list[oai].send_recv('sudo su')
#print oai_list[oai].send_recv('who am i')
#cleanUpPrograms(oai_list[oai]
cmd
=
'mkdir -p '
+
logdir
+
' ; rm -fr '
+
logdir
+
'/*'
result
=
oai_list
[
index
].
send_recv
(
cmd
)
setuplogfile
=
logdir
+
'/setup_log_'
+
MachineList
[
index
]
+
'_.txt'
setup_script
=
locallogdir
+
'/setup_script_'
+
MachineList
[
index
]
+
'_.txt'
cmd
=
' (
\n
'
#cmd = cmd + 'rm -fR ' + logdir + '\n'
#cmd = cmd + 'mkdir -p ' + logdir + '\n'
cmd
=
cmd
+
'cd '
+
logdir
+
'
\n
'
cmd
=
cmd
+
'git clone '
+
GitOAI5GRepo
+
'
\n
'
cmd
=
cmd
+
'git clone '
+
GitOpenaircnRepo
+
'
\n
'
cmd
=
cmd
+
'cd '
+
logdirOAI5GRepo
+
'
\n
'
cmd
=
cmd
+
'git checkout '
+
GitOAI5GHeadVersion
+
'
\n
'
cmd
=
cmd
+
'source oaienv'
+
'
\n
'
cmd
=
cmd
+
'cd '
+
logdirOpenaircnRepo
+
'
\n
'
cmd
=
cmd
+
'git checkout '
+
GitOpenaircnRepoBranch
+
'
\n
'
cmd
=
cmd
+
'env |grep OPENAIR'
+
'
\n
'
cmd
=
cmd
+
' cd '
+
logdir
+
'
\n
'
cmd
=
cmd
+
' ) > '
+
setuplogfile
+
' 2>&1 '
#cmd = cmd + 'echo \' ' + cmd + '\' > ' + setup_script + ' 2>&1 \n '
result
=
oai_list
[
index
].
send_recv
(
cmd
,
False
,
300
)
write_file
(
setup_script
,
cmd
,
mode
=
"w"
)
localfile
=
locallogdir
+
'/setup_log_'
+
MachineList
[
index
]
+
'_.txt'
remotefile
=
logdir
+
'/setup_log_'
+
MachineList
[
index
]
+
'_.txt'
sftp_log
=
os
.
path
.
expandvars
(
locallogdir
+
'/sftp_module.log'
)
sftp_module
(
user
,
pw
,
MachineList
[
index
],
22
,
localfile
,
remotefile
,
sftp_log
,
"get"
)
#Now we copy test_case_list.xml on the remote machines
localfile
=
os
.
path
.
expandvars
(
'$OPENAIR_DIR/cmake_targets/autotests/test_case_list.xml'
)
remotefile
=
logdirOAI5GRepo
+
'/cmake_targets/autotests/test_case_list.xml'
sftp_log
=
os
.
path
.
expandvars
(
locallogdir
+
'/sftp_module.log'
)
sftp_module
(
user
,
pw
,
MachineList
[
index
],
22
,
localfile
,
remotefile
,
sftp_log
,
"put"
)
#print oai_list[index].send('rm -fR ' + logdir)
#print oai_list[index].send('mkdir -p ' + logdir)
#print oai_list[index].send('cd '+ logdir)
#print oai_list[index].send('git clone '+ GitOAI5GRepo )
#print oai_list[index].send('git clone '+ GitOpenaircnRepo)
#print oai_list[index].send('cd ' + logdirOAI5GRepo)
#print oai_list[index].send('git checkout ' + GitOAI5GHeadVersion)
#print oai_list[index].send('source oaienv')
#print oai_list[index].send('cd ' + logdirOpenaircnRepo)
#print oai_list[index].send('git checkout ' + GitOpenaircnRepoBranch)
#print oai_list[index].send_recv('cd ' + logdirOAI5GRepo)
#print oai_list[index].send_recv('source oaienv')
#print oai_list[index].send_recv('env |grep OPENAIR')
#print '\nCleaning Older running programs : ' + CleanUpOldProgs
#cleanOldPrograms(oai_list[index], CleanUpOldProgs)
except
:
print
'There is error in one of the commands to setup the machine '
+
MachineList
[
index
]
sys
.
exit
(
1
)
#Now we process all the test cases
testcaseList
=
xmlRoot
.
findall
(
'testCase'
)
#print testcaseList
for
testcase
in
testcaseList
:
testcasename
=
testcase
.
get
(
'id'
)
testcaseclass
=
testcase
.
findtext
(
'class'
,
default
=
''
)
desc
=
testcase
.
findtext
(
'desc'
,
default
=
''
)
if
testcaseclass
==
'lte-softmodem'
:
if
testcasename
!=
'015700'
:
continue
eNBMachine
=
testcase
.
findtext
(
'eNB'
,
default
=
''
)
UEMachine
=
testcase
.
findtext
(
'UE'
,
default
=
''
)
EPCMachine
=
testcase
.
findtext
(
'EPC'
,
default
=
''
)
index_eNBMachine
=
MachineList
.
index
(
eNBMachine
)
index_UEMachine
=
MachineList
.
index
(
UEMachine
)
index_EPCMachine
=
MachineList
.
index
(
EPCMachine
)
print
"testcasename = "
+
testcasename
+
" class = "
+
testcaseclass
handle_testcaseclass_softmodem
(
testcase
,
CleanUpOldProgs
,
oai_list
,
logdirOAI5GRepo
,
logdirOpenaircnRepo
,
MachineList
,
pw
,
CleanUpAluLteBox
)
elif
testcaseclass
==
'compilation'
:
continue
handle_testcaseclass_compilation
(
testcase
)
elif
testcaseclass
==
'execution'
:
continue
handle_testcaseclass_oaisim
(
testcase
)
else
:
print
"Unknown test case class: "
+
testcaseclass
sys
.
exit
()
sys
.
exit
()
#+ "class = "+ classx
#index = index +1
test
=
'test01'
ctime
=
datetime
.
datetime
.
utcnow
().
strftime
(
"%Y-%m-%d.%Hh%M"
)
logfile
=
user
+
'.'
+
test
+
'.'
+
ctime
+
'.txt'
logdir
=
os
.
getcwd
()
+
'/pre-ci-logs-'
+
host
;
oai
.
create_dir
(
logdir
,
debug
)
print
'log dir: '
+
logdir
print
'log file: '
+
logfile
pwd
=
oai
.
send_recv
(
'pwd'
)
print
"pwd = "
+
pwd
result
=
oai
.
send
(
'echo linux | sudo -S ls -al;sleep 5'
)
print
"result ="
+
result
sys
.
exit
()
#oai.send_nowait('mkdir -p -m 755' + logdir + ';')
#print '=================start the ' + test + ' at ' + ctime + '=================\n'
#print 'Results will be reported in log file : ' + logfile
log
.
writefile
(
logfile
,
'====================start'
+
test
+
' at '
+
ctime
+
'=======================
\n
'
)
log
.
set_debug_level
(
debug
)
oai
.
kill
(
user
,
pw
)
oai
.
rm_driver
(
oai
,
user
,
pw
)
# start te test cases
if
is_compiled
==
0
:
is_compiled
=
case01
.
execute
(
oai
,
user
,
pw
,
host
,
logfile
,
logdir
,
debug
,
timeout
)
if
is_compiled
!=
0
:
case02
.
execute
(
oai
,
user
,
pw
,
host
,
logfile
,
logdir
,
debug
)
case03
.
execute
(
oai
,
user
,
pw
,
host
,
logfile
,
logdir
,
debug
)
case04
.
execute
(
oai
,
user
,
pw
,
host
,
logfile
,
logdir
,
debug
)
case05
.
execute
(
oai
,
user
,
pw
,
host
,
logfile
,
logdir
,
debug
)
else
:
print
'Compilation error: skip test case 02,03,04,05'
oai
.
kill
(
user
,
pw
)
oai
.
rm_driver
(
oai
,
user
,
pw
)
# perform the stats
log
.
statistics
(
logfile
)
oai
.
disconnect
()
ctime
=
datetime
.
datetime
.
utcnow
().
strftime
(
"%Y-%m-%d_%Hh%M"
)
log
.
writefile
(
logfile
,
'====================end the '
+
test
+
' at '
+
ctime
+
'===================='
)
print
'Test results can be found in : '
+
logfile
#print '\nThis test took %f minutes\n' % math.ceil((time.time() - start_time)/60)
#print '\n=====================end the '+ test + ' at ' + ctime + '====================='
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment