From e9df88885e349c5398fd95f2770c5e00b0e2f385 Mon Sep 17 00:00:00 2001 From: hardy Date: Thu, 15 Apr 2021 23:36:23 +0200 Subject: [PATCH 1/3] adding real time stats from log to HTML --- ci-scripts/ran.py | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/ci-scripts/ran.py b/ci-scripts/ran.py index 783adb98e6..4b955d1e03 100644 --- a/ci-scripts/ran.py +++ b/ci-scripts/ran.py @@ -694,6 +694,8 @@ class RANManagement(): NSA_RAPROC_PUSCH_check = 0 #dlsch and ulsch statistics (dictionary) dlsch_ulsch_stats = {} + #real time statistics (dictionary) + real_time_stats ={} #count "L1 thread not ready" msg L1_thread_not_ready_cnt = 0 #count "problem receiving samples" msg @@ -863,6 +865,17 @@ class RANManagement(): if result is not None: #remove 1- all useless char before relevant info (ulsch or dlsch) 2- trailing char dlsch_ulsch_stats[k]=re.sub(r'^.*\]\s+', r'' , line.rstrip()) + #real time statistics + #same method as above + keys = {'feprx','feptx_prec','feptx_ofdm','feptx_total','L1 Tx processing','DLSCH encoding','L1 Rx processing','PUSCH inner-receiver','PUSCH decoding'} + for k in keys: + result = re.search(k, line) + if result is not None: + #remove 1- all useless char before relevant info 2- trailing char + tmp=re.match(rf'^.*?(\b{k}\b.*)',line.rstrip()) #from python 3.6 we can use literal string interpolation for the variable k, using rf' in the regex + real_time_stats[k]=tmp.group(1) + + #count "L1 thread not ready" msg result = re.search('\[PHY\]\s+L1_thread isn\'t ready', str(line)) if result is not None: @@ -920,6 +933,14 @@ class RANManagement(): logging.debug(dlsch_ulsch_stats[key]) htmleNBFailureMsg += statMsg + #real time statistics statistics + if len(real_time_stats)!=0: #check if dictionary is not empty + statMsg='' + for key in real_time_stats: #for each dictionary key + statMsg += real_time_stats[key] + '\n' + logging.debug(real_time_stats[key]) + htmleNBFailureMsg += statMsg + if uciStatMsgCount > 0: statMsg = nodeB_prefix + 'NB showed ' + str(uciStatMsgCount) + ' "uci->stat" message(s)' logging.debug('\u001B[1;30;43m ' + statMsg + ' \u001B[0m') From 2995662fd79ac1351325d71df67c271a6d756630 Mon Sep 17 00:00:00 2001 From: hardy Date: Fri, 16 Apr 2021 21:58:38 +0200 Subject: [PATCH 2/3] fixed incorrect indentation + removed L1 ready msg (no longer used) --- ci-scripts/ran.py | 29 ++++++++--------------------- 1 file changed, 8 insertions(+), 21 deletions(-) diff --git a/ci-scripts/ran.py b/ci-scripts/ran.py index 4b955d1e03..7914f7b975 100644 --- a/ci-scripts/ran.py +++ b/ci-scripts/ran.py @@ -695,9 +695,7 @@ class RANManagement(): #dlsch and ulsch statistics (dictionary) dlsch_ulsch_stats = {} #real time statistics (dictionary) - real_time_stats ={} - #count "L1 thread not ready" msg - L1_thread_not_ready_cnt = 0 + real_time_stats = {} #count "problem receiving samples" msg pb_receiving_samples_cnt = 0 @@ -868,18 +866,12 @@ class RANManagement(): #real time statistics #same method as above keys = {'feprx','feptx_prec','feptx_ofdm','feptx_total','L1 Tx processing','DLSCH encoding','L1 Rx processing','PUSCH inner-receiver','PUSCH decoding'} - for k in keys: - result = re.search(k, line) - if result is not None: - #remove 1- all useless char before relevant info 2- trailing char - tmp=re.match(rf'^.*?(\b{k}\b.*)',line.rstrip()) #from python 3.6 we can use literal string interpolation for the variable k, using rf' in the regex - real_time_stats[k]=tmp.group(1) - - - #count "L1 thread not ready" msg - result = re.search('\[PHY\]\s+L1_thread isn\'t ready', str(line)) - if result is not None: - L1_thread_not_ready_cnt += 1 + for k in keys: + result = re.search(k, line) + if result is not None: + #remove 1- all useless char before relevant info 2- trailing char + tmp=re.match(rf'^.*?(\b{k}\b.*)',line.rstrip()) #from python 3.6 we can use literal string interpolation for the variable k, using rf' in the regex + real_time_stats[k]=tmp.group(1) #count "problem receiving samples" msg result = re.search('\[PHY\]\s+problem receiving samples', str(line)) if result is not None: @@ -910,15 +902,10 @@ class RANManagement(): statMsg = '[RAPROC] PUSCH with TC_RNTI message check for ' + nodeB_prefix + 'NB : PASS ' htmlMsg = statMsg+'\n' else: - statMsg = '[RAPROC] PUSCH with TC_RNTI message check for ' + nodeB_prefix + 'NB : FAIL ' + statMsg = '[RAPROC] PUSCH with TC_RNTI message check for ' + nodeB_prefix + 'NB : FAIL or not relevant' htmlMsg = statMsg+'\n' logging.debug(statMsg) htmleNBFailureMsg += htmlMsg - #L1 thread not ready log - statMsg = '[PHY] L1 thread is not ready msg count = '+str(L1_thread_not_ready_cnt) - htmlMsg = statMsg+'\n' - logging.debug(statMsg) - htmleNBFailureMsg += htmlMsg #problem receiving samples log statMsg = '[PHY] problem receiving samples msg count = '+str(pb_receiving_samples_cnt) htmlMsg = statMsg+'\n' From ad135dd1e2b59cf5763fa59f65e8922bf4eb623d Mon Sep 17 00:00:00 2001 From: hardy Date: Mon, 19 Apr 2021 10:05:13 +0200 Subject: [PATCH 3/3] adding the case where no rt stat found in log --- ci-scripts/ran.py | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/ci-scripts/ran.py b/ci-scripts/ran.py index 7914f7b975..c0ddc70e80 100644 --- a/ci-scripts/ran.py +++ b/ci-scripts/ran.py @@ -927,6 +927,10 @@ class RANManagement(): statMsg += real_time_stats[key] + '\n' logging.debug(real_time_stats[key]) htmleNBFailureMsg += statMsg + else: + statMsg = 'No real time stats found in the log file\n' + logging.debug('No real time stats found in the log file') + htmleNBFailureMsg += statMsg if uciStatMsgCount > 0: statMsg = nodeB_prefix + 'NB showed ' + str(uciStatMsgCount) + ' "uci->stat" message(s)'