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
This commit is contained in:
@@ -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
|
|||||||
#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)
|
|||||||
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():
|
|||||||
[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():
|
|||||||
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():
|
|||||||
|
|
||||||
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():
|
|||||||
#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)
|
||||||
|
|||||||
+4
-4
@@ -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 =
|
|||||||
# 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 = (
|
|||||||
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 @@
|
|||||||
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 @@
|
|||||||
<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 @@
|
|||||||
<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 @@
|
|||||||
<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 @@
|
|||||||
</testCase>
|
</testCase>
|
||||||
|
|
||||||
</testCaseList>
|
</testCaseList>
|
||||||
|
|
||||||
|
|||||||
@@ -0,0 +1,46 @@
|
|||||||
|
<!--
|
||||||
|
|
||||||
|
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:
|
|||||||
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
|
||||||
|
|||||||
Reference in New Issue
Block a user