integrating cots ue control into CI
This commit is contained in:
@@ -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)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@@ -3236,6 +3236,10 @@ def GetParametersFromXML(action):
|
|||||||
|
|
||||||
if action == 'Run_PhySim':
|
if action == 'Run_PhySim':
|
||||||
ldpc.runargs = test.findtext('physim_run_args')
|
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
|
#check if given test is in list
|
||||||
#it is in list if one of the strings in 'list' is at the beginning of 'test'
|
#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
|
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
|
ldpc=cls_physim.PhySim() #create an instance for LDPC test using GPU or CPU build
|
||||||
|
|
||||||
|
import cls_cots_ue #class CotsUe
|
||||||
|
|
||||||
|
|
||||||
argvs = sys.argv
|
argvs = sys.argv
|
||||||
argc = len(argvs)
|
argc = len(argvs)
|
||||||
cwd = os.getcwd()
|
cwd = os.getcwd()
|
||||||
|
|||||||
@@ -0,0 +1,39 @@
|
|||||||
|
<!--
|
||||||
|
|
||||||
|
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
|
||||||
|
|
||||||
|
-->
|
||||||
|
<testCaseList>
|
||||||
|
<htmlTabRef>test-toggle-airplane-mode</htmlTabRef>
|
||||||
|
<htmlTabName>Airplane</htmlTabName>
|
||||||
|
<htmlTabIcon>tasks</htmlTabIcon>
|
||||||
|
<TestCaseRequestedList>
|
||||||
|
010101
|
||||||
|
</TestCaseRequestedList>
|
||||||
|
<TestCaseExclusionList></TestCaseExclusionList>
|
||||||
|
|
||||||
|
<testCase id="010101">
|
||||||
|
<class>COTS_UE_Airplane</class>
|
||||||
|
<desc>toggle on</desc>
|
||||||
|
<cots_ue_airplane_args>ON</cots_ue_airplane_args>
|
||||||
|
</testCase>
|
||||||
|
|
||||||
|
|
||||||
|
</testCaseList>
|
||||||
Reference in New Issue
Block a user