From 8ef52d54327bbb7683e2a14d8d401a6ffba46700 Mon Sep 17 00:00:00 2001 From: Robert Schmidt Date: Tue, 22 Oct 2024 09:08:51 +0200 Subject: [PATCH 1/4] Remove pyshark import: is not used --- ci-scripts/cls_containerize.py | 1 - 1 file changed, 1 deletion(-) diff --git a/ci-scripts/cls_containerize.py b/ci-scripts/cls_containerize.py index 7b9956174e..42fa260de2 100644 --- a/ci-scripts/cls_containerize.py +++ b/ci-scripts/cls_containerize.py @@ -38,7 +38,6 @@ import os import shutil import subprocess import time -import pyshark import threading import cls_cmd from multiprocessing import Process, Lock, SimpleQueue From f8b480be3e0db226c2908788fc436b2e108f65d1 Mon Sep 17 00:00:00 2001 From: Robert Schmidt Date: Tue, 22 Oct 2024 09:23:01 +0200 Subject: [PATCH 2/4] Remove stats_monitor.py: it is not used by the CI --- ci-scripts/main.py | 1 - ci-scripts/ran.py | 17 --- ci-scripts/stats_monitor.py | 139 ------------------ ci-scripts/xml_files/fr1_nsa_2x2_quectel.xml | 2 - .../fr1_nsa_2x2_quectel_attach_detach.xml | 2 - 5 files changed, 161 deletions(-) delete mode 100755 ci-scripts/stats_monitor.py diff --git a/ci-scripts/main.py b/ci-scripts/main.py index 0886f4f9fa..9a35a8ef7c 100644 --- a/ci-scripts/main.py +++ b/ci-scripts/main.py @@ -162,7 +162,6 @@ def ExecuteActionWithParam(action): elif action == 'Initialize_eNB': RAN.eNB_Trace=test.findtext('eNB_Trace') - RAN.eNB_Stats=test.findtext('eNB_Stats') datalog_rt_stats_file=test.findtext('rt_stats_cfg') if datalog_rt_stats_file is None: RAN.datalog_rt_stats_file='datalog_rt_stats.default.yaml' diff --git a/ci-scripts/ran.py b/ci-scripts/ran.py index 4c56c5e8ac..431e8b1030 100644 --- a/ci-scripts/ran.py +++ b/ci-scripts/ran.py @@ -91,7 +91,6 @@ class RANManagement(): self.datalog_rt_stats={} self.datalog_rt_stats_file='datalog_rt_stats.default.yaml' self.eNB_Trace = '' #if 'yes', Tshark will be launched at initialization - self.eNB_Stats = '' #if 'yes', Statistics Monitor will be launched at initialization self.USRPIPAddress = '' #checkers from xml self.ran_checkers={} @@ -227,19 +226,6 @@ class RANManagement(): mySSH.command('echo ' + lPassWord + ' | sudo -S rm -Rf enb_' + self.testCase_id + '.log', '\$', 5) mySSH.command('echo $USER; nohup sudo -E stdbuf -o0 ./my-lte-softmodem-run' + str(self.eNB_instance) + '.sh > ' + lSourcePath + '/cmake_targets/enb_' + self.testCase_id + '.log 2>&1 &', lUserName, 10) - - #stats monitoring during runtime - time.sleep(20) - monitor_file='../ci-scripts/stats_monitor.py' - conf_file='../ci-scripts/stats_monitor_conf.yaml' - if self.eNB_Stats=='yes': - if self.air_interface[self.eNB_instance] == 'lte-softmodem': - mySSH.command('echo $USER; nohup python3 ' + monitor_file + ' ' + conf_file + ' ' + self.testCase_id + ' enb 2>&1 > enb_stats_monitor_execution.log &', '\$', 5) - else: - mySSH.command('echo $USER; nohup python3 ' + monitor_file + ' ' + conf_file + ' ' + self.testCase_id + ' gnb 2>&1 > gnb_stats_monitor_execution.log &', '\$', 5) - - - self.eNBLogFiles[int(self.eNB_instance)] = 'enb_' + self.testCase_id + '.log' if extra_options != '': self.eNBOptions[int(self.eNB_instance)] = extra_options @@ -453,9 +439,6 @@ class RANManagement(): #debug / tentative mySSH.copyout(self.eNBIPAddress, self.eNBUserName, self.eNBPassword, './nrL1_stats.log', self.eNBSourceCodePath + '/cmake_targets/') mySSH.copyout(self.eNBIPAddress, self.eNBUserName, self.eNBPassword, './nrMAC_stats.log', self.eNBSourceCodePath + '/cmake_targets/') - mySSH.copyout(self.eNBIPAddress, self.eNBUserName, self.eNBPassword, './gnb_stats_monitor.pickle', self.eNBSourceCodePath + '/cmake_targets/') - mySSH.copyout(self.eNBIPAddress, self.eNBUserName, self.eNBPassword, './gnb_stats_monitor.png', self.eNBSourceCodePath + '/cmake_targets/') - # mySSH.copyout(self.eNBIPAddress, self.eNBUserName, self.eNBPassword, './' + fileToAnalyze, self.eNBSourceCodePath + '/cmake_targets/') logging.debug('\u001B[1m Analyzing ' + nodeB_prefix + 'NB logfile \u001B[0m ' + fileToAnalyze) logStatus = self.AnalyzeLogFile_eNB(fileToAnalyze, HTML, self.ran_checkers) diff --git a/ci-scripts/stats_monitor.py b/ci-scripts/stats_monitor.py deleted file mode 100755 index d7cad7ae55..0000000000 --- a/ci-scripts/stats_monitor.py +++ /dev/null @@ -1,139 +0,0 @@ -""" -To create graphs and pickle from runtime statistics in L1,MAC,RRC,PDCP files -""" - -import subprocess -import time -import shlex -import re -import sys -import pickle -import matplotlib.pyplot as plt -import numpy as np -import yaml -import os - - -class StatMonitor(): - def __init__(self,cfg_file): - with open(cfg_file,'r') as file: - self.d = yaml.load(file) - for node in self.d:#so far we have enb or gnb as nodes - for metric_l1 in self.d[node]: #first level of metric keys - if metric_l1!="graph": #graph is a reserved word to configure graph paging, so it is disregarded - if self.d[node][metric_l1] is None:#first level is None -> create array - self.d[node][metric_l1]=[] - else: #first level is not None -> there is a second level -> create array - for metric_l2 in self.d[node][metric_l1]: - self.d[node][metric_l1][metric_l2]=[] - - - - def process_gnb (self,node_type,output): - for line in output: - tmp=line.decode("utf-8") - result=re.match(r'^.*\bdlsch_rounds\b ([0-9]+)\/([0-9]+).*\bdlsch_errors\b ([0-9]+)',tmp) - if result is not None: - self.d[node_type]['dlsch_err'].append(int(result.group(3))) - percentage=float(result.group(2))/float(result.group(1)) - self.d[node_type]['dlsch_err_perc_round_1'].append(percentage) - result=re.match(r'^.*\bulsch_rounds\b ([0-9]+)\/([0-9]+).*\bulsch_errors\b ([0-9]+)',tmp) - if result is not None: - self.d[node_type]['ulsch_err'].append(int(result.group(3))) - percentage=float(result.group(2))/float(result.group(1)) - self.d[node_type]['ulsch_err_perc_round_1'].append(percentage) - - for k in self.d[node_type]['rt']: - result=re.match(rf'^.*\b{k}\b:\s+([0-9\.]+) us;\s+([0-9]+);\s+([0-9\.]+) us;',tmp) - if result is not None: - self.d[node_type]['rt'][k].append(float(result.group(3))) - - - def process_enb (self,node_type,output): - for line in output: - tmp=line.decode("utf-8") - result=re.match(r'^.*\bPHR\b ([0-9]+).+\bbler\b ([0-9]+\.[0-9]+).+\bmcsoff\b ([0-9]+).+\bmcs\b ([0-9]+)',tmp) - if result is not None: - self.d[node_type]['PHR'].append(int(result.group(1))) - self.d[node_type]['bler'].append(float(result.group(2))) - self.d[node_type]['mcsoff'].append(int(result.group(3))) - self.d[node_type]['mcs'].append(int(result.group(4))) - - - def collect(self,testcase_id,node_type): - if node_type=='enb': - files = ["L1_stats.log", "MAC_stats.log", "PDCP_stats.log", "RRC_stats.log"] - else: #'gnb' - files = ["nrL1_stats.log", "nrMAC_stats.log", "nrPDCP_stats.log", "nrRRC_stats.log"] - #append each file's contents to another file (prepended with CI-) for debug - for f in files: - if os.path.isfile(f): - cmd = 'cat '+ f + ' >> CI-'+testcase_id+'-'+f - subprocess.Popen(cmd,shell=True) - #join the files for further processing - cmd='cat ' - for f in files: - if os.path.isfile(f): - cmd += f+' ' - process=subprocess.Popen(shlex.split(cmd), stdout=subprocess.PIPE) - output = process.stdout.readlines() - if node_type=='enb': - self.process_enb(node_type,output) - else: #'gnb' - self.process_gnb(node_type,output) - - - def graph(self,testcase_id, node_type): - for page in self.d[node_type]['graph']:#work out a set a graphs per page - col = 1 - figure, axis = plt.subplots(len(self.d[node_type]['graph'][page]), col ,figsize=(10, 10)) - i=0 - for m in self.d[node_type]['graph'][page]:#metric may refer to 1 level or 2 levels - metric_path=m.split('.') - if len(metric_path)==1:#1 level - metric_l1=metric_path[0] - major_ticks = np.arange(0, len(self.d[node_type][metric_l1])+1, 1) - axis[i].set_xticks(major_ticks) - axis[i].set_xticklabels([]) - axis[i].plot(self.d[node_type][metric_l1],marker='o') - axis[i].set_xlabel('time') - axis[i].set_ylabel(metric_l1) - axis[i].set_title(metric_l1) - - else:#2 levels - metric_l1=metric_path[0] - metric_l2=metric_path[1] - major_ticks = np.arange(0, len(self.d[node_type][metric_l1][metric_l2])+1, 1) - axis[i].set_xticks(major_ticks) - axis[i].set_xticklabels([]) - axis[i].plot(self.d[node_type][metric_l1][metric_l2],marker='o') - axis[i].set_xlabel('time') - axis[i].set_ylabel(metric_l2) - axis[i].set_title(metric_l2) - i+=1 - - plt.tight_layout() - #save as png - plt.savefig(node_type+'_stats_monitor_'+testcase_id+'_'+page+'.png') - - -if __name__ == "__main__": - - cfg_filename = sys.argv[1] #yaml file as metrics config - testcase_id = sys.argv[2] #test case id to name files accordingly, especially if we have several tests in a sequence - node = sys.argv[3]#enb or gnb - mon=StatMonitor(cfg_filename) - - #collecting stats when modem process is stopped - CMD='ps aux | grep modem | grep -v grep' - process=subprocess.Popen(CMD, shell=True, stdout=subprocess.PIPE) - output = process.stdout.readlines() - while len(output)!=0 : - mon.collect(testcase_id,node) - process=subprocess.Popen(CMD, shell=True, stdout=subprocess.PIPE) - output = process.stdout.readlines() - time.sleep(1) - print('Process stopped') - with open(node+'_stats_monitor.pickle', 'wb') as handle: - pickle.dump(mon.d, handle, protocol=pickle.HIGHEST_PROTOCOL) - mon.graph(testcase_id, node) diff --git a/ci-scripts/xml_files/fr1_nsa_2x2_quectel.xml b/ci-scripts/xml_files/fr1_nsa_2x2_quectel.xml index 3efff2f0c7..93e39f15bf 100644 --- a/ci-scripts/xml_files/fr1_nsa_2x2_quectel.xml +++ b/ci-scripts/xml_files/fr1_nsa_2x2_quectel.xml @@ -108,7 +108,6 @@ 0 lte yes - yes 172.21.19.13 @@ -120,7 +119,6 @@ 1 1 nr - yes datalog_rt_stats.2x2.yaml 172.21.19.14 diff --git a/ci-scripts/xml_files/fr1_nsa_2x2_quectel_attach_detach.xml b/ci-scripts/xml_files/fr1_nsa_2x2_quectel_attach_detach.xml index 170bb6443b..554226f167 100644 --- a/ci-scripts/xml_files/fr1_nsa_2x2_quectel_attach_detach.xml +++ b/ci-scripts/xml_files/fr1_nsa_2x2_quectel_attach_detach.xml @@ -112,7 +112,6 @@ 0 lte yes - yes 172.21.19.13 @@ -124,7 +123,6 @@ 1 1 nr - yes datalog_rt_stats.2x2.yaml 172.21.19.14 From a736bec5702ed1918188ef65722a9a416fbe6c7f Mon Sep 17 00:00:00 2001 From: Robert Schmidt Date: Tue, 22 Oct 2024 09:23:21 +0200 Subject: [PATCH 3/4] Remove eNB_Trace: it is not used by the CI --- ci-scripts/main.py | 1 - ci-scripts/ran.py | 18 ------------------ ci-scripts/xml_files/fr1_nsa_2x2_quectel.xml | 1 - .../fr1_nsa_2x2_quectel_attach_detach.xml | 1 - ci-scripts/xml_files/fr1_nsa_quectel.xml | 1 - .../fr1_nsa_quectel_attach_detach.xml | 1 - ci-scripts/xml_files/fr1_nsa_quectel_long.xml | 1 - 7 files changed, 24 deletions(-) diff --git a/ci-scripts/main.py b/ci-scripts/main.py index 9a35a8ef7c..b1c661d6aa 100644 --- a/ci-scripts/main.py +++ b/ci-scripts/main.py @@ -161,7 +161,6 @@ def ExecuteActionWithParam(action): success = CONTAINERS.BuildRunTests(HTML) elif action == 'Initialize_eNB': - RAN.eNB_Trace=test.findtext('eNB_Trace') datalog_rt_stats_file=test.findtext('rt_stats_cfg') if datalog_rt_stats_file is None: RAN.datalog_rt_stats_file='datalog_rt_stats.default.yaml' diff --git a/ci-scripts/ran.py b/ci-scripts/ran.py index 431e8b1030..9ac1ac0df6 100644 --- a/ci-scripts/ran.py +++ b/ci-scripts/ran.py @@ -90,7 +90,6 @@ class RANManagement(): self.runtime_stats= '' self.datalog_rt_stats={} self.datalog_rt_stats_file='datalog_rt_stats.default.yaml' - self.eNB_Trace = '' #if 'yes', Tshark will be launched at initialization self.USRPIPAddress = '' #checkers from xml self.ran_checkers={} @@ -129,23 +128,6 @@ class RANManagement(): mySSH = SSH.SSHConnection() cwd = os.getcwd() - #Get pcap on enb and/or gnb if enabled in the xml - if self.eNB_Trace=='yes': - if self.air_interface[self.eNB_instance] == 'lte-softmodem': - pcapfile_prefix="enb_" - else: - pcapfile_prefix="gnb_" - mySSH.open(lIpAddr, lUserName, lPassWord) - eth_interface = 'any' - fltr = 'sctp' - logging.debug('\u001B[1m Launching tshark on xNB on interface ' + eth_interface + ' with filter "' + fltr + '"\u001B[0m') - pcapfile = pcapfile_prefix + self.testCase_id + '_log.pcap' - mySSH.command('echo ' + lPassWord + ' | sudo -S rm -f /tmp/' + pcapfile , '\$', 5) - mySSH.command('echo $USER; nohup sudo -E tshark -i ' + eth_interface + ' -f "' + fltr + '" -w /tmp/' + pcapfile + ' > /dev/null 2>&1 &','\$', 5) - mySSH.close() - - - # If tracer options is on, running tshark on EPC side and capture traffic b/ EPC and eNB if EPC.IPAddress != "none": localEpcIpAddr = EPC.IPAddress diff --git a/ci-scripts/xml_files/fr1_nsa_2x2_quectel.xml b/ci-scripts/xml_files/fr1_nsa_2x2_quectel.xml index 93e39f15bf..4cf8973581 100644 --- a/ci-scripts/xml_files/fr1_nsa_2x2_quectel.xml +++ b/ci-scripts/xml_files/fr1_nsa_2x2_quectel.xml @@ -107,7 +107,6 @@ 0 0 lte - yes 172.21.19.13 diff --git a/ci-scripts/xml_files/fr1_nsa_2x2_quectel_attach_detach.xml b/ci-scripts/xml_files/fr1_nsa_2x2_quectel_attach_detach.xml index 554226f167..2aadb391bc 100644 --- a/ci-scripts/xml_files/fr1_nsa_2x2_quectel_attach_detach.xml +++ b/ci-scripts/xml_files/fr1_nsa_2x2_quectel_attach_detach.xml @@ -111,7 +111,6 @@ 0 0 lte - yes 172.21.19.13 diff --git a/ci-scripts/xml_files/fr1_nsa_quectel.xml b/ci-scripts/xml_files/fr1_nsa_quectel.xml index 755f3ad969..7f824010d9 100644 --- a/ci-scripts/xml_files/fr1_nsa_quectel.xml +++ b/ci-scripts/xml_files/fr1_nsa_quectel.xml @@ -114,7 +114,6 @@ 0 0 lte - yes diff --git a/ci-scripts/xml_files/fr1_nsa_quectel_attach_detach.xml b/ci-scripts/xml_files/fr1_nsa_quectel_attach_detach.xml index 66bcf54be2..faa365a105 100644 --- a/ci-scripts/xml_files/fr1_nsa_quectel_attach_detach.xml +++ b/ci-scripts/xml_files/fr1_nsa_quectel_attach_detach.xml @@ -79,7 +79,6 @@ 0 0 lte - yes diff --git a/ci-scripts/xml_files/fr1_nsa_quectel_long.xml b/ci-scripts/xml_files/fr1_nsa_quectel_long.xml index aebf6bf668..7687363d78 100644 --- a/ci-scripts/xml_files/fr1_nsa_quectel_long.xml +++ b/ci-scripts/xml_files/fr1_nsa_quectel_long.xml @@ -77,7 +77,6 @@ 0 0 lte - yes From 670e1fb8b4e4f3300743d4c9577e7dcd08f3a797 Mon Sep 17 00:00:00 2001 From: Robert Schmidt Date: Tue, 22 Oct 2024 09:37:37 +0200 Subject: [PATCH 4/4] CI: remove unknown imports and uses of names pyflakes warns about various errors, addressed here. For cls_cluster.py, remove (unknown) sys.exit and replace through Exception, as sys.exit() has the unwanted effect that the CI script would stop. Instead, raise an Exception that would show the problem in the HTML, and ensures that the script runs until the end. These are the warnings flagged by pyflakes. cls_cluster.py:297:4: undefined name 'sys' cls_containerize.py:39:1: 'subprocess' imported but unused cls_containerize.py:41:1: 'threading' imported but unused cls_containerize.py:43:1: 'multiprocessing.Process' imported but unused cls_containerize.py:43:1: 'multiprocessing.Lock' imported but unused cls_containerize.py:43:1: 'multiprocessing.SimpleQueue' imported but unused cls_containerize.py:49:1: 'cls_cluster as OC' imported but unused cls_containerize.py:50:1: redefinition of unused 'cls_cmd' from line 42 cls_module.py:28:1: 'os' imported but unused cls_module.py:29:1: 'sys' imported but unused cls_module.py:34:1: 'subprocess' imported but unused cls_module.py:35:1: 'datetime.datetime' imported but unused cls_module.py:211:11: undefined name 'sshconnection' cls_oaicitest.py:37:1: 'pexpect' imported but unused cls_oaicitest.py:47:1: 'cls_cluster as OC' imported but unused cls_oaicitest.py:54:1: 'matplotlib.pyplot as plt' imported but unused cls_oaicitest.py:55:1: 'numpy as np' imported but unused cls_oai_html.py:34:1: 'sys' imported but unused cls_oai_html.py:41:1: 'multiprocessing.Process' imported but unused cls_oai_html.py:41:1: 'multiprocessing.Lock' imported but unused cls_oai_html.py:41:1: 'multiprocessing.SimpleQueue' imported but unused cls_physim.py:37:1: 'multiprocessing.SimpleQueue' imported but unused cls_static_code_analysis.py:39:1: 'time' imported but unused cls_static_code_analysis.py:40:1: 'multiprocessing.Process' imported but unused cls_static_code_analysis.py:40:1: 'multiprocessing.Lock' imported but unused cls_static_code_analysis.py:40:1: 'multiprocessing.SimpleQueue' imported but unused epc.py:41:1: 'multiprocessing.Process' imported but unused epc.py:41:1: 'multiprocessing.Lock' imported but unused epc.py:41:1: 'multiprocessing.SimpleQueue' imported but unused main.py:60:1: 'pexpect' imported but unused main.py:66:1: 'datetime' imported but unused main.py:68:1: redefinition of unused 'subprocess' from line 63 main.py:70:1: 'multiprocessing.Process' imported but unused main.py:70:1: 'multiprocessing.Lock' imported but unused main.py:70:1: 'multiprocessing.SimpleQueue' imported but unused provideUniqueImageTag.py:2:1: 'os' imported but unused --- ci-scripts/cls_cluster.py | 14 +++++++------- ci-scripts/cls_cmd.py | 1 - ci-scripts/cls_containerize.py | 5 ----- ci-scripts/cls_module.py | 11 ----------- ci-scripts/cls_oai_html.py | 2 -- ci-scripts/cls_oaicitest.py | 6 ------ ci-scripts/cls_physim.py | 1 - ci-scripts/cls_static_code_analysis.py | 2 -- ci-scripts/epc.py | 2 -- ci-scripts/main.py | 4 ---- ci-scripts/provideUniqueImageTag.py | 1 - ci-scripts/ran.py | 1 - 12 files changed, 7 insertions(+), 43 deletions(-) diff --git a/ci-scripts/cls_cluster.py b/ci-scripts/cls_cluster.py index 7051ddc446..503529d256 100644 --- a/ci-scripts/cls_cluster.py +++ b/ci-scripts/cls_cluster.py @@ -50,9 +50,9 @@ CN_CONTAINERS = ["", "-c nrf", "-c amf", "-c smf", "-c upf", "-c ausf", "-c udm" def OC_login(cmd, ocUserName, ocPassword, ocProjectName): if ocUserName == '' or ocPassword == '' or ocProjectName == '': HELP.GenericHelp(CONST.Version) - sys.exit('Insufficient Parameter: no OC Credentials') + raise ValueError('Insufficient Parameter: no OC Credentials') if OCRegistry.startswith("http") or OCRegistry.endswith("/"): - sys.exit(f'ocRegistry {OCRegistry} should not start with http:// or https:// and not end on a slash /') + raise ValueError(f'ocRegistry {OCRegistry} should not start with http:// or https:// and not end on a slash /') ret = cmd.run(f'oc login -u {ocUserName} -p {ocPassword} --server {OCUrl}') if ret.returncode != 0: logging.error('\u001B[1m OC Cluster Login Failed\u001B[0m') @@ -244,7 +244,7 @@ class Cluster: if self.testSvrId == None: self.testSvrId = self.eNBIPAddress if self.imageToPull == '': HELP.GenericHelp(CONST.Version) - sys.exit('Insufficient Parameter') + raise ValueError('Insufficient Parameter') logging.debug(f'Pull OC image {self.imageToPull} to server {self.testSvrId}') self.testCase_id = HTML.testCase_id cmd = cls_cmd.getConnection(self.testSvrId) @@ -282,19 +282,19 @@ class Cluster: def BuildClusterImage(self, HTML): if self.ranRepository == '' or self.ranBranch == '' or self.ranCommitID == '': HELP.GenericHelp(CONST.Version) - sys.exit(f'Insufficient Parameter: ranRepository {self.ranRepository} ranBranch {ranBranch} ranCommitID {self.ranCommitID}') + raise ValueError(f'Insufficient Parameter: ranRepository {self.ranRepository} ranBranch {ranBranch} ranCommitID {self.ranCommitID}') lIpAddr = self.eNBIPAddress lSourcePath = self.eNBSourceCodePath if lIpAddr == '' or lSourcePath == '': - sys.exit('Insufficient Parameter: eNBSourceCodePath missing') + raise ValueError('Insufficient Parameter: eNBSourceCodePath missing') ocUserName = self.OCUserName ocPassword = self.OCPassword ocProjectName = self.OCProjectName if ocUserName == '' or ocPassword == '' or ocProjectName == '': HELP.GenericHelp(CONST.Version) - sys.exit('Insufficient Parameter: no OC Credentials') + raise ValueError('Insufficient Parameter: no OC Credentials') if self.OCRegistry.startswith("http") or self.OCRegistry.endswith("/"): - sys.exit(f'ocRegistry {self.OCRegistry} should not start with http:// or https:// and not end on a slash /') + raise ValueError(f'ocRegistry {self.OCRegistry} should not start with http:// or https:// and not end on a slash /') logging.debug(f'Building on cluster triggered from server: {lIpAddr}') self.cmd = cls_cmd.RemoteCmd(lIpAddr) diff --git a/ci-scripts/cls_cmd.py b/ci-scripts/cls_cmd.py index f0fe2950f8..8784b70831 100644 --- a/ci-scripts/cls_cmd.py +++ b/ci-scripts/cls_cmd.py @@ -31,7 +31,6 @@ import subprocess as sp import os import paramiko import uuid -import sys import time SSHTIMEOUT=7 diff --git a/ci-scripts/cls_containerize.py b/ci-scripts/cls_containerize.py index 42fa260de2..5a3408250a 100644 --- a/ci-scripts/cls_containerize.py +++ b/ci-scripts/cls_containerize.py @@ -36,17 +36,12 @@ import re # reg import logging import os import shutil -import subprocess import time -import threading -import cls_cmd -from multiprocessing import Process, Lock, SimpleQueue from zipfile import ZipFile #----------------------------------------------------------- # OAI Testing modules #----------------------------------------------------------- -import cls_cluster as OC import cls_cmd import sshconnection as SSH import helpreadme as HELP diff --git a/ci-scripts/cls_module.py b/ci-scripts/cls_module.py index f5539606a4..731dd5776a 100644 --- a/ci-scripts/cls_module.py +++ b/ci-scripts/cls_module.py @@ -25,14 +25,10 @@ #--------------------------------------------------------------------- #to use isfile -import os -import sys import logging #time.sleep import time import re -import subprocess -from datetime import datetime import yaml import cls_cmd @@ -208,13 +204,6 @@ class Module_UE: def _enableTrace(self): raise Exception("not implemented") - mySSH = sshconnection.SSHConnection() - mySSH.open(self.HostIPAddress, self.HostUsername, self.HostPassword) - #delete old artifacts - mySSH.command('echo ' + ' ' + ' | sudo -S rm -rf ci_qlog','\$',5) - #start Trace, artifact is created in home dir - mySSH.command('echo $USER; nohup sudo -E QLog/QLog -s ci_qlog -f NR5G.cfg > /dev/null 2>&1 &','\$', 5) - mySSH.close() def _disableTrace(self): raise Exception("not implemented") diff --git a/ci-scripts/cls_oai_html.py b/ci-scripts/cls_oai_html.py index 93176d1375..b2efcc66b7 100644 --- a/ci-scripts/cls_oai_html.py +++ b/ci-scripts/cls_oai_html.py @@ -31,14 +31,12 @@ #----------------------------------------------------------- # Import #----------------------------------------------------------- -import sys # arg import re # reg import fileinput import logging import os import time import subprocess -from multiprocessing import Process, Lock, SimpleQueue import constants as CONST diff --git a/ci-scripts/cls_oaicitest.py b/ci-scripts/cls_oaicitest.py index 1729a45620..f286aa9558 100644 --- a/ci-scripts/cls_oaicitest.py +++ b/ci-scripts/cls_oaicitest.py @@ -34,7 +34,6 @@ #----------------------------------------------------------- import sys # arg import re # reg -import pexpect # pexpect import time # sleep import os import logging @@ -44,16 +43,11 @@ import json #import our libs import helpreadme as HELP import constants as CONST -import cls_cluster as OC import sshconnection import cls_module import cls_cmd -logging.getLogger("matplotlib").setLevel(logging.WARNING) -import matplotlib.pyplot as plt -import numpy as np - #----------------------------------------------------------- # Helper functions used here and in other classes #----------------------------------------------------------- diff --git a/ci-scripts/cls_physim.py b/ci-scripts/cls_physim.py index 7d4dd7d33a..ccdd34e9a9 100644 --- a/ci-scripts/cls_physim.py +++ b/ci-scripts/cls_physim.py @@ -34,7 +34,6 @@ import sshconnection #to update the HTML object import cls_oai_html import cls_cmd -from multiprocessing import SimpleQueue #for log folder maintenance import os import re diff --git a/ci-scripts/cls_static_code_analysis.py b/ci-scripts/cls_static_code_analysis.py index ed5867c4cb..f2951b0528 100644 --- a/ci-scripts/cls_static_code_analysis.py +++ b/ci-scripts/cls_static_code_analysis.py @@ -36,8 +36,6 @@ import re # reg import logging import os from pathlib import Path -import time -from multiprocessing import Process, Lock, SimpleQueue #----------------------------------------------------------- # OAI Testing modules diff --git a/ci-scripts/epc.py b/ci-scripts/epc.py index 97d1f1a8cb..e025c514d9 100644 --- a/ci-scripts/epc.py +++ b/ci-scripts/epc.py @@ -38,8 +38,6 @@ import os import time import signal -from multiprocessing import Process, Lock, SimpleQueue - #----------------------------------------------------------- # OAI Testing modules #----------------------------------------------------------- diff --git a/ci-scripts/main.py b/ci-scripts/main.py index b1c661d6aa..3904ac908d 100644 --- a/ci-scripts/main.py +++ b/ci-scripts/main.py @@ -57,17 +57,13 @@ import cls_oai_html #----------------------------------------------------------- import sys # arg import re # reg -import pexpect # pexpect import time # sleep import os import subprocess import xml.etree.ElementTree as ET import logging -import datetime import signal -import subprocess import traceback -from multiprocessing import Process, Lock, SimpleQueue logging.basicConfig( level=logging.DEBUG, stream=sys.stdout, diff --git a/ci-scripts/provideUniqueImageTag.py b/ci-scripts/provideUniqueImageTag.py index 88d51ca6f8..01b3e25f8f 100644 --- a/ci-scripts/provideUniqueImageTag.py +++ b/ci-scripts/provideUniqueImageTag.py @@ -1,5 +1,4 @@ import argparse -import os import re import subprocess import sys diff --git a/ci-scripts/ran.py b/ci-scripts/ran.py index 9ac1ac0df6..96ec6306e9 100644 --- a/ci-scripts/ran.py +++ b/ci-scripts/ran.py @@ -36,7 +36,6 @@ import re # reg import logging import os import time -from multiprocessing import Process, Lock, SimpleQueue import yaml import cls_cmd