CI: adding initial testing for MBMS:
-- OAI eNB + OAI UE in USRP setting and in noS1 configuration Signed-off-by: Raphael Defosseux <raphael.defosseux@eurecom.fr>
This commit is contained in:
committed by
Javier Morgade
parent
a61984a3fd
commit
84f928e7de
+107
-22
@@ -133,11 +133,13 @@ class SSHConnection():
|
|||||||
self.eNB_serverId = ''
|
self.eNB_serverId = ''
|
||||||
self.eNBLogFiles = ['', '', '']
|
self.eNBLogFiles = ['', '', '']
|
||||||
self.eNBOptions = ['', '', '']
|
self.eNBOptions = ['', '', '']
|
||||||
|
self.eNBmbmsEnables = [False, False, False]
|
||||||
self.ping_args = ''
|
self.ping_args = ''
|
||||||
self.ping_packetloss_threshold = ''
|
self.ping_packetloss_threshold = ''
|
||||||
self.iperf_args = ''
|
self.iperf_args = ''
|
||||||
self.iperf_packetloss_threshold = ''
|
self.iperf_packetloss_threshold = ''
|
||||||
self.iperf_profile = ''
|
self.iperf_profile = ''
|
||||||
|
self.iperf_options = ''
|
||||||
self.nbMaxUEtoAttach = -1
|
self.nbMaxUEtoAttach = -1
|
||||||
self.UEDevices = []
|
self.UEDevices = []
|
||||||
self.UEDevicesStatus = []
|
self.UEDevicesStatus = []
|
||||||
@@ -817,6 +819,17 @@ class SSHConnection():
|
|||||||
self.command('sed -i -e \'s/FLEXRAN_ENABLED.*;/FLEXRAN_ENABLED = "yes";/\' ' + ci_full_config_file, '\$', 2);
|
self.command('sed -i -e \'s/FLEXRAN_ENABLED.*;/FLEXRAN_ENABLED = "yes";/\' ' + ci_full_config_file, '\$', 2);
|
||||||
else:
|
else:
|
||||||
self.command('sed -i -e \'s/FLEXRAN_ENABLED.*;/FLEXRAN_ENABLED = "no";/\' ' + ci_full_config_file, '\$', 2);
|
self.command('sed -i -e \'s/FLEXRAN_ENABLED.*;/FLEXRAN_ENABLED = "no";/\' ' + ci_full_config_file, '\$', 2);
|
||||||
|
self.eNBmbmsEnables[int(self.eNB_instance)] = False
|
||||||
|
self.command('grep enable_enb_m2 ' + ci_full_config_file, '\$', 2);
|
||||||
|
result = re.search('yes', str(self.ssh.before))
|
||||||
|
if result is not None:
|
||||||
|
self.eNBmbmsEnables[int(self.eNB_instance)] = True
|
||||||
|
logging.debug('\u001B[1m MBMS is enabled on this eNB\u001B[0m')
|
||||||
|
result = re.search('noS1', str(self.Initialize_eNB_args))
|
||||||
|
eNBinNoS1 = False
|
||||||
|
if result is not None:
|
||||||
|
eNBinNoS1 = True
|
||||||
|
logging.debug('\u001B[1m eNB is in noS1 configuration \u001B[0m')
|
||||||
# Launch eNB with the modified config file
|
# Launch eNB with the modified config file
|
||||||
self.command('source oaienv', '\$', 5)
|
self.command('source oaienv', '\$', 5)
|
||||||
self.command('cd cmake_targets', '\$', 5)
|
self.command('cd cmake_targets', '\$', 5)
|
||||||
@@ -830,6 +843,7 @@ class SSHConnection():
|
|||||||
time.sleep(6)
|
time.sleep(6)
|
||||||
doLoop = True
|
doLoop = True
|
||||||
loopCounter = 10
|
loopCounter = 10
|
||||||
|
enbDidSync = False
|
||||||
while (doLoop):
|
while (doLoop):
|
||||||
loopCounter = loopCounter - 1
|
loopCounter = loopCounter - 1
|
||||||
if (loopCounter == 0):
|
if (loopCounter == 0):
|
||||||
@@ -868,11 +882,27 @@ class SSHConnection():
|
|||||||
time.sleep(6)
|
time.sleep(6)
|
||||||
else:
|
else:
|
||||||
doLoop = False
|
doLoop = False
|
||||||
self.CreateHtmlTestRow('-O ' + config_file + extra_options, 'OK', ALL_PROCESSES_OK)
|
enbDidSync = True
|
||||||
logging.debug('\u001B[1m Initialize eNB Completed\u001B[0m')
|
|
||||||
time.sleep(10)
|
time.sleep(10)
|
||||||
|
|
||||||
|
if enbDidSync and eNBinNoS1:
|
||||||
|
self.command('ifconfig oaitun_enb1', '\$', 4)
|
||||||
|
result = re.search('inet addr', str(self.ssh.before))
|
||||||
|
if result is not None:
|
||||||
|
logging.debug('\u001B[1m oaitun_enb1 interface is mounted and configured\u001B[0m')
|
||||||
|
else:
|
||||||
|
logging.error('\u001B[1m oaitun_enb1 interface is either NOT mounted or NOT configured\u001B[0m')
|
||||||
|
if self.eNBmbmsEnables[int(self.eNB_instance)]:
|
||||||
|
self.command('ifconfig oaitun_enm1', '\$', 4)
|
||||||
|
result = re.search('inet addr', str(self.ssh.before))
|
||||||
|
if result is not None:
|
||||||
|
logging.debug('\u001B[1m oaitun_enm1 interface is mounted and configured\u001B[0m')
|
||||||
|
else:
|
||||||
|
logging.error('\u001B[1m oaitun_enm1 interface is either NOT mounted or NOT configured\u001B[0m')
|
||||||
|
|
||||||
self.close()
|
self.close()
|
||||||
|
self.CreateHtmlTestRow('-O ' + config_file + extra_options, 'OK', ALL_PROCESSES_OK)
|
||||||
|
logging.debug('\u001B[1m Initialize eNB Completed\u001B[0m')
|
||||||
|
|
||||||
def InitializeUE_common(self, device_id, idx):
|
def InitializeUE_common(self, device_id, idx):
|
||||||
try:
|
try:
|
||||||
@@ -1053,6 +1083,15 @@ class SSHConnection():
|
|||||||
logging.debug(str(self.ssh.before))
|
logging.debug(str(self.ssh.before))
|
||||||
logging.error('\u001B[1m oaitun_ue1 interface is either NOT mounted or NOT configured\u001B[0m')
|
logging.error('\u001B[1m oaitun_ue1 interface is either NOT mounted or NOT configured\u001B[0m')
|
||||||
tunnelInterfaceStatus = False
|
tunnelInterfaceStatus = False
|
||||||
|
if self.eNBmbmsEnables[0]:
|
||||||
|
self.command('ifconfig oaitun_uem1', '\$', 4)
|
||||||
|
result = re.search('inet addr', str(self.ssh.before))
|
||||||
|
if result is not None:
|
||||||
|
logging.debug('\u001B[1m oaitun_uem1 interface is mounted and configured\u001B[0m')
|
||||||
|
tunnelInterfaceStatus = tunnelInterfaceStatus and True
|
||||||
|
else:
|
||||||
|
logging.error('\u001B[1m oaitun_uem1 interface is either NOT mounted or NOT configured\u001B[0m')
|
||||||
|
tunnelInterfaceStatus = False
|
||||||
else:
|
else:
|
||||||
tunnelInterfaceStatus = True
|
tunnelInterfaceStatus = True
|
||||||
|
|
||||||
@@ -1066,7 +1105,10 @@ class SSHConnection():
|
|||||||
self.UEDevicesStatus = []
|
self.UEDevicesStatus = []
|
||||||
self.UEDevicesStatus.append(UE_STATUS_DETACHED)
|
self.UEDevicesStatus.append(UE_STATUS_DETACHED)
|
||||||
else:
|
else:
|
||||||
self.htmlUEFailureMsg = 'oaitun_ue1 interface is either NOT mounted or NOT configured'
|
if self.eNBmbmsEnables[0]:
|
||||||
|
self.htmlUEFailureMsg = 'oaitun_ue1/oaitun_uem1 interfaces are either NOT mounted or NOT configured'
|
||||||
|
else:
|
||||||
|
self.htmlUEFailureMsg = 'oaitun_ue1 interface is either NOT mounted or NOT configured'
|
||||||
self.CreateHtmlTestRow(self.Initialize_OAI_UE_args, 'KO', OAI_UE_PROCESS_NO_TUNNEL_INTERFACE, 'OAI UE')
|
self.CreateHtmlTestRow(self.Initialize_OAI_UE_args, 'KO', OAI_UE_PROCESS_NO_TUNNEL_INTERFACE, 'OAI UE')
|
||||||
logging.error('\033[91mInitialize OAI UE Failed! \033[0m')
|
logging.error('\033[91mInitialize OAI UE Failed! \033[0m')
|
||||||
self.AutoTerminateUEandeNB()
|
self.AutoTerminateUEandeNB()
|
||||||
@@ -2629,17 +2671,18 @@ class SSHConnection():
|
|||||||
iClientIPAddr = self.eNBIPAddress
|
iClientIPAddr = self.eNBIPAddress
|
||||||
iClientUser = self.eNBUserName
|
iClientUser = self.eNBUserName
|
||||||
iClientPasswd = self.eNBPassword
|
iClientPasswd = self.eNBPassword
|
||||||
# Starting the iperf server
|
if self.iperf_options != 'sink':
|
||||||
self.open(iServerIPAddr, iServerUser, iServerPasswd)
|
# Starting the iperf server
|
||||||
# args SHALL be "-c client -u any"
|
self.open(iServerIPAddr, iServerUser, iServerPasswd)
|
||||||
# -c 10.0.1.2 -u -b 1M -t 30 -i 1 -fm -B 10.0.1.1
|
# args SHALL be "-c client -u any"
|
||||||
# -B 10.0.1.1 -u -s -i 1 -fm
|
# -c 10.0.1.2 -u -b 1M -t 30 -i 1 -fm -B 10.0.1.1
|
||||||
server_options = re.sub('-u.*$', '-u -s -i 1 -fm', str(self.iperf_args))
|
# -B 10.0.1.1 -u -s -i 1 -fm
|
||||||
server_options = server_options.replace('-c','-B')
|
server_options = re.sub('-u.*$', '-u -s -i 1 -fm', str(self.iperf_args))
|
||||||
self.command('rm -f /tmp/tmp_iperf_server_' + self.testCase_id + '.log', '\$', 5)
|
server_options = server_options.replace('-c','-B')
|
||||||
self.command('echo $USER; nohup iperf ' + server_options + ' > /tmp/tmp_iperf_server_' + self.testCase_id + '.log 2>&1 &', iServerUser, 5)
|
self.command('rm -f /tmp/tmp_iperf_server_' + self.testCase_id + '.log', '\$', 5)
|
||||||
time.sleep(0.5)
|
self.command('echo $USER; nohup iperf ' + server_options + ' > /tmp/tmp_iperf_server_' + self.testCase_id + '.log 2>&1 &', iServerUser, 5)
|
||||||
self.close()
|
time.sleep(0.5)
|
||||||
|
self.close()
|
||||||
|
|
||||||
# Starting the iperf client
|
# Starting the iperf client
|
||||||
modified_options = self.Iperf_ComputeModifiedBW(0, 1)
|
modified_options = self.Iperf_ComputeModifiedBW(0, 1)
|
||||||
@@ -2655,14 +2698,22 @@ class SSHConnection():
|
|||||||
logging.debug('\u001B[1;37;41m ' + message + ' \u001B[0m')
|
logging.debug('\u001B[1;37;41m ' + message + ' \u001B[0m')
|
||||||
clientStatus = -2
|
clientStatus = -2
|
||||||
else:
|
else:
|
||||||
clientStatus = self.Iperf_analyzeV2Output(lock, '10.0.1.2', 'OAI-UE', status_queue, modified_options)
|
if self.iperf_options == 'sink':
|
||||||
|
clientStatus = 0
|
||||||
|
status_queue.put(0)
|
||||||
|
status_queue.put('OAI-UE')
|
||||||
|
status_queue.put('10.0.1.2')
|
||||||
|
status_queue.put('Sink Test : no check')
|
||||||
|
else:
|
||||||
|
clientStatus = self.Iperf_analyzeV2Output(lock, '10.0.1.2', 'OAI-UE', status_queue, modified_options)
|
||||||
self.close()
|
self.close()
|
||||||
|
|
||||||
# Stopping the iperf server
|
# Stopping the iperf server
|
||||||
self.open(iServerIPAddr, iServerUser, iServerPasswd)
|
if self.iperf_options != 'sink':
|
||||||
self.command('killall --signal SIGKILL iperf', '\$', 5)
|
self.open(iServerIPAddr, iServerUser, iServerPasswd)
|
||||||
time.sleep(0.5)
|
self.command('killall --signal SIGKILL iperf', '\$', 5)
|
||||||
self.close()
|
time.sleep(0.5)
|
||||||
|
self.close()
|
||||||
if (clientStatus == -1):
|
if (clientStatus == -1):
|
||||||
if (os.path.isfile('iperf_server_' + self.testCase_id + '.log')):
|
if (os.path.isfile('iperf_server_' + self.testCase_id + '.log')):
|
||||||
os.remove('iperf_server_' + self.testCase_id + '.log')
|
os.remove('iperf_server_' + self.testCase_id + '.log')
|
||||||
@@ -2670,9 +2721,10 @@ class SSHConnection():
|
|||||||
self.Iperf_analyzeV2Server(lock, '10.0.1.2', 'OAI-UE', status_queue, modified_options)
|
self.Iperf_analyzeV2Server(lock, '10.0.1.2', 'OAI-UE', status_queue, modified_options)
|
||||||
|
|
||||||
# copying on the EPC server for logCollection
|
# copying on the EPC server for logCollection
|
||||||
copyin_res = self.copyin(iServerIPAddr, iServerUser, iServerPasswd, '/tmp/tmp_iperf_server_' + self.testCase_id + '.log', 'iperf_server_' + self.testCase_id + '_OAI-UE.log')
|
if (clientStatus == -1):
|
||||||
if (copyin_res == 0):
|
copyin_res = self.copyin(iServerIPAddr, iServerUser, iServerPasswd, '/tmp/tmp_iperf_server_' + self.testCase_id + '.log', 'iperf_server_' + self.testCase_id + '_OAI-UE.log')
|
||||||
self.copyout(self.EPCIPAddress, self.EPCUserName, self.EPCPassword, 'iperf_server_' + self.testCase_id + '_OAI-UE.log', self.EPCSourceCodePath + '/scripts')
|
if (copyin_res == 0):
|
||||||
|
self.copyout(self.EPCIPAddress, self.EPCUserName, self.EPCPassword, 'iperf_server_' + self.testCase_id + '_OAI-UE.log', self.EPCSourceCodePath + '/scripts')
|
||||||
copyin_res = self.copyin(iClientIPAddr, iClientUser, iClientPasswd, '/tmp/tmp_iperf_' + self.testCase_id + '.log', 'iperf_' + self.testCase_id + '_OAI-UE.log')
|
copyin_res = self.copyin(iClientIPAddr, iClientUser, iClientPasswd, '/tmp/tmp_iperf_' + self.testCase_id + '.log', 'iperf_' + self.testCase_id + '_OAI-UE.log')
|
||||||
if (copyin_res == 0):
|
if (copyin_res == 0):
|
||||||
self.copyout(self.EPCIPAddress, self.EPCUserName, self.EPCPassword, 'iperf_' + self.testCase_id + '_OAI-UE.log', self.EPCSourceCodePath + '/scripts')
|
self.copyout(self.EPCIPAddress, self.EPCUserName, self.EPCPassword, 'iperf_' + self.testCase_id + '_OAI-UE.log', self.EPCSourceCodePath + '/scripts')
|
||||||
@@ -2964,6 +3016,7 @@ class SSHConnection():
|
|||||||
ulschFailure = 0
|
ulschFailure = 0
|
||||||
cdrxActivationMessageCount = 0
|
cdrxActivationMessageCount = 0
|
||||||
dropNotEnoughRBs = 0
|
dropNotEnoughRBs = 0
|
||||||
|
mbmsRequestMsg = 0
|
||||||
self.htmleNBFailureMsg = ''
|
self.htmleNBFailureMsg = ''
|
||||||
isRRU = False
|
isRRU = False
|
||||||
isSlave = False
|
isSlave = False
|
||||||
@@ -3082,6 +3135,10 @@ class SSHConnection():
|
|||||||
result = re.search('dropping, not enough RBs', str(line))
|
result = re.search('dropping, not enough RBs', str(line))
|
||||||
if result is not None:
|
if result is not None:
|
||||||
dropNotEnoughRBs += 1
|
dropNotEnoughRBs += 1
|
||||||
|
if self.eNBmbmsEnables[int(self.eNB_instance)]:
|
||||||
|
result = re.search('MBMS USER-PLANE.*Requesting.*bytes from RLC', str(line))
|
||||||
|
if result is not None:
|
||||||
|
mbmsRequestMsg += 1
|
||||||
enb_log_file.close()
|
enb_log_file.close()
|
||||||
logging.debug(' File analysis completed')
|
logging.debug(' File analysis completed')
|
||||||
if uciStatMsgCount > 0:
|
if uciStatMsgCount > 0:
|
||||||
@@ -3125,6 +3182,11 @@ class SSHConnection():
|
|||||||
rrcMsg = ' -- ' + str(rrcReestablishReject) + ' were rejected'
|
rrcMsg = ' -- ' + str(rrcReestablishReject) + ' were rejected'
|
||||||
logging.debug('\u001B[1;30;43m ' + rrcMsg + ' \u001B[0m')
|
logging.debug('\u001B[1;30;43m ' + rrcMsg + ' \u001B[0m')
|
||||||
self.htmleNBFailureMsg += rrcMsg + '\n'
|
self.htmleNBFailureMsg += rrcMsg + '\n'
|
||||||
|
if self.eNBmbmsEnables[int(self.eNB_instance)]:
|
||||||
|
if mbmsRequestMsg > 0:
|
||||||
|
rrcMsg = 'eNB requested ' + str(mbmsRequestMsg) + ' times the RLC for MBMS USER-PLANE'
|
||||||
|
logging.debug('\u001B[1;30;43m ' + rrcMsg + ' \u001B[0m')
|
||||||
|
self.htmleNBFailureMsg += rrcMsg + '\n'
|
||||||
if X2HO_inNbProcedures > 0:
|
if X2HO_inNbProcedures > 0:
|
||||||
rrcMsg = 'eNB completed ' + str(X2HO_inNbProcedures) + ' X2 Handover Connection procedure(s)'
|
rrcMsg = 'eNB completed ' + str(X2HO_inNbProcedures) + ' X2 Handover Connection procedure(s)'
|
||||||
logging.debug('\u001B[1;30;43m ' + rrcMsg + ' \u001B[0m')
|
logging.debug('\u001B[1;30;43m ' + rrcMsg + ' \u001B[0m')
|
||||||
@@ -3196,6 +3258,7 @@ class SSHConnection():
|
|||||||
mib_found = False
|
mib_found = False
|
||||||
frequency_found = False
|
frequency_found = False
|
||||||
plmn_found = False
|
plmn_found = False
|
||||||
|
mbms_messages = 0
|
||||||
self.htmlUEFailureMsg = ''
|
self.htmlUEFailureMsg = ''
|
||||||
for line in ue_log_file.readlines():
|
for line in ue_log_file.readlines():
|
||||||
result = re.search('Exiting OAI softmodem', str(line))
|
result = re.search('Exiting OAI softmodem', str(line))
|
||||||
@@ -3235,6 +3298,10 @@ class SSHConnection():
|
|||||||
result = re.search('No cell synchronization found, abandoning', str(line))
|
result = re.search('No cell synchronization found, abandoning', str(line))
|
||||||
if result is not None:
|
if result is not None:
|
||||||
no_cell_sync_found = True
|
no_cell_sync_found = True
|
||||||
|
if self.eNBmbmsEnables[0]:
|
||||||
|
result = re.search('TRIED TO PUSH MBMS DATA', str(line))
|
||||||
|
if result is not None:
|
||||||
|
mbms_messages += 1
|
||||||
result = re.search("MIB Information => ([a-zA-Z]{1,10}), ([a-zA-Z]{1,10}), NidCell (?P<nidcell>\d{1,3}), N_RB_DL (?P<n_rb_dl>\d{1,3}), PHICH DURATION (?P<phich_duration>\d), PHICH RESOURCE (?P<phich_resource>.{1,4}), TX_ANT (?P<tx_ant>\d)", str(line))
|
result = re.search("MIB Information => ([a-zA-Z]{1,10}), ([a-zA-Z]{1,10}), NidCell (?P<nidcell>\d{1,3}), N_RB_DL (?P<n_rb_dl>\d{1,3}), PHICH DURATION (?P<phich_duration>\d), PHICH RESOURCE (?P<phich_resource>.{1,4}), TX_ANT (?P<tx_ant>\d)", str(line))
|
||||||
if result is not None and (not mib_found):
|
if result is not None and (not mib_found):
|
||||||
try:
|
try:
|
||||||
@@ -3328,6 +3395,14 @@ class SSHConnection():
|
|||||||
statMsg = 'UE showed ' + str(badDciCount) + ' "bad DCI 1A" message(s)'
|
statMsg = 'UE showed ' + str(badDciCount) + ' "bad DCI 1A" message(s)'
|
||||||
logging.debug('\u001B[1;30;43m ' + statMsg + ' \u001B[0m')
|
logging.debug('\u001B[1;30;43m ' + statMsg + ' \u001B[0m')
|
||||||
self.htmlUEFailureMsg += statMsg + '\n'
|
self.htmlUEFailureMsg += statMsg + '\n'
|
||||||
|
if self.eNBmbmsEnables[0]:
|
||||||
|
if mbms_messages > 0:
|
||||||
|
statMsg = 'UE showed ' + str(mbms_messages) + ' "TRIED TO PUSH MBMS DATA" message(s)'
|
||||||
|
logging.debug('\u001B[1;30;43m ' + statMsg + ' \u001B[0m')
|
||||||
|
else:
|
||||||
|
statMsg = 'UE did NOT SHOW "TRIED TO PUSH MBMS DATA" message(s)'
|
||||||
|
logging.debug('\u001B[1;30;41m ' + statMsg + ' \u001B[0m')
|
||||||
|
self.htmlUEFailureMsg += statMsg + '\n'
|
||||||
if foundSegFault:
|
if foundSegFault:
|
||||||
logging.debug('\u001B[1;37;41m UE ended with a Segmentation Fault! \u001B[0m')
|
logging.debug('\u001B[1;37;41m UE ended with a Segmentation Fault! \u001B[0m')
|
||||||
return ENB_PROCESS_SEG_FAULT
|
return ENB_PROCESS_SEG_FAULT
|
||||||
@@ -3421,6 +3496,7 @@ class SSHConnection():
|
|||||||
logging.debug('\u001B[1;37;41m Could not copy eNB logfile to analyze it! \u001B[0m')
|
logging.debug('\u001B[1;37;41m Could not copy eNB logfile to analyze it! \u001B[0m')
|
||||||
self.htmleNBFailureMsg = 'Could not copy eNB logfile to analyze it!'
|
self.htmleNBFailureMsg = 'Could not copy eNB logfile to analyze it!'
|
||||||
self.CreateHtmlTestRow('N/A', 'KO', ENB_PROCESS_NOLOGFILE_TO_ANALYZE)
|
self.CreateHtmlTestRow('N/A', 'KO', ENB_PROCESS_NOLOGFILE_TO_ANALYZE)
|
||||||
|
self.eNBmbmsEnables[int(self.eNB_instance)] = False
|
||||||
return
|
return
|
||||||
if self.eNB_serverId != '0':
|
if self.eNB_serverId != '0':
|
||||||
self.copyout(self.eNBIPAddress, self.eNBUserName, self.eNBPassword, './' + fileToAnalyze, self.eNBSourceCodePath + '/cmake_targets/')
|
self.copyout(self.eNBIPAddress, self.eNBUserName, self.eNBPassword, './' + fileToAnalyze, self.eNBSourceCodePath + '/cmake_targets/')
|
||||||
@@ -3429,11 +3505,13 @@ class SSHConnection():
|
|||||||
if (logStatus < 0):
|
if (logStatus < 0):
|
||||||
self.CreateHtmlTestRow('N/A', 'KO', logStatus)
|
self.CreateHtmlTestRow('N/A', 'KO', logStatus)
|
||||||
self.preamtureExit = True
|
self.preamtureExit = True
|
||||||
|
self.eNBmbmsEnables[int(self.eNB_instance)] = False
|
||||||
return
|
return
|
||||||
else:
|
else:
|
||||||
self.CreateHtmlTestRow('N/A', 'OK', ALL_PROCESSES_OK)
|
self.CreateHtmlTestRow('N/A', 'OK', ALL_PROCESSES_OK)
|
||||||
else:
|
else:
|
||||||
self.CreateHtmlTestRow('N/A', 'OK', ALL_PROCESSES_OK)
|
self.CreateHtmlTestRow('N/A', 'OK', ALL_PROCESSES_OK)
|
||||||
|
self.eNBmbmsEnables[int(self.eNB_instance)] = False
|
||||||
|
|
||||||
def TerminateHSS(self):
|
def TerminateHSS(self):
|
||||||
self.open(self.EPCIPAddress, self.EPCUserName, self.EPCPassword)
|
self.open(self.EPCIPAddress, self.EPCUserName, self.EPCPassword)
|
||||||
@@ -4381,6 +4459,13 @@ def GetParametersFromXML(action):
|
|||||||
if SSH.iperf_profile != 'balanced' and SSH.iperf_profile != 'unbalanced' and SSH.iperf_profile != 'single-ue':
|
if SSH.iperf_profile != 'balanced' and SSH.iperf_profile != 'unbalanced' and SSH.iperf_profile != 'single-ue':
|
||||||
logging.debug('ERROR: test-case has wrong profile ' + SSH.iperf_profile)
|
logging.debug('ERROR: test-case has wrong profile ' + SSH.iperf_profile)
|
||||||
SSH.iperf_profile = 'balanced'
|
SSH.iperf_profile = 'balanced'
|
||||||
|
SSH.iperf_options = test.findtext('iperf_options')
|
||||||
|
if (SSH.iperf_options is None):
|
||||||
|
SSH.iperf_options = 'check'
|
||||||
|
else:
|
||||||
|
if SSH.iperf_options != 'check' and SSH.iperf_options != 'sink':
|
||||||
|
logging.debug('ERROR: test-case has wrong option ' + SSH.iperf_options)
|
||||||
|
SSH.iperf_options = 'check'
|
||||||
|
|
||||||
if action == 'IdleSleep':
|
if action == 'IdleSleep':
|
||||||
string_field = test.findtext('idle_sleep_time_in_sec')
|
string_field = test.findtext('idle_sleep_time_in_sec')
|
||||||
|
|||||||
@@ -0,0 +1,82 @@
|
|||||||
|
<!--
|
||||||
|
|
||||||
|
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-05-tm1-mbms-nos1-tunnel</htmlTabRef>
|
||||||
|
<htmlTabName>Test-05MHz-MBMS-TM1-noS1-tunnel</htmlTabName>
|
||||||
|
<htmlTabIcon>tasks</htmlTabIcon>
|
||||||
|
<repeatCount>2</repeatCount>
|
||||||
|
<TestCaseRequestedList>
|
||||||
|
030201 090109
|
||||||
|
030103 000001 090103 000002 040605 000001 090109 030201
|
||||||
|
</TestCaseRequestedList>
|
||||||
|
<TestCaseExclusionList></TestCaseExclusionList>
|
||||||
|
|
||||||
|
<testCase id="000001">
|
||||||
|
<class>IdleSleep</class>
|
||||||
|
<desc>Sleep</desc>
|
||||||
|
<idle_sleep_time_in_sec>10</idle_sleep_time_in_sec>
|
||||||
|
</testCase>
|
||||||
|
|
||||||
|
<testCase id="000002">
|
||||||
|
<class>IdleSleep</class>
|
||||||
|
<desc>Sleep</desc>
|
||||||
|
<idle_sleep_time_in_sec>15</idle_sleep_time_in_sec>
|
||||||
|
</testCase>
|
||||||
|
|
||||||
|
<testCase id="000003">
|
||||||
|
<class>IdleSleep</class>
|
||||||
|
<desc>Sleep</desc>
|
||||||
|
<idle_sleep_time_in_sec>60</idle_sleep_time_in_sec>
|
||||||
|
</testCase>
|
||||||
|
|
||||||
|
<testCase id="030103">
|
||||||
|
<class>Initialize_eNB</class>
|
||||||
|
<desc>Initialize eNB (FDD/Band7/5MHz/MBMS)</desc>
|
||||||
|
<Initialize_eNB_args>-O ci-scripts/conf_files/enb.band17.tm1.mbms.25PRB.usrpb210.conf --noS1 --eNBs.[0].rrc_inactivity_threshold 0 --nokrnmod 1 --eNBs.[0].component_carriers.[0].eutra_band 7 --eNBs.[0].component_carriers.[0].downlink_frequency 2680000000 --eNBs.[0].component_carriers.[0].uplink_frequency_offset -120000000</Initialize_eNB_args>
|
||||||
|
</testCase>
|
||||||
|
|
||||||
|
<testCase id="030201">
|
||||||
|
<class>Terminate_eNB</class>
|
||||||
|
<desc>Terminate eNB</desc>
|
||||||
|
</testCase>
|
||||||
|
|
||||||
|
<testCase id="090103">
|
||||||
|
<class>Initialize_OAI_UE</class>
|
||||||
|
<desc>Initialize OAI UE (FDD/Band7/5MHz/MBMS)</desc>
|
||||||
|
<Initialize_OAI_UE_args>-C 2680000000 -r 25 --ue-rxgain 120 --ue-txgain 0 --ue-max-power 0 --ue-scan-carrier --nokrnmod 1 --noS1</Initialize_OAI_UE_args>
|
||||||
|
</testCase>
|
||||||
|
|
||||||
|
<testCase id="090109">
|
||||||
|
<class>Terminate_OAI_UE</class>
|
||||||
|
<desc>Terminate OAI UE</desc>
|
||||||
|
</testCase>
|
||||||
|
|
||||||
|
<testCase id="040605">
|
||||||
|
<class>Iperf</class>
|
||||||
|
<desc>iperf (5MHz - DL/1.5Mbps/UDP/MBMS-sink)(20 sec)</desc>
|
||||||
|
<iperf_args>-c 10.0.2.2 -u -b 1.5M -t 20 -i 1 -fm -B 10.0.2.1</iperf_args>
|
||||||
|
<iperf_packetloss_threshold>50</iperf_packetloss_threshold>
|
||||||
|
<iperf_options>sink</iperf_options>
|
||||||
|
</testCase>
|
||||||
|
|
||||||
|
</testCaseList>
|
||||||
Reference in New Issue
Block a user