From 59af5bd8aa01f26df17ecffb968829e0e927d99c Mon Sep 17 00:00:00 2001 From: Robert Schmidt Date: Tue, 14 Feb 2023 17:15:44 +0100 Subject: [PATCH] CreateHtmlTestRowQueue: one UE column in any test --- ci-scripts/cls_containerize.py | 48 +++----- ci-scripts/cls_oai_html.py | 149 +++++++++++-------------- ci-scripts/cls_oaicitest.py | 93 +++++++-------- ci-scripts/cls_physim.py | 15 +-- ci-scripts/cls_static_code_analysis.py | 36 ++---- ci-scripts/epc.py | 28 ++--- ci-scripts/main.py | 2 - 7 files changed, 139 insertions(+), 232 deletions(-) diff --git a/ci-scripts/cls_containerize.py b/ci-scripts/cls_containerize.py index 8d4175fe24..04843e5562 100644 --- a/ci-scripts/cls_containerize.py +++ b/ci-scripts/cls_containerize.py @@ -927,24 +927,21 @@ class Containerize(): mySSH.copyin(lIpAddr, lUserName, lPassWord, logfilename, '.') mySSH.close() - html_queue = SimpleQueue() - html_cell = '
\n'
+		message = ''
 		if usedImage != '':
-			html_cell += f'Used Image = {usedImage} :\n'
-			html_cell += imageInfo
+			message += f'Used Image = {usedImage} :\n'
+			message += imageInfo
 		else:
-			html_cell += 'Could not retrieve used image info!\n'
+			message += 'Could not retrieve used image info!\n'
 		if status:
-			html_cell += '\nHealthy deployment!\n'
+			message += '\nHealthy deployment!\n'
 		else:
-			html_cell += '\nUnhealthy deployment! -- Check logs for reason!\n'
-		html_cell += '
' - html_queue.put(html_cell) + message += '\nUnhealthy deployment! -- Check logs for reason!\n' if status: - HTML.CreateHtmlTestRowQueue('N/A', 'OK', CONST.ENB_PROCESS_OK, html_queue) + HTML.CreateHtmlTestRowQueue('N/A', 'OK', [message]) else: self.exitStatus = 1 - HTML.CreateHtmlTestRowQueue('N/A', 'KO', CONST.ENB_PROCESS_OK, html_queue) + HTML.CreateHtmlTestRowQueue('N/A', 'KO', [message]) def UndeployObject(self, HTML, RAN): @@ -1128,25 +1125,22 @@ class Containerize(): imagesInfo += imageInspect.stdout.strip() myCmd.close() - html_queue = SimpleQueue() - html_cell = '
\n'
+		html_cell = ''
 		for imageInfo in imagesInfo.split('\n'):
 			html_cell += imageInfo[:-11] + '\n'
 		html_cell += '\n'
 		for cState in containerStatus:
 			html_cell += cState + '\n'
-		html_cell += '
' - html_queue.put(html_cell) if count == 100 and healthy == self.nb_healthy[0]: if self.tsharkStarted == False: logging.debug('Starting tshark on public network') self.CaptureOnDockerNetworks() - HTML.CreateHtmlTestRowQueue('n/a', 'OK', 1, html_queue) + HTML.CreateHtmlTestRowQueue('n/a', 'OK', [html_cell]) for cState in containerStatus: logging.debug(cState) logging.info('\u001B[1m Deploying OAI Object(s) PASS\u001B[0m') else: - HTML.CreateHtmlTestRowQueue('Could not deploy in time', 'KO', 1, html_queue) + HTML.CreateHtmlTestRowQueue('Could not deploy in time', 'KO', [html_cell]) for cState in containerStatus: logging.debug(cState) logging.error('\u001B[1m Deploying OAI Object(s) FAILED\u001B[0m') @@ -1357,10 +1351,7 @@ class Containerize(): message += statLine + '\n' myCmd.close() - html_queue = SimpleQueue() - html_cell = '
\n' + message + '
' - html_queue.put(html_cell) - HTML.CreateHtmlTestRowQueue(self.pingOptions, 'OK', 1, html_queue) + HTML.CreateHtmlTestRowQueue(self.pingOptions, 'OK', [message]) def PingFromContainer(self, HTML, RAN, UE): myCmd = cls_cmd.LocalCmd() @@ -1419,14 +1410,11 @@ class Containerize(): logging.info('\u001B[1m Ping Test PASS\u001B[0m') def PingExit(self, HTML, RAN, UE, status, message): - html_queue = SimpleQueue() - html_cell = '
UE\n' + message + '
' - html_queue.put(html_cell) if status: - HTML.CreateHtmlTestRowQueue(self.pingOptions, 'OK', 1, html_queue) + HTML.CreateHtmlTestRowQueue(self.pingOptions, 'OK', [message]) else: logging.error('\u001B[1;37;41m ping test FAIL -- ' + message + ' \u001B[0m') - HTML.CreateHtmlTestRowQueue(self.pingOptions, 'KO', 1, html_queue) + HTML.CreateHtmlTestRowQueue(self.pingOptions, 'KO', [message]) # Automatic undeployment logging.warning('----------------------------------------') logging.warning('\u001B[1m Starting Automatic undeployment \u001B[0m') @@ -1475,14 +1463,12 @@ class Containerize(): self.IperfExit(HTML, RAN, UE, iperfStatus, msg) def IperfExit(self, HTML, RAN, UE, status, message): - html_queue = SimpleQueue() - html_cell = '
UE\n' + message + '
' - html_queue.put(html_cell) + html_cell = f'UE\n{message}' if status: - HTML.CreateHtmlTestRowQueue(self.cliOptions, 'OK', 1, html_queue) + HTML.CreateHtmlTestRowQueue(self.cliOptions, 'OK', [html_cell]) else: logging.error('\u001B[1m Iperf Test FAIL -- ' + message + ' \u001B[0m') - HTML.CreateHtmlTestRowQueue(self.cliOptions, 'KO', 1, html_queue) + HTML.CreateHtmlTestRowQueue(self.cliOptions, 'KO', [html_cell]) # Automatic undeployment logging.warning('----------------------------------------') logging.warning('\u001B[1m Starting Automatic undeployment \u001B[0m') diff --git a/ci-scripts/cls_oai_html.py b/ci-scripts/cls_oai_html.py index 48123f52ad..1790b2d36b 100644 --- a/ci-scripts/cls_oai_html.py +++ b/ci-scripts/cls_oai_html.py @@ -84,16 +84,6 @@ class HTMLManagement(): self.CpuModel = ['', ''] self.CpuMHz = ['', ''] -#----------------------------------------------------------- -# Setters and Getters -#----------------------------------------------------------- - - def SethtmlUEConnected(self, nbUEs): - if nbUEs > 0: - self.htmlUEConnected = nbUEs - else: - self.htmlUEConnected = 1 - #----------------------------------------------------------- @@ -231,10 +221,7 @@ class HTMLManagement(): self.htmlFile.write(' Test Options\n') self.htmlFile.write(' Test Status\n') - i = 0 - while (i < self.htmlUEConnected): - self.htmlFile.write(' UE' + str(i) + ' Status\n') - i += 1 + self.htmlFile.write(' Info\n') self.htmlFile.write(' \n') self.htmlFile.close() self.htmlHeaderCreated = True @@ -247,14 +234,14 @@ class HTMLManagement(): testOkEvenIfUnstable = True self.htmlFile = open('test_results.html', 'a') self.htmlFile.write(' \n') - self.htmlFile.write(' Final Tab Status\n') + self.htmlFile.write(' Final Tab Status\n') if passStatus: - self.htmlFile.write(' PASS \n') + self.htmlFile.write(' PASS \n') else: if testOkEvenIfUnstable: - self.htmlFile.write(' KNOWN UNSTABLE SCENARIO \n') + self.htmlFile.write(' KNOWN UNSTABLE SCENARIO \n') else: - self.htmlFile.write(' FAIL \n') + self.htmlFile.write(' FAIL \n') self.htmlFile.write(' \n') self.htmlFile.write(' \n') self.htmlFile.write(' \n') @@ -321,11 +308,11 @@ class HTMLManagement(): self.htmlFile.write(' \n') self.htmlFile.write(' \n') - self.htmlFile.write(' Final Status\n') + self.htmlFile.write(' Final Status\n') if passStatus: - self.htmlFile.write(' PASS \n') + self.htmlFile.write(' PASS \n') else: - self.htmlFile.write(' FAIL \n') + self.htmlFile.write(' FAIL \n') self.htmlFile.write(' \n') self.htmlFile.write(' \n') self.htmlFile.write('

\n') @@ -338,7 +325,7 @@ class HTMLManagement(): if ((not self.htmlFooterCreated) and (self.htmlHeaderCreated)): self.htmlFile = open('test_results.html', 'a') self.htmlFile.write(' \n') - self.htmlFile.write(' ---- Try Run #' + str(cntnumfails) + ' ---- \n') + self.htmlFile.write(' ---- Try Run #' + str(cntnumfails) + ' ---- \n') self.htmlFile.write(' \n') self.htmlFile.close() @@ -404,7 +391,7 @@ class HTMLManagement(): result = re.search('showed|Reestablishment|Could not copy eNB logfile', self.htmleNBFailureMsg) if result is not None: cellBgColor = 'orange' - self.htmlFile.write('
' + self.htmleNBFailureMsg + '
\n') + self.htmlFile.write('
' + self.htmleNBFailureMsg + '
\n') self.htmleNBFailureMsg = '' elif (len(str(self.htmlUEFailureMsg)) > 2): cellBgColor = 'white' @@ -415,13 +402,10 @@ class HTMLManagement(): result = re.search('showed|Could not copy UE logfile|oaitun_ue1 interface is either NOT mounted or NOT configured', self.htmlUEFailureMsg) if result is not None: cellBgColor = 'orange' - self.htmlFile.write('
' + self.htmlUEFailureMsg + '
\n') + self.htmlFile.write('
' + self.htmlUEFailureMsg + '
\n') self.htmlUEFailureMsg = '' else: - i = 0 - while (i < self.htmlUEConnected): - self.htmlFile.write(' -\n') - i += 1 + self.htmlFile.write(' -\n') self.htmlFile.write(' \n') self.htmlFile.close() @@ -432,7 +416,7 @@ class HTMLManagement(): self.htmlFile = open('test_results.html', 'a') if bool(collectInfo) == False: self.htmlFile.write(' \n') - self.htmlFile.write(' ----IMAGES BUILDING FAILED - Unable to recover the image logs ---- \n') + self.htmlFile.write(' ----IMAGES BUILDING FAILED - Unable to recover the image logs ---- \n') self.htmlFile.write(' \n') else: for image in collectInfo: @@ -444,13 +428,13 @@ class HTMLManagement(): self.htmlFile.write(' \n') else: self.htmlFile.write(' \n') - self.htmlFile.write(' ---- ' + image + ' IMAGE STATUS ----> Size ' + allImagesSize[image] + ' \n') + self.htmlFile.write(' ---- ' + image + ' IMAGE STATUS ----> Size ' + allImagesSize[image] + ' \n') self.htmlFile.write(' \n') self.htmlFile.write(' \n') self.htmlFile.write(' Element\n') self.htmlFile.write(' Nb Errors\n') self.htmlFile.write(' Nb Warnings\n') - self.htmlFile.write(' Status\n') + self.htmlFile.write(' Status\n') self.htmlFile.write(' \n') for fil in files: @@ -469,11 +453,11 @@ class HTMLManagement(): else: self.htmlFile.write(' ' + str(parameters['warnings']) + '\n') if (parameters['errors'] == 0) and (parameters['warnings'] == 0): - self.htmlFile.write(' OK \n') + self.htmlFile.write(' OK \n') elif (parameters['errors'] == 0): - self.htmlFile.write(' OK \n') + self.htmlFile.write(' OK \n') else: - self.htmlFile.write(' NOT OK \n') + self.htmlFile.write(' NOT OK \n') self.htmlFile.write(' \n') self.htmlFile.close() @@ -485,12 +469,12 @@ class HTMLManagement(): # TabHeader self.htmlFile.write(' \n') - self.htmlFile.write(' ---- ' + DataLog['Title'] + ' ---- \n') + self.htmlFile.write(' ---- ' + DataLog['Title'] + ' ---- \n') self.htmlFile.write(' \n') self.htmlFile.write(' \n') self.htmlFile.write(' '+ DataLog['ColNames'][0] +'\n') self.htmlFile.write(' ' + DataLog['ColNames'][1] + '\n') - self.htmlFile.write(' '+ DataLog['ColNames'][2] +'\n') + self.htmlFile.write(' '+ DataLog['ColNames'][2] +'\n') self.htmlFile.write(' \n') for k in DataLog['Data']: @@ -506,7 +490,7 @@ class HTMLManagement(): self.htmlFile.close() - def CreateHtmlTestRowQueue(self, options, status, ue_status, ue_queue): + def CreateHtmlTestRowQueue(self, options, status, infoList): if ((not self.htmlFooterCreated) and (self.htmlHeaderCreated)): self.htmlFile = open('test_results.html', 'a') currentTime = int(round(time.time() * 1000)) - self.startTime @@ -517,25 +501,20 @@ class HTMLManagement(): self.htmlFile.write(' ' + self.desc + '\n') self.htmlFile.write(' ' + str(options) + '\n') if (str(status) == 'OK'): - self.htmlFile.write(' ' + str(status) + '\n') + self.htmlFile.write(f' {status}\n') elif (str(status) == 'KO'): - self.htmlFile.write(' ' + str(status) + '\n') + self.htmlFile.write(f' {status}\n') else: addOrangeBK = True - self.htmlFile.write(' ' + str(status) + '\n') - i = 0 - while (i < self.htmlUEConnected): - if (i < ue_status): - if (not ue_queue.empty()): - if (addOrangeBK): - self.htmlFile.write(' ' + str(ue_queue.get()).replace('white', 'orange') + '\n') - else: - self.htmlFile.write(' ' + str(ue_queue.get()) + '\n') - else: - self.htmlFile.write(' -\n') - else: - self.htmlFile.write(' -\n') - i += 1 + self.htmlFile.write(f' {status}\n') + if (addOrangeBK): + self.htmlFile.write(' ') + else: + self.htmlFile.write(' ') + for i in infoList: + self.htmlFile.write(f'
{i}
') + + self.htmlFile.write(' ') self.htmlFile.write(' \n') self.htmlFile.close() @@ -546,80 +525,80 @@ class HTMLManagement(): vId = 0 for version in CCR.versions: self.htmlFile.write(' \n') - self.htmlFile.write(' Results for cppcheck v ' + version + ' \n') + self.htmlFile.write(' Results for cppcheck v ' + version + ' \n') self.htmlFile.write(' \n') self.htmlFile.write(' \n') self.htmlFile.write(' \n') - self.htmlFile.write(' NB ERRORS\n') + self.htmlFile.write(' NB ERRORS\n') if CCR.nbErrors[vId] == 0: myColor = 'lightgreen' elif CCR.nbErrors[vId] < 20: myColor = 'orange' else: myColor = 'lightcoral' - self.htmlFile.write(' ' + str(CCR.nbErrors[vId]) + '\n') + self.htmlFile.write(' ' + str(CCR.nbErrors[vId]) + '\n') self.htmlFile.write(' \n') self.htmlFile.write(' \n') self.htmlFile.write(' \n') - self.htmlFile.write(' NB WARNINGS\n') + self.htmlFile.write(' NB WARNINGS\n') if CCR.nbWarnings[vId] == 0: myColor = 'lightgreen' elif CCR.nbWarnings[vId] < 20: myColor = 'orange' else: myColor = 'lightcoral' - self.htmlFile.write(' ' + str(CCR.nbWarnings[vId]) + '\n') + self.htmlFile.write(' ' + str(CCR.nbWarnings[vId]) + '\n') self.htmlFile.write(' \n') self.htmlFile.write(' \n') - self.htmlFile.write(' ----------------- \n') + self.htmlFile.write(' ----------------- \n') self.htmlFile.write(' \n') self.htmlFile.write(' \n') self.htmlFile.write(' \n') - self.htmlFile.write(' Memory leak\n') - self.htmlFile.write(' ' + str(CCR.nbMemLeaks[vId]) + '\n') + self.htmlFile.write(' Memory leak\n') + self.htmlFile.write(' ' + str(CCR.nbMemLeaks[vId]) + '\n') self.htmlFile.write(' \n') self.htmlFile.write(' \n') self.htmlFile.write(' \n') - self.htmlFile.write(' Possible null pointer deference\n') - self.htmlFile.write(' ' + str(CCR.nbNullPtrs[vId]) + '\n') + self.htmlFile.write(' Possible null pointer deference\n') + self.htmlFile.write(' ' + str(CCR.nbNullPtrs[vId]) + '\n') self.htmlFile.write(' \n') self.htmlFile.write(' \n') self.htmlFile.write(' \n') - self.htmlFile.write(' Uninitialized variable\n') - self.htmlFile.write(' ' + str(CCR.nbUninitVars[vId]) + '\n') + self.htmlFile.write(' Uninitialized variable\n') + self.htmlFile.write(' ' + str(CCR.nbUninitVars[vId]) + '\n') self.htmlFile.write(' \n') self.htmlFile.write(' \n') self.htmlFile.write(' \n') - self.htmlFile.write(' Undefined behaviour shifting\n') - self.htmlFile.write(' ' + str(CCR.nbTooManyBitsShift[vId]) + '\n') + self.htmlFile.write(' Undefined behaviour shifting\n') + self.htmlFile.write(' ' + str(CCR.nbTooManyBitsShift[vId]) + '\n') self.htmlFile.write(' \n') self.htmlFile.write(' \n') self.htmlFile.write(' \n') - self.htmlFile.write(' Signed integer overflow\n') - self.htmlFile.write(' ' + str(CCR.nbIntegerOverflow[vId]) + '\n') + self.htmlFile.write(' Signed integer overflow\n') + self.htmlFile.write(' ' + str(CCR.nbIntegerOverflow[vId]) + '\n') self.htmlFile.write(' \n') self.htmlFile.write(' \n') - self.htmlFile.write(' \n') + self.htmlFile.write(' \n') self.htmlFile.write(' \n') self.htmlFile.write(' \n') self.htmlFile.write(' \n') - self.htmlFile.write(' Printf formatting issues\n') - self.htmlFile.write(' ' + str(CCR.nbInvalidPrintf[vId]) + '\n') + self.htmlFile.write(' Printf formatting issues\n') + self.htmlFile.write(' ' + str(CCR.nbInvalidPrintf[vId]) + '\n') self.htmlFile.write(' \n') self.htmlFile.write(' \n') self.htmlFile.write(' \n') - self.htmlFile.write(' Modulo result is predetermined\n') - self.htmlFile.write(' ' + str(CCR.nbModuloAlways[vId]) + '\n') + self.htmlFile.write(' Modulo result is predetermined\n') + self.htmlFile.write(' ' + str(CCR.nbModuloAlways[vId]) + '\n') self.htmlFile.write(' \n') self.htmlFile.write(' \n') self.htmlFile.write(' \n') - self.htmlFile.write(' Opposite Condition -> dead code\n') - self.htmlFile.write(' ' + str(CCR.nbOppoInnerCondition[vId]) + '\n') + self.htmlFile.write(' Opposite Condition -> dead code\n') + self.htmlFile.write(' ' + str(CCR.nbOppoInnerCondition[vId]) + '\n') self.htmlFile.write(' \n') self.htmlFile.write(' \n') self.htmlFile.write(' \n') - self.htmlFile.write(' Wrong Scanf Nb Args\n') - self.htmlFile.write(' ' + str(CCR.nbWrongScanfArg[vId]) + '\n') + self.htmlFile.write(' Wrong Scanf Nb Args\n') + self.htmlFile.write(' ' + str(CCR.nbWrongScanfArg[vId]) + '\n') self.htmlFile.write(' \n') vId += 1 @@ -629,12 +608,12 @@ class HTMLManagement(): self.htmlFile = open('test_results.html', 'a') if bool(testResult) == False and bool(testSummary) == False: self.htmlFile.write(' \n') - self.htmlFile.write(' ----PHYSIM TESTING FAILED - Unable to recover the test logs ---- \n') + self.htmlFile.write(' ----PHYSIM TESTING FAILED - Unable to recover the test logs ---- \n') self.htmlFile.write(' \n') else: # Tab header self.htmlFile.write(' \n') - self.htmlFile.write(' ---- PHYSIM TEST SUMMARY---- \n') + self.htmlFile.write(' ---- PHYSIM TEST SUMMARY---- \n') self.htmlFile.write(' \n') self.htmlFile.write(' \n') self.htmlFile.write(' LogFile Name\n') @@ -652,27 +631,27 @@ class HTMLManagement(): self.htmlFile.write(' ' + str(testSummary['Nbpass']) + ' \n') self.htmlFile.write(' \n') self.htmlFile.write(' \n') - self.htmlFile.write(' ---- PHYSIM TEST DETAIL INFO---- \n') + self.htmlFile.write(' ---- PHYSIM TEST DETAIL INFO---- \n') self.htmlFile.write(' \n') self.htmlFile.write(' \n') self.htmlFile.write(' Test Name\n') self.htmlFile.write(' Test Description\n') - self.htmlFile.write(' Result\n') + self.htmlFile.write(' Result\n') self.htmlFile.write(' \n') y = '' for key, value in testResult.items(): x = key.split(".") if x[0] != y: self.htmlFile.write(' \n') - self.htmlFile.write(' "' + x[0] + '" series \n') + self.htmlFile.write(' "' + x[0] + '" series \n') self.htmlFile.write(' \n') y = x[0] self.htmlFile.write(' \n') self.htmlFile.write(' ' + key + ' \n') self.htmlFile.write(' ' + value[0] + '\n') if 'PASS' in value: - self.htmlFile.write(' ' + value[1] + '\n') + self.htmlFile.write(' ' + value[1] + '\n') else: - self.htmlFile.write(' ' + value[1] + '\n') + self.htmlFile.write(' ' + value[1] + '\n') self.htmlFile.close() diff --git a/ci-scripts/cls_oaicitest.py b/ci-scripts/cls_oaicitest.py index 51e43109a0..81af50ad22 100644 --- a/ci-scripts/cls_oaicitest.py +++ b/ci-scripts/cls_oaicitest.py @@ -780,22 +780,17 @@ class OaiCiTest(): logging.debug(' RSRP = ' + str(-140+nRSRP) + ' dBm') SSH.close() SSH.disablePicocomClosure() - html_queue = SimpleQueue() self.checkDevTTYisUnlocked() if attach_status: - html_cell = '
CAT-M module Attachment Completed in ' + str(attach_cnt+4) + ' seconds'
+			message = 'CAT-M module Attachment Completed in ' + str(attach_cnt+4) + ' seconds'
 			if (nRSRQ is not None) and (nRSRP is not None):
-				html_cell += '\n   RSRQ = ' + str(-20+(nRSRQ/2)) + ' dB'
-				html_cell += '\n   RSRP = ' + str(-140+nRSRP) + ' dBm
' - else: - html_cell += '' - html_queue.put(html_cell) - HTML.CreateHtmlTestRowQueue('N/A', 'OK', 1, html_queue) + message += '\n RSRQ = ' + str(-20+(nRSRQ/2)) + ' dB' + message += '\n RSRP = ' + str(-140+nRSRP) + ' dBm' + HTML.CreateHtmlTestRowQueue('N/A', 'OK', [message]) else: logging.error('\u001B[1m CAT-M module Attachment Failed\u001B[0m') - html_cell = '
CAT-M module Attachment Failed
' - html_queue.put(html_cell) - HTML.CreateHtmlTestRowQueue('N/A', 'KO', 1, html_queue) + message = 'CAT-M module Attachment Failed' + HTML.CreateHtmlTestRowQueue('N/A', 'KO', [message]) self.AutoTerminateUEandeNB(HTML,RAN,COTS_UE,EPC,InfraUE,CONTAINERS) def PingCatM(self,HTML,RAN,EPC,COTS_UE,InfraUE,CONTAINERS): @@ -886,12 +881,11 @@ class OaiCiTest(): logging.debug('\u001B[1;30;43m Packet Loss is not 0% \u001B[0m') lock.release() SSH.close() - html_cell = '
CAT-M module\nIP Address  : ' + moduleIPAddr + '\n' + qMsg + '
' - statusQueue.put(html_cell) + message = 'CAT-M module\nIP Address : ' + moduleIPAddr + '\n' + qMsg if (packetLossOK): - HTML.CreateHtmlTestRowQueue(self.ping_args, 'OK', 1, statusQueue) + HTML.CreateHtmlTestRowQueue(self.ping_args, 'OK', [message]) else: - HTML.CreateHtmlTestRowQueue(self.ping_args, 'KO', 1, statusQueue) + HTML.CreateHtmlTestRowQueue(self.ping_args, 'KO', [message]) self.AutoTerminateUEandeNB(HTML,RAN,COTS_UE,EPC,InfraUE,CONTAINERS) except: os.kill(os.getppid(),signal.SIGUSR1) @@ -1017,7 +1011,7 @@ class OaiCiTest(): return else: attach_status = True - html_queue = SimpleQueue() + message = '' while (not status_queue.empty()): count = status_queue.get() if (count < 0): @@ -1025,23 +1019,22 @@ class OaiCiTest(): device_id = status_queue.get() message = status_queue.get() if (count < 0): - html_cell = '
UE (' + device_id + ')\n' + message + '
' + message = 'UE (' + device_id + ')\n' + message else: - html_cell = '
UE (' + device_id + ')\n' + message + ' in ' + str(count + 2) + ' seconds
' - html_queue.put(html_cell) + message = 'UE (' + device_id + ')\n' + message + ' in ' + str(count + 2) + ' seconds' if (attach_status): cnt = 0 while cnt < len(self.UEDevices): if self.UEDevicesStatus[cnt] == CONST.UE_STATUS_ATTACHING: self.UEDevicesStatus[cnt] = CONST.UE_STATUS_ATTACHED cnt += 1 - HTML.CreateHtmlTestRowQueue('N/A', 'OK', len(self.UEDevices), html_queue) + HTML.CreateHtmlTestRowQueue('N/A', 'OK', [message]) result = re.search('T_stdout', str(RAN.Initialize_eNB_args)) if result is not None: logging.debug('Waiting 5 seconds to fill up record file') time.sleep(5) else: - HTML.CreateHtmlTestRowQueue('N/A', 'KO', len(self.UEDevices), html_queue) + HTML.CreateHtmlTestRowQueue('N/A', 'KO', [message]) self.AutoTerminateUEandeNB(HTML,RAN,COTS_UE,EPC,InfraUE,CONTAINERS) else: #if an ID is specified, it is a module from the yaml infrastructure file @@ -1418,19 +1411,17 @@ class OaiCiTest(): self.AutoTerminateUEandeNB(HTML,RAN,COTS_UE,EPC,InfraUE,CONTAINERS) else: check_status = True - html_queue = SimpleQueue() + messages = [] while (not status_queue.empty()): count = status_queue.get() if (count < 0): check_status = False device_id = status_queue.get() - message = status_queue.get() - html_cell = '
UE (' + device_id + ')\n' + message + '
' - html_queue.put(html_cell) + messages.append(f'UE ({device_id})\n{status_queue.get()}') if check_status and passStatus: - HTML.CreateHtmlTestRowQueue(htmlOptions, 'OK', len(self.UEDevices), html_queue) + HTML.CreateHtmlTestRowQueue(htmlOptions, 'OK', messages) else: - HTML.CreateHtmlTestRowQueue(htmlOptions, 'KO', len(self.UEDevices), html_queue) + HTML.CreateHtmlTestRowQueue(htmlOptions, 'KO', messages) self.AutoTerminateUEandeNB(HTML,RAN,COTS_UE,EPC,InfraUE,CONTAINERS) def GetAllUEIPAddresses(self): @@ -1694,10 +1685,8 @@ class OaiCiTest(): os.kill(os.getppid(),signal.SIGUSR1) def PingNoS1_wrong_exit(self, qMsg,HTML): - html_queue = SimpleQueue() - html_cell = '
OAI UE ping result\n' + qMsg + '
' - html_queue.put(html_cell) - HTML.CreateHtmlTestRowQueue(self.ping_args, 'KO', len(self.UEDevices), html_queue) + message = 'OAI UE ping result\n{qMsg}' + HTML.CreateHtmlTestRowQueue(self.ping_args, 'KO', [message]) def PingNoS1(self,HTML,RAN,EPC,COTS_UE,InfraUE,CONTAINERS): SSH=sshconnection.SSHConnection() @@ -1773,14 +1762,11 @@ class OaiCiTest(): qMsg += '\nPacket Loss is not 0%' logging.debug('\u001B[1;30;43m Packet Loss is not 0% \u001B[0m') SSH.close() - html_queue = SimpleQueue() - ip_addr = 'TBD' - html_cell = '
OAI UE ping result\n' + qMsg + '
' - html_queue.put(html_cell) + message = f'OAI UE ping result\n{qMsg}' if packetLossOK: - HTML.CreateHtmlTestRowQueue(self.ping_args, 'OK', len(self.UEDevices), html_queue) + HTML.CreateHtmlTestRowQueue(self.ping_args, 'OK', [message]) else: - HTML.CreateHtmlTestRowQueue(self.ping_args, 'KO', len(self.UEDevices), html_queue) + HTML.CreateHtmlTestRowQueue(self.ping_args, 'KO', [message]) # copying on the EPC server for logCollection if ping_from_eNB is not None: @@ -1857,7 +1843,7 @@ class OaiCiTest(): self.AutoTerminateUEandeNB(HTML,RAN,COTS_UE,EPC,InfraUE,CONTAINERS) else: ping_status = True - html_queue = SimpleQueue() + messages = [] while (not status_queue.empty()): count = status_queue.get() if (count < 0): @@ -1865,12 +1851,11 @@ class OaiCiTest(): device_id = status_queue.get() ip_addr = status_queue.get() message = status_queue.get() - html_cell = '
UE (' + device_id + ')\nIP Address  : ' + ip_addr + '\n' + message + '
' - html_queue.put(html_cell) + messages.append(f'UE ({device_id})\nIP Address : {ip_addr}\n{message}') if (ping_status): - HTML.CreateHtmlTestRowQueue(self.ping_args, 'OK', len(self.UEDevices), html_queue) + HTML.CreateHtmlTestRowQueue(self.ping_args, 'OK', messages) else: - HTML.CreateHtmlTestRowQueue(self.ping_args, 'KO', len(self.UEDevices), html_queue) + HTML.CreateHtmlTestRowQueue(self.ping_args, 'KO', messages) self.AutoTerminateUEandeNB(HTML,RAN,COTS_UE,EPC,InfraUE,CONTAINERS) def Iperf_ComputeTime(self): @@ -2909,7 +2894,7 @@ class OaiCiTest(): iperf_status = False else: iperf_status = True - html_queue = SimpleQueue() + messages = [] while (not status_queue.empty()): count = status_queue.get() if (count < 0): @@ -2919,14 +2904,13 @@ class OaiCiTest(): device_id = status_queue.get() ip_addr = status_queue.get() message = status_queue.get() - html_cell = '
UE (' + device_id + ')\nIP Address  : ' + ip_addr + '\n' + message + '
' - html_queue.put(html_cell) + messages.append(f'UE ({device_id})\nIP Address : {ip_addr}\n{message}') if (iperf_noperf and iperf_status): - HTML.CreateHtmlTestRowQueue(self.iperf_args, 'PERF NOT MET', len(self.UEDevices), html_queue) + HTML.CreateHtmlTestRowQueue(self.iperf_args, 'PERF NOT MET', messages) elif (iperf_status): - HTML.CreateHtmlTestRowQueue(self.iperf_args, 'OK', len(self.UEDevices), html_queue) + HTML.CreateHtmlTestRowQueue(self.iperf_args, 'OK', messages) else: - HTML.CreateHtmlTestRowQueue(self.iperf_args, 'KO', len(self.UEDevices), html_queue) + HTML.CreateHtmlTestRowQueue(self.iperf_args, 'KO', messages) self.AutoTerminateUEandeNB(HTML,RAN,COTS_UE,EPC,InfraUE,CONTAINERS) def Iperf(self,HTML,RAN,EPC,COTS_UE, InfraUE,CONTAINERS): @@ -3001,7 +2985,7 @@ class OaiCiTest(): else: iperf_status = True iperf_noperf = False - html_queue = SimpleQueue() + messages = [] while (not status_queue.empty()): count = status_queue.get() if (count < 0): @@ -3010,15 +2994,14 @@ class OaiCiTest(): iperf_noperf = True device_id = status_queue.get() ip_addr = status_queue.get() - message = status_queue.get() - html_cell = '
UE (' + device_id + ')\nIP Address  : ' + ip_addr + '\n' + message + '
' - html_queue.put(html_cell) + msg = status_queue.get() + messages.append(f'UE ({device_id})\nIP Address : {ip_addr}\n{msg}') if (iperf_noperf and iperf_status): - HTML.CreateHtmlTestRowQueue(self.iperf_args, 'PERF NOT MET', len(self.UEDevices), html_queue) + HTML.CreateHtmlTestRowQueue(self.iperf_args, 'PERF NOT MET', messages) elif (iperf_status): - HTML.CreateHtmlTestRowQueue(self.iperf_args, 'OK', len(self.UEDevices), html_queue) + HTML.CreateHtmlTestRowQueue(self.iperf_args, 'OK', messages) else: - HTML.CreateHtmlTestRowQueue(self.iperf_args, 'KO', len(self.UEDevices), html_queue) + HTML.CreateHtmlTestRowQueue(self.iperf_args, 'KO', messages) self.AutoTerminateUEandeNB(HTML,RAN,COTS_UE,EPC,InfraUE,CONTAINERS) def CheckProcessExist(self, check_eNB, check_OAI_UE,RAN,EPC): diff --git a/ci-scripts/cls_physim.py b/ci-scripts/cls_physim.py index 63aafd4d0a..a43c8014a9 100644 --- a/ci-scripts/cls_physim.py +++ b/ci-scripts/cls_physim.py @@ -81,11 +81,7 @@ class PhySim: #once parsed move the local logfile to its folder for tidiness os.system('mv '+self.__runLogFile+' '+ self.__runLogPath+'/.') - #updating the HTML with results - html_cell = '
' + info  + '
' - html_queue=SimpleQueue() - html_queue.put(html_cell) - HTML.CreateHtmlTestRowQueue(self.runargs, 'OK', 1, html_queue) + HTML.CreateHtmlTestRowQueue(self.runargs, 'OK', [info]) return HTML def __CheckResults_LDPCt1Test(self,HTML,CONST,testcase_id): @@ -131,8 +127,7 @@ class PhySim: if ret != 0: error_msg = f'could not recover test result file {filename}' logging.error(error_msg) - html_queue.put(f'
{error_msg}
') - HTML.CreateHtmlTestRowQueue("could not recover results", 'KO', 1, html_queue) + HTML.CreateHtmlTestRowQueue("could not recover results", 'KO', [error_msg]) self.exitStatus = 1 return HTML @@ -145,13 +140,11 @@ class PhySim: #updating the HTML with results if PUSCH_OK: - html_queue.put('
succeeded
') - HTML.CreateHtmlTestRowQueue(self.runargs, 'OK', 1, html_queue) + HTML.CreateHtmlTestRowQueue(self.runargs, 'OK', 1, ["succeeded"]) else: error_msg = 'error: no "PUSCH test OK"' logging.error(error_msg) - html_queue.put(f'
{error_msg}
') - HTML.CreateHtmlTestRowQueue(self.runargs, 'KO', 1, html_queue) + HTML.CreateHtmlTestRowQueue(self.runargs, 'KO', 1, [error_msg]) self.exitStatus = 1 return HTML diff --git a/ci-scripts/cls_static_code_analysis.py b/ci-scripts/cls_static_code_analysis.py index ee3f1bbebf..37815321f3 100644 --- a/ci-scripts/cls_static_code_analysis.py +++ b/ci-scripts/cls_static_code_analysis.py @@ -357,63 +357,43 @@ class StaticCodeAnalysis(): if nbFilesNotFormatted == 0: HTML.CreateHtmlTestRow('File(s) Format', 'OK', CONST.ALL_PROCESSES_OK) else: - html_queue = SimpleQueue() - html_cell = '
\n'
-					html_cell += 'Number of files not following OAI Rules: ' + str(nbFilesNotFormatted) + '\n'
+					html_cell = f'Number of files not following OAI Rules: {nbFilesNotFormatted}\n'
 					for nFile in listFilesNotFormatted:
 						html_cell += str(nFile).strip() + '\n'
-					html_cell += '
' - html_queue.put(html_cell) - HTML.CreateHtmlTestRowQueue('File(s) Format', 'KO', 1, html_queue) + HTML.CreateHtmlTestRowQueue('File(s) Format', 'KO', [html_cell]) del(html_cell) - del(html_queue) logging.debug('header files not respecting the circular dependency protection: ' + str(len(circularHeaderDependencyFiles))) if len(circularHeaderDependencyFiles) == 0: HTML.CreateHtmlTestRow('Header Circular Dependency', 'OK', CONST.ALL_PROCESSES_OK) else: - html_queue = SimpleQueue() - html_cell = '
\n'
-					html_cell += 'Number of files not respecting: ' + str(len(circularHeaderDependencyFiles)) + '\n'
+					html_cell = f'Number of files not respecting: {len(circularHeaderDependencyFiles)}\n'
 					for nFile in circularHeaderDependencyFiles:
 						html_cell += str(nFile).strip() + '\n'
-					html_cell += '
' - html_queue.put(html_cell) - HTML.CreateHtmlTestRowQueue('Header Circular Dependency', 'KO', 1, html_queue) + HTML.CreateHtmlTestRowQueue('Header Circular Dependency', 'KO', [html_cell]) del(html_cell) - del(html_queue) finalStatus = -1 logging.debug('files with a GNU GPL license: ' + str(len(gnuGplLicenceFiles))) if len(gnuGplLicenceFiles) == 0: HTML.CreateHtmlTestRow('Files w/ GNU GPL License', 'OK', CONST.ALL_PROCESSES_OK) else: - html_queue = SimpleQueue() - html_cell = '
\n'
-					html_cell += 'Number of files not respecting: ' + str(len(gnuGplLicenceFiles)) + '\n'
+					html_cell = f'Number of files not respecting: {len(gnuGplLicenceFiles)}\n'
 					for nFile in gnuGplLicenceFiles:
 						html_cell += str(nFile).strip() + '\n'
-					html_cell += '
' - html_queue.put(html_cell) - HTML.CreateHtmlTestRowQueue('Files w/ GNU GPL License', 'KO', 1, html_queue) + HTML.CreateHtmlTestRowQueue('Files w/ GNU GPL License', 'KO', html_queue) del(html_cell) - del(html_queue) finalStatus = -1 logging.debug('files with a suspect license: ' + str(len(suspectLicenceFiles))) if len(suspectLicenceFiles) == 0: HTML.CreateHtmlTestRow('Files with suspect license', 'OK', CONST.ALL_PROCESSES_OK) else: - html_queue = SimpleQueue() - html_cell = '
\n'
-					html_cell += 'Number of files not respecting: ' + str(len(suspectLicenceFiles)) + '\n'
+					html_cell = f'Number of files not respecting: {len(suspectLicenceFiles)}\n'
 					for nFile in suspectLicenceFiles:
 						html_cell += str(nFile).strip() + '\n'
-					html_cell += '
' - html_queue.put(html_cell) - HTML.CreateHtmlTestRowQueue('Files with suspect license', 'KO', 1, html_queue) + HTML.CreateHtmlTestRowQueue('Files with suspect license', 'KO', [html_cell]) del(html_cell) - del(html_queue) finalStatus = -1 else: diff --git a/ci-scripts/epc.py b/ci-scripts/epc.py index 64074fdd6a..7483458ec3 100644 --- a/ci-scripts/epc.py +++ b/ci-scripts/epc.py @@ -237,7 +237,7 @@ class EPCManagement(): sys.exit('Insufficient EPC Parameters') mySSH = SSH.SSHConnection() mySSH.open(self.IPAddress, self.UserName, self.Password) - html_cell = '
\n'
+		html_cell = ''
 		if re.match('ltebox', self.Type, re.IGNORECASE):
 			logging.debug('Using the SABOX simulated HSS')
 			mySSH.command('if [ -d ' + self.SourceCodePath + '/scripts ]; then echo ' + self.Password + ' | sudo -S rm -Rf ' + self.SourceCodePath + '/scripts ; fi', '\$', 5)
@@ -288,11 +288,8 @@ class EPCManagement():
 					html_cell += '\n'
 		else:
 			logging.error('This option should not occur!')
-		html_cell += '
' mySSH.close() - html_queue = SimpleQueue() - html_queue.put(html_cell) - HTML.CreateHtmlTestRowQueue(self.Type, 'OK', 1, html_queue) + HTML.CreateHtmlTestRowQueue(self.Type, 'OK', [html_cell]) def SetAmfIPAddress(self): # Not an error if we don't need an 5GCN @@ -551,10 +548,7 @@ class EPCManagement(): else: logging.error('This should not happen!') mySSH.close() - html_queue = SimpleQueue() - html_cell = '
' + message + '
' - html_queue.put(html_cell) - HTML.CreateHtmlTestRowQueue(self.Type, 'OK', 1, html_queue) + HTML.CreateHtmlTestRowQueue(self.Type, 'OK', [message]) def DeployEpc(self, HTML): logging.debug('Trying to deploy') @@ -644,7 +638,7 @@ class EPCManagement(): expectedHealthyContainers += 1 mySSH.command('docker-compose config | grep --colour=never image', '\$', 10) - html_cell = '
\n'
+		html_cell = ''
 		listOfImages = mySSH.getBefore()
 		for imageLine in listOfImages.split('\\r\\n'):
 			res1 = re.search('image: (?P[a-zA-Z0-9\-]+):(?P[a-zA-Z0-9\-]+)', str(imageLine))
@@ -666,7 +660,6 @@ class EPCManagement():
 				if res4 is not None:
 					html_cell += '(' + res4.group('date') + ')'
 				html_cell += '\n'
-		html_cell += '
' # Checking if all are healthy cnt = 0 while (cnt < 3): @@ -682,8 +675,6 @@ class EPCManagement(): logging.debug(' -- ' + str(healthyNb) + ' healthy container(s)') logging.debug(' -- ' + str(unhealthyNb) + ' unhealthy container(s)') logging.debug(' -- ' + str(startingNb) + ' still starting container(s)') - html_queue = SimpleQueue() - html_queue.put(html_cell) if healthyNb == expectedHealthyContainers: mySSH.command('docker exec -d prod-oai-hss /bin/bash -c "nohup tshark -i any -f \'port 9042 or port 3868\' -w /tmp/hss_check_run.pcap 2>&1 > /dev/null"', '\$', 5) if self.isMagmaUsed: @@ -695,11 +686,11 @@ class EPCManagement(): mySSH.command('docker exec -d prod-oai-spgwu-tiny /bin/bash -c "nohup tshark -i any -f \'port 8805\' -w /tmp/spgwu_check_run.pcap 2>&1 > /dev/null"', '\$', 10) mySSH.close() logging.debug('Deployment OK') - HTML.CreateHtmlTestRowQueue(self.Type, 'OK', 1, html_queue) + HTML.CreateHtmlTestRowQueue(self.Type, 'OK', [html_cell]) else: mySSH.close() logging.debug('Deployment went wrong') - HTML.CreateHtmlTestRowQueue(self.Type, 'KO', 1, html_queue) + HTML.CreateHtmlTestRowQueue(self.Type, 'KO', [html_cell]) def UndeployEpc(self, HTML): logging.debug('Trying to undeploy') @@ -767,15 +758,12 @@ class EPCManagement(): mySSH.command('docker inspect --format=\'{{.Name}}\' prod-oai-public-net prod-oai-private-net', '\$', 10) noMoreNetworkNb = mySSH.getBefore().count('No such object') mySSH.close() - html_queue = SimpleQueue() - html_cell = '
' + message + '
' - html_queue.put(html_cell) if noMoreContainerNb == nbContainers and noMoreNetworkNb == 2: logging.debug('Undeployment OK') - HTML.CreateHtmlTestRowQueue(self.Type, 'OK', 1, html_queue) + HTML.CreateHtmlTestRowQueue(self.Type, 'OK', [message]) else: logging.debug('Undeployment went wrong') - HTML.CreateHtmlTestRowQueue(self.Type, 'KO', 1, html_queue) + HTML.CreateHtmlTestRowQueue(self.Type, 'KO', [message]) def LogCollectHSS(self): mySSH = SSH.SSHConnection() diff --git a/ci-scripts/main.py b/ci-scripts/main.py index 813dc39a6a..076adbf598 100644 --- a/ci-scripts/main.py +++ b/ci-scripts/main.py @@ -717,7 +717,6 @@ elif re.match('^InitiateHtml$', mode, re.IGNORECASE): terminate_ue_flag = False CiTestObj.GetAllUEDevices(terminate_ue_flag) CiTestObj.GetAllCatMDevices(terminate_ue_flag) - HTML.SethtmlUEConnected(len(CiTestObj.UEDevices) + len(CiTestObj.CatMDevices)) HTML.htmlNb_Smartphones=len(CiTestObj.UEDevices) HTML.htmlNb_CATM_Modules=len(CiTestObj.CatMDevices) HTML.CreateHtmlHeader(CiTestObj.ADBIPAddress) @@ -824,7 +823,6 @@ elif re.match('^TesteNB$', mode, re.IGNORECASE) or re.match('^TestUE$', mode, re CiTestObj.UEDevices.append('COTS-Module') else: CiTestObj.UEDevices.append('OAI-UE') - HTML.SethtmlUEConnected(len(CiTestObj.UEDevices) + len(CiTestObj.CatMDevices)) HTML.CreateHtmlTabHeader() # On CI bench w/ containers, we need to validate if IP routes are set