collect stats log for multiple nodes
This commit is contained in:
+16
-5
@@ -482,13 +482,14 @@ class RANManagement():
|
|||||||
mySSH.command('echo $USER; nohup sudo -E ./my-lte-softmodem-run' + str(self.eNB_instance) + '.sh > ' + lSourcePath + '/cmake_targets/enb_' + self.testCase_id + '.log 2>&1 &', lUserName, 10)
|
mySSH.command('echo $USER; nohup sudo -E ./my-lte-softmodem-run' + str(self.eNB_instance) + '.sh > ' + lSourcePath + '/cmake_targets/enb_' + self.testCase_id + '.log 2>&1 &', lUserName, 10)
|
||||||
|
|
||||||
|
|
||||||
#tentative
|
#stats monitoring during runtime
|
||||||
time.sleep(20)
|
time.sleep(20)
|
||||||
|
monitor_file='stats_monitor.py'
|
||||||
if self.eNB_Stats=='yes':
|
if self.eNB_Stats=='yes':
|
||||||
monitor_file='stats_monitor.py'
|
if (self.air_interface[self.eNB_instance] == 'lte-softmodem') or (self.air_interface[self.eNB_instance] == 'ocp-enb'):
|
||||||
#mySSH.command('echo ' + lPassWord + ' | sudo -S cp ' + self.eNBSourceCodePath + '/ci-scripts/'+ monitor_file + ' ' + self.eNBSourceCodePath + '/cmake_targets/ran_build/build/.','\$', 5)
|
mySSH.command('echo $USER; nohup python3 ../ci-scripts/' + monitor_file + ' \'enb\' 2>&1 > enb_stats_monitor_execution.log &', '\$', 5)
|
||||||
#mySSH.command('echo $USER; nohup python3 ' + self.eNBSourceCodePath + '/cmake_targets/ran_build/build/' + monitor_file + ' 2>&1 &', '\$', 5)
|
else:
|
||||||
mySSH.command('echo $USER; nohup python3 ../ci-scripts/' + monitor_file + ' 2>&1 > stats_monitor_execution.log &', '\$', 5)
|
mySSH.command('echo $USER; nohup python3 ../ci-scripts/' + monitor_file + ' \'gnb\' 2>&1 > gnb_stats_monitor_execution.log &', '\$', 5)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@@ -686,6 +687,11 @@ class RANManagement():
|
|||||||
fileToAnalyze = self.eNBLogFiles[int(self.eNB_instance)]
|
fileToAnalyze = self.eNBLogFiles[int(self.eNB_instance)]
|
||||||
self.eNBLogFiles[int(self.eNB_instance)] = ''
|
self.eNBLogFiles[int(self.eNB_instance)] = ''
|
||||||
if analyzeFile:
|
if analyzeFile:
|
||||||
|
#*stats.log files + pickle + png
|
||||||
|
mySSH.copyin(lIpAddr, lUserName, lPassWord, lSourcePath + '/cmake_targets/*stats.log', '.')
|
||||||
|
mySSH.copyin(lIpAddr, lUserName, lPassWord, lSourcePath + '/cmake_targets/*.pickle', '.')
|
||||||
|
mySSH.copyin(lIpAddr, lUserName, lPassWord, lSourcePath + '/cmake_targets/*.png', '.')
|
||||||
|
#
|
||||||
copyin_res = mySSH.copyin(lIpAddr, lUserName, lPassWord, lSourcePath + '/cmake_targets/' + fileToAnalyze, '.')
|
copyin_res = mySSH.copyin(lIpAddr, lUserName, lPassWord, lSourcePath + '/cmake_targets/' + fileToAnalyze, '.')
|
||||||
if (copyin_res == -1):
|
if (copyin_res == -1):
|
||||||
logging.debug('\u001B[1;37;41m Could not copy ' + nodeB_prefix + 'NB logfile to analyze it! \u001B[0m')
|
logging.debug('\u001B[1;37;41m Could not copy ' + nodeB_prefix + 'NB logfile to analyze it! \u001B[0m')
|
||||||
@@ -694,6 +700,11 @@ class RANManagement():
|
|||||||
self.eNBmbmsEnables[int(self.eNB_instance)] = False
|
self.eNBmbmsEnables[int(self.eNB_instance)] = False
|
||||||
return
|
return
|
||||||
if self.eNB_serverId[self.eNB_instance] != '0':
|
if self.eNB_serverId[self.eNB_instance] != '0':
|
||||||
|
#*stats.log files + pickle + png
|
||||||
|
mySSH.copyout(self.eNBIPAddress, self.eNBUserName, self.eNBPassword, './*stats.log', self.eNBSourceCodePath + '/cmake_targets/')
|
||||||
|
mySSH.copyout(self.eNBIPAddress, self.eNBUserName, self.eNBPassword, './*.pickle', self.eNBSourceCodePath + '/cmake_targets/')
|
||||||
|
mySSH.copyout(self.eNBIPAddress, self.eNBUserName, self.eNBPassword, './*.png', self.eNBSourceCodePath + '/cmake_targets/')
|
||||||
|
#
|
||||||
mySSH.copyout(self.eNBIPAddress, self.eNBUserName, self.eNBPassword, './' + fileToAnalyze, self.eNBSourceCodePath + '/cmake_targets/')
|
mySSH.copyout(self.eNBIPAddress, self.eNBUserName, self.eNBPassword, './' + fileToAnalyze, self.eNBSourceCodePath + '/cmake_targets/')
|
||||||
logging.debug('\u001B[1m Analyzing ' + nodeB_prefix + 'NB logfile \u001B[0m ' + fileToAnalyze)
|
logging.debug('\u001B[1m Analyzing ' + nodeB_prefix + 'NB logfile \u001B[0m ' + fileToAnalyze)
|
||||||
logStatus = self.AnalyzeLogFile_eNB(fileToAnalyze, HTML)
|
logStatus = self.AnalyzeLogFile_eNB(fileToAnalyze, HTML)
|
||||||
|
|||||||
@@ -8,8 +8,11 @@ import pickle
|
|||||||
import numpy as np
|
import numpy as np
|
||||||
import os
|
import os
|
||||||
|
|
||||||
def collect(d):
|
def collect(d, node_type):
|
||||||
cmd='cat L1_stats.log MAC_stats.log PDCP_stats.log RRC_stats.log nrL1_stats.log nrMAC_stats.log nrPDCP_stats.log nrRRC_stats.log'
|
if node_type=='enb':
|
||||||
|
cmd='cat L1_stats.log MAC_stats.log PDCP_stats.log RRC_stats.log'
|
||||||
|
else: #'gnb'
|
||||||
|
cmd='cat nrL1_stats.log nrMAC_stats.log nrPDCP_stats.log nrRRC_stats.log'
|
||||||
process=subprocess.Popen(shlex.split(cmd), stdout=subprocess.PIPE)
|
process=subprocess.Popen(shlex.split(cmd), stdout=subprocess.PIPE)
|
||||||
output = process.stdout.readlines()
|
output = process.stdout.readlines()
|
||||||
for l in output:
|
for l in output:
|
||||||
@@ -22,7 +25,7 @@ def collect(d):
|
|||||||
d['mcs'].append(int(result.group(4)))
|
d['mcs'].append(int(result.group(4)))
|
||||||
|
|
||||||
|
|
||||||
def graph(d):
|
def graph(d, node_type):
|
||||||
|
|
||||||
|
|
||||||
figure, axis = plt.subplots(4, 1,figsize=(10, 10))
|
figure, axis = plt.subplots(4, 1,figsize=(10, 10))
|
||||||
@@ -61,11 +64,12 @@ def graph(d):
|
|||||||
|
|
||||||
plt.tight_layout()
|
plt.tight_layout()
|
||||||
# Combine all the operations and display
|
# Combine all the operations and display
|
||||||
plt.savefig('/tmp/stats_monitor.png')
|
plt.savefig('/tmp/'+node_type+'_stats_monitor.png')
|
||||||
plt.show()
|
plt.show()
|
||||||
|
|
||||||
if __name__ == "__main__":
|
if __name__ == "__main__":
|
||||||
|
|
||||||
|
node_type = sys.argv[1]#enb or gnb
|
||||||
|
|
||||||
d={}
|
d={}
|
||||||
d['PHR']=[]
|
d['PHR']=[]
|
||||||
@@ -78,13 +82,13 @@ if __name__ == "__main__":
|
|||||||
process=subprocess.Popen(cmd, shell=True, stdout=subprocess.PIPE)
|
process=subprocess.Popen(cmd, shell=True, stdout=subprocess.PIPE)
|
||||||
output = process.stdout.readlines()
|
output = process.stdout.readlines()
|
||||||
while len(output)!=0 :
|
while len(output)!=0 :
|
||||||
collect(d)
|
collect(d, node_type)
|
||||||
process=subprocess.Popen(cmd, shell=True, stdout=subprocess.PIPE)
|
process=subprocess.Popen(cmd, shell=True, stdout=subprocess.PIPE)
|
||||||
output = process.stdout.readlines()
|
output = process.stdout.readlines()
|
||||||
time.sleep(1)
|
time.sleep(1)
|
||||||
print('process stopped')
|
print('process stopped')
|
||||||
with open('/tmp/stats_monitor.pickle', 'wb') as handle:
|
with open('/tmp/'+node_type+'_stats_monitor.pickle', 'wb') as handle:
|
||||||
pickle.dump(d, handle, protocol=pickle.HIGHEST_PROTOCOL)
|
pickle.dump(d, handle, protocol=pickle.HIGHEST_PROTOCOL)
|
||||||
graph(d)
|
graph(d, node_type)
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -65,6 +65,7 @@
|
|||||||
<eNB_serverId>0</eNB_serverId>
|
<eNB_serverId>0</eNB_serverId>
|
||||||
<air_interface>lte</air_interface>
|
<air_interface>lte</air_interface>
|
||||||
<eNB_Trace>yes</eNB_Trace>
|
<eNB_Trace>yes</eNB_Trace>
|
||||||
|
<eNB_Stats>yes</eNB_Stats>
|
||||||
<USRP_IPAddress>192.168.18.241</USRP_IPAddress>
|
<USRP_IPAddress>192.168.18.241</USRP_IPAddress>
|
||||||
</testCase>
|
</testCase>
|
||||||
|
|
||||||
@@ -76,6 +77,7 @@
|
|||||||
<eNB_instance>1</eNB_instance>
|
<eNB_instance>1</eNB_instance>
|
||||||
<eNB_serverId>1</eNB_serverId>
|
<eNB_serverId>1</eNB_serverId>
|
||||||
<air_interface>nr</air_interface>
|
<air_interface>nr</air_interface>
|
||||||
|
<eNB_Stats>yes</eNB_Stats>
|
||||||
<USRP_IPAddress>192.168.18.240</USRP_IPAddress>
|
<USRP_IPAddress>192.168.18.240</USRP_IPAddress>
|
||||||
</testCase>
|
</testCase>
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user