From 7afedd21f537590d199c28ed38123e53770bdd9f Mon Sep 17 00:00:00 2001 From: Jaroslava Fiedlerova Date: Wed, 3 May 2023 17:14:20 +0200 Subject: [PATCH 1/7] CI: Pull cluster image - modif of OC project selection --- ci-scripts/cls_cluster.py | 5 +++-- ci-scripts/cls_containerize.py | 2 +- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/ci-scripts/cls_cluster.py b/ci-scripts/cls_cluster.py index 648d132b9e..aef6da8a38 100644 --- a/ci-scripts/cls_cluster.py +++ b/ci-scripts/cls_cluster.py @@ -199,9 +199,10 @@ class Cluster: HELP.EPCSrvHelp(self.imageToPull) sys.exit('Insufficient eNB Parameters') lIpAddr = self.eNBIPAddress + ocProjectName = NAMESPACE self.testCase_id = HTML.testCase_id cmd = cls_cmd.getConnection(lIpAddr) - succeeded = OC_login(cmd, self.OCUserName, self.OCPassword, self.OCProjectName) + succeeded = OC_login(cmd, self.OCUserName, self.OCPassword, ocProjectName) if not succeeded: logging.error('\u001B[1m OC Cluster Login Failed\u001B[0m') HTML.CreateHtmlTestRow('N/A', 'KO', CONST.OC_LOGIN_FAIL) @@ -214,7 +215,7 @@ class Cluster: HTML.CreateHtmlTestRow('N/A', 'KO', CONST.OC_LOGIN_FAIL) return False for image in self.imageToPull: - imagePrefix = f'{self.OCRegistry}{self.OCProjectName}' + imagePrefix = f'{self.OCRegistry}{ocProjectName}' imageTag = cls_containerize.ImageTagToUse(image, self.ranCommitID, self.ranBranch, self.ranAllowMerge) ret = cmd.run(f'docker pull {imagePrefix}/{imageTag}') if ret.returncode != 0: diff --git a/ci-scripts/cls_containerize.py b/ci-scripts/cls_containerize.py index 8c684a62d8..6b5e4e50af 100644 --- a/ci-scripts/cls_containerize.py +++ b/ci-scripts/cls_containerize.py @@ -800,7 +800,7 @@ class Containerize(): logging.debug('Removing test images locally') myCmd = cls_cmd.LocalCmd() - imageNames = ['oai-enb', 'oai-gnb', 'oai-lte-ue', 'oai-nr-ue', 'oai-lte-ru', 'oai-nr-cuup'] + imageNames = ['oai-enb', 'oai-gnb', 'oai-lte-ue', 'oai-nr-ue', 'oai-lte-ru', 'oai-nr-cuup', 'oai-gnb-aw2s'] for image in imageNames: imageTag = ImageTagToUse(image, self.ranCommitID, self.ranBranch, self.ranAllowMerge) cmd = f'docker rmi oai-ci/{imageTag}' From d237e43f6cf5b6834735e6841677c59ad2e97204 Mon Sep 17 00:00:00 2001 From: Jaroslava Fiedlerova Date: Wed, 3 May 2023 17:47:38 +0200 Subject: [PATCH 2/7] CI: AW2S pipeline - iperf test added - IPERF3 option created in cls_oaicitest.py - retrieval of CN amf and traffic-server IP address from pods - modification of gNB config file (do_SRS set, max UL MCS increased), removal of unused config file - change of AmariUE config file to support 2x2 - modification of xml file for aw2s pipeline - iperf test added - new xml file for cleanup (terminate AmariUE, clean test server images) created --- ci-scripts/ci_ueinfra.yaml | 2 +- ci-scripts/cls_oaicitest.py | 46 ++++++++++++- ...nf => gnb.sa.band78.51prb.aw2s.dddsu.conf} | 8 +-- .../xml_files/container_sa_aw2s_asue.xml | 64 ++++++++++++++++--- .../container_sa_aw2s_asue_cleanup.xml | 46 +++++++++++++ .../yaml_files/sa_aw2s_gnb/docker-compose.yml | 2 +- 6 files changed, 151 insertions(+), 17 deletions(-) rename ci-scripts/conf_files/{gnb.sa.band78.51prb.aw2s.ddsuu.conf => gnb.sa.band78.51prb.aw2s.dddsu.conf} (99%) create mode 100644 ci-scripts/xml_files/container_sa_aw2s_asue_cleanup.xml diff --git a/ci-scripts/ci_ueinfra.yaml b/ci-scripts/ci_ueinfra.yaml index 52049f58c1..cb6f500628 100644 --- a/ci-scripts/ci_ueinfra.yaml +++ b/ci-scripts/ci_ueinfra.yaml @@ -49,7 +49,7 @@ adb_ue_2: amarisoft_ue: Host: amariue - InitScript: /root/NV18-06-2022/lteue-linux-2023-03-17/lteue /root/oaicicd/ran_sa_aw2s_asue/aw2s-multi-20897.cfg & + InitScript: /root/NV18-06-2022/lteue-linux-2023-03-17/lteue /root/oaicicd/ran_sa_aw2s_asue/aw2s-multi-20897-2x2.cfg & TermScript: /root/NV18-06-2022/lteue-linux-2023-03-17/doc/ws.js 127.0.0.1:9002 '{"message":"quit"}' amarisoft_ue_1: Host: amariue diff --git a/ci-scripts/cls_oaicitest.py b/ci-scripts/cls_oaicitest.py index 623fc928c0..e97a1dd18e 100644 --- a/ci-scripts/cls_oaicitest.py +++ b/ci-scripts/cls_oaicitest.py @@ -49,6 +49,7 @@ import concurrent.futures #import our libs import helpreadme as HELP import constants as CONST +import cls_cluster as OC import sshconnection import cls_module_ue @@ -58,6 +59,7 @@ logging.getLogger("matplotlib").setLevel(logging.WARNING) import matplotlib.pyplot as plt import numpy as np +OC_CN_PROJECT = "oaicicd-core-for-ci-ran" #----------------------------------------------------------- # OaiCiTest Class Definition #----------------------------------------------------------- @@ -231,7 +233,6 @@ class OaiCiTest(): [f.result() for f in futures] HTML.CreateHtmlTestRowQueue('N/A', 'OK', messages) - def InitializeOAIUE(self,HTML,RAN,EPC,CONTAINERS): if self.UEIPAddress == '' or self.UEUserName == '' or self.UEPassword == '' or self.UESourceCodePath == '': HELP.GenericHelp(CONST.Version) @@ -995,7 +996,9 @@ class OaiCiTest(): cn_target_ip = result.group('trf_ip_addr') SSH.close() cn_iperf_prefix = "docker exec prod-trf-gen" # -w /iperf-2.0.13 necessary? - else: # ltebox, sabox + if (re.match('OC-OAI-CN5G', EPC.Type, re.IGNORECASE)): + cn_target_ip = EPC.IperfSrvIPAddress + else: # lteboix, sabox cn_target_ip = "192.172.0.1" cn_iperf_prefix = "" @@ -1077,6 +1080,26 @@ class OaiCiTest(): self.Iperf_analyzeV2BIDIR(lock, ue.getHost(), ue.getName(), statusQueue, server_filename, client_filename) + elif self.iperf_direction == "IPERF3": + logging.debug("Iperf3 requested") + + cmd = cls_cmd.getConnection(ue.getHost()) + cmd.run(f'rm /tmp/{server_filename}', reportNonZero=False) + port = f'-p {5002+idx}' + cmd.run(f'{ue.getCmdPrefix()} iperf3 -c {cn_target_ip} {port} {iperf_opt} &> /tmp/{server_filename}', timeout=iperf_time*1.5) + cmd.close() + time.sleep(1) + cmd = cls_cmd.getConnection(ue.getHost()) + cmd.copyin(f'/tmp/{server_filename}', server_filename) + cmd.close() + + if udpIperf: + self.Iperf_analyzeV2Server(lock, ue.getIP(), ue.getName(), statusQueue, iperf_opt, server_filename, 1) + else: + cmd = cls_cmd.getConnection(EPC.IPAddress) + self.Iperf_analyzeV2TCPOutput(lock, ue.getIP(), ue.getName(), statusQueue, iperf_opt, EPC, cmd, f'/tmp/{server_filename}') + cmd.close() + else : raise Exception("Incorrect or missing IPERF direction in XML") @@ -1216,6 +1239,25 @@ class OaiCiTest(): #result = re.search('iperf version 2.0.10', str(iperfStdout.strip())) #if result is not None: # dummyIperfVersion = '2.0.10' + if (re.match('OC-OAI-CN5G', EPC.Type, re.IGNORECASE)): + lOcProject = OC_CN_PROJECT + mySSH = cls_cmd.getConnection(EPC.IPAddress) + succeeded = OC.OC_login(mySSH, EPC.OCUserName, EPC.OCPassword, lOcProject) + if not succeeded: + logging.error('\u001B[1m OC Cluster Login Failed\u001B[0m') + HTML.CreateHtmlTestRow('N/A', 'KO', CONST.OC_LOGIN_FAIL) + HTML.CreateHtmlTabFooter(False) + return False + ret = mySSH.run('oc describe pod oai-traffic-server | grep -w "ips" -A 1 | tail -n 1 | awk \'{{print $1}}\' | sed \'s/"//g\'') + EPC.IperfSrvIPAddress = ret.stdout + if not EPC.IperfSrvIPAddress: + logging.debug('IP address of oai-traffic-server not found!') + OC.OC_logout(mySSH) + HTML.CreateHtmlTestRow(self.Type, 'KO', CONST.INVALID_PARAMETER) + HTML.CreateHtmlTabFooter(False) + raise Exception("could not obtain oai-traffic-server IP address") + return Fals + OC.OC_logout(mySSH) multi_jobs = [] ue_num = len(ues) diff --git a/ci-scripts/conf_files/gnb.sa.band78.51prb.aw2s.ddsuu.conf b/ci-scripts/conf_files/gnb.sa.band78.51prb.aw2s.dddsu.conf similarity index 99% rename from ci-scripts/conf_files/gnb.sa.band78.51prb.aw2s.ddsuu.conf rename to ci-scripts/conf_files/gnb.sa.band78.51prb.aw2s.dddsu.conf index 73ea955f63..c8c2643e50 100644 --- a/ci-scripts/conf_files/gnb.sa.band78.51prb.aw2s.ddsuu.conf +++ b/ci-scripts/conf_files/gnb.sa.band78.51prb.aw2s.dddsu.conf @@ -24,7 +24,7 @@ gNBs = pdsch_AntennaPorts_XP = 2; pusch_AntennaPorts = 2; do_CSIRS = 1; - do_SRS = 0; + do_SRS = 1; pdcch_ConfigSIB1 = ( { @@ -152,9 +152,9 @@ gNBs = # dl_UL_TransmissionPeriodicity # 0=ms0p5, 1=ms0p625, 2=ms1, 3=ms1p25, 4=ms2, 5=ms2p5, 6=ms5, 7=ms10 dl_UL_TransmissionPeriodicity = 5; - nrofDownlinkSlots = 2; + nrofDownlinkSlots = 3; nrofDownlinkSymbols = 6; - nrofUplinkSlots = 2; + nrofUplinkSlots = 1; nrofUplinkSymbols = 4; ssPBCH_BlockPower = -10; @@ -200,7 +200,7 @@ MACRLCs = ( pusch_TargetSNRx10 = 200; pucch_TargetSNRx10 = 200; ulsch_max_frame_inactivity = 10; - ul_max_mcs = 15; + ul_max_mcs = 28; } ); diff --git a/ci-scripts/xml_files/container_sa_aw2s_asue.xml b/ci-scripts/xml_files/container_sa_aw2s_asue.xml index 7d1709d53f..f4cc56933e 100644 --- a/ci-scripts/xml_files/container_sa_aw2s_asue.xml +++ b/ci-scripts/xml_files/container_sa_aw2s_asue.xml @@ -30,8 +30,14 @@ 001000 020000 002000 + 002001 002002 + 002003 + 002004 + 002005 000100 + 000010 + 000020 000200 003000 004000 @@ -43,6 +49,7 @@ Pull_Cluster_Image Pull Images from Cluster + oaicicd-ran oai-gnb-aw2s @@ -60,7 +67,7 @@ amarisoft_ue - + Attach_UE Attach UE amarisoft_ue_1 @@ -72,28 +79,68 @@ amarisoft_ue_2 + + Attach_UE + Attach UE + amarisoft_ue_3 + + + + Attach_UE + Attach UE + amarisoft_ue_4 + + + + Attach_UE + Attach UE + amarisoft_ue_5 + + + + Iperf + iperf (DL/30Mbps/UDP)(30 sec)(multi-ue profile) + -u -b 90M -t 30 -i 1 -R + IPERF3 + amarisoft_ue_1 amarisoft_ue_2 amarisoft_ue_3 + 25 + 80 + balanced + + + + Iperf + iperf (UL/5Mbps/UDP)(30 sec)(multi-ue profile) + -u -b 15M -t 30 -i 1 + IPERF3 + amarisoft_ue_1 amarisoft_ue_2 amarisoft_ue_3 + 25 + 80 + balanced + + Ping - Ping: 20pings in 20sec - amarisoft_ue_1 amarisoft_ue_2 + Ping: 20pings in 20sec, multi-ue + amarisoft_ue_1 amarisoft_ue_2 amarisoft_ue_3 amarisoft_ue_4 amarisoft_ue_5 -c 20 1 - 15 + 25 Ping - Ping: 100pings in 20sec - amarisoft_ue_1 amarisoft_ue_2 + Ping: 100pings in 20sec, multi-ue + amarisoft_ue_1 amarisoft_ue_2 amarisoft_ue_3 amarisoft_ue_4 amarisoft_ue_5 -c 100 -i 0.2 1 - 15 + 30 Detach_UE Detach UE - amarisoft_ue_1 amarisoft_ue_2 + amarisoft_ue_1 amarisoft_ue_2 amarisoft_ue_3 amarisoft_ue_4 amarisoft_ue_5 @@ -119,4 +166,3 @@ - diff --git a/ci-scripts/xml_files/container_sa_aw2s_asue_cleanup.xml b/ci-scripts/xml_files/container_sa_aw2s_asue_cleanup.xml new file mode 100644 index 0000000000..8c8daf9e04 --- /dev/null +++ b/ci-scripts/xml_files/container_sa_aw2s_asue_cleanup.xml @@ -0,0 +1,46 @@ + + + test-aw2s-cleanup + CleanUp AW2S ASUE + trash + + 111111 + 222222 + + + + + Clean_Test_Server_Images + Clean Test Images on Test Server + 0 + + + + Terminate_UE + Terminate UE + amarisoft_ue + + + + diff --git a/ci-scripts/yaml_files/sa_aw2s_gnb/docker-compose.yml b/ci-scripts/yaml_files/sa_aw2s_gnb/docker-compose.yml index 7468df5e62..f2747098c2 100644 --- a/ci-scripts/yaml_files/sa_aw2s_gnb/docker-compose.yml +++ b/ci-scripts/yaml_files/sa_aw2s_gnb/docker-compose.yml @@ -10,7 +10,7 @@ services: USE_VOLUMED_CONF: 'yes' USE_ADDITIONAL_OPTIONS: --sa volumes: - - ../../conf_files/gnb.sa.band78.51prb.aw2s.ddsuu.conf:/opt/oai-gnb-aw2s/etc/mounted.conf + - ../../conf_files/gnb.sa.band78.51prb.aw2s.dddsu.conf:/opt/oai-gnb-aw2s/etc/mounted.conf healthcheck: test: /bin/bash -c "pgrep nr-softmodem" interval: 10s From d5b78067283d9075e3233cbefca56b6799c5b155 Mon Sep 17 00:00:00 2001 From: Jaroslava Fiedlerova Date: Wed, 3 May 2023 17:59:16 +0200 Subject: [PATCH 3/7] CI: AW2S pipeline - CN deployment on OC - CN path, OC project changed --- ci-scripts/epc.py | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/ci-scripts/epc.py b/ci-scripts/epc.py index f3f23f198c..534485fb3b 100644 --- a/ci-scripts/epc.py +++ b/ci-scripts/epc.py @@ -240,9 +240,9 @@ class EPCManagement(): HTML.CreateHtmlTestRow(self.Type, 'OK', CONST.ALL_PROCESSES_OK) def Initialize5GCN(self, HTML): - if self.IPAddress == '' or self.UserName == '' or self.Password == '' or self.SourceCodePath == '' or self.Type == '': + if self.IPAddress == '' or self.UserName == '' or self.Password == '' or self.Type == '': HELP.GenericHelp(CONST.Version) - HELP.EPCSrvHelp(self.IPAddress, self.UserName, self.Password, self.SourceCodePath, self.Type) + HELP.EPCSrvHelp(self.IPAddress, self.UserName, self.Password, self.Type) sys.exit('Insufficient EPC Parameters') mySSH = cls_cmd.getConnection(self.IPAddress) html_cell = '' @@ -299,8 +299,9 @@ class EPCManagement(): imageNames = ["oai-nrf", "oai-amf", "oai-smf", "oai-spgwu-tiny", "oai-ausf", "oai-udm", "oai-udr", "mysql","oai-traffic-server"] logging.debug('Deploying OAI CN5G on Openshift Cluster') lIpAddr = self.IPAddress - lSourcePath = self.SourceCodePath - succeeded = OC.OC_login(mySSH, self.OCUserName, self.OCPassword, self.OCProjectName) + lOcProject = 'oaicicd-core-for-ci-ran' + lSourcePath = "/opt/oai-cn5g-fed-develop-2023-04-28-20897" + succeeded = OC.OC_login(mySSH, self.OCUserName, self.OCPassword, lOcProject) if not succeeded: logging.error('\u001B[1m OC Cluster Login Failed\u001B[0m') HTML.CreateHtmlTestRow('N/A', 'KO', CONST.OC_LOGIN_FAIL) @@ -595,11 +596,12 @@ class EPCManagement(): elif re.match('OC-OAI-CN5G', self.Type, re.IGNORECASE): logging.debug('Terminating OAI CN5G on Openshift Cluster') lIpAddr = self.IPAddress + lOcProject = 'oaicicd-core-for-ci-ran' lSourcePath = self.SourceCodePath mySSH.run(f'rm -Rf {lSourcePath}/logs') mySSH.run(f'mkdir -p {lSourcePath}/logs') logging.debug('OC OAI CN5G - Collecting Log files to workspace') - succeeded = OC.OC_login(mySSH, self.OCUserName, self.OCPassword, self.OCProjectName) + succeeded = OC.OC_login(mySSH, self.OCUserName, self.OCPassword, lOcProject) if not succeeded: logging.error('\u001B[1m OC Cluster Login Failed\u001B[0m') HTML.CreateHtmlTestRow('N/A', 'KO', CONST.OC_LOGIN_FAIL) @@ -618,7 +620,7 @@ class EPCManagement(): mySSH.run(f'cd {lSourcePath}/logs && zip -r -qq test_logs_CN.zip *.log') mySSH.copyin(f'{lSourcePath}/logs/test_logs_CN.zip','test_logs_CN.zip') ret = mySSH.run(f'oc get pods', silent=True) - res = re.search('No resources found in oaicicd-ran namespace.', ret.stdout) + res = re.search(f'No resources found in {lOcProject} namespace.', ret.stdout) if res is not None: logging.debug('OC OAI CN5G components uninstalled') message = 'OC OAI CN5G components uninstalled' From 3daeb91a390a67b5824a7eefd51e053996200154 Mon Sep 17 00:00:00 2001 From: Jaroslava Fiedlerova Date: Thu, 18 May 2023 00:55:07 +0200 Subject: [PATCH 4/7] Constants for CI OC RAN and CN namespace created - CI_OC_RAN_NAMESPACE for RAN images - CI_OC_CORE_NAMESPACE for CN deployment - usage of the created constants for pulling images from cluster, CN deployement, iperf/ping --- ci-scripts/cls_cluster.py | 13 ++++++------- ci-scripts/cls_oaicitest.py | 10 +--------- ci-scripts/epc.py | 9 +++------ 3 files changed, 10 insertions(+), 22 deletions(-) diff --git a/ci-scripts/cls_cluster.py b/ci-scripts/cls_cluster.py index aef6da8a38..b075ea3a1c 100644 --- a/ci-scripts/cls_cluster.py +++ b/ci-scripts/cls_cluster.py @@ -42,7 +42,8 @@ IMAGE_REGISTRY_SERVICE_NAME = "image-registry.openshift-image-registry.svc" NAMESPACE = "oaicicd-ran" OCUrl = "https://api.oai.cs.eurecom.fr:6443" OCRegistry = "default-route-openshift-image-registry.apps.oai.cs.eurecom.fr/" - +CI_OC_RAN_NAMESPACE = "oaicicd-ran" +CI_OC_CORE_NAMESPACE = "oaicicd-core-for-ci-ran" def OC_login(cmd, ocUserName, ocPassword, ocProjectName): if ocUserName == '' or ocPassword == '' or ocProjectName == '': @@ -198,24 +199,22 @@ class Cluster: HELP.GenericHelp(CONST.Version) HELP.EPCSrvHelp(self.imageToPull) sys.exit('Insufficient eNB Parameters') - lIpAddr = self.eNBIPAddress - ocProjectName = NAMESPACE self.testCase_id = HTML.testCase_id - cmd = cls_cmd.getConnection(lIpAddr) - succeeded = OC_login(cmd, self.OCUserName, self.OCPassword, ocProjectName) + cmd = cls_cmd.getConnection(self.eNBIPAddress) + succeeded = OC_login(cmd, self.OCUserName, self.OCPassword, CI_OC_RAN_NAMESPACE) if not succeeded: logging.error('\u001B[1m OC Cluster Login Failed\u001B[0m') HTML.CreateHtmlTestRow('N/A', 'KO', CONST.OC_LOGIN_FAIL) return False ret = cmd.run(f'oc whoami -t | docker login -u oaicicd --password-stdin {self.OCRegistry}') if ret.returncode != 0: - logging.error(f'\u001B[1m Unable to access OC project {ocProjectName}\u001B[0m') + logging.error(f'\u001B[1m Unable to access OC project {CI_OC_RAN_NAMESPACE}\u001B[0m') OC_logout(cmd) cmd.close() HTML.CreateHtmlTestRow('N/A', 'KO', CONST.OC_LOGIN_FAIL) return False for image in self.imageToPull: - imagePrefix = f'{self.OCRegistry}{ocProjectName}' + imagePrefix = f'{self.OCRegistry}{CI_OC_RAN_NAMESPACE}' imageTag = cls_containerize.ImageTagToUse(image, self.ranCommitID, self.ranBranch, self.ranAllowMerge) ret = cmd.run(f'docker pull {imagePrefix}/{imageTag}') if ret.returncode != 0: diff --git a/ci-scripts/cls_oaicitest.py b/ci-scripts/cls_oaicitest.py index e97a1dd18e..deba23b36c 100644 --- a/ci-scripts/cls_oaicitest.py +++ b/ci-scripts/cls_oaicitest.py @@ -59,7 +59,6 @@ logging.getLogger("matplotlib").setLevel(logging.WARNING) import matplotlib.pyplot as plt import numpy as np -OC_CN_PROJECT = "oaicicd-core-for-ci-ran" #----------------------------------------------------------- # OaiCiTest Class Definition #----------------------------------------------------------- @@ -1081,18 +1080,12 @@ class OaiCiTest(): self.Iperf_analyzeV2BIDIR(lock, ue.getHost(), ue.getName(), statusQueue, server_filename, client_filename) elif self.iperf_direction == "IPERF3": - logging.debug("Iperf3 requested") - cmd = cls_cmd.getConnection(ue.getHost()) cmd.run(f'rm /tmp/{server_filename}', reportNonZero=False) port = f'-p {5002+idx}' cmd.run(f'{ue.getCmdPrefix()} iperf3 -c {cn_target_ip} {port} {iperf_opt} &> /tmp/{server_filename}', timeout=iperf_time*1.5) - cmd.close() - time.sleep(1) - cmd = cls_cmd.getConnection(ue.getHost()) cmd.copyin(f'/tmp/{server_filename}', server_filename) cmd.close() - if udpIperf: self.Iperf_analyzeV2Server(lock, ue.getIP(), ue.getName(), statusQueue, iperf_opt, server_filename, 1) else: @@ -1240,9 +1233,8 @@ class OaiCiTest(): #if result is not None: # dummyIperfVersion = '2.0.10' if (re.match('OC-OAI-CN5G', EPC.Type, re.IGNORECASE)): - lOcProject = OC_CN_PROJECT mySSH = cls_cmd.getConnection(EPC.IPAddress) - succeeded = OC.OC_login(mySSH, EPC.OCUserName, EPC.OCPassword, lOcProject) + succeeded = OC.OC_login(mySSH, EPC.OCUserName, EPC.OCPassword, OC.CI_OC_CORE_NAMESPACE) if not succeeded: logging.error('\u001B[1m OC Cluster Login Failed\u001B[0m') HTML.CreateHtmlTestRow('N/A', 'KO', CONST.OC_LOGIN_FAIL) diff --git a/ci-scripts/epc.py b/ci-scripts/epc.py index 534485fb3b..30a9fc87a4 100644 --- a/ci-scripts/epc.py +++ b/ci-scripts/epc.py @@ -75,7 +75,6 @@ class EPCManagement(): self.OCRegistry = "default-route-openshift-image-registry.apps.oai.cs.eurecom.fr/" self.OCUserName = '' self.OCPassword = '' - self.OCProjectName = '' self.imageToPull = '' self.eNBSourceCodePath = '' @@ -299,9 +298,8 @@ class EPCManagement(): imageNames = ["oai-nrf", "oai-amf", "oai-smf", "oai-spgwu-tiny", "oai-ausf", "oai-udm", "oai-udr", "mysql","oai-traffic-server"] logging.debug('Deploying OAI CN5G on Openshift Cluster') lIpAddr = self.IPAddress - lOcProject = 'oaicicd-core-for-ci-ran' lSourcePath = "/opt/oai-cn5g-fed-develop-2023-04-28-20897" - succeeded = OC.OC_login(mySSH, self.OCUserName, self.OCPassword, lOcProject) + succeeded = OC.OC_login(mySSH, self.OCUserName, self.OCPassword, OC.CI_OC_CORE_NAMESPACE) if not succeeded: logging.error('\u001B[1m OC Cluster Login Failed\u001B[0m') HTML.CreateHtmlTestRow('N/A', 'KO', CONST.OC_LOGIN_FAIL) @@ -596,12 +594,11 @@ class EPCManagement(): elif re.match('OC-OAI-CN5G', self.Type, re.IGNORECASE): logging.debug('Terminating OAI CN5G on Openshift Cluster') lIpAddr = self.IPAddress - lOcProject = 'oaicicd-core-for-ci-ran' lSourcePath = self.SourceCodePath mySSH.run(f'rm -Rf {lSourcePath}/logs') mySSH.run(f'mkdir -p {lSourcePath}/logs') logging.debug('OC OAI CN5G - Collecting Log files to workspace') - succeeded = OC.OC_login(mySSH, self.OCUserName, self.OCPassword, lOcProject) + succeeded = OC.OC_login(mySSH, self.OCUserName, self.OCPassword, OC.CI_OC_CORE_NAMESPACE) if not succeeded: logging.error('\u001B[1m OC Cluster Login Failed\u001B[0m') HTML.CreateHtmlTestRow('N/A', 'KO', CONST.OC_LOGIN_FAIL) @@ -620,7 +617,7 @@ class EPCManagement(): mySSH.run(f'cd {lSourcePath}/logs && zip -r -qq test_logs_CN.zip *.log') mySSH.copyin(f'{lSourcePath}/logs/test_logs_CN.zip','test_logs_CN.zip') ret = mySSH.run(f'oc get pods', silent=True) - res = re.search(f'No resources found in {lOcProject} namespace.', ret.stdout) + res = re.search(f'No resources found in {OC.CI_OC_CORE_NAMESPACE} namespace.', ret.stdout) if res is not None: logging.debug('OC OAI CN5G components uninstalled') message = 'OC OAI CN5G components uninstalled' From 4911835ea3a78096f9b682232a08b46eb794b04c Mon Sep 17 00:00:00 2001 From: Jaroslava Fiedlerova Date: Sun, 21 May 2023 16:48:38 +0200 Subject: [PATCH 5/7] Update of aw2s xml file for iperf test in ddsuu TDD config --- ci-scripts/xml_files/container_sa_aw2s_asue.xml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/ci-scripts/xml_files/container_sa_aw2s_asue.xml b/ci-scripts/xml_files/container_sa_aw2s_asue.xml index f4cc56933e..7959718eb0 100644 --- a/ci-scripts/xml_files/container_sa_aw2s_asue.xml +++ b/ci-scripts/xml_files/container_sa_aw2s_asue.xml @@ -99,8 +99,8 @@ Iperf - iperf (DL/30Mbps/UDP)(30 sec)(multi-ue profile) - -u -b 90M -t 30 -i 1 -R + iperf (DL/20Mbps/UDP)(30 sec)(multi-ue profile) + -u -b 60M -t 30 -i 1 -R IPERF3 amarisoft_ue_1 amarisoft_ue_2 amarisoft_ue_3 25 From d72aa770d69ffaca2c077beed5a2923e6be812c8 Mon Sep 17 00:00:00 2001 From: Jaroslava Fiedlerova Date: Sun, 21 May 2023 16:51:52 +0200 Subject: [PATCH 6/7] aw2s gnb config file, change back to ddsuu config --- ....aw2s.dddsu.conf => gnb.sa.band78.51prb.aw2s.ddsuu.conf} | 6 +++--- ci-scripts/yaml_files/sa_aw2s_gnb/docker-compose.yml | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) rename ci-scripts/conf_files/{gnb.sa.band78.51prb.aw2s.dddsu.conf => gnb.sa.band78.51prb.aw2s.ddsuu.conf} (99%) diff --git a/ci-scripts/conf_files/gnb.sa.band78.51prb.aw2s.dddsu.conf b/ci-scripts/conf_files/gnb.sa.band78.51prb.aw2s.ddsuu.conf similarity index 99% rename from ci-scripts/conf_files/gnb.sa.band78.51prb.aw2s.dddsu.conf rename to ci-scripts/conf_files/gnb.sa.band78.51prb.aw2s.ddsuu.conf index c8c2643e50..5c37a2a413 100644 --- a/ci-scripts/conf_files/gnb.sa.band78.51prb.aw2s.dddsu.conf +++ b/ci-scripts/conf_files/gnb.sa.band78.51prb.aw2s.ddsuu.conf @@ -24,7 +24,7 @@ gNBs = pdsch_AntennaPorts_XP = 2; pusch_AntennaPorts = 2; do_CSIRS = 1; - do_SRS = 1; + do_SRS = 0; pdcch_ConfigSIB1 = ( { @@ -152,9 +152,9 @@ gNBs = # dl_UL_TransmissionPeriodicity # 0=ms0p5, 1=ms0p625, 2=ms1, 3=ms1p25, 4=ms2, 5=ms2p5, 6=ms5, 7=ms10 dl_UL_TransmissionPeriodicity = 5; - nrofDownlinkSlots = 3; + nrofDownlinkSlots = 2; nrofDownlinkSymbols = 6; - nrofUplinkSlots = 1; + nrofUplinkSlots = 2; nrofUplinkSymbols = 4; ssPBCH_BlockPower = -10; diff --git a/ci-scripts/yaml_files/sa_aw2s_gnb/docker-compose.yml b/ci-scripts/yaml_files/sa_aw2s_gnb/docker-compose.yml index f2747098c2..7468df5e62 100644 --- a/ci-scripts/yaml_files/sa_aw2s_gnb/docker-compose.yml +++ b/ci-scripts/yaml_files/sa_aw2s_gnb/docker-compose.yml @@ -10,7 +10,7 @@ services: USE_VOLUMED_CONF: 'yes' USE_ADDITIONAL_OPTIONS: --sa volumes: - - ../../conf_files/gnb.sa.band78.51prb.aw2s.dddsu.conf:/opt/oai-gnb-aw2s/etc/mounted.conf + - ../../conf_files/gnb.sa.band78.51prb.aw2s.ddsuu.conf:/opt/oai-gnb-aw2s/etc/mounted.conf healthcheck: test: /bin/bash -c "pgrep nr-softmodem" interval: 10s From 4514244f4ac674e0eae969da0b4454ce65066ad6 Mon Sep 17 00:00:00 2001 From: Jaroslava Fiedlerova Date: Sun, 21 May 2023 16:55:52 +0200 Subject: [PATCH 7/7] Adding OC CN ip addresses for iperf/ping test --- ci-scripts/cls_oaicitest.py | 25 +++---------------------- 1 file changed, 3 insertions(+), 22 deletions(-) diff --git a/ci-scripts/cls_oaicitest.py b/ci-scripts/cls_oaicitest.py index deba23b36c..8166c50697 100644 --- a/ci-scripts/cls_oaicitest.py +++ b/ci-scripts/cls_oaicitest.py @@ -996,7 +996,7 @@ class OaiCiTest(): SSH.close() cn_iperf_prefix = "docker exec prod-trf-gen" # -w /iperf-2.0.13 necessary? if (re.match('OC-OAI-CN5G', EPC.Type, re.IGNORECASE)): - cn_target_ip = EPC.IperfSrvIPAddress + cn_target_ip = "172.21.6.102" else: # lteboix, sabox cn_target_ip = "192.172.0.1" cn_iperf_prefix = "" @@ -1082,8 +1082,8 @@ class OaiCiTest(): elif self.iperf_direction == "IPERF3": cmd = cls_cmd.getConnection(ue.getHost()) cmd.run(f'rm /tmp/{server_filename}', reportNonZero=False) - port = f'-p {5002+idx}' - cmd.run(f'{ue.getCmdPrefix()} iperf3 -c {cn_target_ip} {port} {iperf_opt} &> /tmp/{server_filename}', timeout=iperf_time*1.5) + port = f'{5002+idx}' + cmd.run(f'{ue.getCmdPrefix()} iperf3 -c {cn_target_ip} -p {port} {iperf_opt} --get-server-output &> /tmp/{server_filename}', timeout=iperf_time*1.5) cmd.copyin(f'/tmp/{server_filename}', server_filename) cmd.close() if udpIperf: @@ -1232,25 +1232,6 @@ class OaiCiTest(): #result = re.search('iperf version 2.0.10', str(iperfStdout.strip())) #if result is not None: # dummyIperfVersion = '2.0.10' - if (re.match('OC-OAI-CN5G', EPC.Type, re.IGNORECASE)): - mySSH = cls_cmd.getConnection(EPC.IPAddress) - succeeded = OC.OC_login(mySSH, EPC.OCUserName, EPC.OCPassword, OC.CI_OC_CORE_NAMESPACE) - if not succeeded: - logging.error('\u001B[1m OC Cluster Login Failed\u001B[0m') - HTML.CreateHtmlTestRow('N/A', 'KO', CONST.OC_LOGIN_FAIL) - HTML.CreateHtmlTabFooter(False) - return False - ret = mySSH.run('oc describe pod oai-traffic-server | grep -w "ips" -A 1 | tail -n 1 | awk \'{{print $1}}\' | sed \'s/"//g\'') - EPC.IperfSrvIPAddress = ret.stdout - if not EPC.IperfSrvIPAddress: - logging.debug('IP address of oai-traffic-server not found!') - OC.OC_logout(mySSH) - HTML.CreateHtmlTestRow(self.Type, 'KO', CONST.INVALID_PARAMETER) - HTML.CreateHtmlTabFooter(False) - raise Exception("could not obtain oai-traffic-server IP address") - return Fals - OC.OC_logout(mySSH) - multi_jobs = [] ue_num = len(ues) i = 0