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
canghaiwuhen
OpenXG-RAN
Commits
0aeb77ce
Commit
0aeb77ce
authored
Dec 03, 2015
by
Rohit Gupta
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
updates to test framework + bugfixes
parent
6e1e41db
Changes
4
Show whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
230 additions
and
111 deletions
+230
-111
cmake_targets/autotests/openair.py
cmake_targets/autotests/openair.py
+44
-16
cmake_targets/autotests/run_exec_autotests.bash
cmake_targets/autotests/run_exec_autotests.bash
+5
-1
cmake_targets/autotests/run_exec_lte-softmodem_tests.py
cmake_targets/autotests/run_exec_lte-softmodem_tests.py
+178
-92
cmake_targets/autotests/test_case_list.xml
cmake_targets/autotests/test_case_list.xml
+3
-2
No files found.
cmake_targets/autotests/openair.py
View file @
0aeb77ce
...
...
@@ -41,6 +41,8 @@ import os
import
array
import
shutil
import
subprocess
import
sys
import
traceback
# import call
from
core
import
*
...
...
@@ -102,8 +104,12 @@ class openair(core):
self
.
oai
.
prompt
()
print
self
.
oai
.
before
except
Error
,
val
:
print
"Error: can't connect to"
+
username
+
"@"
+
self
.
address
except
Exception
,
e
:
error
=
''
error
=
error
+
' In function: '
+
sys
.
_getframe
().
f_code
.
co_name
+
': *** Caught exception: '
+
str
(
e
.
__class__
)
+
" : "
+
str
(
e
)
error
=
error
+
traceback
.
format_exc
()
print
error
sys
.
exit
(
1
)
def
connect2
(
self
,
username
,
password
,
prompt
=
'$'
):
self
.
prompt1
=
prompt
...
...
@@ -133,9 +139,12 @@ class openair(core):
sys
.
exit
(
1
)
return
'Ok'
except
Exception
,
val
:
time
.
sleep
(
5
)
print
"Error:"
,
val
except
Exception
,
e
:
error
=
''
error
=
error
+
' In function: '
+
sys
.
_getframe
().
f_code
.
co_name
+
': *** Caught exception: '
+
str
(
e
.
__class__
)
+
" : "
+
str
(
e
)
error
=
error
+
traceback
.
format_exc
()
print
error
sys
.
exit
(
1
)
def
connect_localshell
(
self
,
prompt
=
'$'
):
self
.
prompt1
=
prompt
...
...
@@ -152,9 +161,12 @@ class openair(core):
else
:
sys
.
exit
(
1
)
except
Exception
,
val
:
time
.
sleep
(
5
)
print
"Error:"
,
val
except
Exception
,
e
:
error
=
''
error
=
error
+
' In function: '
+
sys
.
_getframe
().
f_code
.
co_name
+
': *** Caught exception: '
+
str
(
e
.
__class__
)
+
" : "
+
str
(
e
)
error
=
error
+
traceback
.
format_exc
()
print
error
sys
.
exit
(
1
)
def
disconnect
(
self
):
print
'disconnecting the ssh connection to '
+
self
.
address
+
'
\n
'
...
...
@@ -173,8 +185,12 @@ class openair(core):
os
.
system
(
'echo '
+
pw
+
' | sudo -S pkill cc1'
)
time
.
sleep
(
1
)
os
.
system
(
'echo '
+
pw
+
' | sudo -S pkill oaisim oaisim_nos1'
)
except
Error
,
val
:
print
"Error:"
,
val
except
Exception
,
e
:
error
=
''
error
=
error
+
' In function: '
+
sys
.
_getframe
().
f_code
.
co_name
+
': *** Caught exception: '
+
str
(
e
.
__class__
)
+
" : "
+
str
(
e
)
error
=
error
+
traceback
.
format_exc
()
print
error
sys
.
exit
(
1
)
def
rm_driver
(
self
,
oai
,
user
,
pw
):
try
:
...
...
@@ -184,8 +200,12 @@ class openair(core):
else
:
oai
.
send_nowait
(
'echo '
+
pw
+
' | sudo -S rmmod nasmesh;'
)
#os.system('echo '+pw+ ' | sudo -S rmmod nasmesh;')
except
Error
,
val
:
print
"Error removing oai network driver module:"
,
val
except
Exception
,
e
:
error
=
''
error
=
error
+
' In function: '
+
sys
.
_getframe
().
f_code
.
co_name
+
': *** Caught exception: '
+
str
(
e
.
__class__
)
+
" : "
+
str
(
e
)
error
=
error
+
traceback
.
format_exc
()
print
error
sys
.
exit
(
1
)
def
driver
(
self
,
oai
,
user
,
pw
):
#pwd = oai.send_recv('pwd')
...
...
@@ -197,8 +217,12 @@ class openair(core):
else
:
oai
.
send
(
'echo '
+
pw
+
' | sudo -S insmod ./nasmesh.ko;'
)
except
Error
,
val
:
print
"Error inserting oai network driver module:"
,
val
except
Exception
,
e
:
error
=
''
error
=
error
+
' In function: '
+
sys
.
_getframe
().
f_code
.
co_name
+
': *** Caught exception: '
+
str
(
e
.
__class__
)
+
" : "
+
str
(
e
)
error
=
error
+
traceback
.
format_exc
()
print
error
sys
.
exit
(
1
)
def
cleandir
(
self
,
logdir
,
debug
)
:
...
...
@@ -209,8 +233,12 @@ class openair(core):
print
'filepath is '
+
filepath
try
:
shutil
.
rmtree
(
filepath
)
except
OSError
:
os
.
remove
(
filepath
)
except
Exception
,
e
:
error
=
''
error
=
error
+
' In function: '
+
sys
.
_getframe
().
f_code
.
co_name
+
': *** Caught exception: '
+
str
(
e
.
__class__
)
+
" : "
+
str
(
e
)
error
=
error
+
traceback
.
format_exc
()
print
error
sys
.
exit
(
1
)
#print 'Could not remove the filepath'+ filepath + ' with error ' + OSError
def
create_dir
(
self
,
dirname
,
debug
)
:
...
...
cmake_targets/autotests/run_exec_autotests.bash
View file @
0aeb77ce
...
...
@@ -107,6 +107,7 @@ function test_compile() {
#mkdir -p $build_dir
cd
$log_dir
{
uname
-a
compile_log_dir
=
`
eval echo
\"
$OPENAIR_DIR
/cmake_targets/log/
\"
`
echo
"Removing compilation log files in
$compile_log_dir
"
rm
-frv
$compile_log_dir
...
...
@@ -236,6 +237,7 @@ function test_compile_and_run() {
cd
$log_dir
{
uname
-a
#eval $pre_compile_prog
#cmake ..
#rm -fv $exec_file
...
...
@@ -272,7 +274,7 @@ function test_compile_and_run() {
fi
echo
"Executing
$main_exec
$main_exec_args_array_index
"
echo
"Executing
$main_exec
$main_exec_args_array_index
"
>>
$temp_exec_log
{
eval
"
$main_exec
$main_exec_args_array_index
"
;
}
>>
$temp_exec_log
2>&1
{
uname
-a
;
eval
"
$main_exec
$main_exec_args_array_index
"
;
}
>>
$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
cat
$temp_exec_log
>>
$log_file
2>&1
...
...
@@ -504,6 +506,8 @@ for search_expr in "${test_case_array[@]}"
}
uname
-a
main
"
$@
"
xUnit_write
"
$results_file
"
...
...
cmake_targets/autotests/run_exec_lte-softmodem_tests.py
View file @
0aeb77ce
...
...
@@ -61,7 +61,8 @@ from openair import *
import
paramiko
import
ssh
from
ssh
import
SSHSession
import
subprocess
import
commands
def
write_file
(
filename
,
string
,
mode
=
"w"
):
text_file
=
open
(
filename
,
mode
)
...
...
@@ -107,6 +108,7 @@ def sftp_module (username, password, hostname, ports, paramList,logfile):
error
=
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 = '
+
localD
+
'
\n
remotefile = '
+
remoteD
+
'
\n
operation = '
+
operation
+
'
\n
logfile = '
+
logfile
+
'
\n
ports = '
+
str
(
ports
)
+
'
\n
'
error
=
error
+
traceback
.
format_exc
()
print
error
sftp
.
close
()
transport
.
close
()
...
...
@@ -195,27 +197,38 @@ class myThread (threading.Thread):
class
oaiThread
(
threading
.
Thread
):
def
__init__
(
self
,
threadID
,
name
,
oai
,
cmd
,
sudo
,
timeout
):
def
__init__
(
self
,
threadID
,
threadname
,
machine
,
username
,
password
,
cmd
,
sudo
,
timeout
):
threading
.
Thread
.
__init__
(
self
)
self
.
threadID
=
threadID
self
.
name
=
name
#self.counter = counter
self
.
oai
=
oai
self
.
threadname
=
threadname
self
.
machine
=
machine
self
.
username
=
username
self
.
password
=
password
self
.
cmd
=
cmd
self
.
sudo
=
sudo
self
.
timeout
=
timeout
self
.
machineName
=
machineName
def
run
(
self
):
print
"Starting "
+
self
.
name
result
=
self
.
oai
.
send_recv
(
self
.
cmd
,
self
.
sudo
,
self
.
timeout
)
try
:
oai
=
openair
(
'localdomain'
,
self
.
machine
)
oai
.
connect
(
user
,
self
.
password
)
print
"Starting "
+
self
.
threadname
+
"on machine "
+
self
.
machine
result
=
oai
.
send_recv
(
self
.
cmd
,
self
.
sudo
,
self
.
timeout
)
print
"result = "
+
result
print
"Exiting "
+
self
.
name
print
"Exiting "
+
self
.
threadname
oai
.
disconnect
()
except
Exception
,
e
:
error
=
''
error
=
error
+
' In class oaiThread, function: '
+
sys
.
_getframe
().
f_code
.
co_name
+
': *** Caught exception: '
+
str
(
e
.
__class__
)
+
" : "
+
str
(
e
)
error
=
error
+
'
\n
threadID = '
+
str
(
self
.
threadID
)
+
'
\n
threadname = '
+
self
.
threadname
+
'
\n
timeout = '
+
self
.
timeout
+
'
\n
machine = '
+
self
.
machine
+
'
\n
cmd = '
+
self
.
cmd
+
'
\n
timeout = '
+
str
(
self
.
timeout
)
+
'
\n
'
error
=
error
+
traceback
.
format_exc
()
print
error
#This class runs test cases with class execution, compilatation
class
testCaseThread_generic
(
threading
.
Thread
):
def
__init__
(
self
,
threadID
,
name
,
machine
,
logdirOAI5GRepo
,
testcasename
,
oldprogramList
,
CleanupAluLteBox
,
password
,
timeout
):
threading
.
Thread
.
__init__
(
self
)
self
.
threaID
=
threadID
self
.
threa
d
ID
=
threadID
self
.
name
=
name
self
.
testcasename
=
testcasename
self
.
timeout
=
timeout
...
...
@@ -231,36 +244,51 @@ class testCaseThread_generic (threading.Thread):
addpass
=
'echo
\'
'
+
mypassword
+
'
\'
| '
user
=
getpass
.
getuser
()
print
"Starting test case : "
+
self
.
testcasename
+
" On machine "
+
self
.
machine
oai
=
openair
(
'localdomain'
,
machine
)
oai
=
openair
(
'localdomain'
,
self
.
machine
)
oai
.
connect
(
user
,
self
.
password
)
cleanOldPrograms
(
oai
,
oldprogramList
,
CleanU
pAluLteBox
)
cleanOldPrograms
(
oai
,
self
.
oldprogramList
,
self
.
Cleanu
pAluLteBox
)
logdir_local
=
os
.
environ
.
get
(
'OPENAIR_DIR'
)
logdir_local_testcase
=
logdir_local
+
'/cmake_targets/autotests/log/'
+
self
.
testcasename
logdir_local_base
=
logdir_local
+
'/cmake_targets/autotests/log/'
logdir_remote_testcase
=
self
.
logdirOAI5GRepo
+
'/cmake_targets/autotests/log'
+
self
.
testcasename
logdir_remote
=
self
.
logdirOAI5GRepo
+
'/cmake_targets/autotests/log'
logfile_task_testcasename
=
logdir_local_testcase
+
'/test_task'
+
'_'
+
testcasename
+
'_.log'
logfile_task_testcasename_out
=
logdir_remote
+
'/test_task_out'
+
'_'
+
str
(
run
)
+
'_.log'
os
.
removedirs
(
logdir_testcase
)
os
.
mkdir
(
logdir_testcase
)
logdir_remote_testcase
=
self
.
logdirOAI5GRepo
+
'/cmake_targets/autotests/log/'
+
self
.
testcasename
logdir_remote
=
self
.
logdirOAI5GRepo
+
'/cmake_targets/autotests/log/'
logfile_task_testcasename
=
logdir_local_testcase
+
'/test_task'
+
'_'
+
self
.
testcasename
+
'_.log'
logfile_task_testcasename_out
=
logdir_remote
+
'/test_task_out'
+
'_'
+
self
.
testcasename
+
'_.log'
#print "logdir_local_testcase = " + logdir_local_testcase
#print "logdir_remote_testcase = " + logdir_remote_testcase
#if os.path.exists(logdir_local_testcase) == True :
# os.removedirs(logdir_local_testcase)
#os.mkdir(logdir_local_testcase)
os
.
system
(
"rm -fr "
+
logdir_local_testcase
)
os
.
system
(
"mkdir -p "
+
logdir_local_testcase
)
cmd
=
"mkdir -p "
+
logdir_remote_testcase
res
=
oai
.
send_recv
(
cmd
,
False
,
self
.
timeout
)
print
"res = "
+
res
cmd
=
"( cd "
+
self
.
logdirOAI5GRepo
+
"
\n
"
cmd
=
cmd
+
"source oaienv
\n
"
cmd
=
cmd
+
"$OPENAIR_DIR/cmake_targets/autotests/run_exec_autote
ts.bash --run-group
\"
"
+
"self.testcasename +
\"
"
cmd
=
cmd
+
" ) >& "
+
logfile_task_testcasename_out
+
" ; "
+
"
mv "
+
logfile_task_testcasename_out
+
logdir_remote_testcase
cmd
=
cmd
+
"$OPENAIR_DIR/cmake_targets/autotests/run_exec_autote
sts.bash --run-group
\"
"
+
self
.
testcasename
+
"
\"
-p
\'\'
"
cmd
=
cmd
+
" ) >& "
+
logfile_task_testcasename_out
+
" ; "
+
"
mkdir -p "
+
logdir_remote_testcase
+
"; mv "
+
logfile_task_testcasename_out
+
" "
+
logdir_remote_testcase
#print "cmd = " + cmd
res
=
oai
.
send_recv
(
cmd
,
False
,
self
.
timeout
)
#print "res = " + res
print
"ThreadID = "
+
str
(
self
.
threadID
)
+
"ThreadName: "
+
self
.
name
+
" testcasename: "
+
self
.
testcasename
+
"Execution Result = "
+
res
write_file
(
logfile_task_testcasename
,
cmd
,
mode
=
"w"
)
#Now we copy all the remote files
ssh
=
SSHSession
(
self
.
machine
,
username
=
user
,
key_file
=
None
,
password
=
password
)
ssh
=
SSHSession
(
self
.
machine
,
username
=
user
,
key_file
=
None
,
password
=
self
.
password
)
ssh
.
get_all
(
logdir_remote_testcase
,
logdir_local_base
)
print
"Finishing test case : "
+
self
.
testcasename
+
" On machine "
+
machineNam
e
cleanOldPrograms
(
oai
,
oldprogramList
,
CleanU
pAluLteBox
)
oai
.
kill
(
)
print
"Finishing test case : "
+
self
.
testcasename
+
" On machine "
+
self
.
machin
e
cleanOldPrograms
(
oai
,
self
.
oldprogramList
,
self
.
Cleanu
pAluLteBox
)
#oai.kill(user,mypassword
)
oai
.
disconnect
()
except
Exception
,
e
:
error
=
''
error
=
error
+
' In function: '
+
sys
.
_getframe
().
f_code
.
co_name
+
': *** Caught exception: '
+
str
(
e
.
__class__
)
+
" : "
+
str
(
e
)
error
=
error
+
'
\n
threadID = '
+
s
elf
.
threaID
+
'
\n
testcasename = '
+
self
.
testcasename
+
'
\n
timeout = '
+
self
.
timeout
+
'
\n
machine = '
+
self
.
machine
+
'
\n
logdirOAI5GRepo = '
+
self
.
logdirOAI5GRepo
+
'
\n
'
error
=
error
+
' In
Class = testCaseThread_generic,
function: '
+
sys
.
_getframe
().
f_code
.
co_name
+
': *** Caught exception: '
+
str
(
e
.
__class__
)
+
" : "
+
str
(
e
)
error
=
error
+
'
\n
threadID = '
+
s
tr
(
self
.
threadID
)
+
'
\n
threadName = '
+
self
.
name
+
'
\n
testcasename = '
+
self
.
testcasename
+
'
\n
machine = '
+
self
.
machine
+
'
\n
logdirOAI5GRepo = '
+
self
.
logdirOAI5GRepo
+
'
\n
'
+
'
\n
timeout = '
+
str
(
timeout
)
error
=
error
+
traceback
.
format_exc
()
print
error
sys
.
exit
()
def
addsudo
(
cmd
,
password
=
""
):
...
...
@@ -276,23 +304,29 @@ def handle_testcaseclass_generic (testcasename, threadListGeneric, oldprogramLis
#first we need to find the list of free machines that we could run our test case
if
threadListGeneric
.
__len__
()
==
0
:
#This means no thread is started yet
MachineListFree
=
MachineList
MachineListFree
=
MachineList
[:]
else
:
for
param
in
threadListGeneric
:
thread_id
=
param
[
"thread_id"
]
machine
=
param
[
"Machine"
]
testcasename
=
param
[
"testcasename"
]
testcasename
old
=
param
[
"testcasename"
]
thread_id
.
join
(
1
)
if
thread_id
.
isAlive
==
True
:
if
thread_id
.
isAlive
()
==
True
:
print
"thread_id is alive: testcasename: "
+
testcasenameold
if
machine
not
in
MachineListBusy
:
MachineListBusy
.
append
(
machine
)
else
:
threadListGeneric
.
remove
(
param
)
#Now we check if there is at least one free machine
MachineListFree
=
MachineList
MachineListFree
=
MachineList
[:]
for
machine
in
MachineListBusy
:
if
machine
in
MachineListFree
:
MachineListFree
.
remove
(
machine
)
#print "MachineListFree = " + ','.join(MachineListFree)
#print "MachineListBusy = " + ','.join(MachineListBusy)
#print "MachineList = " + ','.join(MachineList)
machine
=
MachineListFree
[
0
]
thread
=
testCaseThread_generic
(
1
,
"Generic Thread
"
,
machine
,
logdirOAI5GRepo
,
testcasename
,
oldprogramList
,
CleanupAluLteBox
,
password
,
timeout
)
thread
=
testCaseThread_generic
(
1
,
"Generic Thread
_"
+
testcasename
+
"_"
+
machine
+
_
,
machine
,
logdirOAI5GRepo
,
testcasename
,
oldprogramList
,
CleanupAluLteBox
,
password
,
timeout
)
param
=
{
"thread_id"
:
thread
,
"Machine"
:
machine
,
"testcasename"
:
testcasename
}
thread
.
start
()
threadListGeneric
.
append
(
param
)
...
...
@@ -300,12 +334,29 @@ def handle_testcaseclass_generic (testcasename, threadListGeneric, oldprogramLis
except
Exception
,
e
:
error
=
''
error
=
error
+
' In function: '
+
sys
.
_getframe
().
f_code
.
co_name
+
': *** Caught exception: '
+
str
(
e
.
__class__
)
+
" : "
+
str
(
e
)
error
=
error
+
'
\n
testcasename = '
+
testcasename
+
'
\n
logdirOAI5GRepo = '
+
logdirOAI5GRepo
+
'
\n
MachineList = '
+
MachineList
+
'
\n
timeout = '
+
timeout
+
'
\n
'
error
=
error
+
'
\n
testcasename = '
+
testcasename
+
'
\n
logdirOAI5GRepo = '
+
logdirOAI5GRepo
+
'
\n
MachineList = '
+
','
.
join
(
MachineList
)
+
'
\n
timeout = '
+
str
(
timeout
)
+
'
\n
'
error
=
error
+
traceback
.
format_exc
()
print
error
sys
.
exit
(
1
)
#Blocking wait for all threads related to generic testcase execution, class (compilation and execution)
def
wait_testcaseclass_generic_threads
(
threadListGeneric
,
timeout
=
1
):
for
param
in
threadListGeneric
:
thread_id
=
param
[
"thread_id"
]
machine
=
param
[
"Machine"
]
testcasenameold
=
param
[
"testcasename"
]
thread_id
.
join
(
timeout
)
if
thread_id
.
isAlive
()
==
True
:
print
"thread_id on machine: "
+
machine
+
" is still alive: testcasename: "
+
testcasenameold
print
" Exiting now..."
sys
.
exit
(
1
)
else
:
print
"thread_id on machine: "
+
machine
+
" is stopped: testcasename: "
+
testcasenameold
threadListGeneric
.
remove
(
param
)
return
threadListGeneric
#Function to handle test case class : lte-softmodem
def
handle_testcaseclass_softmodem
(
testcase
,
oldprogramList
,
oai_list
,
logdirOAI5GRepo
,
logdirOpenaircnRepo
,
MachineList
,
password
,
CleanUpAluLteBox
):
def
handle_testcaseclass_softmodem
(
testcase
,
oldprogramList
,
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
...
...
@@ -365,15 +416,13 @@ def handle_testcaseclass_softmodem (testcase, oldprogramList, oai_list, logdirOA
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_eNB
=
openair
(
'localdomain'
,
eNBMachine
)
oai_eNB
.
connect
(
user
,
password
)
oai_UE
=
openair
(
'localdomain'
,
UEMachine
)
oai_UE
.
connect
(
user
,
password
)
oai_EPC
=
openair
(
'localdomain'
,
EPCMachine
)
oai_EPC
.
connect
(
user
,
password
)
else
:
oai_EPC
=
oai_list
[
index_EPCMachine
]
oai_EPC
.
connect
(
user
,
password
)
cleanOldPrograms
(
oai_eNB
,
oldprogramList
,
CleanUpAluLteBox
)
cleanOldPrograms
(
oai_UE
,
oldprogramList
,
CleanUpAluLteBox
)
cleanOldPrograms
(
oai_EPC
,
oldprogramList
,
CleanUpAluLteBox
)
...
...
@@ -515,9 +564,9 @@ def handle_testcaseclass_softmodem (testcase, oldprogramList, oai_list, logdirOA
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
)
thread_EPC
=
oaiThread
(
1
,
"EPC_thread"
,
EPCMachine
,
user
,
password
,
task_EPC
,
False
,
timeout_thread
)
thread_eNB
=
oaiThread
(
2
,
"eNB_thread"
,
eNBMachine
,
user
,
password
,
task_eNB
,
False
,
timeout_thread
)
thread_UE
=
oaiThread
(
3
,
"UE_thread"
,
UEMachine
,
user
,
password
,
task_UE
,
False
,
timeout_thread
)
threads
=
[]
threads
.
append
(
thread_eNB
)
...
...
@@ -631,9 +680,12 @@ def handle_testcaseclass_softmodem (testcase, oldprogramList, oai_list, logdirOA
remotefile
=
logdir_EPC
+
'/EPC_task_out'
+
'_'
+
str
(
run
)
+
'_.log'
paramList
.
append
(
{
"operation"
:
'get'
,
"localfile"
:
localfile
,
"remotefile"
:
remotefile
}
)
sftp_module
(
user
,
password
,
EPCMachine
,
ports
,
paramList
,
sftp_log
)
#We need to close the new ssh session that was created
if
index_eNBMachine
==
index_EPCMachine
:
oai_eNB
.
disconnect
()
oai_UE
.
disconnect
()
oai_EPC
.
disconnect
()
#We need to close the new ssh session that was created
#if index_eNBMachine == index_EPCMachine:
# oai_EPC.disconnect()
#This function searches if test case is present in list of test cases that need to be executed by user
def
search_test_case_group
(
testcasename
,
testcasegroup
):
...
...
@@ -654,7 +706,6 @@ def search_test_case_group(testcasename, testcasegroup):
#thread1 = myThread(1, "Thread-1", 1)
threadListGeneric
=
[]
debug
=
0
pw
=
''
i
=
0
...
...
@@ -677,8 +728,8 @@ if openairdir_local is None:
sys
.
exit
()
locallogdir
=
openairdir_local
+
'/cmake_targets/autotests/log/'
#Remove the contents of local log directory
os
.
system
(
' rm -fr '
+
locallogdir
+
'; mkdir -p '
+
locallogdir
)
#
os.system(' rm -fr ' + locallogdir + '; mkdir -p ' + locallogdir )
flag_remove_logdir
=
False
i
=
1
while
i
<
len
(
sys
.
argv
):
arg
=
sys
.
argv
[
i
]
...
...
@@ -689,6 +740,8 @@ while i < len (sys.argv):
elif
arg
==
'-p'
:
prompt2
=
sys
.
argv
[
i
+
1
]
i
=
i
+
1
elif
arg
==
'-r'
:
flag_remove_logdir
=
True
elif
arg
==
'-w'
:
pw
=
sys
.
argv
[
i
+
1
]
i
=
i
+
1
...
...
@@ -708,6 +761,7 @@ while i < len (sys.argv):
print
"-d: low debug level"
print
"-dd: high debug level"
print
"-p: set the prompt"
print
"-r: Remove the log directory in autotests/"
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"
...
...
@@ -735,6 +789,12 @@ except KeyError:
print
"Please set the environment variable OPENAIR_TARGETS in the .bashrc"
sys
.
exit
(
1
)
if
flag_remove_logdir
==
True
:
print
"Removing directory: "
+
locallogdir
os
.
system
(
' rm -fr '
+
locallogdir
+
'; mkdir -p '
+
locallogdir
)
paramiko_logfile
=
os
.
path
.
expandvars
(
'$OPENAIR_DIR/cmake_targets/autotests/log/paramiko.log'
)
res
=
os
.
system
(
' echo > '
+
paramiko_logfile
)
paramiko
.
util
.
log_to_file
(
paramiko_logfile
)
...
...
@@ -767,7 +827,7 @@ GitOpenaircnRepoBranch = xmlRoot.findtext('GitOpenair-cnRepoBranch',default='')
CleanUpOldProgs
=
xmlRoot
.
findtext
(
'CleanUpOldProgs'
,
default
=
''
)
CleanUpAluLteBox
=
xmlRoot
.
findtext
(
'CleanUpAluLteBox'
,
default
=
''
)
Timeout_execution
=
int
(
xmlRoot
.
findtext
(
'Timeout_execution'
))
MachineListGeneric
=
xmlRoot
.
findtext
(
'MachineListGeneric'
,
default
=
''
)
print
"MachineList = "
+
MachineList
print
"GitOpenair-cnRepo = "
+
GitOpenaircnRepo
print
"GitOAI5GRepo = "
+
GitOAI5GRepo
...
...
@@ -781,6 +841,7 @@ print "CleanUpOldProgs = " + CleanUpOldProgs
print
"Timeout_execution = "
+
str
(
Timeout_execution
)
MachineList
=
MachineList
.
split
()
MachineListGeneric
=
MachineListGeneric
.
split
()
index
=
0
for
machine
in
MachineList
:
...
...
@@ -909,7 +970,7 @@ for index in oai_list:
#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"
)
tempThread
=
oaiThread
(
index
,
'thread_
'
+
str
(
index
),
oai_list
[
index
]
,
cmd
,
False
,
300
)
tempThread
=
oaiThread
(
index
,
'thread_
setup_'
+
str
(
index
)
+
'_'
+
MachineList
[
index
]
,
MachineList
[
index
]
,
user
,
pw
,
cmd
,
False
,
300
)
threads_init_setup
.
append
(
tempThread
)
tempThread
.
start
()
...
...
@@ -944,13 +1005,14 @@ for index in oai_list:
#print '\nCleaning Older running programs : ' + CleanUpOldProgs
#cleanOldPrograms(oai_list[index], CleanUpOldProgs)
except
:
except
Exception
,
e
:
print
'There is error in one of the commands to setup the machine '
+
MachineList
[
index
]
error
=
''
error
=
error
+
' In function: '
+
sys
.
_getframe
().
f_code
.
co_name
+
': *** Caught exception: '
+
str
(
e
.
__class__
)
+
" : "
+
str
(
e
)
error
=
error
+
traceback
.
format_exc
()
print
error
sys
.
exit
(
1
)
#Now we wait for all the threads to complete
index
=
0
for
t
in
threads_init_setup
:
...
...
@@ -975,38 +1037,62 @@ for t in threads_init_setup:
index
=
index
+
1
#Now we process all the test cases
#Now we check if there was error in setup files
status
,
out
=
commands
.
getstatusoutput
(
'grep '
+
' -il
\'
error
\'
'
+
locallogdir
+
'/setup*'
)
if
(
out
!=
''
)
:
print
"There is error in setup of machines"
print
"status = "
+
str
(
status
)
+
"
\n
out = "
+
out
print
sys
.
exit
(
1
)
threadListGeneric
=
[]
threadListGlobal
=
[]
testcaseList
=
xmlRoot
.
findall
(
'testCase'
)
#print testcaseList
for
testcase
in
testcaseList
:
try
:
testcasename
=
testcase
.
get
(
'id'
)
testcaseclass
=
testcase
.
findtext
(
'class'
,
default
=
''
)
desc
=
testcase
.
findtext
(
'desc'
,
default
=
''
)
#print "Machine list top level = " + ','.join(MachineList)
if
search_test_case_group
(
testcasename
,
testcasegroup
)
==
True
:
if
testcaseclass
==
'lte-softmodem'
:
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
)
#index_eNBMachine = MachineList.index(eNBMachine)
#index_UEMachine = MachineList.index(UEMachine)
#index_EPCMachine = MachineList.index(EPCMachine)
if
(
eNBMachine
not
in
MachineList
)
|
(
UEMachine
not
in
MachineList
)
|
(
UEMachine
not
in
MachineList
):
print
"One of the machines is not in the machine list"
print
"eNBMachine : "
+
eNBMachine
+
"UEMachine : "
+
UEMachine
+
"EPCMachine : "
+
EPCMachine
+
"MachineList : "
+
','
.
join
(
MachineList
)
print
"testcasename = "
+
testcasename
+
" class = "
+
testcaseclass
handle_testcaseclass_softmodem
(
testcase
,
CleanUpOldProgs
,
oai_list
,
logdirOAI5GRepo
,
logdirOpenaircnRepo
,
MachineList
,
pw
,
CleanUpAluLteBox
)
threadListGlobal
=
wait_testcaseclass_generic_threads
(
threadListGlobal
,
Timeout_execution
)
handle_testcaseclass_softmodem
(
testcase
,
CleanUpOldProgs
,
logdirOAI5GRepo
,
logdirOpenaircnRepo
,
MachineList
,
pw
,
CleanUpAluLteBox
)
elif
(
testcaseclass
==
'compilation'
):
handle_testcaseclass_generic
(
testcasename
,
threadListGeneric
,
oldprogramList
,
logdirOAI5GRepo
,
MachineList
,
pw
,
Cleanu
pAluLteBox
,
Timeout_execution
)
threadListGlobal
=
handle_testcaseclass_generic
(
testcasename
,
threadListGlobal
,
CleanUpOldProgs
,
logdirOAI5GRepo
,
MachineListGeneric
,
pw
,
CleanU
pAluLteBox
,
Timeout_execution
)
elif
(
testcaseclass
==
'execution'
):
handle_testcaseclass_generic
(
testcasename
,
threadListGeneric
,
oldprogramList
,
logdirOAI5GRepo
,
MachineList
,
pw
,
Cleanu
pAluLteBox
,
Timeout_execution
)
threadListGlobal
=
handle_testcaseclass_generic
(
testcasename
,
threadListGlobal
,
CleanUpOldProgs
,
logdirOAI5GRepo
,
MachineListGeneric
,
pw
,
CleanU
pAluLteBox
,
Timeout_execution
)
else
:
print
"Unknown test case class: "
+
testcaseclass
sys
.
exit
()
except
Exception
,
e
:
error
=
''
error
=
error
+
' In function: '
+
sys
.
_getframe
().
f_code
.
co_name
+
': *** Caught exception: '
+
str
(
e
.
__class__
)
+
" : "
+
str
(
e
)
error
=
error
+
'
\n
testcasename = '
+
testcasename
+
'
\n
testcaseclass = '
+
testcaseclass
+
'
\n
desc = '
+
'desc'
+
'
\n
'
error
=
error
+
traceback
.
format_exc
()
print
error
sys
.
exit
(
1
)
print
"Exiting the test cases execution now..."
for
t
in
threadListGlobal
:
t
.
join
sys
.
exit
()
#+ "class = "+ classx
...
...
cmake_targets/autotests/test_case_list.xml
View file @
0aeb77ce
<testCaseList>
<MachineList>
amerique stevens calisson nano
</MachineList>
<MachineList>
stevens calisson mozart nano amerique
</MachineList>
<NFSResultsShare>
/mnt/sradio/TEST_RESULTS
</NFSResultsShare>
<GitOAI5GRepo>
https://gitlab.eurecom.fr/oai/openairinterface5g.git
</GitOAI5GRepo>
<GitOpenair-cnRepo>
https://gitlab.eurecom.fr/oai/openair-cn.git
</GitOpenair-cnRepo>
<GitOAI5GRepoBranch>
feature-34-test_framework
</GitOAI5GRepoBranch>
<GitOpenair-cnRepoBranch>
feature-17-test_framework
</GitOpenair-cnRepoBranch>
<CleanUpOldProgs>
oaisim* oaisim_nos1* lte-softmodem* lte-softmodem-nos1* mme_gw* run_epc* run_hss* iperf* hss hss_sim configure_cots_bandrich_ue* wvdial*
</CleanUpOldProgs>
<CleanUpOldProgs>
oaisim* oaisim_nos1* lte-softmodem* lte-softmodem-nos1* mme_gw* run_epc* run_hss* iperf* hss hss_sim configure_cots_bandrich_ue* wvdial*
run_exec_autotests*
</CleanUpOldProgs>
<CleanUpAluLteBox>
/opt/ltebox/tools/stop_ltebox
</CleanUpAluLteBox>
<Timeout_execution>
1800
</Timeout_execution>
<MachineListGeneric>
calisson stevens mozart nano amerique
</MachineListGeneric>
<testCase
id=
"010101"
>
<class>
compilation
</class>
<desc>
Build oaisim.Rel8
</desc>
...
...
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