Commit d237e43f authored by Jaroslava Fiedlerova's avatar Jaroslava Fiedlerova

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
parent 7afedd21
...@@ -49,7 +49,7 @@ adb_ue_2: ...@@ -49,7 +49,7 @@ adb_ue_2:
amarisoft_ue: amarisoft_ue:
Host: amariue 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"}' TermScript: /root/NV18-06-2022/lteue-linux-2023-03-17/doc/ws.js 127.0.0.1:9002 '{"message":"quit"}'
amarisoft_ue_1: amarisoft_ue_1:
Host: amariue Host: amariue
......
...@@ -49,6 +49,7 @@ import concurrent.futures ...@@ -49,6 +49,7 @@ import concurrent.futures
#import our libs #import our libs
import helpreadme as HELP import helpreadme as HELP
import constants as CONST import constants as CONST
import cls_cluster as OC
import sshconnection import sshconnection
import cls_module_ue import cls_module_ue
...@@ -58,6 +59,7 @@ logging.getLogger("matplotlib").setLevel(logging.WARNING) ...@@ -58,6 +59,7 @@ logging.getLogger("matplotlib").setLevel(logging.WARNING)
import matplotlib.pyplot as plt import matplotlib.pyplot as plt
import numpy as np import numpy as np
OC_CN_PROJECT = "oaicicd-core-for-ci-ran"
#----------------------------------------------------------- #-----------------------------------------------------------
# OaiCiTest Class Definition # OaiCiTest Class Definition
#----------------------------------------------------------- #-----------------------------------------------------------
...@@ -231,7 +233,6 @@ class OaiCiTest(): ...@@ -231,7 +233,6 @@ class OaiCiTest():
[f.result() for f in futures] [f.result() for f in futures]
HTML.CreateHtmlTestRowQueue('N/A', 'OK', messages) HTML.CreateHtmlTestRowQueue('N/A', 'OK', messages)
def InitializeOAIUE(self,HTML,RAN,EPC,CONTAINERS): def InitializeOAIUE(self,HTML,RAN,EPC,CONTAINERS):
if self.UEIPAddress == '' or self.UEUserName == '' or self.UEPassword == '' or self.UESourceCodePath == '': if self.UEIPAddress == '' or self.UEUserName == '' or self.UEPassword == '' or self.UESourceCodePath == '':
HELP.GenericHelp(CONST.Version) HELP.GenericHelp(CONST.Version)
...@@ -995,7 +996,9 @@ class OaiCiTest(): ...@@ -995,7 +996,9 @@ class OaiCiTest():
cn_target_ip = result.group('trf_ip_addr') cn_target_ip = result.group('trf_ip_addr')
SSH.close() SSH.close()
cn_iperf_prefix = "docker exec prod-trf-gen" # -w /iperf-2.0.13 necessary? 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_target_ip = "192.172.0.1"
cn_iperf_prefix = "" cn_iperf_prefix = ""
...@@ -1077,6 +1080,26 @@ class OaiCiTest(): ...@@ -1077,6 +1080,26 @@ class OaiCiTest():
self.Iperf_analyzeV2BIDIR(lock, ue.getHost(), ue.getName(), statusQueue, server_filename, client_filename) 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 : else :
raise Exception("Incorrect or missing IPERF direction in XML") raise Exception("Incorrect or missing IPERF direction in XML")
...@@ -1216,6 +1239,25 @@ class OaiCiTest(): ...@@ -1216,6 +1239,25 @@ class OaiCiTest():
#result = re.search('iperf version 2.0.10', str(iperfStdout.strip())) #result = re.search('iperf version 2.0.10', str(iperfStdout.strip()))
#if result is not None: #if result is not None:
# dummyIperfVersion = '2.0.10' # 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 = [] multi_jobs = []
ue_num = len(ues) ue_num = len(ues)
......
...@@ -24,7 +24,7 @@ gNBs = ...@@ -24,7 +24,7 @@ gNBs =
pdsch_AntennaPorts_XP = 2; pdsch_AntennaPorts_XP = 2;
pusch_AntennaPorts = 2; pusch_AntennaPorts = 2;
do_CSIRS = 1; do_CSIRS = 1;
do_SRS = 0; do_SRS = 1;
pdcch_ConfigSIB1 = ( pdcch_ConfigSIB1 = (
{ {
...@@ -152,9 +152,9 @@ gNBs = ...@@ -152,9 +152,9 @@ gNBs =
# dl_UL_TransmissionPeriodicity # dl_UL_TransmissionPeriodicity
# 0=ms0p5, 1=ms0p625, 2=ms1, 3=ms1p25, 4=ms2, 5=ms2p5, 6=ms5, 7=ms10 # 0=ms0p5, 1=ms0p625, 2=ms1, 3=ms1p25, 4=ms2, 5=ms2p5, 6=ms5, 7=ms10
dl_UL_TransmissionPeriodicity = 5; dl_UL_TransmissionPeriodicity = 5;
nrofDownlinkSlots = 2; nrofDownlinkSlots = 3;
nrofDownlinkSymbols = 6; nrofDownlinkSymbols = 6;
nrofUplinkSlots = 2; nrofUplinkSlots = 1;
nrofUplinkSymbols = 4; nrofUplinkSymbols = 4;
ssPBCH_BlockPower = -10; ssPBCH_BlockPower = -10;
...@@ -200,7 +200,7 @@ MACRLCs = ( ...@@ -200,7 +200,7 @@ MACRLCs = (
pusch_TargetSNRx10 = 200; pusch_TargetSNRx10 = 200;
pucch_TargetSNRx10 = 200; pucch_TargetSNRx10 = 200;
ulsch_max_frame_inactivity = 10; ulsch_max_frame_inactivity = 10;
ul_max_mcs = 15; ul_max_mcs = 28;
} }
); );
......
...@@ -30,8 +30,14 @@ ...@@ -30,8 +30,14 @@
001000 001000
020000 020000
002000 002000
002001
002002 002002
002003
002004
002005
000100 000100
000010
000020
000200 000200
003000 003000
004000 004000
...@@ -43,6 +49,7 @@ ...@@ -43,6 +49,7 @@
<testCase id="010000"> <testCase id="010000">
<class>Pull_Cluster_Image</class> <class>Pull_Cluster_Image</class>
<desc>Pull Images from Cluster</desc> <desc>Pull Images from Cluster</desc>
<oc_project>oaicicd-ran</oc_project>
<images_to_pull>oai-gnb-aw2s</images_to_pull> <images_to_pull>oai-gnb-aw2s</images_to_pull>
</testCase> </testCase>
...@@ -60,7 +67,7 @@ ...@@ -60,7 +67,7 @@
<id>amarisoft_ue</id> <id>amarisoft_ue</id>
</testCase> </testCase>
<testCase id="002000"> <testCase id="002001">
<class>Attach_UE</class> <class>Attach_UE</class>
<desc>Attach UE</desc> <desc>Attach UE</desc>
<id>amarisoft_ue_1</id> <id>amarisoft_ue_1</id>
...@@ -72,28 +79,68 @@ ...@@ -72,28 +79,68 @@
<id>amarisoft_ue_2</id> <id>amarisoft_ue_2</id>
</testCase> </testCase>
<testCase id="002003">
<class>Attach_UE</class>
<desc>Attach UE</desc>
<id>amarisoft_ue_3</id>
</testCase>
<testCase id="002004">
<class>Attach_UE</class>
<desc>Attach UE</desc>
<id>amarisoft_ue_4</id>
</testCase>
<testCase id="002005">
<class>Attach_UE</class>
<desc>Attach UE</desc>
<id>amarisoft_ue_5</id>
</testCase>
<testCase id="000010">
<class>Iperf</class>
<desc>iperf (DL/30Mbps/UDP)(30 sec)(multi-ue profile)</desc>
<iperf_args>-u -b 90M -t 30 -i 1 -R</iperf_args>
<direction>IPERF3</direction>
<id>amarisoft_ue_1 amarisoft_ue_2 amarisoft_ue_3</id>
<iperf_packetloss_threshold>25</iperf_packetloss_threshold>
<iperf_bitrate_threshold>80</iperf_bitrate_threshold>
<iperf_profile>balanced</iperf_profile>
</testCase>
<testCase id="000020">
<class>Iperf</class>
<desc>iperf (UL/5Mbps/UDP)(30 sec)(multi-ue profile)</desc>
<iperf_args>-u -b 15M -t 30 -i 1 </iperf_args>
<direction>IPERF3</direction>
<id>amarisoft_ue_1 amarisoft_ue_2 amarisoft_ue_3</id>
<iperf_packetloss_threshold>25</iperf_packetloss_threshold>
<iperf_bitrate_threshold>80</iperf_bitrate_threshold>
<iperf_profile>balanced</iperf_profile>
</testCase>
<testCase id="000100"> <testCase id="000100">
<class>Ping</class> <class>Ping</class>
<desc>Ping: 20pings in 20sec</desc> <desc>Ping: 20pings in 20sec, multi-ue</desc>
<id>amarisoft_ue_1 amarisoft_ue_2</id> <id>amarisoft_ue_1 amarisoft_ue_2 amarisoft_ue_3 amarisoft_ue_4 amarisoft_ue_5</id>
<ping_args>-c 20</ping_args> <ping_args>-c 20</ping_args>
<ping_packetloss_threshold>1</ping_packetloss_threshold> <ping_packetloss_threshold>1</ping_packetloss_threshold>
<ping_rttavg_threshold>15</ping_rttavg_threshold> <ping_rttavg_threshold>25</ping_rttavg_threshold>
</testCase> </testCase>
<testCase id="000200"> <testCase id="000200">
<class>Ping</class> <class>Ping</class>
<desc>Ping: 100pings in 20sec</desc> <desc>Ping: 100pings in 20sec, multi-ue</desc>
<id>amarisoft_ue_1 amarisoft_ue_2</id> <id>amarisoft_ue_1 amarisoft_ue_2 amarisoft_ue_3 amarisoft_ue_4 amarisoft_ue_5</id>
<ping_args>-c 100 -i 0.2</ping_args> <ping_args>-c 100 -i 0.2</ping_args>
<ping_packetloss_threshold>1</ping_packetloss_threshold> <ping_packetloss_threshold>1</ping_packetloss_threshold>
<ping_rttavg_threshold>15</ping_rttavg_threshold> <ping_rttavg_threshold>30</ping_rttavg_threshold>
</testCase> </testCase>
<testCase id="003000"> <testCase id="003000">
<class>Detach_UE</class> <class>Detach_UE</class>
<desc>Detach UE</desc> <desc>Detach UE</desc>
<id>amarisoft_ue_1 amarisoft_ue_2</id> <id>amarisoft_ue_1 amarisoft_ue_2 amarisoft_ue_3 amarisoft_ue_4 amarisoft_ue_5</id>
</testCase> </testCase>
<testCase id="004000"> <testCase id="004000">
...@@ -119,4 +166,3 @@ ...@@ -119,4 +166,3 @@
</testCase> </testCase>
</testCaseList> </testCaseList>
<!--
Licensed to the OpenAirInterface (OAI) Software Alliance under one or more
contributor license agreements. See the NOTICE file distributed with
this work for additional information regarding copyright ownership.
The OpenAirInterface Software Alliance licenses this file to You under
the OAI Public License, Version 1.1 (the "License"); you may not use this file
except in compliance with the License.
You may obtain a copy of the License at
http://www.openairinterface.org/?page_id=698
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
For more information about the OpenAirInterface (OAI) Software Alliance:
contact@openairinterface.org
-->
<testCaseList>
<htmlTabRef>test-aw2s-cleanup</htmlTabRef>
<htmlTabName>CleanUp AW2S ASUE</htmlTabName>
<htmlTabIcon>trash</htmlTabIcon>
<TestCaseRequestedList>
111111
222222
</TestCaseRequestedList>
<TestCaseExclusionList></TestCaseExclusionList>
<testCase id="111111">
<class>Clean_Test_Server_Images</class>
<desc>Clean Test Images on Test Server</desc>
<test_svr_id>0</test_svr_id>
</testCase>
<testCase id="222222">
<class>Terminate_UE</class>
<desc>Terminate UE</desc>
<id>amarisoft_ue</id>
</testCase>
</testCaseList>
...@@ -10,7 +10,7 @@ services: ...@@ -10,7 +10,7 @@ services:
USE_VOLUMED_CONF: 'yes' USE_VOLUMED_CONF: 'yes'
USE_ADDITIONAL_OPTIONS: --sa USE_ADDITIONAL_OPTIONS: --sa
volumes: 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: healthcheck:
test: /bin/bash -c "pgrep nr-softmodem" test: /bin/bash -c "pgrep nr-softmodem"
interval: 10s interval: 10s
......
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