From 87dccea43fdfd0a7871e6a8db1f7cc2135219119 Mon Sep 17 00:00:00 2001 From: hardy Date: Mon, 20 Jul 2020 16:44:51 +0200 Subject: [PATCH] integrating cots ue control into CI --- ci-scripts/cls_cots_ue.py | 89 +++++++++++++++++++++ ci-scripts/main.py | 7 ++ ci-scripts/xml_files/fr1_toggle_cots_ue.xml | 39 +++++++++ 3 files changed, 135 insertions(+) create mode 100644 ci-scripts/cls_cots_ue.py create mode 100644 ci-scripts/xml_files/fr1_toggle_cots_ue.xml diff --git a/ci-scripts/cls_cots_ue.py b/ci-scripts/cls_cots_ue.py new file mode 100644 index 0000000000..821d39fb6f --- /dev/null +++ b/ci-scripts/cls_cots_ue.py @@ -0,0 +1,89 @@ +# * Licensed to the OpenAirInterface (OAI) Software Alliance under one or more +# * contributor license agreements. See the NOTICE file distributed with +# * this work for additional information regarding copyright ownership. +# * The OpenAirInterface Software Alliance licenses this file to You under +# * the OAI Public License, Version 1.1 (the "License"); you may not use this file +# * except in compliance with the License. +# * You may obtain a copy of the License at +# * +# * http://www.openairinterface.org/?page_id=698 +# * +# * Unless required by applicable law or agreed to in writing, software +# * distributed under the License is distributed on an "AS IS" BASIS, +# * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# * See the License for the specific language governing permissions and +# * limitations under the License. +# *------------------------------------------------------------------------------- +# * For more information about the OpenAirInterface (OAI) Software Alliance: +# * contact@openairinterface.org +# */ +#--------------------------------------------------------------------- +# Python for CI of OAI-eNB + COTS-UE +# +# Required Python Version +# Python 3.x +# +# Required Python Package +# pexpect +#--------------------------------------------------------------------- + +#to use logging.info() +import logging +#to create a SSH object locally in the methods +import sshconnection + + +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 + self.__SetAirplaneRetry = 3 + +#-----------------$ +#PUBLIC Methods$ +#-----------------$ + + def Check_Airplane(self): + mySSH = sshconnection.SSHConnection() + mySSH.open(self.UEIPAddr, self.UEUserName, self.UEPassWord) + + mySSH.command('cd /home/oaici/remi/android-sdk-linux/platform-tools', '\$', 5) + 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): + print("toggling state 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 + mySSH = sshconnection.SSHConnection() + mySSH.open(self.UEIPAddr, self.UEUserName, self.UEPassWord) + retry = 0 + while (current_state!=target_state) and (retry < self.__SetAirplaneRetry): + mySSH.command('cd /home/oaici/remi/android-sdk-linux/platform-tools', '\$', 5) + 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 + if current_state != target_state: + print("ATTENTION : Could not toggle to : "+target_state_str) + print("Current state is : "+ str(current_state)) + mySSH.close() + else: + print("Airplane mode is already "+ target_state_str) + + + + + diff --git a/ci-scripts/main.py b/ci-scripts/main.py index 65a0b0d836..d1103be3f2 100644 --- a/ci-scripts/main.py +++ b/ci-scripts/main.py @@ -3236,6 +3236,10 @@ def GetParametersFromXML(action): if action == 'Run_PhySim': ldpc.runargs = test.findtext('physim_run_args') + + if action == 'COTS_UE_Airplane': + COTS_UE=CotsUe('oppo', self.UEIPAddress, self.UEUserName,UEPassword) + COTS_UE.runargs = test.findtext('cots_ue_airplane_args') #check if given test is in list #it is in list if one of the strings in 'list' is at the beginning of 'test' @@ -3274,6 +3278,9 @@ RAN.EpcObj=EPC import cls_physim #class PhySim for physical simulators build and test ldpc=cls_physim.PhySim() #create an instance for LDPC test using GPU or CPU build +import cls_cots_ue #class CotsUe + + argvs = sys.argv argc = len(argvs) cwd = os.getcwd() diff --git a/ci-scripts/xml_files/fr1_toggle_cots_ue.xml b/ci-scripts/xml_files/fr1_toggle_cots_ue.xml new file mode 100644 index 0000000000..8271d333e2 --- /dev/null +++ b/ci-scripts/xml_files/fr1_toggle_cots_ue.xml @@ -0,0 +1,39 @@ + + + test-toggle-airplane-mode + Airplane + tasks + + 010101 + + + + + COTS_UE_Airplane + toggle on + ON + + + +