poc : stats monitoring
This commit is contained in:
@@ -154,6 +154,7 @@ def GetParametersFromXML(action):
|
||||
|
||||
elif action == 'Initialize_eNB':
|
||||
RAN.eNB_Trace=test.findtext('eNB_Trace')
|
||||
RAN.eNB_Stats=test.findtext('eNB_Stats')
|
||||
RAN.Initialize_eNB_args=test.findtext('Initialize_eNB_args')
|
||||
eNB_instance=test.findtext('eNB_instance')
|
||||
USRPIPAddress=test.findtext('USRP_IPAddress')
|
||||
|
||||
+21
-1
@@ -94,6 +94,7 @@ class RANManagement():
|
||||
self.runtime_stats= ''
|
||||
self.datalog_rt_stats={}
|
||||
self.eNB_Trace = '' #if 'yes', Tshark will be launched at initialization
|
||||
self.eNB_Stats = '' #if 'yes', Statistics Monitor will be launched at initialization
|
||||
self.USRPIPAddress = ''
|
||||
|
||||
|
||||
@@ -539,6 +540,23 @@ class RANManagement():
|
||||
self.eNBstatuses[int(self.eNB_instance)] = int(self.eNB_serverId[self.eNB_instance])
|
||||
|
||||
mySSH.close()
|
||||
|
||||
|
||||
#if enabled in the xml,
|
||||
#copyout the monitor script and launch it
|
||||
if self.eNB_Stats=='yes':
|
||||
|
||||
mySSH.open(lIpAddr, lUserName, lPassWord)
|
||||
|
||||
monitor_file='stats_monitor.py'
|
||||
mySSH.command('echo ' + lPassWord + ' | sudo -S cp ' + self.eNBSourceCodePath + '/ci-scripts/'+ monitor_file + ' ' + self.eNBSourceCodePath + '/cmake_targets/ran_build/build/.','\$', 5)
|
||||
|
||||
#launch, it will stop when the softmodem stops
|
||||
mySSH.command('echo $USER; nohup python3 ' + self.eNBSourceCodePath + '/cmake_targets/ran_build/build/' + monitor_file + ' 2>&1 &', '\$', 5)
|
||||
|
||||
mySSH.close()
|
||||
|
||||
|
||||
HTML.CreateHtmlTestRow(self.air_interface[self.eNB_instance] + ' -O ' + config_file + extra_options, 'OK', CONST.ALL_PROCESSES_OK)
|
||||
logging.debug('\u001B[1m Initialize eNB/gNB/ocp-eNB Completed\u001B[0m')
|
||||
|
||||
@@ -690,8 +708,10 @@ class RANManagement():
|
||||
mySSH.command('cd cmake_targets', '\$', 5)
|
||||
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/*monitor.pickle .','\$',20)
|
||||
mySSH.command('echo ' + self.eNBPassword + ' | sudo -S mv /tmp/*monitor.png .','\$',20)
|
||||
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', '\$', 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', '\$', 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', '\$', 5)
|
||||
mySSH.close()
|
||||
|
||||
|
||||
@@ -6,19 +6,20 @@ import sys
|
||||
import matplotlib.pyplot as plt
|
||||
import pickle
|
||||
import numpy as np
|
||||
import os
|
||||
|
||||
def collect(d):
|
||||
cmd='cat L1_stats.log MAC_stats.log PDCP_stats.log RRC_stats.log'
|
||||
process=subprocess.Popen(shlex.split(cmd), stdout=subprocess.PIPE)
|
||||
output = process.stdout.readlines()
|
||||
for l in output:
|
||||
tmp=l.decode("utf-8")
|
||||
result=re.match(rf'^.*\bPHR\b ([0-9]+).+\bbler\b ([0-9]+\.[0-9]+).+\bmcsoff\b ([0-9]+).+\bmcs\b ([0-9]+)',tmp)
|
||||
if result is not None:
|
||||
d['PHR'].append(int(result.group(1)))
|
||||
d['bler'].append(float(result.group(2)))
|
||||
d['mcsoff'].append(int(result.group(3)))
|
||||
d['mcs'].append(int(result.group(4)))
|
||||
cmd='cat L1_stats.log MAC_stats.log PDCP_stats.log RRC_stats.log'
|
||||
process=subprocess.Popen(shlex.split(cmd), stdout=subprocess.PIPE)
|
||||
output = process.stdout.readlines()
|
||||
for l in output:
|
||||
tmp=l.decode("utf-8")
|
||||
result=re.match(rf'^.*\bPHR\b ([0-9]+).+\bbler\b ([0-9]+\.[0-9]+).+\bmcsoff\b ([0-9]+).+\bmcs\b ([0-9]+)',tmp)
|
||||
if result is not None:
|
||||
d['PHR'].append(int(result.group(1)))
|
||||
d['bler'].append(float(result.group(2)))
|
||||
d['mcsoff'].append(int(result.group(3)))
|
||||
d['mcs'].append(int(result.group(4)))
|
||||
|
||||
|
||||
def graph(d):
|
||||
@@ -60,7 +61,7 @@ def graph(d):
|
||||
|
||||
plt.tight_layout()
|
||||
# Combine all the operations and display
|
||||
plt.savefig('/tmp/radio_monitor_dump.png')
|
||||
plt.savefig('/tmp/stats_monitor.png')
|
||||
plt.show()
|
||||
|
||||
if __name__ == "__main__":
|
||||
@@ -82,7 +83,7 @@ if __name__ == "__main__":
|
||||
output = process.stdout.readlines()
|
||||
time.sleep(1)
|
||||
print('process stopped')
|
||||
with open('/tmp/radio_monitor_dump.pickle', 'wb') as handle:
|
||||
with open('/tmp/stats_monitor.pickle', 'wb') as handle:
|
||||
pickle.dump(d, handle, protocol=pickle.HIGHEST_PROTOCOL)
|
||||
graph(d)
|
||||
|
||||
@@ -64,20 +64,11 @@
|
||||
<eNB_serverId>0</eNB_serverId>
|
||||
<air_interface>lte</air_interface>
|
||||
<eNB_Trace>yes</eNB_Trace>
|
||||
<eNB_Stats>yes</eNB_Stats>
|
||||
<USRP_IPAddress>192.168.18.241</USRP_IPAddress>
|
||||
</testCase>
|
||||
|
||||
|
||||
<testCase id="040000">
|
||||
<class>Initialize_eNB</class>
|
||||
<desc>Initialize gNB</desc>
|
||||
<Initialize_eNB_args>-O ci-scripts/conf_files/gnb.band78.nsa_2x2.106PRB.usrpn310.conf -q</Initialize_eNB_args>
|
||||
<eNB_instance>1</eNB_instance>
|
||||
<eNB_serverId>1</eNB_serverId>
|
||||
<air_interface>nr</air_interface>
|
||||
<USRP_IPAddress>192.168.18.240</USRP_IPAddress>
|
||||
</testCase>
|
||||
|
||||
<testCase id="000001">
|
||||
<class>IdleSleep</class>
|
||||
<desc>Sleep</desc>
|
||||
|
||||
Reference in New Issue
Block a user