diff --git a/cmake_targets/autotests/openair.py b/cmake_targets/autotests/openair.py index 1606bcaf6a090eb903a5fe2c3f07aba81486c155..598edaf16909fe9dd79c5443b3f1771922385828 100644 --- a/cmake_targets/autotests/openair.py +++ b/cmake_targets/autotests/openair.py @@ -164,15 +164,15 @@ class openair(core): def kill(self, user, pw): try: if user == 'root' : - os.system('pkill oaisim') + os.system('pkill oaisim oaisim_nos1') os.system('pkill cc1') time.sleep(1) - os.system('pkill oaisim') + os.system('pkill oaisim oaisim_nos1') else : - os.system('echo '+pw+' | sudo -S pkill oaisim') + os.system('echo '+pw+' | sudo -S pkill oaisim oaisim_nos1') os.system('echo '+pw+' | sudo -S pkill cc1') time.sleep(1) - os.system('echo '+pw+' | sudo -S pkill oaisim') + os.system('echo '+pw+' | sudo -S pkill oaisim oaisim_nos1') except Error, val: print "Error:", val diff --git a/cmake_targets/autotests/run_exec_lte-softmodem_tests.py b/cmake_targets/autotests/run_exec_lte-softmodem_tests.py index f66f8206c0f1b410d68ae28f71cdbfcdae1eebd0..a81fb49d0380d86fa79ca0ae59df3d7e7b555504 100644 --- a/cmake_targets/autotests/run_exec_lte-softmodem_tests.py +++ b/cmake_targets/autotests/run_exec_lte-softmodem_tests.py @@ -211,47 +211,98 @@ class oaiThread (threading.Thread): print "result = " + result print "Exiting " + self.name -#This class runs test cases with class oaisim_noS1, compilatation -class testCaseThread_generic(threading.thread): - def __init__(self, threadID, name, oai, machine, logdirOAI5GRepo, oai5GRepoDirRemote, testcasename,oldprogramList, CleanupAluLteBox, username, password, timeout): +#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.name = name - self.oai = oai self.testcasename = testcasename self.timeout = timeout self.machine = machine - self.oai5GRepoDirRemote = oai5GRepoDirRemote self.logdirOAI5GRepo = logdirOAI5GRepo - self.username = username - self.password = password + self.oldprogramList = oldprogramList + self.CleanupAluLteBox = CleanupAluLteBox + self.password=password def run(self): try: mypassword='' #addsudo = 'echo \'' + mypassword + '\' | sudo -S -E ' addpass = 'echo \'' + mypassword + '\' | ' user = getpass.getuser() - print "Starting test case : " + self.testcasename + " On machine " + machineName + print "Starting test case : " + self.testcasename + " On machine " + self.machine + oai = openair('localdomain',machine) + oai.connect(user, self.password) cleanOldPrograms(oai, oldprogramList, CleanUpAluLteBox) - logdir_local_testcase = logdirOAI5GRepo+'/cmake_targets/autotests/log/'+ testcasename - logdir_local_base = logdirOAI5GRepo+'/cmake_targets/autotests/log/' - logdir_remote_testcase = oai5GRepoDirRemote + '/cmake_targets/autotests/log' + self.testcasename + 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) - cmd = "( cd " + self.oai5GRepoDirRemote + " \n " + cmd = "( cd " + self.logdirOAI5GRepo + " \n " cmd = cmd + "source oaienv \n" - cmd = cmd + "python run_test_case_generic -d " + self.oai5GRepoDirRemote + " -g " + "\"" + self.testcasename + "\"" - cmd = cmd + " ) " - - #Now we copy all the remote - ssh = SSHSession(self.machine , username=username, key_file=None, passsword=password) + cmd = cmd + "$OPENAIR_DIR/cmake_targets/autotests/run_exec_autotets.bash --run-group \"" + "self.testcasename +\" " + cmd = cmd + " ) >& " + logfile_task_testcasename_out + " ; " + " mv " + logfile_task_testcasename_out + logdir_remote_testcase + + 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.get_all(logdir_remote_testcase , logdir_local_base) - print "Finishing test case : " + self.testcasename + " On machine " + machineName + print "Finishing test case : " + self.testcasename + " On machine " + machineName + cleanOldPrograms(oai, oldprogramList, CleanUpAluLteBox) + oai.kill() + 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 = ' + self.threaID + '\n testcasename = ' + self.testcasename + '\n timeout = ' + self.timeout + '\n machine = ' + self.machine + '\n logdirOAI5GRepo = ' + self.logdirOAI5GRepo + '\n' + error = error + traceback.format_exc() def addsudo (cmd, password=""): cmd = 'echo \'' + password + '\' | sudo -S -E bash -c \' ' + cmd + '\' ' return cmd + +def handle_testcaseclass_generic (testcasename, threadListGeneric, oldprogramList, logdirOAI5GRepo, MachineList, password, CleanupAluLteBox,timeout): + try: + mypassword=password + MachineListFree=[] + while MachineListFree.__len__() == 0 : + MachineListBusy=[] + #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 + else : + for param in threadListGeneric : + thread_id = param["thread_id"] + machine = param["Machine"] + testcasename = param["testcasename"] + thread_id.join(1) + if thread_id.isAlive == True: + MachineListBusy.append(machine) + else : + threadListGeneric.remove(param) + #Now we check if there is at least one free machine + MachineListFree = MachineList + for machine in MachineListBusy: + MachineListFree.remove(machine) + machine = MachineListFree[0] + thread = testCaseThread_generic(1,"Generic Thread", machine, logdirOAI5GRepo, testcasename, oldprogramList, CleanupAluLteBox, password, timeout) + param={"thread_id":thread, "Machine":machine, "testcasename":testcasename} + thread.start() + threadListGeneric.append(param) + return threadListGeneric + 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 + traceback.format_exc() + #Function to handle test case class : lte-softmodem def handle_testcaseclass_softmodem (testcase, oldprogramList, oai_list, logdirOAI5GRepo , logdirOpenaircnRepo, MachineList, password, CleanUpAluLteBox): @@ -603,6 +654,7 @@ def search_test_case_group(testcasename, testcasegroup): #thread1 = myThread(1, "Thread-1", 1) +threadListGeneric=[] debug = 0 pw ='' i = 0 @@ -714,6 +766,7 @@ GitOAI5GRepoBranch = xmlRoot.findtext('GitOAI5GRepoBranch',default='') GitOpenaircnRepoBranch = xmlRoot.findtext('GitOpenair-cnRepoBranch',default='') CleanUpOldProgs = xmlRoot.findtext('CleanUpOldProgs',default='') CleanUpAluLteBox = xmlRoot.findtext('CleanUpAluLteBox',default='') +Timeout_execution = int (xmlRoot.findtext('Timeout_execution')) print "MachineList = " + MachineList print "GitOpenair-cnRepo = " + GitOpenaircnRepo @@ -725,7 +778,7 @@ cmd = "git show-ref --heads -s "+ GitOAI5GRepoBranch GitOAI5GHeadVersion = subprocess.check_output ([cmd], shell=True) print "GitOAI5GHeadVersion = " + GitOAI5GHeadVersion print "CleanUpOldProgs = " + CleanUpOldProgs - +print "Timeout_execution = " + str(Timeout_execution) MachineList = MachineList.split() @@ -897,6 +950,7 @@ for index in oai_list: sys.exit(1) + #Now we wait for all the threads to complete index = 0 for t in threads_init_setup: @@ -922,7 +976,7 @@ for t in threads_init_setup: #Now we process all the test cases - +threadListGeneric=[] testcaseList=xmlRoot.findall('testCase') #print testcaseList for testcase in testcaseList: @@ -939,19 +993,17 @@ for testcase in testcaseList: 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) + elif (testcaseclass == 'compilation'): + handle_testcaseclass_generic (testcasename, threadListGeneric, oldprogramList, logdirOAI5GRepo, MachineList, pw, CleanupAluLteBox,Timeout_execution) + elif (testcaseclass == 'execution'): + handle_testcaseclass_generic (testcasename, threadListGeneric, oldprogramList, logdirOAI5GRepo, MachineList, pw, CleanupAluLteBox,Timeout_execution) else : print "Unknown test case class: " + testcaseclass sys.exit() print "Exiting the test cases execution now..." + sys.exit() diff --git a/cmake_targets/autotests/test_case_list.xml b/cmake_targets/autotests/test_case_list.xml index 650b62ab12f9593eb6231b8d8063c0fcec3725ff..2cd1438a8a2bf68a41c844a68abc9d99603f27a4 100644 --- a/cmake_targets/autotests/test_case_list.xml +++ b/cmake_targets/autotests/test_case_list.xml @@ -8,7 +8,7 @@ <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> <CleanUpAluLteBox>/opt/ltebox/tools/stop_ltebox</CleanUpAluLteBox> - + <Timeout_execution>1800</Timeout_execution> <testCase id="010101" > <class>compilation</class> <desc>Build oaisim.Rel8</desc> @@ -26,7 +26,7 @@ <search_expr_true></search_expr_true> <search_expr_false></search_expr_false> <tags>oaisim.Rel8</tags> - <nruns>2</nruns> + <nruns>1</nruns> </testCase> <testCase id="010102" > @@ -928,7 +928,6 @@ <eNB>calisson</eNB> <UE>stevens</UE> <EPC>amerique</EPC> - <cleanupScript>oaisim* oaisim_nos1* lte-softmodem* lte-softmodem-nos1* mme_gw* run_epc* run_hss* iperf* ltebox*</cleanupScript> <TimeOut_cmd>60</TimeOut_cmd> <eNB_working_dir>/tmp</eNB_working_dir> <eNB_config_file>targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.usrpb210.epc.local.conf tracking_area_code \"1\" @@ -1000,7 +999,6 @@ <eNB>calisson</eNB> <UE>stevens</UE> <EPC>nano</EPC> - <cleanupScript>oaisim* oaisim_nos1* lte-softmodem* lte-softmodem-nos1* mme_gw* run_epc* run_hss* iperf* ltebox*</cleanupScript> <TimeOut_cmd>60</TimeOut_cmd> <eNB_working_dir>/tmp</eNB_working_dir> <eNB_config_file>targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.usrpb210.epc.local.conf tracking_area_code \"1\" @@ -1079,7 +1077,6 @@ <eNB>calisson</eNB> <UE>stevens</UE> <EPC>calisson</EPC> - <cleanupScript>oaisim* oaisim_nos1* lte-softmodem* lte-softmodem-nos1* mme_gw* run_epc* run_hss* iperf* ltebox*</cleanupScript> <TimeOut_cmd>60</TimeOut_cmd> <eNB_working_dir>/tmp</eNB_working_dir> <eNB_config_file>targets/PROJECTS/GENERIC-LTE-EPC/CONF/enb.band7.tm1.usrpb210.epc.local.conf tracking_area_code \"1\"