diff --git a/ci-scripts/cls_cots_ue.py b/ci-scripts/cls_cots_ue.py index 6954aa392742f1ca77ee64d46e97b468a2614cff..7943f698c29fb2ac6b349c8550e6c848310543f0 100644 --- a/ci-scripts/cls_cots_ue.py +++ b/ci-scripts/cls_cots_ue.py @@ -33,14 +33,16 @@ import logging import sshconnection #time.sleep import time +#to load cots_ue dictionary +import yaml class CotsUe: - def __init__(self,model,UEIPAddr,UEUserName,UEPassWord): - self.model = model - self.UEIPAddr = UEIPAddr - self.UEUserName = UEUserName - self.UEPassWord = UEPassWord - self.runargs = '' #on of off to toggle airplane mode on/off + def __init__(self,ADBIPAddr,ADBUserName,ADBPassWord): + self.cots_id = '' #cots id from yaml oppo, s10 etc... + self.ADBIPAddr = ADBIPAddr + self.ADBUserName = ADBUserName + self.ADBPassWord = ADBPassWord + self.cots_run_mode = '' #on of off to toggle airplane mode on/off self.__SetAirplaneRetry = 3 #-----------------$ @@ -49,39 +51,45 @@ class CotsUe: def Check_Airplane(self): mySSH = sshconnection.SSHConnection() - mySSH.open(self.UEIPAddr, self.UEUserName, self.UEPassWord) + mySSH.open(self.ADBIPAddr, self.ADBUserName, self.ADBPassWord) status=mySSH.cde_check_value('sudo adb shell settings get global airplane_mode_on ', ['0','1'],5) mySSH.close() return status - def Set_Airplane(self,target_state_str): - mySSH = sshconnection.SSHConnection() - mySSH.open(self.UEIPAddr, self.UEUserName, self.UEPassWord) - mySSH.command('sudo adb start-server','$',5) - logging.info("Toggling COTS UE Airplane mode to : "+target_state_str) - current_state = self.Check_Airplane() - if target_state_str.lower()=="on": - target_state=1 - else: - target_state=0 - if current_state != target_state: - #toggle state - retry = 0 - while (current_state!=target_state) and (retry < self.__SetAirplaneRetry): - mySSH.command('sudo adb shell am start -a android.settings.AIRPLANE_MODE_SETTINGS', '\$', 5) - mySSH.command('sudo adb shell input keyevent 20', '\$', 5) - mySSH.command('sudo adb shell input tap 968 324', '\$', 5) - time.sleep(1) - current_state = self.Check_Airplane() - retry+=1 + def Set_Airplane(self, target_id, target_state_str): + #load cots commands dictionary + with open('cots_ue_ctl.yaml','r') as file: + cots_ue_ctl = yaml.load(file,Loader=yaml.FullLoader) + if target_id in cots_ue_ctl: + mySSH = sshconnection.SSHConnection() + mySSH.open(self.ADBIPAddr, self.ADBUserName, self.ADBPassWord) + mySSH.command('sudo adb start-server','$',5) + logging.info("Toggling COTS UE Airplane mode to : "+target_state_str) + current_state = self.Check_Airplane() + if target_state_str.lower()=="on": + target_state=1 + else: + target_state=0 if current_state != target_state: - logging.error("ATTENTION : Could not toggle to : "+target_state_str) - logging.error("Current state is : "+ str(current_state)) + #toggle state + retry = 0 + while (current_state!=target_state) and (retry < self.__SetAirplaneRetry): + #loop over the command list from dictionary for the selected ue, to switch to required state + for i in range (0,len(cots_ue_ctl[target_id])): + mySSH.command(cots_ue_ctl[target_id][i], '\$', 5) + time.sleep(1) + current_state = self.Check_Airplane() + retry+=1 + if current_state != target_state: + logging.error("ATTENTION : Could not toggle to : "+target_state_str) + logging.error("Current state is : "+ str(current_state)) + else: + print("Airplane mode is already "+ target_state_str) + mySSH.command('sudo adb kill-server','$',5) + mySSH.close() else: - print("Airplane mode is already "+ target_state_str) - mySSH.command('sudo adb kill-server','$',5) - mySSH.close() + logging.error("COTS UE Id from XML could not be found in UE YAML dictionary cots_ue_ctl.yaml) diff --git a/ci-scripts/cots_ue_ctl.yaml b/ci-scripts/cots_ue_ctl.yaml new file mode 100644 index 0000000000000000000000000000000000000000..cea73d9603e0062c1288bd69ebbf7f50c9f016d8 --- /dev/null +++ b/ci-scripts/cots_ue_ctl.yaml @@ -0,0 +1,16 @@ +oppo: + - sudo adb shell am start -a android.settings.AIRPLANE_MODE_SETTINGS + - sudo adb shell input keyevent 20 + - sudo adb shell input tap 968 324 +s10: + - sudo adb shell am start -a android.settings.AIRPLANE_MODE_SETTINGS + - sudo adb shell input keyevent 20 + - sudo adb shell input tap 968 324 +s20: + - sudo adb shell am start -a android.settings.AIRPLANE_MODE_SETTINGS + - sudo adb shell input keyevent 20 + - sudo adb shell input tap 968 324 +xperia: + - sudo adb shell am start -a android.settings.AIRPLANE_MODE_SETTINGS + - sudo adb shell input keyevent 20 + - sudo adb shell input tap 968 324 diff --git a/ci-scripts/main.py b/ci-scripts/main.py index d37f205f4e6a11cb72ebacb3455613b52b21d2f9..896502e6fe7c9939be69e1a12694b326c6a9cccf 100644 --- a/ci-scripts/main.py +++ b/ci-scripts/main.py @@ -3295,7 +3295,8 @@ def GetParametersFromXML(action): ldpc.runargs = test.findtext('physim_run_args') if action == 'COTS_UE_Airplane': - COTS_UE.runargs = test.findtext('cots_ue_airplane_args') + COTS_UE.cots_id = test.findtext('cots_id') + COTS_UE.cots_run_mode = test.findtext('cots_run_mode') #check if given test is in list #it is in list if one of the strings in 'list' is at the beginning of 'test' @@ -3323,8 +3324,6 @@ import yaml xml_class_list_file='' if (os.path.isfile('xml_class_list.yml')): xml_class_list_file='xml_class_list.yml' -if (os.path.isfile('ci-scripts/xml_class_list.yml')): - xml_class_list_file='ci-scripts/xml_class_list.yml' with open(xml_class_list_file,'r') as file: # The FullLoader parameter handles the conversion from YAML # scalar values to Python the dictionary format @@ -3375,8 +3374,9 @@ if py_param_file_present == True: #----------------------------------------------------------- # COTS UE instanciation #----------------------------------------------------------- -#COTS_UE instanciation can only be done here for the moment, due to code architecture -COTS_UE=cls_cots_ue.CotsUe('oppo', CiTestObj.UEIPAddress, CiTestObj.UEUserName,CiTestObj.UEPassword) +#COTS_UE instanciation and ADB server init +#ue id and ue mode are retrieved from xml +COTS_UE=cls_cots_ue.CotsUe(CiTestObj.ADBIPAddress, CiTestObj.ADBUserName,CiTestObj.ADBPassword) #----------------------------------------------------------- @@ -3689,7 +3689,8 @@ elif re.match('^TesteNB$', mode, re.IGNORECASE) or re.match('^TestUE$', mode, re elif action == 'Run_PhySim': HTML=ldpc.Run_PhySim(HTML,CONST,id) elif action == 'COTS_UE_Airplane': - COTS_UE.Set_Airplane(COTS_UE.runargs) + #cots id and cots run mode were read from xml test file + COTS_UE.Set_Airplane(COTS_UE.cots_id, COTS_UE.cots_run_mode) else: sys.exit('Invalid class (action) from xml') CiTestObj.FailReportCnt += 1 diff --git a/ci-scripts/xml_files/fr1_toggle_cots_ue.xml b/ci-scripts/xml_files/fr1_toggle_cots_ue.xml index b2267efc77dcc514bcf07eda0c2223be3ed5b46a..86c85f88b23288d13277fd4ef0b90e6cd5131135 100644 --- a/ci-scripts/xml_files/fr1_toggle_cots_ue.xml +++ b/ci-scripts/xml_files/fr1_toggle_cots_ue.xml @@ -32,7 +32,8 @@ <testCase id="010000"> <class>COTS_UE_Airplane</class> <desc>Toggle COTS Airplane mode ON</desc> - <cots_ue_airplane_args>ON</cots_ue_airplane_args> + <cots_id>oppo</cots_id> + <cots_run_mode>ON</cots_run_mode> </testCase>