Merge branch 'develop' into feature-59-tm4
This commit is contained in:
@@ -171,6 +171,25 @@ Obj.# Case# Test# Description
|
||||
01 65 04 Band 7 FDD 10MHz DL Throughput for 300 sec for 1TX/1RX
|
||||
01 65 05 Band 7 FDD 20MHz DL Throughput for 300 sec for 1TX/1RX
|
||||
|
||||
|
||||
01 70 00 lte-softmodem tests with SoDeRa RF as eNB and ALU EPC w/ Bandrich COTS UE for TX/1RX
|
||||
01 70 00 Band 7 FDD 5MHz UL Throughput for 300 sec for 1TX/1RX
|
||||
01 70 01 Band 7 FDD 10MHz UL Throughput for 300 sec for 1TX/1RX
|
||||
01 70 02 Band 7 FDD 20MHz UL Throughput for 300 sec for 1TX/1RX
|
||||
01 70 03 Band 7 FDD 5MHz DL Throughput for 300 sec for 1TX/1RX
|
||||
01 70 04 Band 7 FDD 10MHz DL Throughput for 300 sec for 1TX/1RX
|
||||
01 70 05 Band 7 FDD 20MHz DL Throughput for 300 sec for 1TX/1RX
|
||||
|
||||
|
||||
01 75 00 lte-softmodem + RRH tests with B210 RF as eNB and ALU EPC w/ Bandrich COTS UE for TX/1RX
|
||||
01 75 00 Band 7 FDD 5MHz UL Throughput for 300 sec for 1TX/1RX
|
||||
01 75 01 Band 7 FDD 10MHz UL Throughput for 300 sec for 1TX/1RX
|
||||
01 75 02 Band 7 FDD 20MHz UL Throughput for 300 sec for 1TX/1RX
|
||||
01 75 03 Band 7 FDD 5MHz DL Throughput for 300 sec for 1TX/1RX
|
||||
01 75 04 Band 7 FDD 10MHz DL Throughput for 300 sec for 1TX/1RX
|
||||
01 75 05 Band 7 FDD 20MHz DL Throughput for 300 sec for 1TX/1RX
|
||||
|
||||
|
||||
01 64 lte-softmodem-noS1 tests
|
||||
|
||||
02 Functional test case
|
||||
|
||||
@@ -571,6 +571,17 @@ def handle_testcaseclass_softmodem (testcase, oldprogramList, logdirOAI5GRepo ,
|
||||
nruns = nruns_lte_softmodem
|
||||
nruns = int(float(nruns))
|
||||
tags = testcase.findtext('tags',default='')
|
||||
|
||||
RRHMachine = testcase.findtext('RRH',default='')
|
||||
RRH_compile_prog = testcase.findtext('RRH_compile_prog',default='')
|
||||
RRH_compile_prog_args = testcase.findtext('RRH_compile_prog_args',default='')
|
||||
RRH_pre_exec = testcase.findtext('RRH_pre_exec',default='')
|
||||
RRH_pre_exec_args = testcase.findtext('RRH_pre_exec_args',default='')
|
||||
RRH_main_exec = testcase.findtext('RRH_main_exec',default='')
|
||||
RRH_main_exec_args = testcase.findtext('RRH_main_exec_args',default='')
|
||||
RRH_terminate_missing_procs = testcase.findtext('RRH_terminate_missing_procs',default='True')
|
||||
|
||||
|
||||
eNBMachine = testcase.findtext('eNB',default='')
|
||||
eNB_config_file = testcase.findtext('eNB_config_file',default='')
|
||||
eNB_compile_prog = testcase.findtext('eNB_compile_prog',default='')
|
||||
@@ -635,13 +646,15 @@ def handle_testcaseclass_softmodem (testcase, oldprogramList, logdirOAI5GRepo ,
|
||||
oai_EPC = openair('localdomain', EPCMachine)
|
||||
oai_EPC.connect(user, password)
|
||||
res = oai_eNB.send_recv(cmd)
|
||||
|
||||
if RRHMachine != '':
|
||||
cmd = 'cd ' + logdirOAI5GRepo + '; source oaienv ; env|grep OPENAIR'
|
||||
index_RRHMachine = MachineList.index(RRHMachine)
|
||||
oai_RRH = openair('localdomain', RRHMachine)
|
||||
oai_RRH.connect(user, password)
|
||||
res= oai_RRH.send_recv(cmd)
|
||||
#cleanOldPrograms(oai_eNB, oldprogramList, CleanUpAluLteBox, ExmimoRfStop)
|
||||
#cleanOldPrograms(oai_UE, oldprogramList, CleanUpAluLteBox, ExmimoRfStop)
|
||||
#cleanOldPrograms(oai_EPC, oldprogramList, CleanUpAluLteBox, ExmimoRfStop)
|
||||
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"
|
||||
@@ -667,10 +680,14 @@ def handle_testcaseclass_softmodem (testcase, oldprogramList, logdirOAI5GRepo ,
|
||||
run_result=1
|
||||
run_result_string=''
|
||||
logdir_eNB = logdirOAI5GRepo+'/cmake_targets/autotests/log/'+ testcasename + '/run_' + str(run)
|
||||
logdir_RRH = 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
|
||||
if RRHMachine != '':
|
||||
cmd = 'rm -fr ' + logdir_RRH + ' ; mkdir -p ' + logdir_RRH
|
||||
result = oai_RRH.send_recv(cmd)
|
||||
cmd = 'rm -fr ' + logdir_eNB + ' ; mkdir -p ' + logdir_eNB
|
||||
result = oai_eNB.send_recv(cmd)
|
||||
cmd = 'rm -fr ' + logdir_UE + ' ; mkdir -p ' + logdir_UE
|
||||
@@ -679,6 +696,39 @@ def handle_testcaseclass_softmodem (testcase, oldprogramList, logdirOAI5GRepo ,
|
||||
result = oai_EPC.send_recv(cmd)
|
||||
cmd = ' rm -fr ' + logdir_local_testcase + ' ; mkdir -p ' + logdir_local_testcase
|
||||
result = os.system(cmd)
|
||||
|
||||
if RRHMachine != '':
|
||||
logfile_compile_RRH = logdir_RRH + '/RRH_compile' + '_' + str(run) + '_.log'
|
||||
logfile_exec_RRH = logdir_RRH + '/RRH_exec' + '_' + str(run) + '_.log'
|
||||
logfile_pre_exec_RRH = logdir_RRH + '/RRH_pre_exec' + '_' + str(run) + '_.log'
|
||||
logfile_task_RRH_compile_out = logdir_RRH + '/RRH_task_compile_out' + '_' + str(run) + '_.log'
|
||||
logfile_task_RRH_compile = logdir_local_testcase + '/RRH_task_compile' + '_' + str(run) + '_.log'
|
||||
logfile_task_RRH_out = logdir_RRH + '/RRH_task_out' + '_' + str(run) + '_.log'
|
||||
logfile_task_RRH = logdir_local_testcase + '/RRH_task' + '_' + str(run) + '_.log'
|
||||
task_RRH_compile = ' ( uname -a ; date \n'
|
||||
task_RRH_compile = task_RRH_compile + 'cd ' + logdirOAI5GRepo + ' ; source oaienv ; source cmake_targets/tools/build_helper \n'
|
||||
task_RRH_compile = task_RRH_compile + 'env |grep OPENAIR \n'
|
||||
if RRH_compile_prog != "":
|
||||
task_RRH_compile = task_RRH_compile + ' ( ' + RRH_compile_prog + ' '+ RRH_compile_prog_args + ' ) > ' + logfile_compile_RRH + ' 2>&1 \n'
|
||||
task_RRH_compile = task_RRH_compile + ' date ) > ' + logfile_task_RRH_compile_out + ' 2>&1 '
|
||||
write_file(logfile_task_RRH_compile, task_RRH_compile, mode="w")
|
||||
|
||||
task_RRH = ' ( uname -a ; date \n'
|
||||
task_RRH = task_RRH + ' export OPENAIR_TESTDIR=' + logdir_RRH + '\n'
|
||||
task_RRH = task_RRH + 'cd ' + logdirOAI5GRepo + ' ; source oaienv ; source cmake_targets/tools/build_helper \n'
|
||||
task_RRH = task_RRH + 'env |grep OPENAIR \n' + 'array_exec_pid=() \n'
|
||||
|
||||
if RRH_pre_exec != "":
|
||||
task_RRH = task_RRH + ' ( date; ' + RRH_pre_exec + ' '+ RRH_pre_exec_args + ' ) > ' + logfile_pre_exec_RRH + ' 2>&1 \n'
|
||||
if RRH_main_exec != "":
|
||||
task_RRH = task_RRH + ' ( date; ' + addsudo(RRH_main_exec + ' ' + RRH_main_exec_args, mypassword) + ' ) > ' + logfile_exec_RRH + ' 2>&1 & \n'
|
||||
task_RRH = task_RRH + 'array_exec_pid+=($!) \n'
|
||||
task_RRH = task_RRH + 'echo eNB_main_exec PID = $! \n'
|
||||
#terminate the eNB test case after timeout_cmd seconds
|
||||
task_RRH = task_RRH + finalize_deploy_script (timeout_cmd, RRH_terminate_missing_procs) + ' \n'
|
||||
task_RRH = task_RRH + 'handle_ctrl_c' + '\n'
|
||||
task_RRH = task_RRH + ' ) > ' + logfile_task_RRH_out + ' 2>&1 '
|
||||
write_file(logfile_task_RRH, task_RRH, mode="w")
|
||||
|
||||
logfile_compile_eNB = logdir_eNB + '/eNB_compile' + '_' + str(run) + '_.log'
|
||||
logfile_exec_eNB = logdir_eNB + '/eNB_exec' + '_' + str(run) + '_.log'
|
||||
@@ -704,6 +754,7 @@ def handle_testcaseclass_softmodem (testcase, oldprogramList, logdirOAI5GRepo ,
|
||||
write_file(logfile_task_eNB_compile, task_eNB_compile, mode="w")
|
||||
|
||||
task_eNB = ' ( uname -a ; date \n'
|
||||
task_eNB = task_eNB + ' export OPENAIR_TESTDIR=' + logdir_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' + 'array_exec_pid=() \n'
|
||||
|
||||
@@ -806,6 +857,7 @@ def handle_testcaseclass_softmodem (testcase, oldprogramList, logdirOAI5GRepo ,
|
||||
write_file(logfile_task_EPC_compile, task_EPC_compile, mode="w")
|
||||
|
||||
task_EPC = ' ( uname -a ; date \n'
|
||||
task_EPC = task_EPC + ' export OPENAIRCN_TESTDIR=' + logdir_EPC + '\n'
|
||||
task_EPC = task_EPC + 'array_exec_pid=()' + '\n'
|
||||
task_EPC = task_EPC + 'cd ' + logdirOpenaircnRepo + '; source oaienv\n'
|
||||
task_EPC = task_EPC + 'source BUILD/TOOLS/build_helper \n'
|
||||
@@ -837,14 +889,20 @@ def handle_testcaseclass_softmodem (testcase, oldprogramList, logdirOAI5GRepo ,
|
||||
thread_EPC = oaiThread(1, "EPC_thread", EPCMachine, user, password , task_EPC_compile, False, timeout_thread)
|
||||
thread_eNB = oaiThread(2, "eNB_thread", eNBMachine, user, password , task_eNB_compile, False, timeout_thread)
|
||||
thread_UE = oaiThread(3, "UE_thread", UEMachine, user, password , task_UE_compile, False, timeout_thread)
|
||||
if RRHMachine != '':
|
||||
thread_RRH = oaiThread(4, "RRH_thread", RRHMachine, user, password , task_RRH_compile, False, timeout_thread)
|
||||
threads=[]
|
||||
threads.append(thread_eNB)
|
||||
threads.append(thread_UE)
|
||||
threads.append(thread_EPC)
|
||||
if RRHMachine != '':
|
||||
threads.append(thread_RRH)
|
||||
# Start new Threads
|
||||
thread_eNB.start()
|
||||
thread_UE.start()
|
||||
thread_EPC.start()
|
||||
if RRHMachine != '':
|
||||
thread_RRH.start()
|
||||
#Wait for all the compile threads to complete
|
||||
for t in threads:
|
||||
t.join()
|
||||
@@ -853,26 +911,29 @@ def handle_testcaseclass_softmodem (testcase, oldprogramList, logdirOAI5GRepo ,
|
||||
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)
|
||||
|
||||
if RRHMachine != '':
|
||||
thread_RRH = oaiThread(4, "RRH_thread", RRHMachine, user, password , task_RRH, False, timeout_thread)
|
||||
threads=[]
|
||||
threads.append(thread_eNB)
|
||||
threads.append(thread_UE)
|
||||
threads.append(thread_EPC)
|
||||
if RRHMachine != '':
|
||||
threads.append(thread_RRH)
|
||||
# Start new Threads
|
||||
|
||||
thread_eNB.start()
|
||||
thread_UE.start()
|
||||
thread_EPC.start()
|
||||
|
||||
if RRHMachine != '':
|
||||
thread_RRH.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
|
||||
cleanOldProgramsAllMachines([oai_eNB, oai_UE, oai_EPC] , oldprogramList, CleanUpAluLteBox, ExmimoRfStop)
|
||||
|
||||
#cleanOldPrograms(oai_eNB, oldprogramList, CleanUpAluLteBox, ExmimoRfStop)
|
||||
#cleanOldPrograms(oai_UE, oldprogramList, CleanUpAluLteBox, ExmimoRfStop)
|
||||
#cleanOldPrograms(oai_EPC, oldprogramList, CleanUpAluLteBox, ExmimoRfStop)
|
||||
if RRHMachine != '':
|
||||
cleanOldProgramsAllMachines([oai_eNB, oai_UE, oai_EPC, oai_RRH] , oldprogramList, CleanUpAluLteBox, ExmimoRfStop)
|
||||
else:
|
||||
cleanOldProgramsAllMachines([oai_eNB, oai_UE, oai_EPC] , oldprogramList, CleanUpAluLteBox, ExmimoRfStop)
|
||||
logfile_UE_stop_script_out = logdir_UE + '/UE_stop_script_out' + '_' + str(run) + '_.log'
|
||||
logfile_UE_stop_script = logdir_local_testcase + '/UE_stop_script' + '_' + str(run) + '_.log'
|
||||
|
||||
@@ -900,22 +961,23 @@ def handle_testcaseclass_softmodem (testcase, oldprogramList, logdirOAI5GRepo ,
|
||||
res= oai_EPC.send_recv(cmd)
|
||||
print "Changing permissions of logdir <" + logdir_EPC + "> in EPC machine..." + res
|
||||
|
||||
if RRHMachine != '':
|
||||
cmd = 'sudo -E chown -R ' + user + ' ' + logdir_RRH
|
||||
res= oai_RRH.send_recv(cmd)
|
||||
print "Changing permissions of logdir <" + logdir_RRH + "> in RRH machine..." + res
|
||||
|
||||
print "Copying files from EPCMachine : " + EPCMachine + "logdir_EPC = " + logdir_EPC
|
||||
#ssh = SSHSession(EPCMachine , username=user, key_file=None, password=password)
|
||||
#ssh.get_all(logdir_EPC , logdir_local + '/cmake_targets/autotests/log/'+ testcasename)
|
||||
SSHSessionWrapper(EPCMachine, user, None, password, logdir_EPC, logdir_local + '/cmake_targets/autotests/log/'+ testcasename, "get_all")
|
||||
|
||||
print "Copying files from eNBMachine " + eNBMachine + "logdir_eNB = " + logdir_eNB
|
||||
#ssh = SSHSession(eNBMachine , username=user, key_file=None, password=password)
|
||||
#ssh.get_all(logdir_eNB, logdir_local + '/cmake_targets/autotests/log/'+ testcasename)
|
||||
SSHSessionWrapper(eNBMachine, user, None, password, logdir_eNB, logdir_local + '/cmake_targets/autotests/log/'+ testcasename, "get_all")
|
||||
|
||||
print "Copying files from UEMachine : " + UEMachine + "logdir_UE = " + logdir_UE
|
||||
#ssh = SSHSession(UEMachine , username=user, key_file=None, password=password)
|
||||
#ssh.get_all(logdir_UE , logdir_local + '/cmake_targets/autotests/log/'+ testcasename)
|
||||
SSHSessionWrapper(UEMachine, user, None, password, logdir_UE, logdir_local + '/cmake_targets/autotests/log/'+ testcasename, "get_all")
|
||||
|
||||
if RRHMachine != '':
|
||||
print "Copying files from RRHMachine : " + RRHMachine + "logdir_RRH = " + logdir_RRH
|
||||
SSHSessionWrapper(RRHMachine, user, None, password, logdir_RRH, logdir_local + '/cmake_targets/autotests/log/'+ testcasename, "get_all")
|
||||
|
||||
|
||||
#Currently we only perform throughput tests
|
||||
@@ -1017,8 +1079,8 @@ class oaiCleanOldProgramThread (threading.Thread):
|
||||
error = error + '\n threadID = ' + str(self.threadID) + '\n threadname = ' + self.threadname + '\n CleanUpOldProgs = ' + self.CleanUpOldProgs + '\n CleanUpAluLteBox = ' + self.CleanUpAluLteBox + '\n ExmimoRfStop = ' + self.ExmimoRfStop + '\n'
|
||||
error = error + traceback.format_exc()
|
||||
print error
|
||||
print "There is error in cleaning up old programs. The test case execution cannot continue...."
|
||||
sys.exit(1)
|
||||
print "There is error in cleaning up old programs....."
|
||||
#sys.exit(1)
|
||||
|
||||
# \brief Run parallel threads in all machines for clean up old execution of test cases
|
||||
# \param oai_list list of handlers that can be used to execute programs on remote machines
|
||||
@@ -1061,6 +1123,7 @@ flag_remove_logdir=False
|
||||
flag_start_testcase=False
|
||||
nruns_lte_softmodem=''
|
||||
flag_skip_git_head_check=False
|
||||
flag_skip_oai_install=False
|
||||
Timeout_cmd=''
|
||||
print "Number of arguments argc = " + str(len(sys.argv))
|
||||
#for index in range(1,len(sys.argv) ):
|
||||
@@ -1120,6 +1183,8 @@ while i < len (sys.argv):
|
||||
elif arg == '--timeout_cmd':
|
||||
Timeout_cmd = sys.argv[i+1]
|
||||
i = i +1
|
||||
elif arg == '--skip-oai-install':
|
||||
flag_skip_oai_install=True
|
||||
elif arg == '-h' :
|
||||
print "-s: This flag *MUST* be set to start the test cases"
|
||||
print "-r: Remove the log directory in autotests"
|
||||
@@ -1135,6 +1200,7 @@ while i < len (sys.argv):
|
||||
print "-MachineListGeneric : overrides the MachineListGeneric parameter in test_case_list.xml"
|
||||
print "--skip-git-head-check: skip checking of GitHead remote/local branch (only for debugging)"
|
||||
print "--timeout_cmd: Override the default parameter (timeout_cmd) in test_case_list.xml. This parameter is in seconds and should be > 120"
|
||||
print "--skip-oai-install: Skips the openairinterface5g installer"
|
||||
sys.exit()
|
||||
else :
|
||||
print "Unrecongnized Option: <" + arg + ">. Use -h to see valid options"
|
||||
@@ -1343,6 +1409,17 @@ for oai in oai_list:
|
||||
else:
|
||||
cmd = cmd + 'if [ \"$git_head\" != \"'+ GitOAI5GHeadVersion + '\" ]; then echo \"error: Git openairinterface5g head version does not match\" ; fi \n'
|
||||
cmd = cmd + 'source oaienv' + '\n'
|
||||
if flag_skip_oai_install == False:
|
||||
cmd = cmd + 'source $OPENAIR_DIR/cmake_targets/tools/build_helper \n'
|
||||
cmd = cmd + 'echo \"Installing core OAI dependencies...Start\" \n'
|
||||
cmd = cmd + '$OPENAIR_DIR/cmake_targets/build_oai -I --install-optional-packages \n'
|
||||
cmd = cmd + 'echo \"Installing core OAI dependencies...Finished\" \n'
|
||||
#cmd = cmd + 'echo \"Installing BLADERF OAI dependencies...Start\" \n'
|
||||
#cmd = cmd + 'check_install_bladerf_driver \n'
|
||||
#cmd = cmd + 'echo \"Installing BLADERF OAI dependencies...Finished\" \n'
|
||||
#cmd = cmd + 'echo \"Installing USRP OAI dependencies...Start\" \n'
|
||||
#cmd = cmd + 'check_install_usrp_uhd_driver \n'
|
||||
#cmd = cmd + 'echo \"Installing USRP OAI dependencies...Finished\" \n'
|
||||
cmd = cmd + 'cd ' + logdirOpenaircnRepo + '\n'
|
||||
cmd = cmd + 'git checkout ' + GitOpenaircnRepoBranch + '\n'
|
||||
cmd = cmd + 'env |grep OPENAIR' + '\n'
|
||||
@@ -1351,7 +1428,7 @@ for oai 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_setup_'+str(index)+'_' + MachineList[index] , MachineList[index] , user, pw, cmd, False, 300)
|
||||
tempThread = oaiThread(index, 'thread_setup_'+str(index)+'_' + MachineList[index] , MachineList[index] , user, pw, cmd, False, 3000)
|
||||
threads_init_setup.append(tempThread )
|
||||
tempThread.start()
|
||||
index = index + 1
|
||||
@@ -1399,7 +1476,8 @@ status, out = commands.getstatusoutput('grep ' + ' -il \'error\' ' + locallogdi
|
||||
if (out != '') :
|
||||
print "There is error in setup of machines"
|
||||
print "status = " + str(status) + "\n Check files for error = " + out
|
||||
print sys.exit(1)
|
||||
print "Exiting now..."
|
||||
sys.exit(1)
|
||||
|
||||
cleanOldProgramsAllMachines(oai_list, CleanUpOldProgs, CleanUpAluLteBox, ExmimoRfStop)
|
||||
if cleanUpRemoteMachines == True:
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -131,6 +131,7 @@ def start_ue () :
|
||||
ip = IPRoute()
|
||||
idx = ip.link_lookup(ifname=iface)[0]
|
||||
os.system ('route add ' + gw + ' ppp0')
|
||||
os.system('sleep 5')
|
||||
os.system ('ping ' + gw)
|
||||
break
|
||||
except Exception, e:
|
||||
|
||||
@@ -0,0 +1,200 @@
|
||||
#!/usr/bin/python
|
||||
|
||||
import time
|
||||
import serial
|
||||
import os
|
||||
from pyroute2 import IPRoute
|
||||
import sys
|
||||
import re
|
||||
import threading
|
||||
import signal
|
||||
import traceback
|
||||
import os
|
||||
import commands
|
||||
|
||||
# configure the serial connections (the parameters differs on the device you are connecting to)
|
||||
#First we find an open port to work with
|
||||
serial_port=''
|
||||
ser=serial.Serial()
|
||||
openair_dir = os.environ.get('OPENAIR_DIR')
|
||||
if openair_dir == None:
|
||||
print "Error getting OPENAIR_DIR environment variable"
|
||||
sys.exit(1)
|
||||
|
||||
sys.path.append(os.path.expandvars('$OPENAIR_DIR/cmake_targets/autotests/tools/'))
|
||||
|
||||
from lib_autotest import *
|
||||
|
||||
def find_open_port():
|
||||
global serial_port, ser
|
||||
max_ports=100
|
||||
if os.path.exists(serial_port) == True:
|
||||
return serial_port
|
||||
for port in range(0,100):
|
||||
serial_port = '/dev/ttyUSB'+str(port)
|
||||
if os.path.exists(serial_port) == True:
|
||||
print 'New Serial Port : ' + serial_port
|
||||
break
|
||||
|
||||
ser = serial.Serial(port=serial_port)
|
||||
return
|
||||
|
||||
|
||||
|
||||
#serial_port = '/dev/ttyUSB2'
|
||||
bandrich_ppd_config = os.environ.get('OPENAIR_DIR') + '/cmake_targets/autotests/tools/wdial.bandrich.conf'
|
||||
|
||||
exit_flag=0
|
||||
|
||||
def signal_handler(signal, frame):
|
||||
print('You pressed Ctrl+C!')
|
||||
print('Resetting the UE to detached state')
|
||||
timeout=10
|
||||
exit_flag=1
|
||||
send_command('AT+CGATT=0' , 'OK' , timeout)
|
||||
sys.exit(0)
|
||||
|
||||
signal.signal(signal.SIGINT, signal_handler)
|
||||
|
||||
|
||||
|
||||
#ser.open()
|
||||
#ser.isOpen()
|
||||
|
||||
class pppThread (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
|
||||
#Here we keep running pppd thread in indefinite loop as this script terminates sometimes
|
||||
#while 1:
|
||||
while 1:
|
||||
time.sleep(5) #Hard coded, do not reduce this number!
|
||||
print "Starting wvdial now..."
|
||||
print 'exit_flag = ' + str(exit_flag)
|
||||
send_command('AT+CGATT=1','OK', 300)
|
||||
os.system('wvdial -C ' + bandrich_ppd_config + '' )
|
||||
if exit_flag == 1:
|
||||
print "Exit flag set to true. Exiting pppThread now"
|
||||
print "Terminating wvdial now..."
|
||||
|
||||
def send_command (cmd, response, timeout):
|
||||
count=0
|
||||
sleep_duration = 1
|
||||
print 'In function: send_command: cmd = <' + cmd + '> response: <' + response + '> \n'
|
||||
global serial_port, ser
|
||||
while count <= timeout:
|
||||
try:
|
||||
#Sometimes the port does not exist coz of reset in modem.
|
||||
#In that case, we need to search for this port again
|
||||
if os.path.exists(serial_port) == False:
|
||||
find_open_port()
|
||||
ser.write (cmd + '\r\n')
|
||||
out = ''
|
||||
time.sleep(sleep_duration)
|
||||
count = count + sleep_duration
|
||||
while ser.inWaiting() > 0:
|
||||
out += ser.read(1)
|
||||
print 'out = <' + out + '> response = <' + response + '> \n'
|
||||
if re.search(response, out):
|
||||
break
|
||||
except Exception, e:
|
||||
error = ' cmd : ' + cmd + ' response : ' + response
|
||||
error = error + ' In function: ' + sys._getframe().f_code.co_name + ': *** Caught exception: ' + str(e.__class__) + " : " + str( e)
|
||||
error = error + traceback.format_exc()
|
||||
print error
|
||||
|
||||
|
||||
def start_ue () :
|
||||
#print 'Enter your commands below.\r\nInsert "exit" to leave the application.'
|
||||
timeout=60 #timeout in seconds
|
||||
send_command('AT', 'OK' , timeout)
|
||||
#send_command('AT+CFUN=1' , 'OK' , timeout)
|
||||
#send_command('AT+CGATT=0' , 'OK' , timeout)
|
||||
send_command('AT+CGATT=1','OK', 300)
|
||||
#os.system('wvdial -C ' + bandrich_ppd_config + ' &' )
|
||||
|
||||
thread_ppp = pppThread(1, "ppp_thread", 1)
|
||||
thread_ppp.start()
|
||||
|
||||
iface='ppp0'
|
||||
|
||||
while 1:
|
||||
time.sleep ( 2)
|
||||
#Now we check if ppp0 interface is up and running
|
||||
try:
|
||||
if exit_flag == 1:
|
||||
break
|
||||
ip = IPRoute()
|
||||
idx = ip.link_lookup(ifname=iface)[0]
|
||||
os.system ('route add ' + gw + ' ppp0')
|
||||
os.system('sleep 5')
|
||||
os.system ('ping ' + gw)
|
||||
break
|
||||
except Exception, e:
|
||||
error = ' Interface ' + iface + 'does not exist...'
|
||||
error = error + ' In function: ' + sys._getframe().f_code.co_name + ': *** Caught exception: ' + str(e.__class__) + " : " + str( e)
|
||||
error = error + traceback.format_exc()
|
||||
print error
|
||||
|
||||
thread_ppp.join()
|
||||
|
||||
def stop_ue():
|
||||
timeout=60
|
||||
os.system('killall wvdial')
|
||||
send_command('AT', 'OK' , timeout)
|
||||
send_command('AT+CGATT=0' , 'OK|ERROR' , timeout)
|
||||
#send_command('AT+CFUN=4' , 'OK' , timeout)
|
||||
|
||||
|
||||
#reset the USB BUS of Bandrich UE
|
||||
def reset_ue():
|
||||
stringIdBandrich='Huawei Technologies Co., Ltd. E398 LTE/UMTS/GSM Modem/Networkcard'
|
||||
status, out = commands.getstatusoutput('lsusb | grep -i \'' + stringIdBandrich + '\'')
|
||||
if (out == '') :
|
||||
print "Bandrich 4G LTE Adapter not found. Exiting now..."
|
||||
sys.exit()
|
||||
p=re.compile('Bus\s*(\w+)\s*Device\s*(\w+):\s*ID\s*(\w+):(\w+)')
|
||||
res=p.findall(out)
|
||||
BusId=res[0][0]
|
||||
DeviceId=res[0][1]
|
||||
VendorId=res[0][2]
|
||||
ProductId=res[0][3]
|
||||
usb_dir= find_usb_path(VendorId, ProductId)
|
||||
print "Bandrich 4G LTE Adapter found in..." + usb_dir
|
||||
cmd = "sudo sh -c \"echo 0 > " + usb_dir + "/authorized\""
|
||||
os.system(cmd + " ; sleep 15" )
|
||||
cmd = "sudo sh -c \"echo 1 > " + usb_dir + "/authorized\""
|
||||
os.system(cmd + " ; sleep 30" )
|
||||
|
||||
i=1
|
||||
gw='192.172.0.1'
|
||||
while i < len(sys.argv):
|
||||
arg=sys.argv[i]
|
||||
if arg == '--start-ue' :
|
||||
find_open_port()
|
||||
print 'Using Serial port : ' + serial_port
|
||||
start_ue()
|
||||
elif arg == '--stop-ue' :
|
||||
find_open_port()
|
||||
print 'Using Serial port : ' + serial_port
|
||||
stop_ue()
|
||||
elif arg == '--reset-ue' :
|
||||
reset_ue()
|
||||
elif arg == '-gw' :
|
||||
gw = sys.argv[i+1]
|
||||
i=i+1
|
||||
elif arg == '-h' :
|
||||
print "--reset-ue: Reset the UE on USB Bus. Similar to unplugging and plugging the UE"
|
||||
print "--stop-ue: Stop the UE. Send DETACH command"
|
||||
print "--start-ue: Start the UE. Send ATTACH command"
|
||||
print "-gw: Specify the default gw as sometimes the gateway/route arguments are not set properly via wvdial"
|
||||
else :
|
||||
print " Script called with wrong arguments, arg = " + arg
|
||||
sys.exit()
|
||||
i = i +1
|
||||
|
||||
|
||||
@@ -26,6 +26,9 @@ if keyword == 'mme_ip_address':
|
||||
elif keyword == 'IPV4_LIST':
|
||||
replacement_text = keyword + ' = ( ' + replacement_text + ' ) ; '
|
||||
string = re.sub(r"IPV4_LIST\s*=\s*\(([^\$]+?)\)\s*;", replacement_text, string, re.M)
|
||||
elif keyword == 'rrh_gw_config':
|
||||
replacement_text = keyword + ' = ( { ' + replacement_text + ' } ) ; '
|
||||
string = re.sub(r"rrh_gw_config\s*=\s*\(([^\$]+?)\)\s*;", replacement_text, string, re.M)
|
||||
else :
|
||||
replacement_text = keyword + ' = ' + replacement_text + ' ; '
|
||||
string = re.sub(r"%s\s*=\s*([^\$]+?)\s*;" % keyword , replacement_text, string, re.M)
|
||||
|
||||
@@ -13,5 +13,5 @@ sudo -E $OPENAIR_DIR/cmake_targets/tools/init_exmimo2
|
||||
|
||||
#now we stop the card from transmitting anything
|
||||
cd $OPENAIR_DIR/targets/bin
|
||||
sudo -E octave $OPENAIR_DIR/cmake_targets/tools/exmimo_stop_octave.m
|
||||
sudo -E octave -H --no-gui $OPENAIR_DIR/cmake_targets/tools/exmimo_stop_octave.m
|
||||
|
||||
|
||||
Reference in New Issue
Block a user