Commit 59af5bd8 authored by Robert Schmidt's avatar Robert Schmidt

CreateHtmlTestRowQueue: one UE column in any test

parent 646cec27
...@@ -927,24 +927,21 @@ class Containerize(): ...@@ -927,24 +927,21 @@ class Containerize():
mySSH.copyin(lIpAddr, lUserName, lPassWord, logfilename, '.') mySSH.copyin(lIpAddr, lUserName, lPassWord, logfilename, '.')
mySSH.close() mySSH.close()
html_queue = SimpleQueue() message = ''
html_cell = '<pre style="background-color:white">\n'
if usedImage != '': if usedImage != '':
html_cell += f'Used Image = {usedImage} :\n' message += f'Used Image = {usedImage} :\n'
html_cell += imageInfo message += imageInfo
else: else:
html_cell += 'Could not retrieve used image info!\n' message += 'Could not retrieve used image info!\n'
if status: if status:
html_cell += '\nHealthy deployment!\n' message += '\nHealthy deployment!\n'
else: else:
html_cell += '\nUnhealthy deployment! -- Check logs for reason!\n' message += '\nUnhealthy deployment! -- Check logs for reason!\n'
html_cell += '</pre>'
html_queue.put(html_cell)
if status: if status:
HTML.CreateHtmlTestRowQueue('N/A', 'OK', CONST.ENB_PROCESS_OK, html_queue) HTML.CreateHtmlTestRowQueue('N/A', 'OK', [message])
else: else:
self.exitStatus = 1 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): def UndeployObject(self, HTML, RAN):
...@@ -1128,25 +1125,22 @@ class Containerize(): ...@@ -1128,25 +1125,22 @@ class Containerize():
imagesInfo += imageInspect.stdout.strip() imagesInfo += imageInspect.stdout.strip()
myCmd.close() myCmd.close()
html_queue = SimpleQueue() html_cell = ''
html_cell = '<pre style="background-color:white">\n'
for imageInfo in imagesInfo.split('\n'): for imageInfo in imagesInfo.split('\n'):
html_cell += imageInfo[:-11] + '\n' html_cell += imageInfo[:-11] + '\n'
html_cell += '\n' html_cell += '\n'
for cState in containerStatus: for cState in containerStatus:
html_cell += cState + '\n' html_cell += cState + '\n'
html_cell += '</pre>'
html_queue.put(html_cell)
if count == 100 and healthy == self.nb_healthy[0]: if count == 100 and healthy == self.nb_healthy[0]:
if self.tsharkStarted == False: if self.tsharkStarted == False:
logging.debug('Starting tshark on public network') logging.debug('Starting tshark on public network')
self.CaptureOnDockerNetworks() self.CaptureOnDockerNetworks()
HTML.CreateHtmlTestRowQueue('n/a', 'OK', 1, html_queue) HTML.CreateHtmlTestRowQueue('n/a', 'OK', [html_cell])
for cState in containerStatus: for cState in containerStatus:
logging.debug(cState) logging.debug(cState)
logging.info('\u001B[1m Deploying OAI Object(s) PASS\u001B[0m') logging.info('\u001B[1m Deploying OAI Object(s) PASS\u001B[0m')
else: 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: for cState in containerStatus:
logging.debug(cState) logging.debug(cState)
logging.error('\u001B[1m Deploying OAI Object(s) FAILED\u001B[0m') logging.error('\u001B[1m Deploying OAI Object(s) FAILED\u001B[0m')
...@@ -1357,10 +1351,7 @@ class Containerize(): ...@@ -1357,10 +1351,7 @@ class Containerize():
message += statLine + '\n' message += statLine + '\n'
myCmd.close() myCmd.close()
html_queue = SimpleQueue() HTML.CreateHtmlTestRowQueue(self.pingOptions, 'OK', [message])
html_cell = '<pre style="background-color:white">\n' + message + '</pre>'
html_queue.put(html_cell)
HTML.CreateHtmlTestRowQueue(self.pingOptions, 'OK', 1, html_queue)
def PingFromContainer(self, HTML, RAN, UE): def PingFromContainer(self, HTML, RAN, UE):
myCmd = cls_cmd.LocalCmd() myCmd = cls_cmd.LocalCmd()
...@@ -1419,14 +1410,11 @@ class Containerize(): ...@@ -1419,14 +1410,11 @@ class Containerize():
logging.info('\u001B[1m Ping Test PASS\u001B[0m') logging.info('\u001B[1m Ping Test PASS\u001B[0m')
def PingExit(self, HTML, RAN, UE, status, message): def PingExit(self, HTML, RAN, UE, status, message):
html_queue = SimpleQueue()
html_cell = '<pre style="background-color:white">UE\n' + message + '</pre>'
html_queue.put(html_cell)
if status: if status:
HTML.CreateHtmlTestRowQueue(self.pingOptions, 'OK', 1, html_queue) HTML.CreateHtmlTestRowQueue(self.pingOptions, 'OK', [message])
else: else:
logging.error('\u001B[1;37;41m ping test FAIL -- ' + message + ' \u001B[0m') 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 # Automatic undeployment
logging.warning('----------------------------------------') logging.warning('----------------------------------------')
logging.warning('\u001B[1m Starting Automatic undeployment \u001B[0m') logging.warning('\u001B[1m Starting Automatic undeployment \u001B[0m')
...@@ -1475,14 +1463,12 @@ class Containerize(): ...@@ -1475,14 +1463,12 @@ class Containerize():
self.IperfExit(HTML, RAN, UE, iperfStatus, msg) self.IperfExit(HTML, RAN, UE, iperfStatus, msg)
def IperfExit(self, HTML, RAN, UE, status, message): def IperfExit(self, HTML, RAN, UE, status, message):
html_queue = SimpleQueue() html_cell = f'UE\n{message}'
html_cell = '<pre style="background-color:white">UE\n' + message + '</pre>'
html_queue.put(html_cell)
if status: if status:
HTML.CreateHtmlTestRowQueue(self.cliOptions, 'OK', 1, html_queue) HTML.CreateHtmlTestRowQueue(self.cliOptions, 'OK', [html_cell])
else: else:
logging.error('\u001B[1m Iperf Test FAIL -- ' + message + ' \u001B[0m') 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 # Automatic undeployment
logging.warning('----------------------------------------') logging.warning('----------------------------------------')
logging.warning('\u001B[1m Starting Automatic undeployment \u001B[0m') logging.warning('\u001B[1m Starting Automatic undeployment \u001B[0m')
......
...@@ -84,16 +84,6 @@ class HTMLManagement(): ...@@ -84,16 +84,6 @@ class HTMLManagement():
self.CpuModel = ['', ''] self.CpuModel = ['', '']
self.CpuMHz = ['', ''] 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(): ...@@ -231,10 +221,7 @@ class HTMLManagement():
self.htmlFile.write(' <th>Test Options</th>\n') self.htmlFile.write(' <th>Test Options</th>\n')
self.htmlFile.write(' <th>Test Status</th>\n') self.htmlFile.write(' <th>Test Status</th>\n')
i = 0 self.htmlFile.write(' <th>Info</th>\n')
while (i < self.htmlUEConnected):
self.htmlFile.write(' <th>UE' + str(i) + ' Status</th>\n')
i += 1
self.htmlFile.write(' </tr>\n') self.htmlFile.write(' </tr>\n')
self.htmlFile.close() self.htmlFile.close()
self.htmlHeaderCreated = True self.htmlHeaderCreated = True
...@@ -247,14 +234,14 @@ class HTMLManagement(): ...@@ -247,14 +234,14 @@ class HTMLManagement():
testOkEvenIfUnstable = True testOkEvenIfUnstable = True
self.htmlFile = open('test_results.html', 'a') self.htmlFile = open('test_results.html', 'a')
self.htmlFile.write(' <tr>\n') self.htmlFile.write(' <tr>\n')
self.htmlFile.write(' <th bgcolor = "#33CCFF" colspan=3>Final Tab Status</th>\n') self.htmlFile.write(' <th bgcolor = "#33CCFF" colspan="3">Final Tab Status</th>\n')
if passStatus: if passStatus:
self.htmlFile.write(' <th bgcolor = "green" colspan=' + str(2 + self.htmlUEConnected) + '><font color="white">PASS <span class="glyphicon glyphicon-ok"></span> </font></th>\n') self.htmlFile.write(' <th bgcolor = "green" colspan="3"><font color="white">PASS <span class="glyphicon glyphicon-ok"></span> </font></th>\n')
else: else:
if testOkEvenIfUnstable: if testOkEvenIfUnstable:
self.htmlFile.write(' <th bgcolor = "orange" colspan=' + str(2 + self.htmlUEConnected) + '><font color="white">KNOWN UNSTABLE SCENARIO <span class="glyphicon glyphicon-exclamation-sign"></span> </font></th>\n') self.htmlFile.write(' <th bgcolor = "orange" colspan="3"><font color="white">KNOWN UNSTABLE SCENARIO <span class="glyphicon glyphicon-exclamation-sign"></span> </font></th>\n')
else: else:
self.htmlFile.write(' <th bgcolor = "red" colspan=' + str(2 + self.htmlUEConnected) + '><font color="white">FAIL <span class="glyphicon glyphicon-remove"></span> </font></th>\n') self.htmlFile.write(' <th bgcolor = "red" colspan="3"><font color="white">FAIL <span class="glyphicon glyphicon-remove"></span> </font></th>\n')
self.htmlFile.write(' </tr>\n') self.htmlFile.write(' </tr>\n')
self.htmlFile.write(' </table>\n') self.htmlFile.write(' </table>\n')
self.htmlFile.write(' </div>\n') self.htmlFile.write(' </div>\n')
...@@ -321,11 +308,11 @@ class HTMLManagement(): ...@@ -321,11 +308,11 @@ class HTMLManagement():
self.htmlFile.write(' </tr>\n') self.htmlFile.write(' </tr>\n')
self.htmlFile.write(' <tr>\n') self.htmlFile.write(' <tr>\n')
self.htmlFile.write(' <th colspan=5 bgcolor = "#33CCFF">Final Status</th>\n') self.htmlFile.write(' <th colspan="5" bgcolor = "#33CCFF">Final Status</th>\n')
if passStatus: if passStatus:
self.htmlFile.write(' <th colspan=3 bgcolor="green"><font color="white">PASS <span class="glyphicon glyphicon-ok"></span></font></th>\n') self.htmlFile.write(' <th colspan="3" bgcolor="green"><font color="white">PASS <span class="glyphicon glyphicon-ok"></span></font></th>\n')
else: else:
self.htmlFile.write(' <th colspan=3 bgcolor="red"><font color="white">FAIL <span class="glyphicon glyphicon-remove"></span> </font></th>\n') self.htmlFile.write(' <th colspan="3" bgcolor="red"><font color="white">FAIL <span class="glyphicon glyphicon-remove"></span> </font></th>\n')
self.htmlFile.write(' </tr>\n') self.htmlFile.write(' </tr>\n')
self.htmlFile.write(' </table>\n') self.htmlFile.write(' </table>\n')
self.htmlFile.write(' <p></p>\n') self.htmlFile.write(' <p></p>\n')
...@@ -338,7 +325,7 @@ class HTMLManagement(): ...@@ -338,7 +325,7 @@ class HTMLManagement():
if ((not self.htmlFooterCreated) and (self.htmlHeaderCreated)): if ((not self.htmlFooterCreated) and (self.htmlHeaderCreated)):
self.htmlFile = open('test_results.html', 'a') self.htmlFile = open('test_results.html', 'a')
self.htmlFile.write(' <tr bgcolor = "#F0F0F0" >\n') self.htmlFile.write(' <tr bgcolor = "#F0F0F0" >\n')
self.htmlFile.write(' <td colspan=' + str(5+self.htmlUEConnected) + '><b> ---- Try Run #' + str(cntnumfails) + ' ---- </b></td>\n') self.htmlFile.write(' <td colspan="6"><b> ---- Try Run #' + str(cntnumfails) + ' ---- </b></td>\n')
self.htmlFile.write(' </tr>\n') self.htmlFile.write(' </tr>\n')
self.htmlFile.close() self.htmlFile.close()
...@@ -404,7 +391,7 @@ class HTMLManagement(): ...@@ -404,7 +391,7 @@ class HTMLManagement():
result = re.search('showed|Reestablishment|Could not copy eNB logfile', self.htmleNBFailureMsg) result = re.search('showed|Reestablishment|Could not copy eNB logfile', self.htmleNBFailureMsg)
if result is not None: if result is not None:
cellBgColor = 'orange' cellBgColor = 'orange'
self.htmlFile.write(' <td bgcolor = "' + cellBgColor + '" colspan=' + str(self.htmlUEConnected) + '><pre style="background-color:' + cellBgColor + '">' + self.htmleNBFailureMsg + '</pre></td>\n') self.htmlFile.write(' <td bgcolor = "' + cellBgColor + '" colspan="1"><pre style="background-color:' + cellBgColor + '">' + self.htmleNBFailureMsg + '</pre></td>\n')
self.htmleNBFailureMsg = '' self.htmleNBFailureMsg = ''
elif (len(str(self.htmlUEFailureMsg)) > 2): elif (len(str(self.htmlUEFailureMsg)) > 2):
cellBgColor = 'white' cellBgColor = 'white'
...@@ -415,13 +402,10 @@ class HTMLManagement(): ...@@ -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) 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: if result is not None:
cellBgColor = 'orange' cellBgColor = 'orange'
self.htmlFile.write(' <td bgcolor = "' + cellBgColor + '" colspan=' + str(self.htmlUEConnected) + '><pre style="background-color:' + cellBgColor + '">' + self.htmlUEFailureMsg + '</pre></td>\n') self.htmlFile.write(' <td bgcolor = "' + cellBgColor + '" colspan="1"><pre style="background-color:' + cellBgColor + '">' + self.htmlUEFailureMsg + '</pre></td>\n')
self.htmlUEFailureMsg = '' self.htmlUEFailureMsg = ''
else: else:
i = 0 self.htmlFile.write(' <td>-</td>\n')
while (i < self.htmlUEConnected):
self.htmlFile.write(' <td>-</td>\n')
i += 1
self.htmlFile.write(' </tr>\n') self.htmlFile.write(' </tr>\n')
self.htmlFile.close() self.htmlFile.close()
...@@ -432,7 +416,7 @@ class HTMLManagement(): ...@@ -432,7 +416,7 @@ class HTMLManagement():
self.htmlFile = open('test_results.html', 'a') self.htmlFile = open('test_results.html', 'a')
if bool(collectInfo) == False: if bool(collectInfo) == False:
self.htmlFile.write(' <tr bgcolor = "red" >\n') self.htmlFile.write(' <tr bgcolor = "red" >\n')
self.htmlFile.write(' <td colspan=' + str(5+self.htmlUEConnected) + '><b> ----IMAGES BUILDING FAILED - Unable to recover the image logs ---- </b></td>\n') self.htmlFile.write(' <td colspan="6"><b> ----IMAGES BUILDING FAILED - Unable to recover the image logs ---- </b></td>\n')
self.htmlFile.write(' </tr>\n') self.htmlFile.write(' </tr>\n')
else: else:
for image in collectInfo: for image in collectInfo:
...@@ -444,13 +428,13 @@ class HTMLManagement(): ...@@ -444,13 +428,13 @@ class HTMLManagement():
self.htmlFile.write(' <tr bgcolor = "red" >\n') self.htmlFile.write(' <tr bgcolor = "red" >\n')
else: else:
self.htmlFile.write(' <tr bgcolor = "#F0F0F0" >\n') self.htmlFile.write(' <tr bgcolor = "#F0F0F0" >\n')
self.htmlFile.write(' <td colspan=' + str(5+self.htmlUEConnected) + '><b> ---- ' + image + ' IMAGE STATUS ----> Size ' + allImagesSize[image] + ' </b></td>\n') self.htmlFile.write(' <td colspan="6"><b> ---- ' + image + ' IMAGE STATUS ----> Size ' + allImagesSize[image] + ' </b></td>\n')
self.htmlFile.write(' </tr>\n') self.htmlFile.write(' </tr>\n')
self.htmlFile.write(' <tr bgcolor = "#33CCFF" >\n') self.htmlFile.write(' <tr bgcolor = "#33CCFF" >\n')
self.htmlFile.write(' <th colspan="2">Element</th>\n') self.htmlFile.write(' <th colspan="2">Element</th>\n')
self.htmlFile.write(' <th>Nb Errors</th>\n') self.htmlFile.write(' <th>Nb Errors</th>\n')
self.htmlFile.write(' <th>Nb Warnings</th>\n') self.htmlFile.write(' <th>Nb Warnings</th>\n')
self.htmlFile.write(' <th colspan=' + str(1+self.htmlUEConnected) + '>Status</th>\n') self.htmlFile.write(' <th colspan="2">Status</th>\n')
self.htmlFile.write(' </tr>\n') self.htmlFile.write(' </tr>\n')
for fil in files: for fil in files:
...@@ -469,11 +453,11 @@ class HTMLManagement(): ...@@ -469,11 +453,11 @@ class HTMLManagement():
else: else:
self.htmlFile.write(' <td bgcolor = "orange" >' + str(parameters['warnings']) + '</td>\n') self.htmlFile.write(' <td bgcolor = "orange" >' + str(parameters['warnings']) + '</td>\n')
if (parameters['errors'] == 0) and (parameters['warnings'] == 0): if (parameters['errors'] == 0) and (parameters['warnings'] == 0):
self.htmlFile.write(' <th colspan=' + str(1+self.htmlUEConnected) + ' bgcolor = "green" ><font color="white">OK </font></th>\n') self.htmlFile.write(' <th colspan="2" bgcolor = "green" ><font color="white">OK </font></th>\n')
elif (parameters['errors'] == 0): elif (parameters['errors'] == 0):
self.htmlFile.write(' <th colspan=' + str(1+self.htmlUEConnected) + ' bgcolor = "orange" ><font color="white">OK </font></th>\n') self.htmlFile.write(' <th colspan="2" bgcolor = "orange" ><font color="white">OK </font></th>\n')
else: else:
self.htmlFile.write(' <th colspan=' + str(1+self.htmlUEConnected) + ' bgcolor = "red" > NOT OK </th>\n') self.htmlFile.write(' <th colspan="2" bgcolor = "red" > NOT OK </th>\n')
self.htmlFile.write(' </tr>\n') self.htmlFile.write(' </tr>\n')
self.htmlFile.close() self.htmlFile.close()
...@@ -485,12 +469,12 @@ class HTMLManagement(): ...@@ -485,12 +469,12 @@ class HTMLManagement():
# TabHeader # TabHeader
self.htmlFile.write(' <tr bgcolor = "#F0F0F0" >\n') self.htmlFile.write(' <tr bgcolor = "#F0F0F0" >\n')
self.htmlFile.write(' <td colspan=' + str(5+self.htmlUEConnected) + '><b> ---- ' + DataLog['Title'] + ' ---- </b></td>\n') self.htmlFile.write(' <td colspan="6"><b> ---- ' + DataLog['Title'] + ' ---- </b></td>\n')
self.htmlFile.write(' </tr>\n') self.htmlFile.write(' </tr>\n')
self.htmlFile.write(' <tr bgcolor = "#33CCFF" >\n') self.htmlFile.write(' <tr bgcolor = "#33CCFF" >\n')
self.htmlFile.write(' <th colspan="3">'+ DataLog['ColNames'][0] +'</th>\n') self.htmlFile.write(' <th colspan="3">'+ DataLog['ColNames'][0] +'</th>\n')
self.htmlFile.write(' <th colspan="2">' + DataLog['ColNames'][1] + '</th>\n') self.htmlFile.write(' <th colspan="2">' + DataLog['ColNames'][1] + '</th>\n')
self.htmlFile.write(' <th colspan=' + str(1+self.htmlUEConnected) + '>'+ DataLog['ColNames'][2] +'</th>\n') self.htmlFile.write(' <th colspan="2">'+ DataLog['ColNames'][2] +'</th>\n')
self.htmlFile.write(' </tr>\n') self.htmlFile.write(' </tr>\n')
for k in DataLog['Data']: for k in DataLog['Data']:
...@@ -506,7 +490,7 @@ class HTMLManagement(): ...@@ -506,7 +490,7 @@ class HTMLManagement():
self.htmlFile.close() 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)): if ((not self.htmlFooterCreated) and (self.htmlHeaderCreated)):
self.htmlFile = open('test_results.html', 'a') self.htmlFile = open('test_results.html', 'a')
currentTime = int(round(time.time() * 1000)) - self.startTime currentTime = int(round(time.time() * 1000)) - self.startTime
...@@ -517,25 +501,20 @@ class HTMLManagement(): ...@@ -517,25 +501,20 @@ class HTMLManagement():
self.htmlFile.write(' <td>' + self.desc + '</td>\n') self.htmlFile.write(' <td>' + self.desc + '</td>\n')
self.htmlFile.write(' <td>' + str(options) + '</td>\n') self.htmlFile.write(' <td>' + str(options) + '</td>\n')
if (str(status) == 'OK'): if (str(status) == 'OK'):
self.htmlFile.write(' <td bgcolor = "lightgreen" >' + str(status) + '</td>\n') self.htmlFile.write(f' <td bgcolor = "lightgreen" >{status}</td>\n')
elif (str(status) == 'KO'): elif (str(status) == 'KO'):
self.htmlFile.write(' <td bgcolor = "lightcoral" >' + str(status) + '</td>\n') self.htmlFile.write(f' <td bgcolor = "lightcoral" >{status}</td>\n')
else: else:
addOrangeBK = True addOrangeBK = True
self.htmlFile.write(' <td bgcolor = "orange" >' + str(status) + '</td>\n') self.htmlFile.write(f' <td bgcolor = "orange" >{status}</td>\n')
i = 0 if (addOrangeBK):
while (i < self.htmlUEConnected): self.htmlFile.write(' <td bgcolor = "orange" >')
if (i < ue_status): else:
if (not ue_queue.empty()): self.htmlFile.write(' <td>')
if (addOrangeBK): for i in infoList:
self.htmlFile.write(' <td bgcolor = "orange" >' + str(ue_queue.get()).replace('white', 'orange') + '</td>\n') self.htmlFile.write(f' <pre>{i}</pre>')
else:
self.htmlFile.write(' <td>' + str(ue_queue.get()) + '</td>\n') self.htmlFile.write(' </td>')
else:
self.htmlFile.write(' <td>-</td>\n')
else:
self.htmlFile.write(' <td>-</td>\n')
i += 1
self.htmlFile.write(' </tr>\n') self.htmlFile.write(' </tr>\n')
self.htmlFile.close() self.htmlFile.close()
...@@ -546,80 +525,80 @@ class HTMLManagement(): ...@@ -546,80 +525,80 @@ class HTMLManagement():
vId = 0 vId = 0
for version in CCR.versions: for version in CCR.versions:
self.htmlFile.write(' <tr bgcolor = "#F0F0F0" >\n') self.htmlFile.write(' <tr bgcolor = "#F0F0F0" >\n')
self.htmlFile.write(' <td colspan=' + str(5+self.htmlUEConnected) + '><b> Results for cppcheck v ' + version + ' </b></td>\n') self.htmlFile.write(' <td colspan="6"><b> Results for cppcheck v ' + version + ' </b></td>\n')
self.htmlFile.write(' </tr>\n') self.htmlFile.write(' </tr>\n')
self.htmlFile.write(' <tr>\n') self.htmlFile.write(' <tr>\n')
self.htmlFile.write(' <td></td>\n') self.htmlFile.write(' <td></td>\n')
self.htmlFile.write(' <td colspan=2 bgcolor = "lightcyan" ><b> NB ERRORS</b></td>\n') self.htmlFile.write(' <td colspan="2" bgcolor = "lightcyan" ><b> NB ERRORS</b></td>\n')
if CCR.nbErrors[vId] == 0: if CCR.nbErrors[vId] == 0:
myColor = 'lightgreen' myColor = 'lightgreen'
elif CCR.nbErrors[vId] < 20: elif CCR.nbErrors[vId] < 20:
myColor = 'orange' myColor = 'orange'
else: else:
myColor = 'lightcoral' myColor = 'lightcoral'
self.htmlFile.write(' <td colspan=' + str(2+self.htmlUEConnected) + ' bgcolor = "' + myColor + '"><b>' + str(CCR.nbErrors[vId]) + '</b></td>\n') self.htmlFile.write(' <td colspan="3" bgcolor = "' + myColor + '"><b>' + str(CCR.nbErrors[vId]) + '</b></td>\n')
self.htmlFile.write(' </tr>\n') self.htmlFile.write(' </tr>\n')
self.htmlFile.write(' <tr>\n') self.htmlFile.write(' <tr>\n')
self.htmlFile.write(' <td></td>\n') self.htmlFile.write(' <td></td>\n')
self.htmlFile.write(' <td colspan=2 bgcolor = "lightcyan" ><b> NB WARNINGS</b></td>\n') self.htmlFile.write(' <td colspan="2" bgcolor = "lightcyan" ><b> NB WARNINGS</b></td>\n')
if CCR.nbWarnings[vId] == 0: if CCR.nbWarnings[vId] == 0:
myColor = 'lightgreen' myColor = 'lightgreen'
elif CCR.nbWarnings[vId] < 20: elif CCR.nbWarnings[vId] < 20:
myColor = 'orange' myColor = 'orange'
else: else:
myColor = 'lightcoral' myColor = 'lightcoral'
self.htmlFile.write(' <td colspan=' + str(2+self.htmlUEConnected) + ' bgcolor = "' + myColor + '"><b>' + str(CCR.nbWarnings[vId]) + '</b></td>\n') self.htmlFile.write(' <td colspan="3" bgcolor = "' + myColor + '"><b>' + str(CCR.nbWarnings[vId]) + '</b></td>\n')
self.htmlFile.write(' </tr>\n') self.htmlFile.write(' </tr>\n')
self.htmlFile.write(' <tr bgcolor = "#F0F0F0" >\n') self.htmlFile.write(' <tr bgcolor = "#F0F0F0" >\n')
self.htmlFile.write(' <td colspan=' + str(5+self.htmlUEConnected) + '> ----------------- </td>\n') self.htmlFile.write(' <td colspan="6"> ----------------- </td>\n')
self.htmlFile.write(' </tr>\n') self.htmlFile.write(' </tr>\n')
self.htmlFile.write(' <tr>\n') self.htmlFile.write(' <tr>\n')
self.htmlFile.write(' <td></td>\n') self.htmlFile.write(' <td></td>\n')
self.htmlFile.write(' <td colspan=2 bgcolor = "lightcyan" ><b> Memory leak</b></td>\n') self.htmlFile.write(' <td colspan="2" bgcolor = "lightcyan" ><b> Memory leak</b></td>\n')
self.htmlFile.write(' <td colspan=' + str(2+self.htmlUEConnected) + '>' + str(CCR.nbMemLeaks[vId]) + '</td>\n') self.htmlFile.write(' <td colspan="3">' + str(CCR.nbMemLeaks[vId]) + '</td>\n')
self.htmlFile.write(' </tr>\n') self.htmlFile.write(' </tr>\n')
self.htmlFile.write(' <tr>\n') self.htmlFile.write(' <tr>\n')
self.htmlFile.write(' <td></td>\n') self.htmlFile.write(' <td></td>\n')
self.htmlFile.write(' <td colspan=2 bgcolor = "lightcyan" ><b> Possible null pointer deference</b></td>\n') self.htmlFile.write(' <td colspan="2" bgcolor = "lightcyan" ><b> Possible null pointer deference</b></td>\n')
self.htmlFile.write(' <td colspan=' + str(2+self.htmlUEConnected) + '>' + str(CCR.nbNullPtrs[vId]) + '</td>\n') self.htmlFile.write(' <td colspan="3">' + str(CCR.nbNullPtrs[vId]) + '</td>\n')
self.htmlFile.write(' </tr>\n') self.htmlFile.write(' </tr>\n')
self.htmlFile.write(' <tr>\n') self.htmlFile.write(' <tr>\n')
self.htmlFile.write(' <td></td>\n') self.htmlFile.write(' <td></td>\n')
self.htmlFile.write(' <td colspan=2 bgcolor = "lightcyan" ><b> Uninitialized variable</b></td>\n') self.htmlFile.write(' <td colspan="2" bgcolor = "lightcyan" ><b> Uninitialized variable</b></td>\n')
self.htmlFile.write(' <td colspan=' + str(2+self.htmlUEConnected) + '>' + str(CCR.nbUninitVars[vId]) + '</td>\n') self.htmlFile.write(' <td colspan="3">' + str(CCR.nbUninitVars[vId]) + '</td>\n')
self.htmlFile.write(' </tr>\n') self.htmlFile.write(' </tr>\n')
self.htmlFile.write(' <tr>\n') self.htmlFile.write(' <tr>\n')
self.htmlFile.write(' <td></td>\n') self.htmlFile.write(' <td></td>\n')
self.htmlFile.write(' <td colspan=2 bgcolor = "lightcyan" ><b> Undefined behaviour shifting</b></td>\n') self.htmlFile.write(' <td colspan="2" bgcolor = "lightcyan" ><b> Undefined behaviour shifting</b></td>\n')
self.htmlFile.write(' <td colspan=' + str(2+self.htmlUEConnected) + '>' + str(CCR.nbTooManyBitsShift[vId]) + '</td>\n') self.htmlFile.write(' <td colspan="3">' + str(CCR.nbTooManyBitsShift[vId]) + '</td>\n')
self.htmlFile.write(' </tr>\n') self.htmlFile.write(' </tr>\n')
self.htmlFile.write(' <tr>\n') self.htmlFile.write(' <tr>\n')
self.htmlFile.write(' <td></td>\n') self.htmlFile.write(' <td></td>\n')
self.htmlFile.write(' <td colspan=2 bgcolor = "lightcyan" ><b> Signed integer overflow</b></td>\n') self.htmlFile.write(' <td colspan="2" bgcolor = "lightcyan" ><b> Signed integer overflow</b></td>\n')
self.htmlFile.write(' <td colspan=' + str(2+self.htmlUEConnected) + '>' + str(CCR.nbIntegerOverflow[vId]) + '</td>\n') self.htmlFile.write(' <td colspan="3">' + str(CCR.nbIntegerOverflow[vId]) + '</td>\n')
self.htmlFile.write(' </tr>\n') self.htmlFile.write(' </tr>\n')
self.htmlFile.write(' <tr bgcolor = "#F0F0F0" >\n') self.htmlFile.write(' <tr bgcolor = "#F0F0F0" >\n')
self.htmlFile.write(' <td colspan=' + str(5+self.htmlUEConnected) + '> </td>\n') self.htmlFile.write(' <td colspan="6"> </td>\n')
self.htmlFile.write(' </tr>\n') self.htmlFile.write(' </tr>\n')
self.htmlFile.write(' <tr>\n') self.htmlFile.write(' <tr>\n')
self.htmlFile.write(' <td></td>\n') self.htmlFile.write(' <td></td>\n')
self.htmlFile.write(' <td colspan=2 bgcolor = "lightcyan" ><b> Printf formatting issues</b></td>\n') self.htmlFile.write(' <td colspan="2" bgcolor = "lightcyan" ><b> Printf formatting issues</b></td>\n')
self.htmlFile.write(' <td colspan=' + str(2+self.htmlUEConnected) + '>' + str(CCR.nbInvalidPrintf[vId]) + '</td>\n') self.htmlFile.write(' <td colspan="3">' + str(CCR.nbInvalidPrintf[vId]) + '</td>\n')
self.htmlFile.write(' </tr>\n') self.htmlFile.write(' </tr>\n')
self.htmlFile.write(' <tr>\n') self.htmlFile.write(' <tr>\n')
self.htmlFile.write(' <td></td>\n') self.htmlFile.write(' <td></td>\n')
self.htmlFile.write(' <td colspan=2 bgcolor = "lightcyan" ><b> Modulo result is predetermined</b></td>\n') self.htmlFile.write(' <td colspan="2" bgcolor = "lightcyan" ><b> Modulo result is predetermined</b></td>\n')
self.htmlFile.write(' <td colspan=' + str(2+self.htmlUEConnected) + '>' + str(CCR.nbModuloAlways[vId]) + '</td>\n') self.htmlFile.write(' <td colspan="3">' + str(CCR.nbModuloAlways[vId]) + '</td>\n')
self.htmlFile.write(' </tr>\n') self.htmlFile.write(' </tr>\n')
self.htmlFile.write(' <tr>\n') self.htmlFile.write(' <tr>\n')
self.htmlFile.write(' <td></td>\n') self.htmlFile.write(' <td></td>\n')
self.htmlFile.write(' <td colspan=2 bgcolor = "lightcyan" ><b> Opposite Condition -> dead code</b></td>\n') self.htmlFile.write(' <td colspan="2" bgcolor = "lightcyan" ><b> Opposite Condition -> dead code</b></td>\n')
self.htmlFile.write(' <td colspan=' + str(2+self.htmlUEConnected) + '>' + str(CCR.nbOppoInnerCondition[vId]) + '</td>\n') self.htmlFile.write(' <td colspan="3">' + str(CCR.nbOppoInnerCondition[vId]) + '</td>\n')
self.htmlFile.write(' </tr>\n') self.htmlFile.write(' </tr>\n')
self.htmlFile.write(' <tr>\n') self.htmlFile.write(' <tr>\n')
self.htmlFile.write(' <td></td>\n') self.htmlFile.write(' <td></td>\n')
self.htmlFile.write(' <td colspan=2 bgcolor = "lightcyan" ><b> Wrong Scanf Nb Args</b></td>\n') self.htmlFile.write(' <td colspan="2" bgcolor = "lightcyan" ><b> Wrong Scanf Nb Args</b></td>\n')
self.htmlFile.write(' <td colspan=' + str(2+self.htmlUEConnected) + '>' + str(CCR.nbWrongScanfArg[vId]) + '</td>\n') self.htmlFile.write(' <td colspan="3">' + str(CCR.nbWrongScanfArg[vId]) + '</td>\n')
self.htmlFile.write(' </tr>\n') self.htmlFile.write(' </tr>\n')
vId += 1 vId += 1
...@@ -629,12 +608,12 @@ class HTMLManagement(): ...@@ -629,12 +608,12 @@ class HTMLManagement():
self.htmlFile = open('test_results.html', 'a') self.htmlFile = open('test_results.html', 'a')
if bool(testResult) == False and bool(testSummary) == False: if bool(testResult) == False and bool(testSummary) == False:
self.htmlFile.write(' <tr bgcolor = "red" >\n') self.htmlFile.write(' <tr bgcolor = "red" >\n')
self.htmlFile.write(' <td colspan=' + str(5+self.htmlUEConnected) + '><b> ----PHYSIM TESTING FAILED - Unable to recover the test logs ---- </b></td>\n') self.htmlFile.write(' <td colspan="6"><b> ----PHYSIM TESTING FAILED - Unable to recover the test logs ---- </b></td>\n')
self.htmlFile.write(' </tr>\n') self.htmlFile.write(' </tr>\n')
else: else:
# Tab header # Tab header
self.htmlFile.write(' <tr bgcolor = "#F0F0F0" >\n') self.htmlFile.write(' <tr bgcolor = "#F0F0F0" >\n')
self.htmlFile.write(' <td colspan=' + str(5+self.htmlUEConnected) + '><b> ---- PHYSIM TEST SUMMARY---- </b></td>\n') self.htmlFile.write(' <td colspan="6"><b> ---- PHYSIM TEST SUMMARY---- </b></td>\n')
self.htmlFile.write(' </tr>\n') self.htmlFile.write(' </tr>\n')
self.htmlFile.write(' <tr bgcolor = "#33CCFF" >\n') self.htmlFile.write(' <tr bgcolor = "#33CCFF" >\n')
self.htmlFile.write(' <th colspan="2">LogFile Name</th>\n') self.htmlFile.write(' <th colspan="2">LogFile Name</th>\n')
...@@ -652,27 +631,27 @@ class HTMLManagement(): ...@@ -652,27 +631,27 @@ class HTMLManagement():
self.htmlFile.write(' <td gcolor = "lightcyan" >' + str(testSummary['Nbpass']) + ' </td>\n') self.htmlFile.write(' <td gcolor = "lightcyan" >' + str(testSummary['Nbpass']) + ' </td>\n')
self.htmlFile.write(' </tr>\n') self.htmlFile.write(' </tr>\n')
self.htmlFile.write(' <tr bgcolor = "#F0F0F0" >\n') self.htmlFile.write(' <tr bgcolor = "#F0F0F0" >\n')
self.htmlFile.write(' <td colspan=' + str(5+self.htmlUEConnected) + '><b> ---- PHYSIM TEST DETAIL INFO---- </b></td>\n') self.htmlFile.write(' <td colspan="6"><b> ---- PHYSIM TEST DETAIL INFO---- </b></td>\n')
self.htmlFile.write(' </tr>\n') self.htmlFile.write(' </tr>\n')
self.htmlFile.write(' <tr bgcolor = "#33CCFF" >\n') self.htmlFile.write(' <tr bgcolor = "#33CCFF" >\n')
self.htmlFile.write(' <th colspan="2">Test Name</th>\n') self.htmlFile.write(' <th colspan="2">Test Name</th>\n')
self.htmlFile.write(' <th colspan="2">Test Description</th>\n') self.htmlFile.write(' <th colspan="2">Test Description</th>\n')
self.htmlFile.write(' <th colspan=' + str(1+self.htmlUEConnected) + '>Result</th>\n') self.htmlFile.write(' <th colspan="2">Result</th>\n')
self.htmlFile.write(' </tr>\n') self.htmlFile.write(' </tr>\n')
y = '' y = ''
for key, value in testResult.items(): for key, value in testResult.items():
x = key.split(".") x = key.split(".")
if x[0] != y: if x[0] != y:
self.htmlFile.write(' <tr bgcolor = "lightgreen" >\n') self.htmlFile.write(' <tr bgcolor = "lightgreen" >\n')
self.htmlFile.write(' <td style="text-align: center;" colspan=' + str(5+self.htmlUEConnected) + '><b>"' + x[0] + '" series </b></td>\n') self.htmlFile.write(' <td style="text-align: center;" colspan="6"><b>"' + x[0] + '" series </b></td>\n')
self.htmlFile.write(' </tr>\n') self.htmlFile.write(' </tr>\n')
y = x[0] y = x[0]
self.htmlFile.write(' <tr>\n') self.htmlFile.write(' <tr>\n')
self.htmlFile.write(' <td colspan="2" bgcolor = "lightcyan" >' + key + ' </td>\n') self.htmlFile.write(' <td colspan="2" bgcolor = "lightcyan" >' + key + ' </td>\n')
self.htmlFile.write(' <td colspan="2" bgcolor = "lightcyan" >' + value[0] + '</td>\n') self.htmlFile.write(' <td colspan="2" bgcolor = "lightcyan" >' + value[0] + '</td>\n')
if 'PASS' in value: if 'PASS' in value:
self.htmlFile.write(' <td colspan=' + str(1+self.htmlUEConnected) + ' bgcolor = "green" >' + value[1] + '</td>\n') self.htmlFile.write(' <td colspan="2" bgcolor = "green" >' + value[1] + '</td>\n')
else: else:
self.htmlFile.write(' <td colspan=' + str(1+self.htmlUEConnected) + ' bgcolor = "red" >' + value[1] + '</td>\n') self.htmlFile.write(' <td colspan="2" bgcolor = "red" >' + value[1] + '</td>\n')
self.htmlFile.close() self.htmlFile.close()
...@@ -780,22 +780,17 @@ class OaiCiTest(): ...@@ -780,22 +780,17 @@ class OaiCiTest():
logging.debug(' RSRP = ' + str(-140+nRSRP) + ' dBm') logging.debug(' RSRP = ' + str(-140+nRSRP) + ' dBm')
SSH.close() SSH.close()
SSH.disablePicocomClosure() SSH.disablePicocomClosure()
html_queue = SimpleQueue()
self.checkDevTTYisUnlocked() self.checkDevTTYisUnlocked()
if attach_status: if attach_status:
html_cell = '<pre style="background-color:white">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): if (nRSRQ is not None) and (nRSRP is not None):
html_cell += '\n RSRQ = ' + str(-20+(nRSRQ/2)) + ' dB' message += '\n RSRQ = ' + str(-20+(nRSRQ/2)) + ' dB'
html_cell += '\n RSRP = ' + str(-140+nRSRP) + ' dBm</pre>' message += '\n RSRP = ' + str(-140+nRSRP) + ' dBm'
else: HTML.CreateHtmlTestRowQueue('N/A', 'OK', [message])
html_cell += '</pre>'
html_queue.put(html_cell)
HTML.CreateHtmlTestRowQueue('N/A', 'OK', 1, html_queue)
else: else:
logging.error('\u001B[1m CAT-M module Attachment Failed\u001B[0m') logging.error('\u001B[1m CAT-M module Attachment Failed\u001B[0m')
html_cell = '<pre style="background-color:white">CAT-M module Attachment Failed</pre>' message = 'CAT-M module Attachment Failed'
html_queue.put(html_cell) HTML.CreateHtmlTestRowQueue('N/A', 'KO', [message])
HTML.CreateHtmlTestRowQueue('N/A', 'KO', 1, html_queue)
self.AutoTerminateUEandeNB(HTML,RAN,COTS_UE,EPC,InfraUE,CONTAINERS) self.AutoTerminateUEandeNB(HTML,RAN,COTS_UE,EPC,InfraUE,CONTAINERS)
def PingCatM(self,HTML,RAN,EPC,COTS_UE,InfraUE,CONTAINERS): def PingCatM(self,HTML,RAN,EPC,COTS_UE,InfraUE,CONTAINERS):
...@@ -886,12 +881,11 @@ class OaiCiTest(): ...@@ -886,12 +881,11 @@ class OaiCiTest():
logging.debug('\u001B[1;30;43m Packet Loss is not 0% \u001B[0m') logging.debug('\u001B[1;30;43m Packet Loss is not 0% \u001B[0m')
lock.release() lock.release()
SSH.close() SSH.close()
html_cell = '<pre style="background-color:white">CAT-M module\nIP Address : ' + moduleIPAddr + '\n' + qMsg + '</pre>' message = 'CAT-M module\nIP Address : ' + moduleIPAddr + '\n' + qMsg
statusQueue.put(html_cell)
if (packetLossOK): if (packetLossOK):
HTML.CreateHtmlTestRowQueue(self.ping_args, 'OK', 1, statusQueue) HTML.CreateHtmlTestRowQueue(self.ping_args, 'OK', [message])
else: 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) self.AutoTerminateUEandeNB(HTML,RAN,COTS_UE,EPC,InfraUE,CONTAINERS)
except: except:
os.kill(os.getppid(),signal.SIGUSR1) os.kill(os.getppid(),signal.SIGUSR1)
...@@ -1017,7 +1011,7 @@ class OaiCiTest(): ...@@ -1017,7 +1011,7 @@ class OaiCiTest():
return return
else: else:
attach_status = True attach_status = True
html_queue = SimpleQueue() message = ''
while (not status_queue.empty()): while (not status_queue.empty()):
count = status_queue.get() count = status_queue.get()
if (count < 0): if (count < 0):
...@@ -1025,23 +1019,22 @@ class OaiCiTest(): ...@@ -1025,23 +1019,22 @@ class OaiCiTest():
device_id = status_queue.get() device_id = status_queue.get()
message = status_queue.get() message = status_queue.get()
if (count < 0): if (count < 0):
html_cell = '<pre style="background-color:white">UE (' + device_id + ')\n' + message + '</pre>' message = 'UE (' + device_id + ')\n' + message
else: else:
html_cell = '<pre style="background-color:white">UE (' + device_id + ')\n' + message + ' in ' + str(count + 2) + ' seconds</pre>' message = 'UE (' + device_id + ')\n' + message + ' in ' + str(count + 2) + ' seconds'
html_queue.put(html_cell)
if (attach_status): if (attach_status):
cnt = 0 cnt = 0
while cnt < len(self.UEDevices): while cnt < len(self.UEDevices):
if self.UEDevicesStatus[cnt] == CONST.UE_STATUS_ATTACHING: if self.UEDevicesStatus[cnt] == CONST.UE_STATUS_ATTACHING:
self.UEDevicesStatus[cnt] = CONST.UE_STATUS_ATTACHED self.UEDevicesStatus[cnt] = CONST.UE_STATUS_ATTACHED
cnt += 1 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)) result = re.search('T_stdout', str(RAN.Initialize_eNB_args))
if result is not None: if result is not None:
logging.debug('Waiting 5 seconds to fill up record file') logging.debug('Waiting 5 seconds to fill up record file')
time.sleep(5) time.sleep(5)
else: 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) self.AutoTerminateUEandeNB(HTML,RAN,COTS_UE,EPC,InfraUE,CONTAINERS)
else: #if an ID is specified, it is a module from the yaml infrastructure file else: #if an ID is specified, it is a module from the yaml infrastructure file
...@@ -1418,19 +1411,17 @@ class OaiCiTest(): ...@@ -1418,19 +1411,17 @@ class OaiCiTest():
self.AutoTerminateUEandeNB(HTML,RAN,COTS_UE,EPC,InfraUE,CONTAINERS) self.AutoTerminateUEandeNB(HTML,RAN,COTS_UE,EPC,InfraUE,CONTAINERS)
else: else:
check_status = True check_status = True
html_queue = SimpleQueue() messages = []
while (not status_queue.empty()): while (not status_queue.empty()):
count = status_queue.get() count = status_queue.get()
if (count < 0): if (count < 0):
check_status = False check_status = False
device_id = status_queue.get() device_id = status_queue.get()
message = status_queue.get() messages.append(f'UE ({device_id})\n{status_queue.get()}')
html_cell = '<pre style="background-color:white">UE (' + device_id + ')\n' + message + '</pre>'
html_queue.put(html_cell)
if check_status and passStatus: if check_status and passStatus:
HTML.CreateHtmlTestRowQueue(htmlOptions, 'OK', len(self.UEDevices), html_queue) HTML.CreateHtmlTestRowQueue(htmlOptions, 'OK', messages)
else: else:
HTML.CreateHtmlTestRowQueue(htmlOptions, 'KO', len(self.UEDevices), html_queue) HTML.CreateHtmlTestRowQueue(htmlOptions, 'KO', messages)
self.AutoTerminateUEandeNB(HTML,RAN,COTS_UE,EPC,InfraUE,CONTAINERS) self.AutoTerminateUEandeNB(HTML,RAN,COTS_UE,EPC,InfraUE,CONTAINERS)
def GetAllUEIPAddresses(self): def GetAllUEIPAddresses(self):
...@@ -1694,10 +1685,8 @@ class OaiCiTest(): ...@@ -1694,10 +1685,8 @@ class OaiCiTest():
os.kill(os.getppid(),signal.SIGUSR1) os.kill(os.getppid(),signal.SIGUSR1)
def PingNoS1_wrong_exit(self, qMsg,HTML): def PingNoS1_wrong_exit(self, qMsg,HTML):
html_queue = SimpleQueue() message = 'OAI UE ping result\n{qMsg}'
html_cell = '<pre style="background-color:white">OAI UE ping result\n' + qMsg + '</pre>' HTML.CreateHtmlTestRowQueue(self.ping_args, 'KO', [message])
html_queue.put(html_cell)
HTML.CreateHtmlTestRowQueue(self.ping_args, 'KO', len(self.UEDevices), html_queue)
def PingNoS1(self,HTML,RAN,EPC,COTS_UE,InfraUE,CONTAINERS): def PingNoS1(self,HTML,RAN,EPC,COTS_UE,InfraUE,CONTAINERS):
SSH=sshconnection.SSHConnection() SSH=sshconnection.SSHConnection()
...@@ -1773,14 +1762,11 @@ class OaiCiTest(): ...@@ -1773,14 +1762,11 @@ class OaiCiTest():
qMsg += '\nPacket Loss is not 0%' qMsg += '\nPacket Loss is not 0%'
logging.debug('\u001B[1;30;43m Packet Loss is not 0% \u001B[0m') logging.debug('\u001B[1;30;43m Packet Loss is not 0% \u001B[0m')
SSH.close() SSH.close()
html_queue = SimpleQueue() message = f'OAI UE ping result\n{qMsg}'
ip_addr = 'TBD'
html_cell = '<pre style="background-color:white">OAI UE ping result\n' + qMsg + '</pre>'
html_queue.put(html_cell)
if packetLossOK: if packetLossOK:
HTML.CreateHtmlTestRowQueue(self.ping_args, 'OK', len(self.UEDevices), html_queue) HTML.CreateHtmlTestRowQueue(self.ping_args, 'OK', [message])
else: 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 # copying on the EPC server for logCollection
if ping_from_eNB is not None: if ping_from_eNB is not None:
...@@ -1857,7 +1843,7 @@ class OaiCiTest(): ...@@ -1857,7 +1843,7 @@ class OaiCiTest():
self.AutoTerminateUEandeNB(HTML,RAN,COTS_UE,EPC,InfraUE,CONTAINERS) self.AutoTerminateUEandeNB(HTML,RAN,COTS_UE,EPC,InfraUE,CONTAINERS)
else: else:
ping_status = True ping_status = True
html_queue = SimpleQueue() messages = []
while (not status_queue.empty()): while (not status_queue.empty()):
count = status_queue.get() count = status_queue.get()
if (count < 0): if (count < 0):
...@@ -1865,12 +1851,11 @@ class OaiCiTest(): ...@@ -1865,12 +1851,11 @@ class OaiCiTest():
device_id = status_queue.get() device_id = status_queue.get()
ip_addr = status_queue.get() ip_addr = status_queue.get()
message = status_queue.get() message = status_queue.get()
html_cell = '<pre style="background-color:white">UE (' + device_id + ')\nIP Address : ' + ip_addr + '\n' + message + '</pre>' messages.append(f'UE ({device_id})\nIP Address : {ip_addr}\n{message}')
html_queue.put(html_cell)
if (ping_status): if (ping_status):
HTML.CreateHtmlTestRowQueue(self.ping_args, 'OK', len(self.UEDevices), html_queue) HTML.CreateHtmlTestRowQueue(self.ping_args, 'OK', messages)
else: 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) self.AutoTerminateUEandeNB(HTML,RAN,COTS_UE,EPC,InfraUE,CONTAINERS)
def Iperf_ComputeTime(self): def Iperf_ComputeTime(self):
...@@ -2909,7 +2894,7 @@ class OaiCiTest(): ...@@ -2909,7 +2894,7 @@ class OaiCiTest():
iperf_status = False iperf_status = False
else: else:
iperf_status = True iperf_status = True
html_queue = SimpleQueue() messages = []
while (not status_queue.empty()): while (not status_queue.empty()):
count = status_queue.get() count = status_queue.get()
if (count < 0): if (count < 0):
...@@ -2919,14 +2904,13 @@ class OaiCiTest(): ...@@ -2919,14 +2904,13 @@ class OaiCiTest():
device_id = status_queue.get() device_id = status_queue.get()
ip_addr = status_queue.get() ip_addr = status_queue.get()
message = status_queue.get() message = status_queue.get()
html_cell = '<pre style="background-color:white">UE (' + device_id + ')\nIP Address : ' + ip_addr + '\n' + message + '</pre>' messages.append(f'UE ({device_id})\nIP Address : {ip_addr}\n{message}')
html_queue.put(html_cell)
if (iperf_noperf and iperf_status): 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): elif (iperf_status):
HTML.CreateHtmlTestRowQueue(self.iperf_args, 'OK', len(self.UEDevices), html_queue) HTML.CreateHtmlTestRowQueue(self.iperf_args, 'OK', messages)
else: 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) self.AutoTerminateUEandeNB(HTML,RAN,COTS_UE,EPC,InfraUE,CONTAINERS)
def Iperf(self,HTML,RAN,EPC,COTS_UE, InfraUE,CONTAINERS): def Iperf(self,HTML,RAN,EPC,COTS_UE, InfraUE,CONTAINERS):
...@@ -3001,7 +2985,7 @@ class OaiCiTest(): ...@@ -3001,7 +2985,7 @@ class OaiCiTest():
else: else:
iperf_status = True iperf_status = True
iperf_noperf = False iperf_noperf = False
html_queue = SimpleQueue() messages = []
while (not status_queue.empty()): while (not status_queue.empty()):
count = status_queue.get() count = status_queue.get()
if (count < 0): if (count < 0):
...@@ -3010,15 +2994,14 @@ class OaiCiTest(): ...@@ -3010,15 +2994,14 @@ class OaiCiTest():
iperf_noperf = True iperf_noperf = True
device_id = status_queue.get() device_id = status_queue.get()
ip_addr = status_queue.get() ip_addr = status_queue.get()
message = status_queue.get() msg = status_queue.get()
html_cell = '<pre style="background-color:white">UE (' + device_id + ')\nIP Address : ' + ip_addr + '\n' + message + '</pre>' messages.append(f'UE ({device_id})\nIP Address : {ip_addr}\n{msg}')
html_queue.put(html_cell)
if (iperf_noperf and iperf_status): 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): elif (iperf_status):
HTML.CreateHtmlTestRowQueue(self.iperf_args, 'OK', len(self.UEDevices), html_queue) HTML.CreateHtmlTestRowQueue(self.iperf_args, 'OK', messages)
else: 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) self.AutoTerminateUEandeNB(HTML,RAN,COTS_UE,EPC,InfraUE,CONTAINERS)
def CheckProcessExist(self, check_eNB, check_OAI_UE,RAN,EPC): def CheckProcessExist(self, check_eNB, check_OAI_UE,RAN,EPC):
......
...@@ -81,11 +81,7 @@ class PhySim: ...@@ -81,11 +81,7 @@ class PhySim:
#once parsed move the local logfile to its folder for tidiness #once parsed move the local logfile to its folder for tidiness
os.system('mv '+self.__runLogFile+' '+ self.__runLogPath+'/.') os.system('mv '+self.__runLogFile+' '+ self.__runLogPath+'/.')
#updating the HTML with results HTML.CreateHtmlTestRowQueue(self.runargs, 'OK', [info])
html_cell = '<pre style="background-color:white">' + info + '</pre>'
html_queue=SimpleQueue()
html_queue.put(html_cell)
HTML.CreateHtmlTestRowQueue(self.runargs, 'OK', 1, html_queue)
return HTML return HTML
def __CheckResults_LDPCt1Test(self,HTML,CONST,testcase_id): def __CheckResults_LDPCt1Test(self,HTML,CONST,testcase_id):
...@@ -131,8 +127,7 @@ class PhySim: ...@@ -131,8 +127,7 @@ class PhySim:
if ret != 0: if ret != 0:
error_msg = f'could not recover test result file {filename}' error_msg = f'could not recover test result file {filename}'
logging.error(error_msg) logging.error(error_msg)
html_queue.put(f'<pre style="background-color:white">{error_msg}</pre>') HTML.CreateHtmlTestRowQueue("could not recover results", 'KO', [error_msg])
HTML.CreateHtmlTestRowQueue("could not recover results", 'KO', 1, html_queue)
self.exitStatus = 1 self.exitStatus = 1
return HTML return HTML
...@@ -145,13 +140,11 @@ class PhySim: ...@@ -145,13 +140,11 @@ class PhySim:
#updating the HTML with results #updating the HTML with results
if PUSCH_OK: if PUSCH_OK:
html_queue.put('<pre style="background-color:white">succeeded</pre>') HTML.CreateHtmlTestRowQueue(self.runargs, 'OK', 1, ["succeeded"])
HTML.CreateHtmlTestRowQueue(self.runargs, 'OK', 1, html_queue)
else: else:
error_msg = 'error: no "PUSCH test OK"' error_msg = 'error: no "PUSCH test OK"'
logging.error(error_msg) logging.error(error_msg)
html_queue.put(f'<pre style="background-color:white">{error_msg}</pre>') HTML.CreateHtmlTestRowQueue(self.runargs, 'KO', 1, [error_msg])
HTML.CreateHtmlTestRowQueue(self.runargs, 'KO', 1, html_queue)
self.exitStatus = 1 self.exitStatus = 1
return HTML return HTML
......
...@@ -357,63 +357,43 @@ class StaticCodeAnalysis(): ...@@ -357,63 +357,43 @@ class StaticCodeAnalysis():
if nbFilesNotFormatted == 0: if nbFilesNotFormatted == 0:
HTML.CreateHtmlTestRow('File(s) Format', 'OK', CONST.ALL_PROCESSES_OK) HTML.CreateHtmlTestRow('File(s) Format', 'OK', CONST.ALL_PROCESSES_OK)
else: else:
html_queue = SimpleQueue() html_cell = f'Number of files not following OAI Rules: {nbFilesNotFormatted}\n'
html_cell = '<pre style="background-color:white">\n'
html_cell += 'Number of files not following OAI Rules: ' + str(nbFilesNotFormatted) + '\n'
for nFile in listFilesNotFormatted: for nFile in listFilesNotFormatted:
html_cell += str(nFile).strip() + '\n' html_cell += str(nFile).strip() + '\n'
html_cell += '</pre>' HTML.CreateHtmlTestRowQueue('File(s) Format', 'KO', [html_cell])
html_queue.put(html_cell)
HTML.CreateHtmlTestRowQueue('File(s) Format', 'KO', 1, html_queue)
del(html_cell) del(html_cell)
del(html_queue)
logging.debug('header files not respecting the circular dependency protection: ' + str(len(circularHeaderDependencyFiles))) logging.debug('header files not respecting the circular dependency protection: ' + str(len(circularHeaderDependencyFiles)))
if len(circularHeaderDependencyFiles) == 0: if len(circularHeaderDependencyFiles) == 0:
HTML.CreateHtmlTestRow('Header Circular Dependency', 'OK', CONST.ALL_PROCESSES_OK) HTML.CreateHtmlTestRow('Header Circular Dependency', 'OK', CONST.ALL_PROCESSES_OK)
else: else:
html_queue = SimpleQueue() html_cell = f'Number of files not respecting: {len(circularHeaderDependencyFiles)}\n'
html_cell = '<pre style="background-color:white">\n'
html_cell += 'Number of files not respecting: ' + str(len(circularHeaderDependencyFiles)) + '\n'
for nFile in circularHeaderDependencyFiles: for nFile in circularHeaderDependencyFiles:
html_cell += str(nFile).strip() + '\n' html_cell += str(nFile).strip() + '\n'
html_cell += '</pre>' HTML.CreateHtmlTestRowQueue('Header Circular Dependency', 'KO', [html_cell])
html_queue.put(html_cell)
HTML.CreateHtmlTestRowQueue('Header Circular Dependency', 'KO', 1, html_queue)
del(html_cell) del(html_cell)
del(html_queue)
finalStatus = -1 finalStatus = -1
logging.debug('files with a GNU GPL license: ' + str(len(gnuGplLicenceFiles))) logging.debug('files with a GNU GPL license: ' + str(len(gnuGplLicenceFiles)))
if len(gnuGplLicenceFiles) == 0: if len(gnuGplLicenceFiles) == 0:
HTML.CreateHtmlTestRow('Files w/ GNU GPL License', 'OK', CONST.ALL_PROCESSES_OK) HTML.CreateHtmlTestRow('Files w/ GNU GPL License', 'OK', CONST.ALL_PROCESSES_OK)
else: else:
html_queue = SimpleQueue() html_cell = f'Number of files not respecting: {len(gnuGplLicenceFiles)}\n'
html_cell = '<pre style="background-color:white">\n'
html_cell += 'Number of files not respecting: ' + str(len(gnuGplLicenceFiles)) + '\n'
for nFile in gnuGplLicenceFiles: for nFile in gnuGplLicenceFiles:
html_cell += str(nFile).strip() + '\n' html_cell += str(nFile).strip() + '\n'
html_cell += '</pre>' HTML.CreateHtmlTestRowQueue('Files w/ GNU GPL License', 'KO', html_queue)
html_queue.put(html_cell)
HTML.CreateHtmlTestRowQueue('Files w/ GNU GPL License', 'KO', 1, html_queue)
del(html_cell) del(html_cell)
del(html_queue)
finalStatus = -1 finalStatus = -1
logging.debug('files with a suspect license: ' + str(len(suspectLicenceFiles))) logging.debug('files with a suspect license: ' + str(len(suspectLicenceFiles)))
if len(suspectLicenceFiles) == 0: if len(suspectLicenceFiles) == 0:
HTML.CreateHtmlTestRow('Files with suspect license', 'OK', CONST.ALL_PROCESSES_OK) HTML.CreateHtmlTestRow('Files with suspect license', 'OK', CONST.ALL_PROCESSES_OK)
else: else:
html_queue = SimpleQueue() html_cell = f'Number of files not respecting: {len(suspectLicenceFiles)}\n'
html_cell = '<pre style="background-color:white">\n'
html_cell += 'Number of files not respecting: ' + str(len(suspectLicenceFiles)) + '\n'
for nFile in suspectLicenceFiles: for nFile in suspectLicenceFiles:
html_cell += str(nFile).strip() + '\n' html_cell += str(nFile).strip() + '\n'
html_cell += '</pre>' HTML.CreateHtmlTestRowQueue('Files with suspect license', 'KO', [html_cell])
html_queue.put(html_cell)
HTML.CreateHtmlTestRowQueue('Files with suspect license', 'KO', 1, html_queue)
del(html_cell) del(html_cell)
del(html_queue)
finalStatus = -1 finalStatus = -1
else: else:
......
...@@ -237,7 +237,7 @@ class EPCManagement(): ...@@ -237,7 +237,7 @@ class EPCManagement():
sys.exit('Insufficient EPC Parameters') sys.exit('Insufficient EPC Parameters')
mySSH = SSH.SSHConnection() mySSH = SSH.SSHConnection()
mySSH.open(self.IPAddress, self.UserName, self.Password) mySSH.open(self.IPAddress, self.UserName, self.Password)
html_cell = '<pre style="background-color:white">\n' html_cell = ''
if re.match('ltebox', self.Type, re.IGNORECASE): if re.match('ltebox', self.Type, re.IGNORECASE):
logging.debug('Using the SABOX simulated HSS') 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) 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(): ...@@ -288,11 +288,8 @@ class EPCManagement():
html_cell += '\n' html_cell += '\n'
else: else:
logging.error('This option should not occur!') logging.error('This option should not occur!')
html_cell += '</pre>'
mySSH.close() mySSH.close()
html_queue = SimpleQueue() HTML.CreateHtmlTestRowQueue(self.Type, 'OK', [html_cell])
html_queue.put(html_cell)
HTML.CreateHtmlTestRowQueue(self.Type, 'OK', 1, html_queue)
def SetAmfIPAddress(self): def SetAmfIPAddress(self):
# Not an error if we don't need an 5GCN # Not an error if we don't need an 5GCN
...@@ -551,10 +548,7 @@ class EPCManagement(): ...@@ -551,10 +548,7 @@ class EPCManagement():
else: else:
logging.error('This should not happen!') logging.error('This should not happen!')
mySSH.close() mySSH.close()
html_queue = SimpleQueue() HTML.CreateHtmlTestRowQueue(self.Type, 'OK', [message])
html_cell = '<pre style="background-color:white">' + message + '</pre>'
html_queue.put(html_cell)
HTML.CreateHtmlTestRowQueue(self.Type, 'OK', 1, html_queue)
def DeployEpc(self, HTML): def DeployEpc(self, HTML):
logging.debug('Trying to deploy') logging.debug('Trying to deploy')
...@@ -644,7 +638,7 @@ class EPCManagement(): ...@@ -644,7 +638,7 @@ class EPCManagement():
expectedHealthyContainers += 1 expectedHealthyContainers += 1
mySSH.command('docker-compose config | grep --colour=never image', '\$', 10) mySSH.command('docker-compose config | grep --colour=never image', '\$', 10)
html_cell = '<pre style="background-color:white">\n' html_cell = ''
listOfImages = mySSH.getBefore() listOfImages = mySSH.getBefore()
for imageLine in listOfImages.split('\\r\\n'): for imageLine in listOfImages.split('\\r\\n'):
res1 = re.search('image: (?P<name>[a-zA-Z0-9\-]+):(?P<tag>[a-zA-Z0-9\-]+)', str(imageLine)) res1 = re.search('image: (?P<name>[a-zA-Z0-9\-]+):(?P<tag>[a-zA-Z0-9\-]+)', str(imageLine))
...@@ -666,7 +660,6 @@ class EPCManagement(): ...@@ -666,7 +660,6 @@ class EPCManagement():
if res4 is not None: if res4 is not None:
html_cell += '(' + res4.group('date') + ')' html_cell += '(' + res4.group('date') + ')'
html_cell += '\n' html_cell += '\n'
html_cell += '</pre>'
# Checking if all are healthy # Checking if all are healthy
cnt = 0 cnt = 0
while (cnt < 3): while (cnt < 3):
...@@ -682,8 +675,6 @@ class EPCManagement(): ...@@ -682,8 +675,6 @@ class EPCManagement():
logging.debug(' -- ' + str(healthyNb) + ' healthy container(s)') logging.debug(' -- ' + str(healthyNb) + ' healthy container(s)')
logging.debug(' -- ' + str(unhealthyNb) + ' unhealthy container(s)') logging.debug(' -- ' + str(unhealthyNb) + ' unhealthy container(s)')
logging.debug(' -- ' + str(startingNb) + ' still starting container(s)') logging.debug(' -- ' + str(startingNb) + ' still starting container(s)')
html_queue = SimpleQueue()
html_queue.put(html_cell)
if healthyNb == expectedHealthyContainers: 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) 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: if self.isMagmaUsed:
...@@ -695,11 +686,11 @@ class EPCManagement(): ...@@ -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.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() mySSH.close()
logging.debug('Deployment OK') logging.debug('Deployment OK')
HTML.CreateHtmlTestRowQueue(self.Type, 'OK', 1, html_queue) HTML.CreateHtmlTestRowQueue(self.Type, 'OK', [html_cell])
else: else:
mySSH.close() mySSH.close()
logging.debug('Deployment went wrong') logging.debug('Deployment went wrong')
HTML.CreateHtmlTestRowQueue(self.Type, 'KO', 1, html_queue) HTML.CreateHtmlTestRowQueue(self.Type, 'KO', [html_cell])
def UndeployEpc(self, HTML): def UndeployEpc(self, HTML):
logging.debug('Trying to undeploy') logging.debug('Trying to undeploy')
...@@ -767,15 +758,12 @@ class EPCManagement(): ...@@ -767,15 +758,12 @@ class EPCManagement():
mySSH.command('docker inspect --format=\'{{.Name}}\' prod-oai-public-net prod-oai-private-net', '\$', 10) mySSH.command('docker inspect --format=\'{{.Name}}\' prod-oai-public-net prod-oai-private-net', '\$', 10)
noMoreNetworkNb = mySSH.getBefore().count('No such object') noMoreNetworkNb = mySSH.getBefore().count('No such object')
mySSH.close() mySSH.close()
html_queue = SimpleQueue()
html_cell = '<pre style="background-color:white">' + message + '</pre>'
html_queue.put(html_cell)
if noMoreContainerNb == nbContainers and noMoreNetworkNb == 2: if noMoreContainerNb == nbContainers and noMoreNetworkNb == 2:
logging.debug('Undeployment OK') logging.debug('Undeployment OK')
HTML.CreateHtmlTestRowQueue(self.Type, 'OK', 1, html_queue) HTML.CreateHtmlTestRowQueue(self.Type, 'OK', [message])
else: else:
logging.debug('Undeployment went wrong') logging.debug('Undeployment went wrong')
HTML.CreateHtmlTestRowQueue(self.Type, 'KO', 1, html_queue) HTML.CreateHtmlTestRowQueue(self.Type, 'KO', [message])
def LogCollectHSS(self): def LogCollectHSS(self):
mySSH = SSH.SSHConnection() mySSH = SSH.SSHConnection()
......
...@@ -717,7 +717,6 @@ elif re.match('^InitiateHtml$', mode, re.IGNORECASE): ...@@ -717,7 +717,6 @@ elif re.match('^InitiateHtml$', mode, re.IGNORECASE):
terminate_ue_flag = False terminate_ue_flag = False
CiTestObj.GetAllUEDevices(terminate_ue_flag) CiTestObj.GetAllUEDevices(terminate_ue_flag)
CiTestObj.GetAllCatMDevices(terminate_ue_flag) CiTestObj.GetAllCatMDevices(terminate_ue_flag)
HTML.SethtmlUEConnected(len(CiTestObj.UEDevices) + len(CiTestObj.CatMDevices))
HTML.htmlNb_Smartphones=len(CiTestObj.UEDevices) HTML.htmlNb_Smartphones=len(CiTestObj.UEDevices)
HTML.htmlNb_CATM_Modules=len(CiTestObj.CatMDevices) HTML.htmlNb_CATM_Modules=len(CiTestObj.CatMDevices)
HTML.CreateHtmlHeader(CiTestObj.ADBIPAddress) HTML.CreateHtmlHeader(CiTestObj.ADBIPAddress)
...@@ -824,7 +823,6 @@ elif re.match('^TesteNB$', mode, re.IGNORECASE) or re.match('^TestUE$', mode, re ...@@ -824,7 +823,6 @@ elif re.match('^TesteNB$', mode, re.IGNORECASE) or re.match('^TestUE$', mode, re
CiTestObj.UEDevices.append('COTS-Module') CiTestObj.UEDevices.append('COTS-Module')
else: else:
CiTestObj.UEDevices.append('OAI-UE') CiTestObj.UEDevices.append('OAI-UE')
HTML.SethtmlUEConnected(len(CiTestObj.UEDevices) + len(CiTestObj.CatMDevices))
HTML.CreateHtmlTabHeader() HTML.CreateHtmlTabHeader()
# On CI bench w/ containers, we need to validate if IP routes are set # On CI bench w/ containers, we need to validate if IP routes are set
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment