Merge remote-tracking branch 'origin/develop' into develop-NR_SA_F1AP_5GRECORDS
This commit is contained in:
@@ -48,21 +48,30 @@ pipeline {
|
|||||||
COMMIT_ID=COMMIT_ID.trim()
|
COMMIT_ID=COMMIT_ID.trim()
|
||||||
echo "Testing NSA on : ${MR} ${SRC_BRANCH} ${COMMIT_ID}"
|
echo "Testing NSA on : ${MR} ${SRC_BRANCH} ${COMMIT_ID}"
|
||||||
//calling NSA sub job
|
//calling NSA sub job
|
||||||
build job: "RAN-NSA-Mini-Module", wait : false, propagate : false, parameters: [
|
build job: "RAN-NSA-Mini-Module", wait : true, propagate : false, parameters: [
|
||||||
string(name: 'eNB_MR', value: String.valueOf(MR)),
|
string(name: 'eNB_MR', value: String.valueOf(MR)),
|
||||||
string(name: 'eNB_Branch', value: String.valueOf(SRC_BRANCH)),
|
string(name: 'eNB_Branch', value: String.valueOf(SRC_BRANCH)),
|
||||||
string(name: 'eNB_CommitID', value: String.valueOf(COMMIT_ID)),
|
string(name: 'eNB_CommitID', value: String.valueOf(COMMIT_ID)),
|
||||||
string(name: 'eNB_TargetBranch', value: String.valueOf(TARGET_BRANCH)),
|
string(name: 'eNB_TargetBranch', value: String.valueOf(TARGET_BRANCH)),
|
||||||
booleanParam(name: 'eNB_AllowMergeRequestProcess', value: Boolean.valueOf(ALLOW_MERGE))
|
booleanParam(name: 'eNB_AllowMergeRequestProcess', value: Boolean.valueOf(ALLOW_MERGE))
|
||||||
]
|
]
|
||||||
//calling Benetel sub job
|
//calling NSA long sub job
|
||||||
//build job: "RAN-CI-BENETEL", wait : false, propagate : false, parameters: [
|
build job: "RAN-NSA-Mini-Module-Long", wait : true, propagate : false, parameters: [
|
||||||
// string(name: 'eNB_MR', value: String.valueOf(MR)),
|
string(name: 'eNB_MR', value: String.valueOf(MR)),
|
||||||
// string(name: 'eNB_Branch', value: String.valueOf(SRC_BRANCH)),
|
string(name: 'eNB_Branch', value: String.valueOf(SRC_BRANCH)),
|
||||||
// string(name: 'eNB_CommitID', value: String.valueOf(COMMIT_ID)),
|
string(name: 'eNB_CommitID', value: String.valueOf(COMMIT_ID)),
|
||||||
// string(name: 'eNB_TargetBranch', value: String.valueOf(TARGET_BRANCH)),
|
string(name: 'eNB_TargetBranch', value: String.valueOf(TARGET_BRANCH)),
|
||||||
// booleanParam(name: 'eNB_AllowMergeRequestProcess', value: Boolean.valueOf(ALLOW_MERGE))
|
booleanParam(name: 'eNB_AllowMergeRequestProcess', value: Boolean.valueOf(ALLOW_MERGE))
|
||||||
//]
|
]
|
||||||
|
//calling NSA attach/detach job
|
||||||
|
build job: "RAN-NSA-Mini-Module-Attach-Detach", wait : true, propagate : false, parameters: [
|
||||||
|
string(name: 'eNB_MR', value: String.valueOf(MR)),
|
||||||
|
string(name: 'eNB_Branch', value: String.valueOf(SRC_BRANCH)),
|
||||||
|
string(name: 'eNB_CommitID', value: String.valueOf(COMMIT_ID)),
|
||||||
|
string(name: 'eNB_TargetBranch', value: String.valueOf(TARGET_BRANCH)),
|
||||||
|
booleanParam(name: 'eNB_AllowMergeRequestProcess', value: Boolean.valueOf(ALLOW_MERGE))
|
||||||
|
]
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
+28
-23
@@ -50,7 +50,8 @@ class Module_UE:
|
|||||||
setattr(self, k, v)
|
setattr(self, k, v)
|
||||||
self.UEIPAddress = ""
|
self.UEIPAddress = ""
|
||||||
#dictionary linking command names and related module scripts
|
#dictionary linking command names and related module scripts
|
||||||
self.cmd_dict= {"wup": self.WakeupScript,"detach":self.DetachScript}#dictionary of function scripts
|
self.cmd_dict= {"wup": self.WakeupScript,"detach":self.DetachScript}#dictionary of function scripts
|
||||||
|
self.ue_trace=''
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@@ -75,9 +76,10 @@ class Module_UE:
|
|||||||
logging.debug('Starting ' + self.Process['Name'])
|
logging.debug('Starting ' + self.Process['Name'])
|
||||||
mySSH = sshconnection.SSHConnection()
|
mySSH = sshconnection.SSHConnection()
|
||||||
mySSH.open(self.HostIPAddress, self.HostUsername, self.HostPassword)
|
mySSH.open(self.HostIPAddress, self.HostUsername, self.HostPassword)
|
||||||
mySSH.command('echo ' + self.HostPassword + ' | sudo -S ' + self.Process['Cmd'] + ' &','\$',5)
|
mySSH.command('echo $USER; echo ' + self.HostPassword + ' | nohup sudo -S ' + self.Process['Cmd'] + ' &','\$',5)
|
||||||
mySSH.close()
|
mySSH.close()
|
||||||
#checking the process
|
#checking the process
|
||||||
|
time.sleep(5)
|
||||||
HOST=self.HostIPAddress
|
HOST=self.HostIPAddress
|
||||||
COMMAND="ps aux | grep " + self.Process['Name'] + " | grep -v grep "
|
COMMAND="ps aux | grep " + self.Process['Name'] + " | grep -v grep "
|
||||||
logging.debug(COMMAND)
|
logging.debug(COMMAND)
|
||||||
@@ -130,13 +132,14 @@ class Module_UE:
|
|||||||
return -1
|
return -1
|
||||||
|
|
||||||
def EnableTrace(self):
|
def EnableTrace(self):
|
||||||
mySSH = sshconnection.SSHConnection()
|
if self.ue_trace=="yes":
|
||||||
mySSH.open(self.HostIPAddress, self.HostUsername, self.HostPassword)
|
mySSH = sshconnection.SSHConnection()
|
||||||
#delete old artifacts
|
mySSH.open(self.HostIPAddress, self.HostUsername, self.HostPassword)
|
||||||
mySSH.command('echo ' + self.HostPassword + ' | sudo -S rm -rf ci_qlog','\$',5)
|
#delete old artifacts
|
||||||
#start Trace, artifact is created in home dir
|
mySSH.command('echo ' + self.HostPassword + ' | sudo -S rm -rf ci_qlog','\$',5)
|
||||||
mySSH.command('echo $USER; nohup sudo -E QLog/QLog -s ci_qlog -f NR5G.cfg &','\$', 5)
|
#start Trace, artifact is created in home dir
|
||||||
mySSH.close()
|
mySSH.command('echo $USER; nohup sudo -E QLog/QLog -s ci_qlog -f NR5G.cfg &','\$', 5)
|
||||||
|
mySSH.close()
|
||||||
|
|
||||||
def DisableTrace(self):
|
def DisableTrace(self):
|
||||||
mySSH = sshconnection.SSHConnection()
|
mySSH = sshconnection.SSHConnection()
|
||||||
@@ -153,18 +156,20 @@ class Module_UE:
|
|||||||
|
|
||||||
|
|
||||||
def LogCollect(self):
|
def LogCollect(self):
|
||||||
mySSH = sshconnection.SSHConnection()
|
if self.ue_trace=="yes":
|
||||||
mySSH.open(self.HostIPAddress, self.HostUsername, self.HostPassword)
|
mySSH = sshconnection.SSHConnection()
|
||||||
#archive qlog to USB stick in /media/usb-drive/ci_qlogs with datetime suffix
|
mySSH.open(self.HostIPAddress, self.HostUsername, self.HostPassword)
|
||||||
now=datetime.now()
|
#archive qlog to USB stick in /media/usb-drive/ci_qlogs with datetime suffix
|
||||||
now_string = now.strftime("%Y%m%d-%H%M")
|
now=datetime.now()
|
||||||
source='ci_qlog'
|
now_string = now.strftime("%Y%m%d-%H%M")
|
||||||
destination='/media/usb-drive/ci_qlogs/ci_qlog_'+now_string+'.zip'
|
source='ci_qlog'
|
||||||
#qlog artifact is zipped into the target folder
|
destination='/media/usb-drive/ci_qlogs/ci_qlog_'+now_string+'.zip'
|
||||||
mySSH.command('echo $USER; echo ' + self.HostPassword + ' | nohup sudo -S zip -r '+destination+' '+source+' &','\$', 10)
|
#qlog artifact is zipped into the target folder
|
||||||
mySSH.close()
|
mySSH.command('echo $USER; echo ' + self.HostPassword + ' | nohup sudo -S zip -r '+destination+' '+source+' &','\$', 10)
|
||||||
#post action : log cleaning to make sure enough space is reserved for the next run
|
mySSH.close()
|
||||||
Log_Mgt=cls_log_mgt.Log_Mgt(self.HostIPAddress, self.HostPassword, "/media/usb-drive/ci_qlogs")
|
#post action : log cleaning to make sure enough space is reserved for the next run
|
||||||
Log_Mgt.LogRotation()
|
Log_Mgt=cls_log_mgt.Log_Mgt(self.HostIPAddress, self.HostPassword, "/media/usb-drive/ci_qlogs")
|
||||||
|
Log_Mgt.LogRotation()
|
||||||
|
else:
|
||||||
|
destination=""
|
||||||
return destination
|
return destination
|
||||||
|
|||||||
+79
-58
@@ -160,6 +160,7 @@ class OaiCiTest():
|
|||||||
self.air_interface=''
|
self.air_interface=''
|
||||||
self.expectedNbOfConnectedUEs = 0
|
self.expectedNbOfConnectedUEs = 0
|
||||||
self.ue_id = '' #used for module identification
|
self.ue_id = '' #used for module identification
|
||||||
|
self.ue_trace ='' #used to enable QLog trace for Module UE, passed to Module UE object at InitializeUE()
|
||||||
|
|
||||||
|
|
||||||
def BuildOAIUE(self,HTML):
|
def BuildOAIUE(self,HTML):
|
||||||
@@ -367,7 +368,7 @@ class OaiCiTest():
|
|||||||
except:
|
except:
|
||||||
os.kill(os.getppid(),signal.SIGUSR1)
|
os.kill(os.getppid(),signal.SIGUSR1)
|
||||||
|
|
||||||
def InitializeUE(self,HTML,RAN,EPC, COTS_UE, InfraUE):
|
def InitializeUE(self,HTML,RAN,EPC, COTS_UE, InfraUE,ue_trace):
|
||||||
if self.ue_id=='':#no ID specified, then it is a COTS controlled by ADB
|
if self.ue_id=='':#no ID specified, then it is a COTS controlled by ADB
|
||||||
if self.ADBIPAddress == '' or self.ADBUserName == '' or self.ADBPassword == '':
|
if self.ADBIPAddress == '' or self.ADBUserName == '' or self.ADBPassword == '':
|
||||||
HELP.GenericHelp(CONST.Version)
|
HELP.GenericHelp(CONST.Version)
|
||||||
@@ -386,6 +387,7 @@ class OaiCiTest():
|
|||||||
else: #if an ID is specified, it is a module from the yaml infrastructure file
|
else: #if an ID is specified, it is a module from the yaml infrastructure file
|
||||||
#RH
|
#RH
|
||||||
Module_UE = cls_module_ue.Module_UE(InfraUE.ci_ue_infra[self.ue_id])
|
Module_UE = cls_module_ue.Module_UE(InfraUE.ci_ue_infra[self.ue_id])
|
||||||
|
Module_UE.ue_trace=ue_trace
|
||||||
is_module=Module_UE.CheckCMProcess()
|
is_module=Module_UE.CheckCMProcess()
|
||||||
if is_module:
|
if is_module:
|
||||||
Module_UE.EnableTrace()
|
Module_UE.EnableTrace()
|
||||||
@@ -994,38 +996,55 @@ class OaiCiTest():
|
|||||||
for job in multi_jobs:
|
for job in multi_jobs:
|
||||||
job.join()
|
job.join()
|
||||||
|
|
||||||
if (status_queue.empty()):
|
if (status_queue.empty()):
|
||||||
HTML.CreateHtmlTestRow('N/A', 'KO', CONST.ALL_PROCESSES_OK)
|
HTML.CreateHtmlTestRow('N/A', 'KO', CONST.ALL_PROCESSES_OK)
|
||||||
self.AutoTerminateUEandeNB(HTML,RAN,COTS_UE,EPC,InfraUE)
|
|
||||||
return
|
|
||||||
else:
|
|
||||||
attach_status = True
|
|
||||||
html_queue = SimpleQueue()
|
|
||||||
while (not status_queue.empty()):
|
|
||||||
count = status_queue.get()
|
|
||||||
if (count < 0):
|
|
||||||
attach_status = False
|
|
||||||
device_id = status_queue.get()
|
|
||||||
message = status_queue.get()
|
|
||||||
if (count < 0):
|
|
||||||
html_cell = '<pre style="background-color:white">UE (' + device_id + ')\n' + message + '</pre>'
|
|
||||||
else:
|
|
||||||
html_cell = '<pre style="background-color:white">UE (' + device_id + ')\n' + message + ' in ' + str(count + 2) + ' seconds</pre>'
|
|
||||||
html_queue.put(html_cell)
|
|
||||||
if (attach_status):
|
|
||||||
cnt = 0
|
|
||||||
while cnt < len(self.UEDevices):
|
|
||||||
if self.UEDevicesStatus[cnt] == CONST.UE_STATUS_ATTACHING:
|
|
||||||
self.UEDevicesStatus[cnt] = CONST.UE_STATUS_ATTACHED
|
|
||||||
cnt += 1
|
|
||||||
HTML.CreateHtmlTestRowQueue('N/A', 'OK', len(self.UEDevices), html_queue)
|
|
||||||
result = re.search('T_stdout', str(RAN.Initialize_eNB_args))
|
|
||||||
if result is not None:
|
|
||||||
logging.debug('Waiting 5 seconds to fill up record file')
|
|
||||||
time.sleep(5)
|
|
||||||
else:
|
|
||||||
HTML.CreateHtmlTestRowQueue('N/A', 'KO', len(self.UEDevices), html_queue)
|
|
||||||
self.AutoTerminateUEandeNB(HTML,RAN,COTS_UE,EPC,InfraUE)
|
self.AutoTerminateUEandeNB(HTML,RAN,COTS_UE,EPC,InfraUE)
|
||||||
|
return
|
||||||
|
else:
|
||||||
|
attach_status = True
|
||||||
|
html_queue = SimpleQueue()
|
||||||
|
while (not status_queue.empty()):
|
||||||
|
count = status_queue.get()
|
||||||
|
if (count < 0):
|
||||||
|
attach_status = False
|
||||||
|
device_id = status_queue.get()
|
||||||
|
message = status_queue.get()
|
||||||
|
if (count < 0):
|
||||||
|
html_cell = '<pre style="background-color:white">UE (' + device_id + ')\n' + message + '</pre>'
|
||||||
|
else:
|
||||||
|
html_cell = '<pre style="background-color:white">UE (' + device_id + ')\n' + message + ' in ' + str(count + 2) + ' seconds</pre>'
|
||||||
|
html_queue.put(html_cell)
|
||||||
|
if (attach_status):
|
||||||
|
cnt = 0
|
||||||
|
while cnt < len(self.UEDevices):
|
||||||
|
if self.UEDevicesStatus[cnt] == CONST.UE_STATUS_ATTACHING:
|
||||||
|
self.UEDevicesStatus[cnt] = CONST.UE_STATUS_ATTACHED
|
||||||
|
cnt += 1
|
||||||
|
HTML.CreateHtmlTestRowQueue('N/A', 'OK', len(self.UEDevices), html_queue)
|
||||||
|
result = re.search('T_stdout', str(RAN.Initialize_eNB_args))
|
||||||
|
if result is not None:
|
||||||
|
logging.debug('Waiting 5 seconds to fill up record file')
|
||||||
|
time.sleep(5)
|
||||||
|
else:
|
||||||
|
HTML.CreateHtmlTestRowQueue('N/A', 'KO', len(self.UEDevices), html_queue)
|
||||||
|
self.AutoTerminateUEandeNB(HTML,RAN,COTS_UE,EPC,InfraUE)
|
||||||
|
|
||||||
|
else: #if an ID is specified, it is a module from the yaml infrastructure file
|
||||||
|
#Attention, as opposed to InitializeUE, the connect manager process is not checked as it is supposed to be active already
|
||||||
|
#only 1- module wakeup, 2- check IP address
|
||||||
|
Module_UE = cls_module_ue.Module_UE(InfraUE.ci_ue_infra[self.ue_id])
|
||||||
|
Module_UE.Command("wup")
|
||||||
|
logging.debug("Waiting for IP address to be assigned")
|
||||||
|
time.sleep(20)
|
||||||
|
logging.debug("Retrieve IP address")
|
||||||
|
status=Module_UE.GetModuleIPAddress()
|
||||||
|
if status==0:
|
||||||
|
HTML.CreateHtmlTestRow(Module_UE.UEIPAddress, 'OK', CONST.ALL_PROCESSES_OK)
|
||||||
|
logging.debug('UE IP addresss : '+ Module_UE.UEIPAddress)
|
||||||
|
else: #status==-1 failed to retrieve IP address
|
||||||
|
HTML.CreateHtmlTestRow('N/A', 'KO', CONST.UE_IP_ADDRESS_ISSUE)
|
||||||
|
self.AutoTerminateUEandeNB(HTML,RAN,COTS_UE,EPC,InfraUE)
|
||||||
|
return
|
||||||
|
|
||||||
def DetachUE_common(self, device_id, idx,COTS_UE):
|
def DetachUE_common(self, device_id, idx,COTS_UE):
|
||||||
try:
|
try:
|
||||||
@@ -1084,10 +1103,7 @@ class OaiCiTest():
|
|||||||
else:#if an ID is specified, it is a module from the yaml infrastructure file
|
else:#if an ID is specified, it is a module from the yaml infrastructure file
|
||||||
Module_UE = cls_module_ue.Module_UE(InfraUE.ci_ue_infra[self.ue_id])
|
Module_UE = cls_module_ue.Module_UE(InfraUE.ci_ue_infra[self.ue_id])
|
||||||
Module_UE.Command("detach")
|
Module_UE.Command("detach")
|
||||||
Module_UE.DisableTrace()
|
HTML.CreateHtmlTestRow('NA', 'OK', CONST.ALL_PROCESSES_OK)
|
||||||
Module_UE.DisableCM()
|
|
||||||
archive_destination=Module_UE.LogCollect()
|
|
||||||
HTML.CreateHtmlTestRow('QLog at : '+archive_destination, 'OK', CONST.ALL_PROCESSES_OK)
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@@ -3088,20 +3104,32 @@ class OaiCiTest():
|
|||||||
except:
|
except:
|
||||||
os.kill(os.getppid(),signal.SIGUSR1)
|
os.kill(os.getppid(),signal.SIGUSR1)
|
||||||
|
|
||||||
def TerminateUE(self,HTML,COTS_UE):
|
def TerminateUE(self,HTML,COTS_UE,InfraUE,ue_trace):
|
||||||
terminate_ue_flag = False
|
if self.ue_id=='':#no ID specified, then it is a COTS controlled by ADB
|
||||||
self.GetAllUEDevices(terminate_ue_flag)
|
terminate_ue_flag = False
|
||||||
multi_jobs = []
|
self.GetAllUEDevices(terminate_ue_flag)
|
||||||
i = 0
|
multi_jobs = []
|
||||||
for device_id in self.UEDevices:
|
i = 0
|
||||||
p = Process(target= self.TerminateUE_common, args = (device_id,i,COTS_UE,))
|
for device_id in self.UEDevices:
|
||||||
p.daemon = True
|
p = Process(target= self.TerminateUE_common, args = (device_id,i,COTS_UE,))
|
||||||
p.start()
|
p.daemon = True
|
||||||
multi_jobs.append(p)
|
p.start()
|
||||||
i += 1
|
multi_jobs.append(p)
|
||||||
for job in multi_jobs:
|
i += 1
|
||||||
job.join()
|
for job in multi_jobs:
|
||||||
HTML.CreateHtmlTestRow('N/A', 'OK', CONST.ALL_PROCESSES_OK)
|
job.join()
|
||||||
|
HTML.CreateHtmlTestRow('N/A', 'OK', CONST.ALL_PROCESSES_OK)
|
||||||
|
else: #if an ID is specified, it is a module from the yaml infrastructure file
|
||||||
|
Module_UE = cls_module_ue.Module_UE(InfraUE.ci_ue_infra[self.ue_id])
|
||||||
|
Module_UE.ue_trace=ue_trace
|
||||||
|
Module_UE.Command("detach")
|
||||||
|
Module_UE.DisableTrace()
|
||||||
|
Module_UE.DisableCM()
|
||||||
|
archive_destination=Module_UE.LogCollect()
|
||||||
|
if Module_UE.ue_trace=='yes':
|
||||||
|
HTML.CreateHtmlTestRow('QLog at : '+archive_destination, 'OK', CONST.ALL_PROCESSES_OK)
|
||||||
|
else:
|
||||||
|
HTML.CreateHtmlTestRow('QLog trace is disabled', 'OK', CONST.ALL_PROCESSES_OK)
|
||||||
|
|
||||||
def TerminateOAIUE(self,HTML,RAN,COTS_UE,EPC, InfraUE):
|
def TerminateOAIUE(self,HTML,RAN,COTS_UE,EPC, InfraUE):
|
||||||
SSH = sshconnection.SSHConnection()
|
SSH = sshconnection.SSHConnection()
|
||||||
@@ -3158,20 +3186,13 @@ class OaiCiTest():
|
|||||||
HTML.CreateHtmlTestRow('N/A', 'OK', CONST.ALL_PROCESSES_OK)
|
HTML.CreateHtmlTestRow('N/A', 'OK', CONST.ALL_PROCESSES_OK)
|
||||||
|
|
||||||
def AutoTerminateUEandeNB(self,HTML,RAN,COTS_UE,EPC,InfraUE):
|
def AutoTerminateUEandeNB(self,HTML,RAN,COTS_UE,EPC,InfraUE):
|
||||||
if self.ue_id!='':
|
|
||||||
Module_UE = cls_module_ue.Module_UE(InfraUE.ci_ue_infra[self.ue_id])
|
|
||||||
Module_UE.Command("detach")
|
|
||||||
Module_UE.DisableTrace()
|
|
||||||
Module_UE.DisableCM()
|
|
||||||
archive_destination=Module_UE.LogCollect()
|
|
||||||
HTML.CreateHtmlTestRow('QLog at : '+archive_destination, 'OK', CONST.ALL_PROCESSES_OK)
|
|
||||||
if (self.ADBIPAddress != 'none'):
|
if (self.ADBIPAddress != 'none'):
|
||||||
self.testCase_id = 'AUTO-KILL-UE'
|
self.testCase_id = 'AUTO-KILL-UE'
|
||||||
HTML.testCase_id=self.testCase_id
|
HTML.testCase_id=self.testCase_id
|
||||||
self.desc = 'Automatic Termination of UE'
|
self.desc = 'Automatic Termination of UE'
|
||||||
HTML.desc='Automatic Termination of UE'
|
HTML.desc='Automatic Termination of UE'
|
||||||
self.ShowTestID()
|
self.ShowTestID()
|
||||||
self.TerminateUE(HTML,COTS_UE)
|
self.TerminateUE(HTML,COTS_UE,InfraUE,self.ue_trace)
|
||||||
if (self.Initialize_OAI_UE_args != ''):
|
if (self.Initialize_OAI_UE_args != ''):
|
||||||
self.testCase_id = 'AUTO-KILL-OAI-UE'
|
self.testCase_id = 'AUTO-KILL-OAI-UE'
|
||||||
HTML.testCase_id=self.testCase_id
|
HTML.testCase_id=self.testCase_id
|
||||||
|
|||||||
+17
-3
@@ -197,6 +197,7 @@ def GetParametersFromXML(action):
|
|||||||
|
|
||||||
elif action == 'Initialize_UE':
|
elif action == 'Initialize_UE':
|
||||||
ue_id = test.findtext('id')
|
ue_id = test.findtext('id')
|
||||||
|
CiTestObj.ue_trace=test.findtext('UE_Trace')#temporary variable, to be passed to Module_UE in Initialize_UE call
|
||||||
if (ue_id is None):
|
if (ue_id is None):
|
||||||
CiTestObj.ue_id = ""
|
CiTestObj.ue_id = ""
|
||||||
else:
|
else:
|
||||||
@@ -210,12 +211,25 @@ def GetParametersFromXML(action):
|
|||||||
CiTestObj.ue_id = ue_id
|
CiTestObj.ue_id = ue_id
|
||||||
|
|
||||||
elif action == 'Attach_UE':
|
elif action == 'Attach_UE':
|
||||||
|
ue_id = test.findtext('id')
|
||||||
|
if (ue_id is None):
|
||||||
|
CiTestObj.ue_id = ""
|
||||||
|
else:
|
||||||
|
CiTestObj.ue_id = ue_id
|
||||||
nbMaxUEtoAttach = test.findtext('nbMaxUEtoAttach')
|
nbMaxUEtoAttach = test.findtext('nbMaxUEtoAttach')
|
||||||
if (nbMaxUEtoAttach is None):
|
if (nbMaxUEtoAttach is None):
|
||||||
CiTestObj.nbMaxUEtoAttach = -1
|
CiTestObj.nbMaxUEtoAttach = -1
|
||||||
else:
|
else:
|
||||||
CiTestObj.nbMaxUEtoAttach = int(nbMaxUEtoAttach)
|
CiTestObj.nbMaxUEtoAttach = int(nbMaxUEtoAttach)
|
||||||
|
|
||||||
|
elif action == 'Terminate_UE':
|
||||||
|
ue_id = test.findtext('id')
|
||||||
|
if (ue_id is None):
|
||||||
|
CiTestObj.ue_id = ""
|
||||||
|
else:
|
||||||
|
CiTestObj.ue_id = ue_id
|
||||||
|
|
||||||
|
|
||||||
elif action == 'CheckStatusUE':
|
elif action == 'CheckStatusUE':
|
||||||
expectedNBUE = test.findtext('expectedNbOfConnectedUEs')
|
expectedNBUE = test.findtext('expectedNbOfConnectedUEs')
|
||||||
if (expectedNBUE is None):
|
if (expectedNBUE is None):
|
||||||
@@ -469,7 +483,7 @@ elif re.match('^TerminateUE$', mode, re.IGNORECASE):
|
|||||||
HELP.GenericHelp(CONST.Version)
|
HELP.GenericHelp(CONST.Version)
|
||||||
sys.exit('Insufficient Parameter')
|
sys.exit('Insufficient Parameter')
|
||||||
signal.signal(signal.SIGUSR1, receive_signal)
|
signal.signal(signal.SIGUSR1, receive_signal)
|
||||||
CiTestObj.TerminateUE(HTML,COTS_UE)
|
CiTestObj.TerminateUE(HTML,COTS_UE,InfraUE,CiTestObj.ue_trace)
|
||||||
elif re.match('^TerminateOAIUE$', mode, re.IGNORECASE):
|
elif re.match('^TerminateOAIUE$', mode, re.IGNORECASE):
|
||||||
if CiTestObj.UEIPAddress == '' or CiTestObj.UEUserName == '' or CiTestObj.UEPassword == '':
|
if CiTestObj.UEIPAddress == '' or CiTestObj.UEUserName == '' or CiTestObj.UEPassword == '':
|
||||||
HELP.GenericHelp(CONST.Version)
|
HELP.GenericHelp(CONST.Version)
|
||||||
@@ -714,9 +728,9 @@ elif re.match('^TesteNB$', mode, re.IGNORECASE) or re.match('^TestUE$', mode, re
|
|||||||
elif action == 'Terminate_eNB':
|
elif action == 'Terminate_eNB':
|
||||||
RAN.TerminateeNB(HTML, EPC)
|
RAN.TerminateeNB(HTML, EPC)
|
||||||
elif action == 'Initialize_UE':
|
elif action == 'Initialize_UE':
|
||||||
CiTestObj.InitializeUE(HTML,RAN, EPC, COTS_UE, InfraUE)
|
CiTestObj.InitializeUE(HTML,RAN, EPC, COTS_UE, InfraUE, CiTestObj.ue_trace)
|
||||||
elif action == 'Terminate_UE':
|
elif action == 'Terminate_UE':
|
||||||
CiTestObj.TerminateUE(HTML,COTS_UE)
|
CiTestObj.TerminateUE(HTML,COTS_UE, InfraUE, CiTestObj.ue_trace)
|
||||||
elif action == 'Attach_UE':
|
elif action == 'Attach_UE':
|
||||||
CiTestObj.AttachUE(HTML,RAN,EPC,COTS_UE,InfraUE)
|
CiTestObj.AttachUE(HTML,RAN,EPC,COTS_UE,InfraUE)
|
||||||
elif action == 'Detach_UE':
|
elif action == 'Detach_UE':
|
||||||
|
|||||||
@@ -48,12 +48,13 @@
|
|||||||
<class>Initialize_UE</class>
|
<class>Initialize_UE</class>
|
||||||
<desc>Initialize Quectel</desc>
|
<desc>Initialize Quectel</desc>
|
||||||
<id>idefix</id>
|
<id>idefix</id>
|
||||||
|
<UE_Trace>yes</UE_Trace>
|
||||||
</testCase>
|
</testCase>
|
||||||
|
|
||||||
|
|
||||||
<testCase id="010002">
|
<testCase id="010002">
|
||||||
<class>Detach_UE</class>
|
<class>Terminate_UE</class>
|
||||||
<desc>Detach UE</desc>
|
<desc>Terminate Quectel</desc>
|
||||||
<id>idefix</id>
|
<id>idefix</id>
|
||||||
</testCase>
|
</testCase>
|
||||||
|
|
||||||
|
|||||||
@@ -0,0 +1,168 @@
|
|||||||
|
<!--
|
||||||
|
|
||||||
|
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-NSA-FR1-TM1</htmlTabRef>
|
||||||
|
<htmlTabName>NSA Ping Attach Detach with QUECTEL</htmlTabName>
|
||||||
|
<htmlTabIcon>tasks</htmlTabIcon>
|
||||||
|
<repeatCount>1</repeatCount>
|
||||||
|
<TestCaseRequestedList>
|
||||||
|
030000
|
||||||
|
040000
|
||||||
|
000002
|
||||||
|
010000
|
||||||
|
000001
|
||||||
|
050000
|
||||||
|
000001
|
||||||
|
010004
|
||||||
|
000001
|
||||||
|
010003
|
||||||
|
000001
|
||||||
|
050000
|
||||||
|
000001
|
||||||
|
010004
|
||||||
|
000001
|
||||||
|
010003
|
||||||
|
000001
|
||||||
|
050000
|
||||||
|
000001
|
||||||
|
010002
|
||||||
|
080001
|
||||||
|
080000
|
||||||
|
</TestCaseRequestedList>
|
||||||
|
<TestCaseExclusionList></TestCaseExclusionList>
|
||||||
|
|
||||||
|
<testCase id="010000">
|
||||||
|
<class>Initialize_UE</class>
|
||||||
|
<desc>Initialize Quectel</desc>
|
||||||
|
<id>idefix</id>
|
||||||
|
<UE_Trace>yes</UE_Trace>
|
||||||
|
</testCase>
|
||||||
|
|
||||||
|
|
||||||
|
<testCase id="010002">
|
||||||
|
<class>Terminate_UE</class>
|
||||||
|
<desc>Terminate Quectel</desc>
|
||||||
|
<id>idefix</id>
|
||||||
|
</testCase>
|
||||||
|
|
||||||
|
<testCase id="010003">
|
||||||
|
<class>Attach_UE</class>
|
||||||
|
<desc>Attach Quectel</desc>
|
||||||
|
<id>idefix</id>
|
||||||
|
</testCase>
|
||||||
|
|
||||||
|
<testCase id="010004">
|
||||||
|
<class>Detach_UE</class>
|
||||||
|
<desc>Detach Quectel</desc>
|
||||||
|
<id>idefix</id>
|
||||||
|
</testCase>
|
||||||
|
|
||||||
|
|
||||||
|
<testCase id="030000">
|
||||||
|
<class>Initialize_eNB</class>
|
||||||
|
<desc>Initialize eNB</desc>
|
||||||
|
<Initialize_eNB_args>-O ci-scripts/conf_files/enb.band7.tm1.fr1.25PRB.usrpb210.conf</Initialize_eNB_args>
|
||||||
|
<eNB_instance>0</eNB_instance>
|
||||||
|
<eNB_serverId>0</eNB_serverId>
|
||||||
|
<air_interface>lte</air_interface>
|
||||||
|
<eNB_Trace>yes</eNB_Trace>
|
||||||
|
</testCase>
|
||||||
|
|
||||||
|
|
||||||
|
<testCase id="040000">
|
||||||
|
<class>Initialize_eNB</class>
|
||||||
|
<desc>Initialize gNB</desc>
|
||||||
|
<Initialize_eNB_args>-O ci-scripts/conf_files/gnb.band78.tm1.fr1.106PRB.usrpb210.conf -E -q</Initialize_eNB_args>
|
||||||
|
<eNB_instance>1</eNB_instance>
|
||||||
|
<eNB_serverId>1</eNB_serverId>
|
||||||
|
<air_interface>nr</air_interface>
|
||||||
|
</testCase>
|
||||||
|
|
||||||
|
<testCase id="000001">
|
||||||
|
<class>IdleSleep</class>
|
||||||
|
<desc>Sleep</desc>
|
||||||
|
<idle_sleep_time_in_sec>5</idle_sleep_time_in_sec>
|
||||||
|
</testCase>
|
||||||
|
|
||||||
|
<testCase id="000002">
|
||||||
|
<class>IdleSleep</class>
|
||||||
|
<desc>Sleep</desc>
|
||||||
|
<idle_sleep_time_in_sec>20</idle_sleep_time_in_sec>
|
||||||
|
</testCase>
|
||||||
|
|
||||||
|
|
||||||
|
<testCase id="050000">
|
||||||
|
<class>Ping</class>
|
||||||
|
<desc>Ping: 20pings in 20sec</desc>
|
||||||
|
<id>idefix</id>
|
||||||
|
<ping_args>-c 20</ping_args>
|
||||||
|
<ping_packetloss_threshold>50</ping_packetloss_threshold>
|
||||||
|
</testCase>
|
||||||
|
|
||||||
|
<testCase id="050001">
|
||||||
|
<class>Ping</class>
|
||||||
|
<desc>Ping: 100pings in 20sec</desc>
|
||||||
|
<id>idefix</id>
|
||||||
|
<ping_args>-c 100 -i 0.2</ping_args>
|
||||||
|
<ping_packetloss_threshold>50</ping_packetloss_threshold>
|
||||||
|
</testCase>
|
||||||
|
|
||||||
|
<testCase id="070000">
|
||||||
|
<class>Iperf</class>
|
||||||
|
<desc>iperf (DL/20Mbps/UDP)(60 sec)(single-ue profile)</desc>
|
||||||
|
<iperf_args>-u -b 20M -t 60</iperf_args>
|
||||||
|
<direction>DL</direction>
|
||||||
|
<id>idefix</id>
|
||||||
|
<iperf_packetloss_threshold>50</iperf_packetloss_threshold>
|
||||||
|
<iperf_profile>single-ue</iperf_profile>
|
||||||
|
</testCase>
|
||||||
|
|
||||||
|
<testCase id="070001">
|
||||||
|
<class>Iperf</class>
|
||||||
|
<desc>iperf (UL/3Mbps/UDP)(60 sec)(single-ue profile)</desc>
|
||||||
|
<iperf_args>-u -b 3M -t 60</iperf_args>
|
||||||
|
<direction>UL</direction>
|
||||||
|
<id>idefix</id>
|
||||||
|
<iperf_packetloss_threshold>50</iperf_packetloss_threshold>
|
||||||
|
<iperf_profile>single-ue</iperf_profile>
|
||||||
|
</testCase>
|
||||||
|
|
||||||
|
|
||||||
|
<testCase id="080000">
|
||||||
|
<class>Terminate_eNB</class>
|
||||||
|
<desc>Terminate eNB</desc>
|
||||||
|
<eNB_instance>0</eNB_instance>
|
||||||
|
<eNB_serverId>0</eNB_serverId>
|
||||||
|
<air_interface>lte</air_interface>
|
||||||
|
</testCase>
|
||||||
|
|
||||||
|
<testCase id="080001">
|
||||||
|
<class>Terminate_eNB</class>
|
||||||
|
<desc>Terminate gNB</desc>
|
||||||
|
<eNB_instance>1</eNB_instance>
|
||||||
|
<eNB_serverId>1</eNB_serverId>
|
||||||
|
<air_interface>nr</air_interface>
|
||||||
|
</testCase>
|
||||||
|
|
||||||
|
</testCaseList>
|
||||||
|
|
||||||
@@ -0,0 +1,148 @@
|
|||||||
|
<!--
|
||||||
|
|
||||||
|
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-NSA-FR1-TM1</htmlTabRef>
|
||||||
|
<htmlTabName>NSA Ping DL UL with QUECTEL (Longer)</htmlTabName>
|
||||||
|
<htmlTabIcon>tasks</htmlTabIcon>
|
||||||
|
<repeatCount>1</repeatCount>
|
||||||
|
<TestCaseRequestedList>
|
||||||
|
030000
|
||||||
|
040000
|
||||||
|
000002
|
||||||
|
010000
|
||||||
|
000001
|
||||||
|
050000
|
||||||
|
050001
|
||||||
|
000001
|
||||||
|
070000
|
||||||
|
000001
|
||||||
|
070001
|
||||||
|
000001
|
||||||
|
010002
|
||||||
|
080001
|
||||||
|
080000
|
||||||
|
</TestCaseRequestedList>
|
||||||
|
<TestCaseExclusionList></TestCaseExclusionList>
|
||||||
|
|
||||||
|
<testCase id="010000">
|
||||||
|
<class>Initialize_UE</class>
|
||||||
|
<desc>Initialize Quectel</desc>
|
||||||
|
<id>idefix</id>
|
||||||
|
</testCase>
|
||||||
|
|
||||||
|
|
||||||
|
<testCase id="010002">
|
||||||
|
<class>Terminate_UE</class>
|
||||||
|
<desc>Terminate Quectel</desc>
|
||||||
|
<id>idefix</id>
|
||||||
|
</testCase>
|
||||||
|
|
||||||
|
|
||||||
|
<testCase id="030000">
|
||||||
|
<class>Initialize_eNB</class>
|
||||||
|
<desc>Initialize eNB</desc>
|
||||||
|
<Initialize_eNB_args>-O ci-scripts/conf_files/enb.band7.tm1.fr1.25PRB.usrpb210.conf</Initialize_eNB_args>
|
||||||
|
<eNB_instance>0</eNB_instance>
|
||||||
|
<eNB_serverId>0</eNB_serverId>
|
||||||
|
<air_interface>lte</air_interface>
|
||||||
|
<eNB_Trace>yes</eNB_Trace>
|
||||||
|
</testCase>
|
||||||
|
|
||||||
|
|
||||||
|
<testCase id="040000">
|
||||||
|
<class>Initialize_eNB</class>
|
||||||
|
<desc>Initialize gNB</desc>
|
||||||
|
<Initialize_eNB_args>-O ci-scripts/conf_files/gnb.band78.tm1.fr1.106PRB.usrpb210.conf -E -q</Initialize_eNB_args>
|
||||||
|
<eNB_instance>1</eNB_instance>
|
||||||
|
<eNB_serverId>1</eNB_serverId>
|
||||||
|
<air_interface>nr</air_interface>
|
||||||
|
</testCase>
|
||||||
|
|
||||||
|
<testCase id="000001">
|
||||||
|
<class>IdleSleep</class>
|
||||||
|
<desc>Sleep</desc>
|
||||||
|
<idle_sleep_time_in_sec>5</idle_sleep_time_in_sec>
|
||||||
|
</testCase>
|
||||||
|
|
||||||
|
<testCase id="000002">
|
||||||
|
<class>IdleSleep</class>
|
||||||
|
<desc>Sleep</desc>
|
||||||
|
<idle_sleep_time_in_sec>20</idle_sleep_time_in_sec>
|
||||||
|
</testCase>
|
||||||
|
|
||||||
|
|
||||||
|
<testCase id="050000">
|
||||||
|
<class>Ping</class>
|
||||||
|
<desc>Ping: 20pings in 20sec</desc>
|
||||||
|
<id>idefix</id>
|
||||||
|
<ping_args>-c 20</ping_args>
|
||||||
|
<ping_packetloss_threshold>50</ping_packetloss_threshold>
|
||||||
|
</testCase>
|
||||||
|
|
||||||
|
<testCase id="050001">
|
||||||
|
<class>Ping</class>
|
||||||
|
<desc>Ping: 100pings in 20sec</desc>
|
||||||
|
<id>idefix</id>
|
||||||
|
<ping_args>-c 100 -i 0.2</ping_args>
|
||||||
|
<ping_packetloss_threshold>50</ping_packetloss_threshold>
|
||||||
|
</testCase>
|
||||||
|
|
||||||
|
<testCase id="070000">
|
||||||
|
<class>Iperf</class>
|
||||||
|
<desc>iperf (DL/20Mbps/UDP)(600 sec)(single-ue profile)</desc>
|
||||||
|
<iperf_args>-u -b 20M -t 600</iperf_args>
|
||||||
|
<direction>DL</direction>
|
||||||
|
<id>idefix</id>
|
||||||
|
<iperf_packetloss_threshold>50</iperf_packetloss_threshold>
|
||||||
|
<iperf_profile>single-ue</iperf_profile>
|
||||||
|
</testCase>
|
||||||
|
|
||||||
|
<testCase id="070001">
|
||||||
|
<class>Iperf</class>
|
||||||
|
<desc>iperf (UL/3Mbps/UDP)(600 sec)(single-ue profile)</desc>
|
||||||
|
<iperf_args>-u -b 3M -t 600</iperf_args>
|
||||||
|
<direction>UL</direction>
|
||||||
|
<id>idefix</id>
|
||||||
|
<iperf_packetloss_threshold>50</iperf_packetloss_threshold>
|
||||||
|
<iperf_profile>single-ue</iperf_profile>
|
||||||
|
</testCase>
|
||||||
|
|
||||||
|
|
||||||
|
<testCase id="080000">
|
||||||
|
<class>Terminate_eNB</class>
|
||||||
|
<desc>Terminate eNB</desc>
|
||||||
|
<eNB_instance>0</eNB_instance>
|
||||||
|
<eNB_serverId>0</eNB_serverId>
|
||||||
|
<air_interface>lte</air_interface>
|
||||||
|
</testCase>
|
||||||
|
|
||||||
|
<testCase id="080001">
|
||||||
|
<class>Terminate_eNB</class>
|
||||||
|
<desc>Terminate gNB</desc>
|
||||||
|
<eNB_instance>1</eNB_instance>
|
||||||
|
<eNB_serverId>1</eNB_serverId>
|
||||||
|
<air_interface>nr</air_interface>
|
||||||
|
</testCase>
|
||||||
|
|
||||||
|
</testCaseList>
|
||||||
|
|
||||||
Reference in New Issue
Block a user