Merge branch 'ci_improve_iperf_pass_fail' into 'develop'
[CI] improve iperf pass fail See merge request oai/openairinterface5g!1373
This commit is contained in:
+95
-15
@@ -57,12 +57,15 @@ import sshconnection
|
|||||||
import cls_module_ue
|
import cls_module_ue
|
||||||
import cls_ci_ueinfra #class defining the multi Ue infrastrucure
|
import cls_ci_ueinfra #class defining the multi Ue infrastrucure
|
||||||
|
|
||||||
|
logging.getLogger("matplotlib").setLevel(logging.WARNING)
|
||||||
|
import matplotlib.pyplot as plt
|
||||||
|
import numpy as np
|
||||||
|
|
||||||
#-----------------------------------------------------------
|
#-----------------------------------------------------------
|
||||||
# Utility functions
|
# Utility functions
|
||||||
#-----------------------------------------------------------
|
#-----------------------------------------------------------
|
||||||
|
|
||||||
def GetPingTimeAnalysis(ping_log_file):
|
def GetPingTimeAnalysis(RAN,ping_log_file,ping_rttavg_threshold):
|
||||||
#ping time values read from file
|
#ping time values read from file
|
||||||
t_ping=[]
|
t_ping=[]
|
||||||
#ping stats (dictionary) to be returned by the function
|
#ping stats (dictionary) to be returned by the function
|
||||||
@@ -86,17 +89,46 @@ def GetPingTimeAnalysis(ping_log_file):
|
|||||||
max_loc=t_ping.index(max(t_ping))
|
max_loc=t_ping.index(max(t_ping))
|
||||||
ping_stat['max_loc']=max_loc
|
ping_stat['max_loc']=max_loc
|
||||||
#remove it
|
#remove it
|
||||||
t_ping.pop(max_loc)
|
t_ping_post=t_ping.copy()
|
||||||
|
t_ping_post.pop(max_loc)
|
||||||
#new stats after removing max value
|
#new stats after removing max value
|
||||||
ping_stat['min_1']=min(t_ping)
|
ping_stat['min_1']=min(t_ping_post)
|
||||||
ping_stat['mean_1']=stat.mean(t_ping)
|
ping_stat['mean_1']=stat.mean(t_ping_post)
|
||||||
ping_stat['median_1']=stat.median(t_ping)
|
ping_stat['median_1']=stat.median(t_ping_post)
|
||||||
ping_stat['max_1']=max(t_ping)
|
ping_stat['max_1']=max(t_ping_post)
|
||||||
|
|
||||||
|
#plot ping over time and save png for artifacts
|
||||||
|
ticks = np.arange(0, len(t_ping), 1)
|
||||||
|
figure, axis = plt.subplots(figsize=(10, 10))
|
||||||
|
axis.plot(ticks,t_ping,marker='o')
|
||||||
|
axis.set_xlabel('Ping Events')
|
||||||
|
axis.set_ylabel("Ping RTT (in ms)")
|
||||||
|
axis.set_title(ping_log_file)
|
||||||
|
axis.set_xticks(ticks)
|
||||||
|
axis.set_xticklabels([])
|
||||||
|
YMAX=20 #base scale
|
||||||
|
if max(t_ping) > YMAX:
|
||||||
|
y_max=max(t_ping)+1
|
||||||
|
else:
|
||||||
|
y_max=YMAX+1
|
||||||
|
plt.ylim(0,y_max)
|
||||||
|
if ping_rttavg_threshold != '':
|
||||||
|
th_label="AVG Ping Fail Threshold="+ping_rttavg_threshold
|
||||||
|
plt.axhline(y=float(ping_rttavg_threshold), color='r', linestyle='-',label=th_label)
|
||||||
|
axis.legend()
|
||||||
|
plt.savefig(ping_log_file+'.png')
|
||||||
|
|
||||||
|
#copy the png file already to enb to move it move it later into the artifacts
|
||||||
|
try:
|
||||||
|
mySSH = sshconnection.SSHConnection()
|
||||||
|
mySSH.copyout(RAN.eNBIPAddress, RAN.eNBUserName, RAN.eNBPassword, ping_log_file+'.png', RAN.eNBSourceCodePath + '/cmake_targets/')
|
||||||
|
except:
|
||||||
|
logging.debug('\u001B[1;37;41m Ping PNG SCP to eNB FAILED\u001B[0m')
|
||||||
|
|
||||||
return ping_stat
|
return ping_stat
|
||||||
|
|
||||||
else:
|
else:
|
||||||
logging.error("Ping log file does not exist")
|
logging.error("GetPingTimeAnalysis : Ping log file does not exist")
|
||||||
return -1
|
return -1
|
||||||
|
|
||||||
|
|
||||||
@@ -129,6 +161,7 @@ class OaiCiTest():
|
|||||||
self.ping_rttavg_threshold =''
|
self.ping_rttavg_threshold =''
|
||||||
self.iperf_args = ''
|
self.iperf_args = ''
|
||||||
self.iperf_packetloss_threshold = ''
|
self.iperf_packetloss_threshold = ''
|
||||||
|
self.iperf_bitrate_threshold = ''
|
||||||
self.iperf_profile = ''
|
self.iperf_profile = ''
|
||||||
self.iperf_options = ''
|
self.iperf_options = ''
|
||||||
self.iperf_direction = ''
|
self.iperf_direction = ''
|
||||||
@@ -1531,7 +1564,7 @@ class OaiCiTest():
|
|||||||
statusQueue.put(message)
|
statusQueue.put(message)
|
||||||
lock.release()
|
lock.release()
|
||||||
|
|
||||||
def Ping_common(self, lock, UE_IPAddress, device_id, statusQueue,EPC, Module_UE):
|
def Ping_common(self, lock, UE_IPAddress, device_id, statusQueue,EPC, Module_UE,RAN):
|
||||||
try:
|
try:
|
||||||
SSH = sshconnection.SSHConnection()
|
SSH = sshconnection.SSHConnection()
|
||||||
# Launch ping on the EPC side (true for ltebox and old open-air-cn)
|
# Launch ping on the EPC side (true for ltebox and old open-air-cn)
|
||||||
@@ -1559,6 +1592,7 @@ class OaiCiTest():
|
|||||||
ping_status = SSH.command('docker exec -it prod-trf-gen /bin/bash -c "ping ' + self.ping_args + ' ' + UE_IPAddress + '" 2>&1 | tee ping_' + self.testCase_id + '_' + device_id + '.log', '\$', int(ping_time[0])*1.5)
|
ping_status = SSH.command('docker exec -it prod-trf-gen /bin/bash -c "ping ' + self.ping_args + ' ' + UE_IPAddress + '" 2>&1 | tee ping_' + self.testCase_id + '_' + device_id + '.log', '\$', int(ping_time[0])*1.5)
|
||||||
else:
|
else:
|
||||||
ping_status = SSH.command('stdbuf -o0 ping ' + self.ping_args + ' ' + UE_IPAddress + ' 2>&1 | stdbuf -o0 tee ping_' + self.testCase_id + '_' + device_id + '.log', '\$', int(ping_time[0])*1.5)
|
ping_status = SSH.command('stdbuf -o0 ping ' + self.ping_args + ' ' + UE_IPAddress + ' 2>&1 | stdbuf -o0 tee ping_' + self.testCase_id + '_' + device_id + '.log', '\$', int(ping_time[0])*1.5)
|
||||||
|
ping_log_file='ping_' + self.testCase_id + '_' + device_id + '.log'
|
||||||
#copy the ping log file to have it locally for analysis (ping stats)
|
#copy the ping log file to have it locally for analysis (ping stats)
|
||||||
SSH.copyin(EPC.IPAddress, EPC.UserName, EPC.Password, EPC.SourceCodePath + '/scripts/ping_' + self.testCase_id + '_' + device_id + '.log', '.')
|
SSH.copyin(EPC.IPAddress, EPC.UserName, EPC.Password, EPC.SourceCodePath + '/scripts/ping_' + self.testCase_id + '_' + device_id + '.log', '.')
|
||||||
else:
|
else:
|
||||||
@@ -1578,6 +1612,7 @@ class OaiCiTest():
|
|||||||
SSH.open(EPC.IPAddress, EPC.UserName, EPC.Password)
|
SSH.open(EPC.IPAddress, EPC.UserName, EPC.Password)
|
||||||
#cat is executed on EPC
|
#cat is executed on EPC
|
||||||
SSH.command('cat ' + EPC.SourceCodePath + '/scripts/ping_' + self.testCase_id + '_' + device_id + '.log', '\$', 5)
|
SSH.command('cat ' + EPC.SourceCodePath + '/scripts/ping_' + self.testCase_id + '_' + device_id + '.log', '\$', 5)
|
||||||
|
ping_log_file='/scripts/ping_' + self.testCase_id + '_' + device_id + '.log'
|
||||||
else: #launch from Module
|
else: #launch from Module
|
||||||
SSH.open(Module_UE.HostIPAddress, Module_UE.HostUsername, Module_UE.HostPassword)
|
SSH.open(Module_UE.HostIPAddress, Module_UE.HostUsername, Module_UE.HostPassword)
|
||||||
#target address is different depending on EPC type
|
#target address is different depending on EPC type
|
||||||
@@ -1595,6 +1630,7 @@ class OaiCiTest():
|
|||||||
|
|
||||||
#cat is executed locally
|
#cat is executed locally
|
||||||
SSH.command('cat ping_' + self.testCase_id + '_' + self.ue_id + '.log', '\$', 5)
|
SSH.command('cat ping_' + self.testCase_id + '_' + self.ue_id + '.log', '\$', 5)
|
||||||
|
ping_log_file='ping_' + self.testCase_id + '_' + self.ue_id + '.log'
|
||||||
ping_status=0
|
ping_status=0
|
||||||
|
|
||||||
# TIMEOUT CASE
|
# TIMEOUT CASE
|
||||||
@@ -1642,9 +1678,9 @@ class OaiCiTest():
|
|||||||
logging.debug('\u001B[1;34m ' + max_msg + '\u001B[0m')
|
logging.debug('\u001B[1;34m ' + max_msg + '\u001B[0m')
|
||||||
|
|
||||||
#adding extra ping stats from local file
|
#adding extra ping stats from local file
|
||||||
ping_log_file='ping_' + self.testCase_id + '_' + device_id + '.log'
|
#ping_log_file variable is defined above in this function, depending on device/ue
|
||||||
logging.debug('Analyzing Ping log file : ' + os.getcwd() + '/' + ping_log_file)
|
logging.debug('Analyzing Ping log file : ' + os.getcwd() + '/' + ping_log_file)
|
||||||
ping_stat=GetPingTimeAnalysis(ping_log_file)
|
ping_stat=GetPingTimeAnalysis(RAN,ping_log_file,self.ping_rttavg_threshold)
|
||||||
ping_stat_msg=''
|
ping_stat_msg=''
|
||||||
if (ping_stat!=-1) and (len(ping_stat)!=0):
|
if (ping_stat!=-1) and (len(ping_stat)!=0):
|
||||||
ping_stat_msg+='Ping stats before removing largest value : \n'
|
ping_stat_msg+='Ping stats before removing largest value : \n'
|
||||||
@@ -1834,7 +1870,7 @@ class OaiCiTest():
|
|||||||
device_id = self.UEDevices[i]
|
device_id = self.UEDevices[i]
|
||||||
else:
|
else:
|
||||||
device_id = Module_UE.ID + "-" + Module_UE.Kind
|
device_id = Module_UE.ID + "-" + Module_UE.Kind
|
||||||
p = Process(target = self.Ping_common, args = (lock,UE_IPAddress,device_id,status_queue,EPC,Module_UE,))
|
p = Process(target = self.Ping_common, args = (lock,UE_IPAddress,device_id,status_queue,EPC,Module_UE,RAN,))
|
||||||
p.daemon = True
|
p.daemon = True
|
||||||
p.start()
|
p.start()
|
||||||
multi_jobs.append(p)
|
multi_jobs.append(p)
|
||||||
@@ -2085,12 +2121,20 @@ class OaiCiTest():
|
|||||||
pl = float(100 * pl_sum / ps_sum)
|
pl = float(100 * pl_sum / ps_sum)
|
||||||
packetloss = '%2.1f ' % (pl)
|
packetloss = '%2.1f ' % (pl)
|
||||||
packetloss += '%'
|
packetloss += '%'
|
||||||
|
#checking packet loss compliance
|
||||||
if float(pl) > float(self.iperf_packetloss_threshold):
|
if float(pl) > float(self.iperf_packetloss_threshold):
|
||||||
pal_too_high_msg = 'Packet Loss too high : actual = '+packetloss+', target = '+self.iperf_packetloss_threshold+'%\n'
|
pal_too_high_msg = 'Packet Loss too high : tested = '+packetloss+', target = '+self.iperf_packetloss_threshold+'%'
|
||||||
else:
|
else:
|
||||||
pal_too_high_msg=''
|
pal_too_high_msg='Packet Loss value is within acceptance range'
|
||||||
|
#checking bitrate perf compliance
|
||||||
|
if float(br_loss) < float(self.iperf_bitrate_threshold):
|
||||||
|
bit_too_low_msg = 'Bitrate too low : tested = '+bitperf+', target = '+self.iperf_bitrate_threshold+'%'
|
||||||
|
else:
|
||||||
|
bit_too_low_msg='Bitrate perf value is within acceptance range'
|
||||||
lock.acquire()
|
lock.acquire()
|
||||||
if (br_loss < 90) or (float(pl) > float(self.iperf_packetloss_threshold)):
|
if (float(br_loss) < float(self.iperf_bitrate_threshold)) and (float(pl) > float(self.iperf_packetloss_threshold)):
|
||||||
|
statusQueue.put(-1)
|
||||||
|
elif (float(br_loss) < float(self.iperf_bitrate_threshold)) or (float(pl) > float(self.iperf_packetloss_threshold)):
|
||||||
statusQueue.put(1)
|
statusQueue.put(1)
|
||||||
else:
|
else:
|
||||||
statusQueue.put(0)
|
statusQueue.put(0)
|
||||||
@@ -2101,7 +2145,7 @@ class OaiCiTest():
|
|||||||
brl_msg = 'Bitrate Perf: ' + bitperf
|
brl_msg = 'Bitrate Perf: ' + bitperf
|
||||||
jit_msg = 'Jitter : ' + jitter
|
jit_msg = 'Jitter : ' + jitter
|
||||||
pal_msg = 'Packet Loss : ' + packetloss
|
pal_msg = 'Packet Loss : ' + packetloss
|
||||||
statusQueue.put(req_msg + '\n' + bir_msg + '\n' + brl_msg + '\n' + jit_msg + '\n' + pal_msg + '\n' + pal_too_high_msg + '\n')
|
statusQueue.put(req_msg + '\n' + bir_msg + '\n' + brl_msg + '\n' + jit_msg + '\n' + pal_msg + '\n' + pal_too_high_msg + '\n' + bit_too_low_msg + '\n')
|
||||||
logging.debug('\u001B[1;37;45m iperf result (' + UE_IPAddress + ') \u001B[0m')
|
logging.debug('\u001B[1;37;45m iperf result (' + UE_IPAddress + ') \u001B[0m')
|
||||||
logging.debug('\u001B[1;35m ' + req_msg + '\u001B[0m')
|
logging.debug('\u001B[1;35m ' + req_msg + '\u001B[0m')
|
||||||
logging.debug('\u001B[1;35m ' + bir_msg + '\u001B[0m')
|
logging.debug('\u001B[1;35m ' + bir_msg + '\u001B[0m')
|
||||||
@@ -2109,6 +2153,7 @@ class OaiCiTest():
|
|||||||
logging.debug('\u001B[1;35m ' + jit_msg + '\u001B[0m')
|
logging.debug('\u001B[1;35m ' + jit_msg + '\u001B[0m')
|
||||||
logging.debug('\u001B[1;35m ' + pal_msg + '\u001B[0m')
|
logging.debug('\u001B[1;35m ' + pal_msg + '\u001B[0m')
|
||||||
logging.debug('\u001B[1;35m ' + pal_too_high_msg + '\u001B[0m')
|
logging.debug('\u001B[1;35m ' + pal_too_high_msg + '\u001B[0m')
|
||||||
|
logging.debug('\u001B[1;35m ' + bit_too_low_msg + '\u001B[0m')
|
||||||
lock.release()
|
lock.release()
|
||||||
else:
|
else:
|
||||||
self.ping_iperf_wrong_exit(lock, UE_IPAddress, device_id, statusQueue, 'Could not analyze from server log')
|
self.ping_iperf_wrong_exit(lock, UE_IPAddress, device_id, statusQueue, 'Could not analyze from server log')
|
||||||
@@ -3391,6 +3436,41 @@ class OaiCiTest():
|
|||||||
CONTAINERS.UndeployObject(HTML,RAN)
|
CONTAINERS.UndeployObject(HTML,RAN)
|
||||||
RAN.prematureExit=True
|
RAN.prematureExit=True
|
||||||
|
|
||||||
|
#this function is called only if eNB/gNB fails to start
|
||||||
|
#RH to be re-factored
|
||||||
|
def AutoTerminateeNB(self,HTML,RAN,EPC,CONTAINERS):
|
||||||
|
if (RAN.Initialize_eNB_args != ''):
|
||||||
|
self.testCase_id = 'AUTO-KILL-RAN'
|
||||||
|
HTML.testCase_id = self.testCase_id
|
||||||
|
self.desc = 'Automatic Termination of all RAN nodes'
|
||||||
|
HTML.desc = self.desc
|
||||||
|
self.ShowTestID()
|
||||||
|
#terminate all RAN nodes eNB/gNB/OCP
|
||||||
|
for instance in range(0, len(RAN.air_interface)):
|
||||||
|
if RAN.air_interface[instance]!='':
|
||||||
|
logging.debug('Auto Termination of Instance ' + str(instance) + ' : ' + RAN.air_interface[instance])
|
||||||
|
RAN.eNB_instance=instance
|
||||||
|
RAN.TerminateeNB(HTML,EPC)
|
||||||
|
if RAN.flexranCtrlInstalled and RAN.flexranCtrlStarted:
|
||||||
|
self.testCase_id = 'AUTO-KILL-flexran-ctl'
|
||||||
|
HTML.testCase_id = self.testCase_id
|
||||||
|
self.desc = 'Automatic Termination of FlexRan CTL'
|
||||||
|
HTML.desc = self.desc
|
||||||
|
self.ShowTestID()
|
||||||
|
self.TerminateFlexranCtrl(HTML,RAN,EPC)
|
||||||
|
if CONTAINERS.yamlPath[0] != '':
|
||||||
|
self.testCase_id = 'AUTO-KILL-CONTAINERS'
|
||||||
|
HTML.testCase_id = self.testCase_id
|
||||||
|
self.desc = 'Automatic Termination of all RAN containers'
|
||||||
|
HTML.desc = self.desc
|
||||||
|
self.ShowTestID()
|
||||||
|
for instance in range(0, len(CONTAINERS.yamlPath)):
|
||||||
|
if CONTAINERS.yamlPath[instance]!='':
|
||||||
|
CONTAINERS.eNB_instance=instance
|
||||||
|
CONTAINERS.UndeployObject(HTML,RAN)
|
||||||
|
RAN.prematureExit=True
|
||||||
|
|
||||||
|
|
||||||
def IdleSleep(self,HTML):
|
def IdleSleep(self,HTML):
|
||||||
time.sleep(self.idle_sleep_time)
|
time.sleep(self.idle_sleep_time)
|
||||||
HTML.CreateHtmlTestRow(str(self.idle_sleep_time) + ' sec', 'OK', CONST.ALL_PROCESSES_OK)
|
HTML.CreateHtmlTestRow(str(self.idle_sleep_time) + ' sec', 'OK', CONST.ALL_PROCESSES_OK)
|
||||||
|
|||||||
@@ -237,7 +237,7 @@ RUs = (
|
|||||||
max_pdschReferenceSignalPower = -27;
|
max_pdschReferenceSignalPower = -27;
|
||||||
max_rxgain = 75;
|
max_rxgain = 75;
|
||||||
eNB_instances = [0];
|
eNB_instances = [0];
|
||||||
sdr_addrs = "mgmt_addr=192.168.18.241,addr=192.168.10.2";
|
sdr_addrs = "mgmt_addr=192.168.18.241,addr=192.168.20.2,second_addr=192.168.10.2";
|
||||||
|
|
||||||
}
|
}
|
||||||
);
|
);
|
||||||
|
|||||||
@@ -237,7 +237,7 @@ RUs = (
|
|||||||
max_pdschReferenceSignalPower = -27;
|
max_pdschReferenceSignalPower = -27;
|
||||||
max_rxgain = 75;
|
max_rxgain = 75;
|
||||||
eNB_instances = [0];
|
eNB_instances = [0];
|
||||||
sdr_addrs = "mgmt_addr=192.168.18.241,addr=192.168.10.2";
|
sdr_addrs = "mgmt_addr=192.168.18.241,addr=192.168.20.2,second_addr=192.168.10.2";
|
||||||
|
|
||||||
}
|
}
|
||||||
);
|
);
|
||||||
|
|||||||
@@ -310,6 +310,13 @@ def GetParametersFromXML(action):
|
|||||||
CiTestObj.ue_id = ue_id
|
CiTestObj.ue_id = ue_id
|
||||||
CiTestObj.iperf_direction = test.findtext('direction')#used for modules only
|
CiTestObj.iperf_direction = test.findtext('direction')#used for modules only
|
||||||
CiTestObj.iperf_packetloss_threshold = test.findtext('iperf_packetloss_threshold')
|
CiTestObj.iperf_packetloss_threshold = test.findtext('iperf_packetloss_threshold')
|
||||||
|
iperf_bitrate_threshold = test.findtext('iperf_bitrate_threshold')
|
||||||
|
if (iperf_bitrate_threshold is None):
|
||||||
|
CiTestObj.iperf_bitrate_threshold = "90" #if no threshold is specified, default will be 90%
|
||||||
|
else:
|
||||||
|
CiTestObj.iperf_bitrate_threshold = iperf_bitrate_threshold
|
||||||
|
|
||||||
|
|
||||||
CiTestObj.iperf_profile = test.findtext('iperf_profile')
|
CiTestObj.iperf_profile = test.findtext('iperf_profile')
|
||||||
if (CiTestObj.iperf_profile is None):
|
if (CiTestObj.iperf_profile is None):
|
||||||
CiTestObj.iperf_profile = 'balanced'
|
CiTestObj.iperf_profile = 'balanced'
|
||||||
@@ -811,6 +818,8 @@ elif re.match('^TesteNB$', mode, re.IGNORECASE) or re.match('^TestUE$', mode, re
|
|||||||
check_OAI_UE = False
|
check_OAI_UE = False
|
||||||
RAN.pStatus=CiTestObj.CheckProcessExist(check_eNB, check_OAI_UE,RAN,EPC)
|
RAN.pStatus=CiTestObj.CheckProcessExist(check_eNB, check_OAI_UE,RAN,EPC)
|
||||||
RAN.InitializeeNB(HTML, EPC)
|
RAN.InitializeeNB(HTML, EPC)
|
||||||
|
if RAN.prematureExit:
|
||||||
|
CiTestObj.AutoTerminateeNB(HTML,RAN,EPC,CONTAINERS)
|
||||||
elif action == 'Terminate_eNB':
|
elif action == 'Terminate_eNB':
|
||||||
RAN.TerminateeNB(HTML, EPC)
|
RAN.TerminateeNB(HTML, EPC)
|
||||||
elif action == 'Initialize_UE':
|
elif action == 'Initialize_UE':
|
||||||
|
|||||||
+2
-2
@@ -738,8 +738,8 @@ class RANManagement():
|
|||||||
mySSH.command('echo ' + self.eNBPassword + ' | sudo -S mv /tmp/enb_*.pcap .','\$',20)
|
mySSH.command('echo ' + self.eNBPassword + ' | sudo -S mv /tmp/enb_*.pcap .','\$',20)
|
||||||
mySSH.command('echo ' + self.eNBPassword + ' | sudo -S mv /tmp/gnb_*.pcap .','\$',20)
|
mySSH.command('echo ' + self.eNBPassword + ' | sudo -S mv /tmp/gnb_*.pcap .','\$',20)
|
||||||
mySSH.command('echo ' + self.eNBPassword + ' | sudo -S rm -f enb.log.zip', '\$', 5)
|
mySSH.command('echo ' + self.eNBPassword + ' | sudo -S rm -f enb.log.zip', '\$', 5)
|
||||||
mySSH.command('echo ' + self.eNBPassword + ' | sudo -S zip enb.log.zip enb*.log core* enb_*record.raw enb_*.pcap gnb_*.pcap enb_*txt physim_*.log *stats.log *monitor.pickle *monitor*.png log/*/*.log log/*/*.pcap', '\$', 60)
|
mySSH.command('echo ' + self.eNBPassword + ' | sudo -S zip enb.log.zip enb*.log core* enb_*record.raw enb_*.pcap gnb_*.pcap enb_*txt physim_*.log *stats.log *monitor.pickle *monitor*.png ping*.log.png log/*/*.log log/*/*.pcap', '\$', 60)
|
||||||
mySSH.command('echo ' + self.eNBPassword + ' | sudo -S rm enb*.log core* enb_*record.raw enb_*.pcap gnb_*.pcap enb_*txt physim_*.log *stats.log *monitor.pickle *monitor*.png log/*/*.log log/*/*.pcap', '\$', 15)
|
mySSH.command('echo ' + self.eNBPassword + ' | sudo -S rm enb*.log core* enb_*record.raw enb_*.pcap gnb_*.pcap enb_*txt physim_*.log *stats.log *monitor.pickle *monitor*.png ping*.log.png log/*/*.log log/*/*.pcap', '\$', 15)
|
||||||
mySSH.close()
|
mySSH.close()
|
||||||
|
|
||||||
def AnalyzeLogFile_eNB(self, eNBlogFile, HTML):
|
def AnalyzeLogFile_eNB(self, eNBlogFile, HTML):
|
||||||
|
|||||||
@@ -124,6 +124,7 @@
|
|||||||
<direction>DL</direction>
|
<direction>DL</direction>
|
||||||
<id>idefix</id>
|
<id>idefix</id>
|
||||||
<iperf_packetloss_threshold>3</iperf_packetloss_threshold>
|
<iperf_packetloss_threshold>3</iperf_packetloss_threshold>
|
||||||
|
<iperf_bitrate_threshold>95</iperf_bitrate_threshold>
|
||||||
<iperf_profile>single-ue</iperf_profile>
|
<iperf_profile>single-ue</iperf_profile>
|
||||||
</testCase>
|
</testCase>
|
||||||
|
|
||||||
@@ -134,6 +135,7 @@
|
|||||||
<direction>UL</direction>
|
<direction>UL</direction>
|
||||||
<id>idefix</id>
|
<id>idefix</id>
|
||||||
<iperf_packetloss_threshold>1</iperf_packetloss_threshold>
|
<iperf_packetloss_threshold>1</iperf_packetloss_threshold>
|
||||||
|
<iperf_bitrate_threshold>95</iperf_bitrate_threshold>
|
||||||
<iperf_profile>single-ue</iperf_profile>
|
<iperf_profile>single-ue</iperf_profile>
|
||||||
</testCase>
|
</testCase>
|
||||||
|
|
||||||
|
|||||||
@@ -107,6 +107,7 @@
|
|||||||
<direction>DL</direction>
|
<direction>DL</direction>
|
||||||
<id>nrmodule2_quectel</id>
|
<id>nrmodule2_quectel</id>
|
||||||
<iperf_packetloss_threshold>5</iperf_packetloss_threshold>
|
<iperf_packetloss_threshold>5</iperf_packetloss_threshold>
|
||||||
|
<iperf_bitrate_threshold>95</iperf_bitrate_threshold>
|
||||||
<iperf_profile>single-ue</iperf_profile>
|
<iperf_profile>single-ue</iperf_profile>
|
||||||
</testCase>
|
</testCase>
|
||||||
|
|
||||||
@@ -117,6 +118,7 @@
|
|||||||
<direction>UL</direction>
|
<direction>UL</direction>
|
||||||
<id>nrmodule2_quectel</id>
|
<id>nrmodule2_quectel</id>
|
||||||
<iperf_packetloss_threshold>5</iperf_packetloss_threshold>
|
<iperf_packetloss_threshold>5</iperf_packetloss_threshold>
|
||||||
|
<iperf_bitrate_threshold>95</iperf_bitrate_threshold>
|
||||||
<iperf_profile>single-ue</iperf_profile>
|
<iperf_profile>single-ue</iperf_profile>
|
||||||
</testCase>
|
</testCase>
|
||||||
|
|
||||||
|
|||||||
@@ -119,6 +119,7 @@
|
|||||||
<direction>DL</direction>
|
<direction>DL</direction>
|
||||||
<id>idefix</id>
|
<id>idefix</id>
|
||||||
<iperf_packetloss_threshold>3</iperf_packetloss_threshold>
|
<iperf_packetloss_threshold>3</iperf_packetloss_threshold>
|
||||||
|
<iperf_bitrate_threshold>95</iperf_bitrate_threshold>
|
||||||
<iperf_profile>single-ue</iperf_profile>
|
<iperf_profile>single-ue</iperf_profile>
|
||||||
</testCase>
|
</testCase>
|
||||||
|
|
||||||
@@ -129,6 +130,7 @@
|
|||||||
<direction>UL</direction>
|
<direction>UL</direction>
|
||||||
<id>idefix</id>
|
<id>idefix</id>
|
||||||
<iperf_packetloss_threshold>1</iperf_packetloss_threshold>
|
<iperf_packetloss_threshold>1</iperf_packetloss_threshold>
|
||||||
|
<iperf_bitrate_threshold>95</iperf_bitrate_threshold>
|
||||||
<iperf_profile>single-ue</iperf_profile>
|
<iperf_profile>single-ue</iperf_profile>
|
||||||
</testCase>
|
</testCase>
|
||||||
|
|
||||||
|
|||||||
@@ -105,6 +105,7 @@
|
|||||||
<direction>DL</direction>
|
<direction>DL</direction>
|
||||||
<id>nrmodule2_quectel</id>
|
<id>nrmodule2_quectel</id>
|
||||||
<iperf_packetloss_threshold>5</iperf_packetloss_threshold>
|
<iperf_packetloss_threshold>5</iperf_packetloss_threshold>
|
||||||
|
<iperf_bitrate_threshold>95</iperf_bitrate_threshold>
|
||||||
<iperf_profile>single-ue</iperf_profile>
|
<iperf_profile>single-ue</iperf_profile>
|
||||||
</testCase>
|
</testCase>
|
||||||
|
|
||||||
@@ -115,6 +116,7 @@
|
|||||||
<direction>UL</direction>
|
<direction>UL</direction>
|
||||||
<id>nrmodule2_quectel</id>
|
<id>nrmodule2_quectel</id>
|
||||||
<iperf_packetloss_threshold>5</iperf_packetloss_threshold>
|
<iperf_packetloss_threshold>5</iperf_packetloss_threshold>
|
||||||
|
<iperf_bitrate_threshold>95</iperf_bitrate_threshold>
|
||||||
<iperf_profile>single-ue</iperf_profile>
|
<iperf_profile>single-ue</iperf_profile>
|
||||||
</testCase>
|
</testCase>
|
||||||
|
|
||||||
|
|||||||
@@ -104,6 +104,7 @@
|
|||||||
<direction>DL</direction>
|
<direction>DL</direction>
|
||||||
<id>nrmodule2_quectel</id>
|
<id>nrmodule2_quectel</id>
|
||||||
<iperf_packetloss_threshold>5</iperf_packetloss_threshold>
|
<iperf_packetloss_threshold>5</iperf_packetloss_threshold>
|
||||||
|
<iperf_bitrate_threshold>95</iperf_bitrate_threshold>
|
||||||
<iperf_profile>single-ue</iperf_profile>
|
<iperf_profile>single-ue</iperf_profile>
|
||||||
</testCase>
|
</testCase>
|
||||||
<testCase id="070001">
|
<testCase id="070001">
|
||||||
@@ -113,6 +114,7 @@
|
|||||||
<direction>DL</direction>
|
<direction>DL</direction>
|
||||||
<id>nrmodule2_quectel</id>
|
<id>nrmodule2_quectel</id>
|
||||||
<iperf_packetloss_threshold>5</iperf_packetloss_threshold>
|
<iperf_packetloss_threshold>5</iperf_packetloss_threshold>
|
||||||
|
<iperf_bitrate_threshold>95</iperf_bitrate_threshold>
|
||||||
<iperf_profile>single-ue</iperf_profile>
|
<iperf_profile>single-ue</iperf_profile>
|
||||||
</testCase>
|
</testCase>
|
||||||
<testCase id="070002">
|
<testCase id="070002">
|
||||||
@@ -122,6 +124,7 @@
|
|||||||
<direction>DL</direction>
|
<direction>DL</direction>
|
||||||
<id>nrmodule2_quectel</id>
|
<id>nrmodule2_quectel</id>
|
||||||
<iperf_packetloss_threshold>5</iperf_packetloss_threshold>
|
<iperf_packetloss_threshold>5</iperf_packetloss_threshold>
|
||||||
|
<iperf_bitrate_threshold>95</iperf_bitrate_threshold>
|
||||||
<iperf_profile>single-ue</iperf_profile>
|
<iperf_profile>single-ue</iperf_profile>
|
||||||
</testCase>
|
</testCase>
|
||||||
<testCase id="070003">
|
<testCase id="070003">
|
||||||
@@ -131,6 +134,7 @@
|
|||||||
<direction>DL</direction>
|
<direction>DL</direction>
|
||||||
<id>nrmodule2_quectel</id>
|
<id>nrmodule2_quectel</id>
|
||||||
<iperf_packetloss_threshold>5</iperf_packetloss_threshold>
|
<iperf_packetloss_threshold>5</iperf_packetloss_threshold>
|
||||||
|
<iperf_bitrate_threshold>95</iperf_bitrate_threshold>
|
||||||
<iperf_profile>single-ue</iperf_profile>
|
<iperf_profile>single-ue</iperf_profile>
|
||||||
</testCase>
|
</testCase>
|
||||||
<testCase id="070004">
|
<testCase id="070004">
|
||||||
@@ -140,6 +144,7 @@
|
|||||||
<direction>DL</direction>
|
<direction>DL</direction>
|
||||||
<id>nrmodule2_quectel</id>
|
<id>nrmodule2_quectel</id>
|
||||||
<iperf_packetloss_threshold>5</iperf_packetloss_threshold>
|
<iperf_packetloss_threshold>5</iperf_packetloss_threshold>
|
||||||
|
<iperf_bitrate_threshold>95</iperf_bitrate_threshold>
|
||||||
<iperf_profile>single-ue</iperf_profile>
|
<iperf_profile>single-ue</iperf_profile>
|
||||||
</testCase>
|
</testCase>
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user