Commit 66b34d1e authored by Jaroslava Fiedlerova's avatar Jaroslava Fiedlerova

Merge remote-tracking branch 'origin/ci-framework-cleanup' into integration_2024_w39

parents 6984c05a 0e23b795
......@@ -405,3 +405,7 @@ l2sim4g_ext_dn:
Host: "%%current_host%%"
NetworkScript: docker exec l2sim4g-trf-gen ip a show dev eth0
CmdPrefix: docker exec l2sim4g-trf-gen
test:
Host: localhost
NetworkScript: echo "inet 127.0.0.1 mtu 1500"
......@@ -263,7 +263,8 @@ class Cluster:
return False
for image in self.imageToPull:
imagePrefix = f'{self.OCRegistry}/{CI_OC_RAN_NAMESPACE}'
imageTag = cls_containerize.ImageTagToUse(image, self.ranCommitID, self.ranBranch, self.ranAllowMerge)
tag = cls_containerize.CreateTag(self.ranCommitID, self.ranBranch, self.ranAllowMerge)
imageTag = f"{image}:{tag}"
ret = cmd.run(f'docker pull {imagePrefix}/{imageTag}')
if ret.returncode != 0:
logging.error(f'Could not pull {image} from local registry : {self.OCRegistry}')
......
......@@ -36,13 +36,22 @@ import time
SSHTIMEOUT=7
def is_local(host):
return host is None or host.lower() in ["", "none", "localhost"]
# helper that returns either LocalCmd or RemoteCmd based on passed host name
def getConnection(host, d=None):
if host is None or host.lower() in ["", "none", "localhost"]:
if is_local(host):
return LocalCmd(d=d)
else:
return RemoteCmd(host, d=d)
def runScript(host, path, timeout, parameters=None, redirect=None, silent=False):
if is_local(host):
return LocalCmd.exec_script(path, timeout, parameters, redirect, silent)
else:
return RemoteCmd.exec_script(host, path, timeout, parameters, redirect, silent)
# provides a partial interface for the legacy SSHconnection class (getBefore(), command())
class Cmd(metaclass=abc.ABCMeta):
def cd(self, d, silent=False):
......@@ -58,6 +67,10 @@ class Cmd(metaclass=abc.ABCMeta):
if not silent:
logging.debug(f'cd {self.cwd}')
@abc.abstractmethod
def exec_script(path, timeout, parameters=None, redirect=None, silent=False):
return
@abc.abstractmethod
def run(self, line, timeout=300, silent=False):
return
......@@ -99,17 +112,33 @@ class LocalCmd(Cmd):
logging.debug(f'Working dir is {self.cwd}')
self.cp = sp.CompletedProcess(args='', returncode=0, stdout='')
def exec_script(path, timeout, parameters=None, redirect=None, silent=False):
if redirect and not redirect.startswith("/"):
raise ValueError(f"redirect must be absolute, but is {redirect}")
c = f"{path} {parameters}" if parameters else path
if not redirect:
ret = sp.run(c, shell=True, timeout=timeout, stdout=sp.PIPE, stderr=sp.STDOUT)
ret.stdout = ret.stdout.decode('utf-8').strip()
else:
with open(redirect, "w") as f:
ret = sp.run(c, shell=True, timeout=timeout, stdout=f, stderr=f)
ret.args += f" &> {redirect}"
ret.stdout = ""
if not silent:
logging.info(f"local> {ret.args}")
return ret
def run(self, line, timeout=300, silent=False, reportNonZero=True):
if not silent:
logging.info(line)
logging.info(f"local> {line}")
try:
if line.strip().endswith('&'):
# if we wait for stdout, subprocess does not return before the end of the command
# however, we don't want to wait for commands with &, so just return fake command
ret = sp.run(line, shell=True, cwd=self.cwd, timeout=5)
ret = sp.run(line, shell=True, cwd=self.cwd, timeout=5, executable='/bin/bash')
time.sleep(0.1)
else:
ret = sp.run(line, shell=True, cwd=self.cwd, stdout=sp.PIPE, stderr=sp.STDOUT, timeout=timeout)
ret = sp.run(line, shell=True, cwd=self.cwd, stdout=sp.PIPE, stderr=sp.STDOUT, timeout=timeout, executable='/bin/bash')
except Exception as e:
ret = sp.CompletedProcess(args=line, returncode=255, stdout=f'Exception: {str(e)}'.encode('utf-8'))
if ret.stdout is None:
......@@ -128,7 +157,9 @@ class LocalCmd(Cmd):
def copyin(self, src, tgt, recursive=False):
if src[0] != '/' or tgt[0] != '/':
raise Exception('support only absolute file paths!')
raise Exception(f'support only absolute file paths (src {src} tgt {tgt})!')
if src == tgt:
return # nothing to copy, file is already where it should go
opt = '-r' if recursive else ''
return self.run(f'cp {opt} {src} {tgt}').returncode == 0
......@@ -166,9 +197,8 @@ class RemoteCmd(Cmd):
def __init__(self, hostname, d=None):
cIdx = 0
logging.getLogger('paramiko').setLevel(logging.ERROR) # prevent spamming through Paramiko
self.client = paramiko.SSHClient()
self.client.set_missing_host_key_policy(paramiko.AutoAddPolicy())
self.hostname = hostname
self.client = RemoteCmd._ssh_init()
cfg = RemoteCmd._lookup_ssh_config(hostname)
self.cwd = d
self.cp = sp.CompletedProcess(args='', returncode=0, stdout='')
......@@ -181,6 +211,12 @@ class RemoteCmd(Cmd):
cIdx +=1
raise Exception ("Error: max retries, did not connect to host")
def _ssh_init():
logging.getLogger('paramiko').setLevel(logging.ERROR) # prevent spamming through Paramiko
client = paramiko.SSHClient()
client.set_missing_host_key_policy(paramiko.AutoAddPolicy())
return client
def _lookup_ssh_config(hostname):
ssh_config = paramiko.SSHConfig()
user_config_file = os.path.expanduser("~/.ssh/config")
......@@ -201,9 +237,33 @@ class RemoteCmd(Cmd):
cfg['sock'] = paramiko.ProxyCommand(ucfg['proxycommand'])
return cfg
def exec_script(host, path, timeout, parameters=None, redirect=None, silent=False):
if redirect and not redirect.startswith("/"):
raise ValueError(f"redirect must be absolute, but is {redirect}")
p = parameters if parameters else ""
r = f"> {redirect}" if redirect else ""
if not silent:
logging.info(f"local> ssh {host} bash -s {p} < {path} {r} # {path} from localhost")
client = RemoteCmd._ssh_init()
cfg = RemoteCmd._lookup_ssh_config(host)
client.connect(**cfg)
bash_opt = 'BASH_XTRACEFD=1' # write bash set -x output to stdout, see bash(1)
stdin, stdout, stderr = client.exec_command(f"{bash_opt} bash -s {p} {r}", timeout=timeout)
# open() the file f at path, read() it and write() it into the stdin of the bash -s cmd
with open(path) as f:
stdin.write(f.read())
stdin.close()
cmd = path
if parameters: cmd += f" {parameters}"
if redirect: cmd += f" &> {redirect}"
ret = sp.CompletedProcess(args=cmd, returncode=stdout.channel.recv_exit_status(), stdout=stdout.read(size=None) + stderr.read(size=None))
ret.stdout = ret.stdout.decode('utf-8').strip()
client.close()
return ret
def run(self, line, timeout=300, silent=False, reportNonZero=True):
if not silent:
logging.info(line)
logging.info(f"ssh[{self.hostname}]> {line}")
if self.cwd:
line = f"cd {self.cwd} && {line}"
try:
......@@ -233,7 +293,7 @@ class RemoteCmd(Cmd):
# if recursive is True, tgt must be a directory (and src is file or directory)
# if recursive is False, tgt and src must be a file name
def copyout(self, src, tgt, recursive=False):
logging.debug(f"copyout: local:{src} -> remote:{tgt}")
logging.debug(f"copyout: local:{src} -> {self.hostname}:{tgt}")
if recursive:
tmpfile = f"{uuid.uuid4()}.tar"
abstmpfile = f"/tmp/{tmpfile}"
......@@ -251,7 +311,7 @@ class RemoteCmd(Cmd):
# if recursive is True, tgt must be a directory (and src is file or directory)
# if recursive is False, tgt and src must be a file name
def copyin(self, src, tgt, recursive=False):
logging.debug(f"copyin: remote:{src} -> local:{tgt}")
logging.debug(f"copyin: {self.hostname}:{src} -> local:{tgt}")
if recursive:
tmpfile = f"{uuid.uuid4()}.tar"
abstmpfile = f"/tmp/{tmpfile}"
......
This diff is collapsed.
#/*
# * 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
# */
#---------------------------------------------------------------------
import logging
import re
import cls_cmd
import cls_oai_html
import constants as CONST
class Native():
def Build(test_case, HTML, host, directory, options):
logging.debug(f'Building on server: {host}')
HTML.testCase_id = test_case
with cls_cmd.getConnection(host) as ssh:
base = f"{directory}/cmake_targets"
ret = ssh.run(f"{base}/build_oai {options} > {base}/log/build_oai.log", timeout=900)
success = ret.returncode == 0
logs = ssh.run(f"cat {base}/log/build_oai.log", silent=True)
logging.debug(f"build finished with code {ret.returncode}, output:\n{logs.stdout}")
# create log directory, and copy build logs
target = f"{base}/build_log_{test_case}/"
ssh.run(f"mkdir -p {target}")
ssh.run(f"mv {base}/log/* {target}")
# check if build artifacts are there
# NOTE: build_oai should fail with exit code if it could not build, but it does not
build_dir = f"{base}/ran_build/build"
build_gnb = re.search('--gNB', options) is not None
if build_gnb:
success = success and ssh.run(f"ls {build_dir}/nr-softmodem").returncode == 0
build_enb = re.search('--eNB', options) is not None
if build_enb:
success = success and ssh.run(f"ls {build_dir}/lte-softmodem").returncode == 0
if success:
logging.info('\u001B[1m Building OAI Pass\u001B[0m')
HTML.CreateHtmlTestRow(options, 'OK', CONST.ALL_PROCESSES_OK)
else:
logging.error('\u001B[1m Building OAI Failed\u001B[0m')
HTML.CreateHtmlTestRow(options, 'KO', CONST.ALL_PROCESSES_OK)
return success
......@@ -65,10 +65,6 @@ class HTMLManagement():
self.htmlTabIcons = []
self.testXMLfiles = []
self.testUnstable = False
self.testMinStableId = '999999'
self.testStabilityPointReached = False
self.htmleNBFailureMsg = ''
self.htmlUEFailureMsg = ''
......@@ -219,20 +215,13 @@ class HTMLManagement():
def CreateHtmlTabFooter(self, passStatus):
if ((not self.htmlFooterCreated) and (self.htmlHeaderCreated)):
testOkEvenIfUnstable = False
if self.testUnstable and not passStatus:
if self.testStabilityPointReached or self.testMinStableId == '999999':
testOkEvenIfUnstable = True
self.htmlFile = open('test_results.html', 'a')
self.htmlFile.write(' <tr>\n')
self.htmlFile.write(' <th bgcolor = "#33CCFF" colspan="3">Final Tab Status</th>\n')
if passStatus:
self.htmlFile.write(' <th bgcolor = "green" colspan="3"><font color="white">PASS <span class="glyphicon glyphicon-ok"></span> </font></th>\n')
else:
if testOkEvenIfUnstable:
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:
self.htmlFile.write(' <th bgcolor = "red" colspan="3"><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(' </table>\n')
self.htmlFile.write(' </div>\n')
......@@ -242,10 +231,7 @@ class HTMLManagement():
cmd = "sed -i -e 's/__STATE_" + self.htmlTabNames[0] + "__//' test_results.html"
subprocess.run(cmd, shell=True)
else:
if testOkEvenIfUnstable:
cmd = "sed -i -e 's/__STATE_" + self.htmlTabNames[0] + "__/<span class=\"glyphicon glyphicon-exclamation-sign\"><\/span>/' test_results.html"
else:
cmd = "sed -i -e 's/__STATE_" + self.htmlTabNames[0] + "__/<span class=\"glyphicon glyphicon-remove\"><\/span>/' test_results.html"
cmd = "sed -i -e 's/__STATE_" + self.htmlTabNames[0] + "__/<span class=\"glyphicon glyphicon-remove\"><\/span>/' test_results.html"
subprocess.run(cmd, shell=True)
self.htmlFooterCreated = False
......@@ -279,14 +265,6 @@ class HTMLManagement():
self.htmlFile.write('</html>\n')
self.htmlFile.close()
def CreateHtmlRetrySeparator(self, cntnumfails):
if ((not self.htmlFooterCreated) and (self.htmlHeaderCreated)):
self.htmlFile = open('test_results.html', 'a')
self.htmlFile.write(' <tr bgcolor = "#F0F0F0" >\n')
self.htmlFile.write(' <td colspan="6"><b> ---- Try Run #' + str(cntnumfails) + ' ---- </b></td>\n')
self.htmlFile.write(' </tr>\n')
self.htmlFile.close()
def CreateHtmlTestRow(self, options, status, processesStatus, machine='eNB'):
if (self.htmlFooterCreated or (not self.htmlHeaderCreated)):
return
......@@ -468,6 +446,8 @@ class HTMLManagement():
self.htmlFile.write(f' <td bgcolor = "lightgreen" >{status}</td>\n')
elif (str(status) == 'KO'):
self.htmlFile.write(f' <td bgcolor = "lightcoral" >{status}</td>\n')
elif str(status) == 'SKIP':
self.htmlFile.write(f' <td bgcolor = "lightgray" >{status}</td>\n')
else:
addOrangeBK = True
self.htmlFile.write(f' <td bgcolor = "orange" >{status}</td>\n')
......
This diff is collapsed.
......@@ -52,7 +52,6 @@ class PhySim:
self.ranCommitID= ""
self.ranAllowMerge= ""
self.ranTargetBranch= ""
self.exitStatus=0
self.forced_workspace_cleanup=False
#private attributes
self.__workSpacePath=''
......@@ -84,7 +83,7 @@ class PhySim:
os.system('mv '+self.__runLogFile+' '+ self.__runLogPath+'/.')
HTML.CreateHtmlTestRowQueue(self.runargs, 'OK', [info])
return HTML
return True
def __CheckResults_LDPCt2Test(self,HTML,CONST,testcase_id):
thrs_KO = int(self.timethrs)
......@@ -111,20 +110,19 @@ class PhySim:
if res_enc is None and res_dec is None:
logging.error(f'no statistics: res_enc {res_enc} res_dec {res_dec}')
HTML.CreateHtmlTestRowQueue(self.runargs, 'KO', ['no statistics'])
self.exitStatus = 1
os.system(f'mv {self.__runLogFile} {self.__runLogPath}/.')
return HTML
return False
#once parsed move the local logfile to its folder
os.system(f'mv {self.__runLogFile} {self.__runLogPath}/.')
if float(time) < thrs_KO:
success = float(time) < thrs_KO
if success:
HTML.CreateHtmlTestRowQueue(self.runargs, 'OK', [info])
else:
error_msg = f'Processing time exceeds a limit of {thrs_KO} us'
logging.error(error_msg)
HTML.CreateHtmlTestRowQueue(self.runargs, 'KO', [info + '\n' + error_msg])
self.exitStatus = 1
return HTML
return success
def __CheckResults_NRulsimTest(self, HTML, CONST, testcase_id):
#retrieve run log file and store it locally
......@@ -135,8 +133,7 @@ class PhySim:
error_msg = f'could not recover test result file {filename}'
logging.error(error_msg)
HTML.CreateHtmlTestRowQueue("could not recover results", 'KO', [error_msg])
self.exitStatus = 1
return HTML
return False
PUSCH_OK = False
with open(self.__runLogFile) as f:
......@@ -152,8 +149,7 @@ class PhySim:
error_msg = 'error: no "PUSCH test OK"'
logging.error(error_msg)
HTML.CreateHtmlTestRowQueue(self.runargs, 'KO', 1, [error_msg])
self.exitStatus = 1
return HTML
return PUSCH_OK
def __CheckBuild_PhySim(self, HTML, CONST):
self.__workSpacePath=self.eNBSourceCodePath+'/cmake_targets/'
......@@ -168,14 +164,11 @@ class PhySim:
with open(self.__buildLogFile) as f:
if 'BUILD SHOULD BE SUCCESSFUL' in f.read():
HTML.CreateHtmlTestRow(self.buildargs, 'OK', CONST.ALL_PROCESSES_OK, 'PhySim')
self.exitStatus=0
return HTML
return True
logging.error('\u001B[1m Building Physical Simulators Failed\u001B[0m')
HTML.CreateHtmlTestRow(self.buildargs, 'KO', CONST.ALL_PROCESSES_OK, 'LDPC')
HTML.CreateHtmlTabFooter(False)
#exitStatus=1 will do a sys.exit in main
self.exitStatus = 1
return HTML
return False
#-----------------$
......@@ -226,10 +219,7 @@ class PhySim:
mySSH.command(f'./build_oai {self.buildargs} 2>&1 | tee {self.__buildLogFile}', '\$', 1500)
mySSH.close()
#check build status and update HTML object
lHTML = cls_oai_html.HTMLManagement()
lHTML=self.__CheckBuild_PhySim(htmlObj,constObj)
return lHTML
return __CheckBuild_PhySim(htmlObj,constObj)
def Run_CUDATest(self,htmlObj,constObj,testcase_id):
......@@ -245,10 +235,7 @@ class PhySim:
#run and redirect the results to a log file
mySSH.command(self.__workSpacePath+'ran_build/build/ldpctest ' + self.runargs + ' >> '+self.__runLogFile, '\$', 30)
mySSH.close()
#return updated HTML to main
lHTML = cls_oai_html.HTMLManagement()
lHTML=self.__CheckResults_LDPCcudaTest(htmlObj,constObj,testcase_id)
return lHTML
return self.__CheckResults_LDPCcudaTest(htmlObj,constObj,testcase_id)
def Run_T2Test(self,htmlObj,constObj,testcase_id):
self.__workSpacePath = f'{self.eNBSourceCodePath}/cmake_targets/'
......@@ -262,10 +249,7 @@ class PhySim:
#run and redirect the results to a log file
mySSH.run(f'sudo {self.__workSpacePath}ran_build/build/{self.runsim} {self.runargs} > {self.__workSpacePath}{self.__runLogFile} 2>&1')
mySSH.close()
#return updated HTML to main
lHTML = cls_oai_html.HTMLManagement()
lHTML=self.__CheckResults_LDPCt2Test(htmlObj,constObj,testcase_id)
return lHTML
return self.__CheckResults_LDPCt2Test(htmlObj,constObj,testcase_id)
def Run_NRulsimTest(self, htmlObj, constObj, testcase_id):
self.__workSpacePath=self.eNBSourceCodePath+'/cmake_targets/'
......@@ -276,6 +260,4 @@ class PhySim:
mySSH.command(f'cd {self.__workSpacePath}', '\$', 5)
mySSH.command(f'sudo {self.__workSpacePath}ran_build/build/nr_ulsim {self.runargs} > {self.__runLogFile} 2>&1', '\$', 30)
mySSH.close()
#return updated HTML to main
lHTML = self.__CheckResults_NRulsimTest(htmlObj, constObj, testcase_id)
return lHTML
return self.__CheckResults_NRulsimTest(htmlObj, constObj, testcase_id)
......@@ -65,7 +65,7 @@ class PhySim:
#PUBLIC Methods$
#-----------------$
def Deploy_PhySim(self, HTML, RAN):
def Deploy_PhySim(self, HTML):
if self.ranRepository == '' or self.ranBranch == '' or self.ranCommitID == '':
HELP.GenericHelp(CONST.Version)
sys.exit('Insufficient Parameter')
......@@ -123,8 +123,7 @@ class PhySim:
logging.error('\u001B[1m OC Cluster Login Failed\u001B[0m')
mySSH.close()
HTML.CreateHtmlTestRow('N/A', 'KO', CONST.OC_LOGIN_FAIL)
RAN.prematureExit = True
return
return False
else:
logging.debug('\u001B[1m Login to OC Cluster Successfully\u001B[0m')
mySSH.command(f'oc project {ocProjectName}', '\$', 30)
......@@ -133,8 +132,7 @@ class PhySim:
mySSH.command('oc logout', '\$', 30)
mySSH.close()
HTML.CreateHtmlTestRow('N/A', 'KO', CONST.OC_PROJECT_FAIL)
RAN.prematureExit = True
return
return False
else:
logging.debug(f'\u001B[1m Now using project {ocProjectName}\u001B[0m')
......@@ -154,8 +152,7 @@ class PhySim:
mySSH.command('oc logout', '\$', 30)
mySSH.close()
self.AnalyzeLogFile_phySim()
RAN.prematureExit = True
return
return False
else:
logging.debug('\u001B[1m Deployed PhySim Successfully using helm chart\u001B[0m')
isRunning = False
......@@ -186,8 +183,7 @@ class PhySim:
mySSH.command('oc logout', '\$', 30)
HTML.CreateHtmlTestRow('N/A', 'KO', CONST.OC_PHYSIM_DEPLOY_FAIL)
HTML.CreateHtmlTestRowPhySimTestResult(self.testSummary,self.testResult)
RAN.prematureExit = True
return
return False
# Waiting to complete the running test
count = 0
isFinished = False
......@@ -248,13 +244,13 @@ class PhySim:
HTML.CreateHtmlTestRowPhySimTestResult(self.testSummary,self.testResult)
logging.info('\u001B[1m Physical Simulator Pass\u001B[0m')
else:
RAN.prematureExit = True
if isFinished:
HTML.CreateHtmlTestRow('N/A', 'KO', CONST.ALL_PROCESSES_OK)
else:
HTML.CreateHtmlTestRow('Some test(s) timed-out!', 'KO', CONST.ALL_PROCESSES_OK)
HTML.CreateHtmlTestRowPhySimTestResult(self.testSummary,self.testResult)
logging.error('\u001B[1m Physical Simulator Fail\u001B[0m')
return self.testStatus
def AnalyzeLogFile_phySim(self):
mySSH = SSH.SSHConnection()
......
......@@ -45,7 +45,6 @@ from multiprocessing import Process, Lock, SimpleQueue
import helpreadme as HELP
import constants as CONST
import cls_cmd
from cls_containerize import CreateWorkspace
#-----------------------------------------------------------
# Class Declaration
......@@ -214,7 +213,7 @@ class StaticCodeAnalysis():
HTML.CreateHtmlTestRowCppCheckResults(CCR)
logging.info('\u001B[1m Static Code Analysis Pass\u001B[0m')
return 0
return True
def LicenceAndFormattingCheck(self, HTML):
# Workspace is no longer recreated from scratch.
......@@ -356,4 +355,4 @@ class StaticCodeAnalysis():
HTML.htmleNBFailureMsg = 'Could not access oai-formatting-check.txt file'
HTML.CreateHtmlTestRow('N/A', 'KO', CONST.ENB_PROCESS_NOLOGFILE_TO_ANALYZE)
return finalStatus
return finalStatus == 0
9d690a12: #oppo
- adb shell input keyevent KEYCODE_POWER
- adb shell input swipe 300 700 300 0
- adb shell am start -a android.settings.AIRPLANE_MODE_SETTINGS
- adb shell input keyevent 20
- adb shell input tap 968 324
002: #s10
- adb shell input keyevent KEYCODE_POWER
- adb shell input swipe 200 900 200 300
- adb shell am start -a android.settings.AIRPLANE_MODE_SETTINGS
- adb shell input tap 968 324
003: #s20
- adb shell input keyevent KEYCODE_POWER
- adb shell input swipe 200 900 200 300
- adb shell am start -a android.settings.AIRPLANE_MODE_SETTINGS
- adb shell input tap 968 324
004: #xperia
- tbd
- tbd
- tbd
......@@ -135,6 +135,7 @@ class EPCManagement():
logging.error('This option should not occur!')
mySSH.close()
HTML.CreateHtmlTestRow(self.Type, 'OK', CONST.ALL_PROCESSES_OK)
return True
def InitializeMME(self, HTML):
if self.IPAddress == '' or self.UserName == '' or self.Password == '' or self.SourceCodePath == '' or self.Type == '':
......@@ -175,6 +176,7 @@ class EPCManagement():
logging.error('This option should not occur!')
mySSH.close()
HTML.CreateHtmlTestRow(self.Type, 'OK', CONST.ALL_PROCESSES_OK)
return True
def SetMmeIPAddress(self):
# Not an error if we don't need an EPC
......@@ -241,12 +243,14 @@ class EPCManagement():
logging.error('This option should not occur!')
mySSH.close()
HTML.CreateHtmlTestRow(self.Type, 'OK', CONST.ALL_PROCESSES_OK)
return True
def Initialize5GCN(self, HTML):
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.Type)
sys.exit('Insufficient EPC Parameters')
logging.error('Insufficient EPC Parameters')
return False
mySSH = cls_cmd.getConnection(self.IPAddress)
html_cell = ''
if re.match('ltebox', self.Type, re.IGNORECASE):
......@@ -306,7 +310,8 @@ class EPCManagement():
HTML.CreateHtmlTestRow('N/A', 'KO', report)
HTML.CreateHtmlTabFooter(False)
mySSH.close()
sys.exit("OC OAI CN5G: CN deployment failed!")
logging.error("OC OAI CN5G: CN deployment failed!")
return False
for line in report.stdout.split('\n')[1:]:
columns = line.strip().split()
name = columns[0]
......@@ -317,6 +322,7 @@ class EPCManagement():
logging.error('This option should not occur!')
mySSH.close()
HTML.CreateHtmlTestRowQueue(self.Type, 'OK', [html_cell])
return True
def SetAmfIPAddress(self):
# Not an error if we don't need an 5GCN
......@@ -472,6 +478,7 @@ class EPCManagement():
logging.error('This should not happen!')
mySSH.close()
HTML.CreateHtmlTestRow('N/A', 'OK', CONST.ALL_PROCESSES_OK)
return True
def TerminateMME(self, HTML):
mySSH = SSH.SSHConnection()
......@@ -499,6 +506,7 @@ class EPCManagement():
logging.error('This should not happen!')
mySSH.close()
HTML.CreateHtmlTestRow('N/A', 'OK', CONST.ALL_PROCESSES_OK)
return True
def TerminateSPGW(self, HTML):
mySSH = SSH.SSHConnection()
......@@ -542,6 +550,7 @@ class EPCManagement():
logging.error('This should not happen!')
mySSH.close()
HTML.CreateHtmlTestRow('N/A', 'OK', CONST.ALL_PROCESSES_OK)
return True
def Terminate5GCN(self, HTML):
mySSH = cls_cmd.getConnection(self.IPAddress)
......@@ -583,25 +592,29 @@ class EPCManagement():
if not succeeded:
HTML.CreateHtmlTestRow('N/A', 'KO', report)
HTML.CreateHtmlTabFooter(False)
sys.exit("OC OAI CN5G: CN undeployment failed!")
logging.error("OC OAI CN5G: CN undeployment failed!")
return False
else:
message = report.stdout
else:
logging.error('This should not happen!')
mySSH.close()
HTML.CreateHtmlTestRowQueue(self.Type, 'OK', [message])
return True
def DeployEpc(self, HTML):
logging.debug('Trying to deploy')
if not re.match('OAI-Rel14-Docker', self.Type, re.IGNORECASE):
HTML.CreateHtmlTestRow(self.Type, 'KO', CONST.INVALID_PARAMETER)
HTML.CreateHtmlTabFooter(False)
sys.exit('Deploy not possible with this EPC type: ' + self.Type)
logging.error('Deploy not possible with this EPC type: ' + self.Type)
return False
if self.IPAddress == '' or self.UserName == '' or self.Password == '' or self.SourceCodePath == '' or self.Type == '':
HELP.GenericHelp(CONST.Version)
HELP.EPCSrvHelp(self.IPAddress, self.UserName, self.Password, self.SourceCodePath, self.Type)
sys.exit('Insufficient EPC Parameters')
logging.error('Insufficient EPC Parameters')
return False
mySSH = SSH.SSHConnection()
mySSH.open(self.IPAddress, self.UserName, self.Password)
mySSH.command('docker-compose --version', '\$', 5)
......@@ -610,7 +623,8 @@ class EPCManagement():
mySSH.close()
HTML.CreateHtmlTestRow(self.Type, 'KO', CONST.INVALID_PARAMETER)
HTML.CreateHtmlTabFooter(False)
sys.exit('docker-compose not installed on ' + self.IPAddress)
logging.error('docker-compose not installed on ' + self.IPAddress)
return False
# Checking if it is a MAGMA deployment
self.isMagmaUsed = False
......@@ -660,7 +674,8 @@ class EPCManagement():
if not db_init_status:
HTML.CreateHtmlTestRow(self.Type, 'KO', CONST.INVALID_PARAMETER)
HTML.CreateHtmlTabFooter(False)
sys.exit('Cassandra DB deployment/configuration went wrong!')
logging.error('Cassandra DB deployment/configuration went wrong!')
return True
# deploying EPC cNFs
mySSH.command('docker-compose up -d oai_spgwu', '\$', 60)
......@@ -729,10 +744,12 @@ class EPCManagement():
mySSH.close()
logging.debug('Deployment OK')
HTML.CreateHtmlTestRowQueue(self.Type, 'OK', [html_cell])
return True
else:
mySSH.close()
logging.debug('Deployment went wrong')
HTML.CreateHtmlTestRowQueue(self.Type, 'KO', [html_cell])
return False
def UndeployEpc(self, HTML):
logging.debug('Trying to undeploy')
......@@ -802,9 +819,11 @@ class EPCManagement():
if noMoreContainerNb == nbContainers and noMoreNetworkNb == 2:
logging.debug('Undeployment OK')
HTML.CreateHtmlTestRowQueue(self.Type, 'OK', [message])
return True
else:
logging.debug('Undeployment went wrong')
HTML.CreateHtmlTestRowQueue(self.Type, 'KO', [message])
return False
def LogCollectHSS(self):
mySSH = SSH.SSHConnection()
......
"""
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
"""
import argparse
import re
import subprocess
import sys
def main() -> None:
args = _parse_args()
status = perform_flattening(args.tag)
sys.exit(status)
def _parse_args() -> argparse.Namespace:
parser = argparse.ArgumentParser(description='Flattening Image')
parser.add_argument(
'--tag', '-t',
action='store',
required=True,
help='Image Tag in image-name:image tag format',
)
return parser.parse_args()
def perform_flattening(tag):
# First detect which docker/podman command to use
cli = ''
image_prefix = ''
cmd = 'which podman || true'
podman_check = subprocess.check_output(cmd, shell=True, universal_newlines=True)
if re.search('podman', podman_check.strip()):
cli = 'sudo podman'
image_prefix = 'localhost/'
if cli == '':
cmd = 'which docker || true'
docker_check = subprocess.check_output(cmd, shell=True, universal_newlines=True)
if re.search('docker', docker_check.strip()):
cli = 'docker'
image_prefix = ''
if cli == '':
print ('No docker / podman installed: quitting')
return -1
print (f'Flattening {tag}')
# Creating a container
cmd = cli + ' run --name test-flatten --entrypoint /bin/true -d ' + tag
print (cmd)
subprocess.check_output(cmd, shell=True, universal_newlines=True)
# Export / Import trick
cmd = cli + ' export test-flatten | ' + cli + ' import '
# Bizarro syntax issue with podman
if cli == 'docker':
cmd += ' --change "ENV PATH /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin" '
else:
cmd += ' --change "ENV PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin" '
if re.search('oai-enb', tag):
cmd += ' --change "WORKDIR /opt/oai-enb" '
cmd += ' --change "EXPOSE 2152/udp" '
cmd += ' --change "EXPOSE 36412/udp" '
cmd += ' --change "EXPOSE 36422/udp" '
cmd += ' --change "CMD [\\"/opt/oai-enb/bin/lte-softmodem\\", \\"-O\\", \\"/opt/oai-enb/etc/enb.conf\\"]" '
cmd += ' --change "ENTRYPOINT [\\"/opt/oai-enb/bin/entrypoint.sh\\"]" '
if re.search('oai-gnb', tag):
cmd += ' --change "WORKDIR /opt/oai-gnb" '
cmd += ' --change "EXPOSE 2152/udp" '
cmd += ' --change "EXPOSE 36422/udp" '
cmd += ' --change "CMD [\\"/opt/oai-gnb/bin/nr-softmodem\\", \\"-O\\", \\"/opt/oai-gnb/etc/gnb.conf\\"]" '
cmd += ' --change "ENTRYPOINT [\\"/opt/oai-gnb/bin/entrypoint.sh\\"]" '
if re.search('oai-lte-ue', tag):
cmd += ' --change "WORKDIR /opt/oai-lte-ue" '
cmd += ' --change "CMD [\\"/opt/oai-lte-ue/bin/lte-uesoftmodem\\"]" '
cmd += ' --change "ENTRYPOINT [\\"/opt/oai-lte-ue/bin/entrypoint.sh\\"]" '
if re.search('oai-nr-ue', tag):
cmd += ' --change "WORKDIR /opt/oai-nr-ue" '
cmd += ' --change "CMD [\\"/opt/oai-nr-ue/bin/nr-uesoftmodem\\", \\"-O\\", \\"/opt/oai-nr-ue/etc/nr-ue.conf\\"]" '
cmd += ' --change "ENTRYPOINT [\\"/opt/oai-nr-ue/bin/entrypoint.sh\\"]" '
if re.search('oai-lte-ru', tag):
cmd += ' --change "WORKDIR /opt/oai-lte-ru" '
cmd += ' --change "CMD [\\"/opt/oai-lte-ru/bin/oairu\\", \\"-O\\", \\"/opt/oai-lte-ru/etc/rru.conf\\"]" '
cmd += ' --change "ENTRYPOINT [\\"/opt/oai-lte-ru/bin/entrypoint.sh\\"]" '
if re.search('oai-physim', tag):
cmd += ' --change "WORKDIR /opt/oai-physim" '
cmd += ' - ' + image_prefix + tag
print (cmd)
subprocess.check_output(cmd, shell=True, universal_newlines=True)
# Remove container
cmd = cli + ' rm -f test-flatten'
print (cmd)
subprocess.check_output(cmd, shell=True, universal_newlines=True)
# At this point the original image is a dangling image.
# CI pipeline will clean up (`image prune --force`)
return 0
if __name__ == '__main__':
main()
This diff is collapsed.
eNBRepository : b
ranRepository : c
eNB_AllowMerge :
ranAllowMerge :
eNBBranch : f
ranBranch : g
eNBCommitID :
ranCommitID : i
eNBTargetBranch : j
ranTargetBranch : k
nodes :
- type : eNB
IPAddress : 001.1.1
UserName : toto
Password : qwe
SourceCodePath : l
- type : gNB
IPAddress : 002.2.2
UserName : tata
Password : asd
SourceCodePath : m
- type : eNB
IPAddress : 003.3.3
UserName : titi
Password : zxc
SourceCodePath : n
- type : gNB
IPAddress : 004.4.4
UserName : caca
Password : pepe
SourceCodePath : o
EPCIPAddress : p
EPCUserName : q
EPCPassword : r
EPCSourceCodePath : s
EPCType : t
EPCContainerPrefix : u
XMLTestFile : z
UEIPAddress : qqq
UEUserName : www
UEPassword : eee
UESourceCodePath : yyy
finalStatus : bbb
\ No newline at end of file
eNBRepository : b
ranRepository : c
eNB_AllowMerge :
ranAllowMerge :
eNBBranch : f
ranBranch : g
eNBCommitID :
ranCommitID : i
eNBTargetBranch : j
ranTargetBranch : k
RAN:
RAN_inst_0:
name : RAN_1
nodes :
- type : eNB
IPAddress : 001.1.1
UserName : toto
Password : qwe
SourceCodePath : l
- type : gNB
IPAddress : 002.2.2
UserName : tata
Password : asd
SourceCodePath : m
- type : eNB
IPAddress : 003.3.3
UserName : titi
Password : zxc
SourceCodePath : n
- type : gNB
IPAddress : 004.4.4
UserName : caca
Password : pepe
SourceCodePath : o
RAN_inst_1:
name : RAN_2
nodes :
- type : eNB
IPAddress : 101.1.1
UserName : toto
Password : qwe
SourceCodePath : l
- type : gNB
IPAddress : 102.2.2
UserName : zaza
Password : asd
SourceCodePath : m
- type : eNB
IPAddress : 103.3.3
UserName : zizi
Password : zxc
SourceCodePath : n
- type : gNB
IPAddress : 104.4.4
UserName : aaaa
Password : pepe
SourceCodePath : o
EPC:
EPC_inst_0:
EPCIPAddress : p
EPCUserName : q
EPCPassword : r
EPCSourceCodePath : s
EPCType : t
EPCContainerPrefix : u
UE:
UE_inst_0:
name : UE_1
type :
UEIPAddress : qqq
UEUserName : www
UEPassword : eee
UESourceCodePath : yyy
UE_inst_1:
name : UE_2
type :
UEIPAddress : bloblob
UEUserName : gwou
UEPassword : zebu
UESourceCodePath : pop
XMLTestFile : z
finalStatus : bbb
\ No newline at end of file
This diff is collapsed.
#/*
# * 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
# */
#---------------------------------------------------------------------
# Merge Requests Dashboard for RAN on googleSheet
#
# Required Python Version
# Python 3.x
#
#---------------------------------------------------------------------
#-----------------------------------------------------------
# Import
#-----------------------------------------------------------
#Author Remi
import shlex
import subprocess
import json #json structures
import gitlab
import sys
#-----------------------------------------------------------
# Class Declaration
#-----------------------------------------------------------
class Dashboard:
def __init__(self):
#init with data sources : git, test results databases
print("Collecting Data")
cmd="""curl --silent "https://gitlab.eurecom.fr/api/v4/projects/oai%2Fopenairinterface5g/merge_requests?state=opened&per_page=100" """
self.git = self.__getGitData(cmd) #git data from Gitlab
self.mr_list=[] #mr list in string format
for x in range(len(self.git)):
self.mr_list.append(str(self.git[x]['iid']))
def __getGitData(self,cmd):
process = subprocess.Popen(shlex.split(cmd), stdout=subprocess.PIPE)
output = process.stdout.readline()
tmp=output.decode("utf-8")
d = json.loads(tmp)
return d
def PostGitNote(self,mr,commit,args):
if len(args)%4 != 0:
print("Wrong Number of Arguments")
return
else :
n_tests=len(args)//4
gl = gitlab.Gitlab.from_config('OAI')
project_id = 223
project = gl.projects.get(project_id)
#retrieve all the notes from the MR
editable_mr = project.mergerequests.get(int(mr))
mr_notes = editable_mr.notes.list(all=True)
body = '[Consolidated Test Results]\\\n'
body += 'Tested CommitID: ' + commit
for i in range(0,n_tests):
jobname = args[4*i]
buildurl = args[4*i+1]
buildid = args[4*i+2]
status = args[4*i+3]
body += '\\\n' + jobname + ': **'+status+'** ([' + buildid + '](' + buildurl + '))'
#create new note
mr_note = editable_mr.notes.create({
'body': body
})
editable_mr.save()
def main():
#call from master Jenkinsfile : sh "python3 Hdashboard.py gitpost ${GitPostArgs}"
if len(sys.argv) > 1:
#individual MR test results + test dashboard, event based (end of slave jenkins pipeline)
if sys.argv[1] != "gitpost":
print("error: only gitpost subcommand is supported")
exit(1)
elif sys.argv[1]=="gitpost":
mr=sys.argv[2]
commit=sys.argv[3]
args=[]
for i in range (4, len(sys.argv)): #jobname, url, id , result
args.append(sys.argv[i])
htmlDash=Dashboard()
if mr in htmlDash.mr_list:
htmlDash.PostGitNote(mr,commit, args)
else:
print("Not a Merge Request => this build is for testing/debug purpose, no report to git")
else:
print("Wrong argument at position 1")
exit(1)
#test and MR status dashboards, cron based
else:
print("error: only gitpost subcommand is supported")
exit(1)
if __name__ == "__main__":
# execute only if run as a script
main()
#!/bin/bash
function die() {
echo $@
exit 1
}
[ $# -ge 3 -a $# -le 4 ] || die "usage: $0 <directory> <repository> <ref> [<merge-ref>]"
set -ex
dir=$1
repo=$2
ref=$3
merge=$4
rm -rf ${dir}
git clone --filter=blob:none -n -b develop ${repo} ${dir}
cd ${dir}
git config user.email "jenkins@openairinterface.org"
git config user.name "OAI Jenkins"
git config advice.detachedHead false
mkdir -p cmake_targets/log
git checkout -f ${ref}
[ -n "${merge}" ] && git merge --ff ${merge} -m "Temporary merge for CI"
......@@ -100,7 +100,7 @@ class SSHConnection():
if connect_status:
self.command('unset HISTFILE', prompt, 5, silent=True)
else:
sys.exit('SSH Connection Failed')
raise ConnectionError('SSH Connection Failed')
self.ipaddress = ipaddress
self.username = username
......@@ -136,20 +136,20 @@ class SSHConnection():
logging.error('\u001B[1;37;41m Unexpected EOF \u001B[0m')
logging.error('Expected Line : ' + expectedline)
logging.error(str(self.ssh.before))
sys.exit(self.sshresponse)
raise ConnectionError(self.sshresponse)
elif self.sshresponse == 2:
logging.error('\u001B[1;37;41m Unexpected TIMEOUT \u001B[0m')
logging.error('Expected Line : ' + expectedline)
result = re.search('ping |iperf |picocom', str(commandline))
if result is None:
logging.warning(str(self.ssh.before))
sys.exit(self.sshresponse)
raise ConnectionError(self.sshresponse)
else:
return -1
else:
logging.error('\u001B[1;37;41m Unexpected Others \u001B[0m')
logging.error('Expected Line : ' + expectedline)
sys.exit(self.sshresponse)
raise ConnectionError(self.sshresponse)
def command2(self, commandline, timeout, silent=False):
if not silent:
......@@ -275,7 +275,7 @@ class SSHConnection():
if copy_status:
pass
else:
sys.exit('SCP failed')
raise ConnectionError('SCP failed')
def getBefore(self):
return self.ssh.before.decode('utf-8')
<domain type='kvm'>
<os>
<type>hvm</type>
<boot dev='hd'/>
</os>
<features>
<acpi/>
<apic/>
<pae/>
</features>
<cpu mode='host-passthrough'>
</cpu>
<devices>
<interface type='network'>
<source network='default'/>
<model type='virtio'/>
</interface>
<serial type='pty'>
<source path='/dev/pts/3'/>
<target port='0'/>
</serial>
<graphics type='vnc' autoport='yes' listen='127.0.0.1'>
<listen type='address' address='127.0.0.1'/>
</graphics>
<video/>
</devices>
</domain>
In this directory and subdirectories are various CI code test cases and helper
scripts.
# Unit test
There are some unit tests. From the parent directory, i.e., `ci-scripts/`,
start with
python tests/deployment.py -v
python tests/ping-iperf.py -v
python tests/iperf-analysis.py -v
It will indicate if all tests passed. It assumes that these images are present:
- `oai-ci/oai-nr-ue:develop-12345678`
- `oai-ci/oai-gnb:develop-12345678`
# test-runner test
This is not a true test, because the results need to be manually inspected. To
run this "test", run
./run.sh
inside the `test-runner/` directory (important!).
import sys
import logging
logging.basicConfig(
level=logging.DEBUG,
stream=sys.stdout,
format="[%(asctime)s] %(levelname)8s: %(message)s"
)
import os
import unittest
sys.path.append('./') # to find OAI imports below
import cls_cmd
class TestCmd(unittest.TestCase):
def test_local_cmd(self):
with cls_cmd.getConnection("localhost") as cmd:
self.assertTrue(isinstance(cmd, cls_cmd.LocalCmd))
with cls_cmd.getConnection("None") as cmd:
self.assertTrue(isinstance(cmd, cls_cmd.LocalCmd))
with cls_cmd.getConnection("none") as cmd:
self.assertTrue(isinstance(cmd, cls_cmd.LocalCmd))
with cls_cmd.getConnection(None) as cmd:
self.assertTrue(isinstance(cmd, cls_cmd.LocalCmd))
ret = cmd.run("true")
self.assertEqual(ret.args, "true")
self.assertEqual(ret.returncode, 0)
self.assertEqual(ret.stdout, "")
ret = cmd.run("false")
self.assertEqual(ret.args, "false")
self.assertEqual(ret.returncode, 1)
self.assertEqual(ret.stdout, "")
ret = cmd.run("echo test")
self.assertEqual(ret.args, "echo test")
self.assertEqual(ret.returncode, 0)
self.assertEqual(ret.stdout, "test")
def test_local_script(self):
ret = cls_cmd.runScript("localhost", "tests/scripts/hello-world.sh", 1)
self.assertEqual(ret.args, "tests/scripts/hello-world.sh")
self.assertEqual(ret.returncode, 0)
self.assertEqual(ret.stdout, "+ echo hello, world\nhello, world")
ret = cls_cmd.runScript("localhost", "tests/scripts/hello-fail.sh", 1, "TESTFAIL")
self.assertEqual(ret.args, "tests/scripts/hello-fail.sh TESTFAIL")
self.assertEqual(ret.returncode, 1)
self.assertEqual(ret.stdout, "TESTFAIL")
ret = cls_cmd.runScript("localhost", "tests/scripts/hello-fail.sh", 1, "TESTFAIL2", "/tmp/result")
self.assertEqual(ret.args, "tests/scripts/hello-fail.sh TESTFAIL2 &> /tmp/result")
self.assertEqual(ret.returncode, 1)
self.assertEqual(ret.stdout, "")
with cls_cmd.getConnection("localhost") as ssh:
ret = ssh.run("cat /tmp/result")
self.assertEqual(ret.args, "cat /tmp/result")
self.assertEqual(ret.returncode, 0)
self.assertEqual(ret.stdout, "TESTFAIL2")
@unittest.skip("need to be able to passwordlessly SSH to localhost, also disable stty -ixon")
def test_remote_cmd(self):
with cls_cmd.getConnection("127.0.0.1") as cmd:
self.assertTrue(isinstance(cmd, cls_cmd.RemoteCmd))
ret = cmd.run("true")
self.assertEqual(ret.args, "true")
self.assertEqual(ret.returncode, 0)
self.assertEqual(ret.stdout, "")
ret = cmd.run("false")
self.assertEqual(ret.args, "false")
self.assertEqual(ret.returncode, 1)
self.assertEqual(ret.stdout, "")
ret = cmd.run("echo test")
self.assertEqual(ret.args, "echo test")
self.assertEqual(ret.returncode, 0)
self.assertEqual(ret.stdout, "test")
@unittest.skip("need to be able to passwordlessly SSH to localhost, also disable stty -ixon")
def test_remote_script(self):
ret = cls_cmd.runScript("127.0.0.1", "tests/scripts/hello-world.sh", 1)
self.assertEqual(ret.args, "tests/scripts/hello-world.sh")
self.assertEqual(ret.returncode, 0)
self.assertEqual(ret.stdout, "+ echo hello, world\nhello, world")
ret = cls_cmd.runScript("127.0.0.1", "tests/scripts/hello-fail.sh", 1, "TESTFAIL")
self.assertEqual(ret.args, "tests/scripts/hello-fail.sh TESTFAIL")
self.assertEqual(ret.returncode, 1)
self.assertEqual(ret.stdout, "TESTFAIL")
ret = cls_cmd.runScript("127.0.0.1", "tests/scripts/hello-fail.sh", 1, "TESTFAIL2", "/tmp/result")
self.assertEqual(ret.args, "tests/scripts/hello-fail.sh TESTFAIL2 &> /tmp/result")
self.assertEqual(ret.returncode, 1)
self.assertEqual(ret.stdout, "")
with cls_cmd.getConnection("localhost") as ssh:
ret = ssh.run("cat /tmp/result")
self.assertEqual(ret.args, "cat /tmp/result")
self.assertEqual(ret.returncode, 0)
self.assertEqual(ret.stdout, "TESTFAIL2")
if __name__ == '__main__':
unittest.main()
import sys
import logging
logging.basicConfig(
level=logging.DEBUG,
stream=sys.stdout,
format="[%(asctime)s] %(levelname)8s: %(message)s"
)
import os
os.system(f'rm -rf cmake_targets')
os.system(f'mkdir -p cmake_targets/log')
import unittest
sys.path.append('./') # to find OAI imports below
import cls_oai_html
import cls_oaicitest
import cls_containerize
import ran
class TestDeploymentMethods(unittest.TestCase):
def setUp(self):
self.html = cls_oai_html.HTMLManagement()
self.html.testCaseId = "000000"
self.ci = cls_oaicitest.OaiCiTest()
self.cont = cls_containerize.Containerize()
self.ran = ran.RANManagement()
self.cont.yamlPath[0] = ''
self.cont.ranAllowMerge = True
self.cont.ranBranch = ''
self.cont.ranCommitID = ''
self.cont.eNB_serverId[0] = '0'
self.cont.eNBIPAddress = 'localhost'
self.cont.eNBUserName = None
self.cont.eNBPassword = None
self.cont.eNBSourceCodePath = os.getcwd()
def test_deploy(self):
self.cont.yamlPath[0] = 'tests/simple-dep/'
self.cont.deploymentTag = "noble"
deploy = self.cont.DeployObject(self.html)
undeploy = self.cont.UndeployObject(self.html, self.ran)
self.assertTrue(deploy)
self.assertTrue(undeploy)
def test_deployfails(self):
# fails reliably
old = self.cont.yamlPath
self.cont.yamlPath[0] = 'tests/simple-fail/'
deploy = self.cont.DeployObject(self.html)
self.cont.UndeployObject(self.html, self.ran)
self.assertFalse(deploy)
self.cont.yamlPath = old
def test_deploy_ran(self):
self.cont.yamlPath[0] = 'yaml_files/5g_rfsimulator_tdd_dora'
self.cont.services[0] = "oai-gnb"
self.cont.deploymentTag = 'develop-12345678'
deploy = self.cont.DeployObject(self.html)
undeploy = self.cont.UndeployObject(self.html, self.ran)
self.assertTrue(deploy)
self.assertTrue(undeploy)
def test_deploy_multiran(self):
self.cont.yamlPath[0] = 'yaml_files/5g_rfsimulator_tdd_dora'
self.cont.services[0] = "oai-gnb oai-nr-ue"
self.cont.deploymentTag = 'develop-12345678'
deploy = self.cont.DeployObject(self.html)
undeploy = self.cont.UndeployObject(self.html, self.ran)
self.assertTrue(deploy)
self.assertTrue(undeploy)
def test_deploy_staged(self):
self.cont.yamlPath[0] = 'yaml_files/5g_rfsimulator_tdd_dora'
self.cont.services[0] = "oai-gnb"
self.cont.deploymentTag = 'develop-12345678'
deploy1 = self.cont.DeployObject(self.html)
self.cont.services[0] = "oai-nr-ue"
deploy2 = self.cont.DeployObject(self.html)
undeploy = self.cont.UndeployObject(self.html, self.ran)
self.assertTrue(deploy1)
self.assertTrue(deploy2)
self.assertTrue(undeploy)
if __name__ == '__main__':
unittest.main()
import sys
import logging
logging.basicConfig(
level=logging.DEBUG,
stream=sys.stdout,
format="[%(asctime)s] %(levelname)8s: %(message)s"
)
import os
import unittest
sys.path.append('./') # to find OAI imports below
import cls_oaicitest
class TestIperfAnalysis(unittest.TestCase):
def setUp(self):
self.iperf_bitrate_threshold = "99"
self.iperf_packetloss_threshold = "0"
def test_iperf_analyzeV3UDP_ok(self):
filename_ok = "tests/log/iperf_udp_test_ok.log"
msg_filename_ok = "tests/log/iperf_udp_msg_ok.txt"
target_bitrate = "1"
with open(msg_filename_ok, 'r') as file:
expected_msg_ok = file.read().strip()
success, msg = cls_oaicitest.Iperf_analyzeV3UDP(filename_ok, self.iperf_bitrate_threshold, self.iperf_packetloss_threshold, target_bitrate)
self.assertEqual(msg, expected_msg_ok)
self.assertTrue(success)
def test_iperf_analyzeV3UDP_ok2(self):
filename_ok = "tests/log/iperf_udp_test_ok2.log"
msg_filename_ok = "tests/log/iperf_udp_msg_ok2.txt"
target_bitrate = "4.67"
with open(msg_filename_ok, 'r') as file:
expected_msg_ok = file.read().strip()
success, msg = cls_oaicitest.Iperf_analyzeV3UDP(filename_ok, self.iperf_bitrate_threshold, self.iperf_packetloss_threshold, target_bitrate)
self.assertEqual(msg, expected_msg_ok)
self.assertTrue(success)
def test_iperf_analyzeV3UDP_nok(self):
filename_nok = "tests/log/iperf_udp_test_nok.log"
msg_filename_nok = "tests/log/iperf_udp_msg_nok.txt"
target_bitrate = "1"
with open(msg_filename_nok, 'r') as file:
expected_msg_nok = file.read().strip()
success, msg = cls_oaicitest.Iperf_analyzeV3UDP(filename_nok, self.iperf_bitrate_threshold, self.iperf_packetloss_threshold, target_bitrate)
self.assertEqual(msg, expected_msg_nok)
self.assertFalse(success)
def test_iperf_analyzeV3UDP_nok2(self):
filename_nok = "tests/log/iperf_udp_test_nok2.log"
msg_filename_nok = "tests/log/iperf_udp_msg_nok2.txt"
target_bitrate = "80"
with open(msg_filename_nok, 'r') as file:
expected_msg_nok = file.read().strip()
success, msg = cls_oaicitest.Iperf_analyzeV3UDP(filename_nok, self.iperf_bitrate_threshold, self.iperf_packetloss_threshold, target_bitrate)
self.assertEqual(msg, expected_msg_nok)
self.assertFalse(success)
def test_iperf_analyzeV3UDP_nok3(self):
filename_nok = "tests/log/iperf_udp_test_nok3.log"
msg_filename_nok = "tests/log/iperf_udp_msg_nok3.txt"
target_bitrate = "4.67"
with open(msg_filename_nok, 'r') as file:
expected_msg_nok = file.read().strip()
success, msg = cls_oaicitest.Iperf_analyzeV3UDP(filename_nok, self.iperf_bitrate_threshold, self.iperf_packetloss_threshold, target_bitrate)
self.assertEqual(msg, expected_msg_nok)
self.assertFalse(success)
def test_iperf_analyzeV3UDP_notfound(self):
filename_notfound = "tests/log/iperf_udp_test_notfound.log"
target_bitrate = "1"
success, msg = cls_oaicitest.Iperf_analyzeV3UDP(filename_notfound, self.iperf_bitrate_threshold, self.iperf_packetloss_threshold, target_bitrate)
self.assertEqual(msg, "Iperf3 UDP: Log file not present")
self.assertFalse(success)
if __name__ == '__main__':
unittest.main()
Sender Bitrate : 0.52 Mbps
Receiver Bitrate: 0.52 Mbps (too low! < 99%)
Jitter : 0.026 ms
Packet Loss : 10 % (too high! > 0%)
Sender Bitrate : 0.00 Mbps
Receiver Bitrate: 3.98 Mbps (too low! < 99%)
Jitter : 3.847 ms
Packet Loss : 0.038 % (too high! > 0%)
Sender Bitrate : 1.03 Mbps
Receiver Bitrate: 0.00 Mbps (too low! < 99%)
Jitter : 0.000 ms
Packet Loss : 0 %
Sender Bitrate : 1.00 Mbps
Receiver Bitrate: 1.00 Mbps (99.60 %)
Jitter : 0.029 ms
Packet Loss : 0 %
Sender Bitrate : 4.67 Mbps
Receiver Bitrate: 4.67 Mbps (100.00 %)
Jitter : 3.413 ms
Packet Loss : 0 %
Connecting to host 127.0.0.1, port 5002
Reverse mode, remote host 127.0.0.1 is sending
[ 5] local 127.0.0.1 port 49140 connected to 127.0.0.1 port 5002
[ ID] Interval Transfer Bitrate Jitter Lost/Total Datagrams
[ 5] 0.00-1.00 sec 64.0 KBytes 524 Kbits/sec 0.005 ms 0/2 (0%) (omitted)
[ 5] 1.00-2.00 sec 64.0 KBytes 524 Kbits/sec 0.012 ms 0/2 (0%) (omitted)
[ 5] 2.00-3.00 sec 64.0 KBytes 524 Kbits/sec 0.013 ms 0/2 (0%) (omitted)
[ 5] 3.00-4.00 sec 64.0 KBytes 524 Kbits/sec 0.015 ms 0/2 (0%) (omitted)
[ 5] 4.00-5.00 sec 64.0 KBytes 524 Kbits/sec 0.019 ms 0/2 (0%) (omitted)
[ 5] 0.00-1.00 sec 64.0 KBytes 524 Kbits/sec 0.006 ms 0/2 (0%)
[ 5] 1.00-2.00 sec 64.0 KBytes 524 Kbits/sec 0.008 ms 0/2 (0%)
[ 5] 2.00-3.00 sec 64.0 KBytes 524 Kbits/sec 0.015 ms 0/2 (0%)
[ 5] 3.00-4.00 sec 64.0 KBytes 524 Kbits/sec 0.017 ms 0/2 (0%)
[ 5] 4.00-5.00 sec 64.0 KBytes 525 Kbits/sec 0.026 ms 0/2 (0%)
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval Transfer Bitrate Jitter Lost/Total Datagrams
[ 5] 0.00-5.00 sec 320 KBytes 524 Kbits/sec 0.000 ms 0/10 (0%) sender
[ 5] 0.00-5.00 sec 320 KBytes 524 Kbits/sec 0.026 ms 0/10 (10%) receiver
Server output:
Accepted connection from 127.0.0.1, port 34697
[ 5] local 127.0.0.1 port 5002 connected to 127.0.0.1 port 49140
[ ID] Interval Transfer Bitrate Total Datagrams
[ 5] 0.00-1.00 sec 64.0 KBytes 524 Kbits/sec 2 (omitted)
[ 5] 1.00-2.00 sec 64.0 KBytes 524 Kbits/sec 2 (omitted)
[ 5] 2.00-3.00 sec 64.0 KBytes 524 Kbits/sec 2 (omitted)
[ 5] 3.00-4.00 sec 64.0 KBytes 524 Kbits/sec 2 (omitted)
[ 5] 4.00-5.00 sec 64.0 KBytes 524 Kbits/sec 2 (omitted)
[ 5] 0.00-1.00 sec 64.0 KBytes 524 Kbits/sec 2
[ 5] 1.00-2.00 sec 64.0 KBytes 524 Kbits/sec 2
[ 5] 2.00-3.00 sec 64.0 KBytes 524 Kbits/sec 2
[ 5] 3.00-4.00 sec 64.0 KBytes 524 Kbits/sec 2
[ 5] 4.00-5.00 sec 64.0 KBytes 524 Kbits/sec 2
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval Transfer Bitrate Jitter Lost/Total Datagrams
[ 5] 0.00-5.00 sec 320 KBytes 524 Kbits/sec 0.000 ms 0/10 (10%) sender
iperf Done.
Connecting to host 192.172.0.1, port 5002
Reverse mode, remote host 192.172.0.1 is sending
[ 5] local 192.172.0.2 port 44733 connected to 192.172.0.1 port 5002
[ ID] Interval Transfer Bitrate Jitter Lost/Total Datagrams
[ 5] 0.00-1.00 sec 8.55 MBytes 71.7 Mbits/sec 0.407 ms 66/6256 (1.1%) (omitted)
[ 5] 1.00-2.00 sec 10.4 MBytes 87.3 Mbits/sec 0.355 ms 0/7540 (0%) (omitted)
[ 5] 2.00-3.00 sec 9.55 MBytes 80.1 Mbits/sec 0.333 ms 0/6913 (0%) (omitted)
[ 5] 3.00-4.00 sec 9.54 MBytes 80.0 Mbits/sec 0.344 ms 0/6906 (0%) (omitted)
[ 5] 4.00-5.00 sec 9.54 MBytes 80.0 Mbits/sec 0.338 ms 0/6906 (0%) (omitted)
[ 5] 0.00-1.00 sec 9.53 MBytes 80.0 Mbits/sec 0.398 ms 0/6903 (0%)
[ 5] 1.00-2.00 sec 9.54 MBytes 80.0 Mbits/sec 0.393 ms 0/6907 (0%)
[ 5] 2.00-3.00 sec 9.53 MBytes 80.0 Mbits/sec 0.338 ms 0/6902 (0%)
[ 5] 3.00-4.00 sec 4.50 MBytes 37.7 Mbits/sec 3.847 ms 9/3269 (0.28%)
[ 5] 4.00-5.00 sec 0.00 Bytes 0.00 bits/sec 3.847 ms 0/0 (0%)
[ 5] 5.00-6.00 sec 0.00 Bytes 0.00 bits/sec 3.847 ms 0/0 (0%)
[ 5] 6.00-7.00 sec 0.00 Bytes 0.00 bits/sec 3.847 ms 0/0 (0%)
[ 5] 7.00-8.00 sec 0.00 Bytes 0.00 bits/sec 3.847 ms 0/0 (0%)
[ 5] 8.00-9.00 sec 0.00 Bytes 0.00 bits/sec 3.847 ms 0/0 (0%)
[ 5] 9.00-10.00 sec 0.00 Bytes 0.00 bits/sec 3.847 ms 0/0 (0%)
[ 5] 10.00-11.00 sec 0.00 Bytes 0.00 bits/sec 3.847 ms 0/0 (0%)
[ 5] 11.00-12.00 sec 0.00 Bytes 0.00 bits/sec 3.847 ms 0/0 (0%)
[ 5] 12.00-13.00 sec 0.00 Bytes 0.00 bits/sec 3.847 ms 0/0 (0%)
[ 5] 13.00-14.00 sec 0.00 Bytes 0.00 bits/sec 3.847 ms 0/0 (0%)
[ 5] 14.00-15.00 sec 0.00 Bytes 0.00 bits/sec 3.847 ms 0/0 (0%)
[ 5] 15.00-16.00 sec 0.00 Bytes 0.00 bits/sec 3.847 ms 0/0 (0%)
[ 5] 16.00-17.00 sec 0.00 Bytes 0.00 bits/sec 3.847 ms 0/0 (0%)
[ 5] 17.00-18.00 sec 0.00 Bytes 0.00 bits/sec 3.847 ms 0/0 (0%)
[ 5] 18.00-19.00 sec 0.00 Bytes 0.00 bits/sec 3.847 ms 0/0 (0%)
[ 5] 19.00-20.00 sec 0.00 Bytes 0.00 bits/sec 3.847 ms 0/0 (0%)
[ 5] 20.00-21.00 sec 0.00 Bytes 0.00 bits/sec 3.847 ms 0/0 (0%)
[ 5] 21.00-22.00 sec 0.00 Bytes 0.00 bits/sec 3.847 ms 0/0 (0%)
[ 5] 22.00-23.00 sec 0.00 Bytes 0.00 bits/sec 3.847 ms 0/0 (0%)
[ 5] 23.00-24.00 sec 0.00 Bytes 0.00 bits/sec 3.847 ms 0/0 (0%)
[ 5] 24.00-25.00 sec 0.00 Bytes 0.00 bits/sec 3.847 ms 0/0 (0%)
[ 5] 25.00-26.00 sec 0.00 Bytes 0.00 bits/sec 3.847 ms 0/0 (0%)
[ 5] 26.00-27.00 sec 0.00 Bytes 0.00 bits/sec 3.847 ms 0/0 (0%)
[ 5] 27.00-28.00 sec 0.00 Bytes 0.00 bits/sec 3.847 ms 0/0 (0%)
[ 5] 28.00-29.00 sec 0.00 Bytes 0.00 bits/sec 3.847 ms 0/0 (0%)
[ 5] 30.00-69.84 sec 0.00 Bytes 0.00 bits/sec 3.847 ms 0/0 (0%)
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval Transfer Bitrate Jitter Lost/Total Datagrams
[ 5] 0.00-69.84 sec 0.00 Bytes 0.00 bits/sec 0.000 ms 0/-34521 (0%) sender
[ 5] 0.00-69.84 sec 33.1 MBytes 3.98 Mbits/sec 3.847 ms 9/23981 (0.038%) receiver
Connecting to host 172.21.6.102, port 5007
[ 5] local 12.1.1.105 port 46131 connected to 172.21.6.102 port 5007
[ ID] Interval Transfer Bitrate Total Datagrams
[ 5] 0.00-1.00 sec 293 KBytes 2.40 Mbits/sec 207 (omitted)
[ 5] 1.00-2.00 sec 294 KBytes 2.41 Mbits/sec 208 (omitted)
[ 5] 2.00-3.00 sec 293 KBytes 2.40 Mbits/sec 207 (omitted)
[ 5] 3.00-4.00 sec 293 KBytes 2.40 Mbits/sec 207 (omitted)
[ 5] 1.00-1.00 sec 293 KBytes 1.20 Mbits/sec 414
[ 5] 1.00-2.00 sec 294 KBytes 2.41 Mbits/sec 208
[ 5] 2.00-3.00 sec 293 KBytes 2.40 Mbits/sec 207
[ 5] 3.00-4.00 sec 293 KBytes 2.40 Mbits/sec 207
[ 5] 4.00-5.00 sec 293 KBytes 2.40 Mbits/sec 207
[ 5] 5.00-6.00 sec 293 KBytes 2.40 Mbits/sec 207
[ 5] 6.00-7.00 sec 293 KBytes 2.40 Mbits/sec 207
[ 5] 7.00-8.00 sec 294 KBytes 2.41 Mbits/sec 208
[ 5] 8.00-9.00 sec 293 KBytes 2.40 Mbits/sec 207
[ 5] 9.00-10.00 sec 293 KBytes 2.40 Mbits/sec 207
[ 5] 10.00-11.00 sec 293 KBytes 2.40 Mbits/sec 207
[ 5] 11.00-12.00 sec 294 KBytes 2.41 Mbits/sec 208
[ 5] 12.00-13.00 sec 293 KBytes 2.40 Mbits/sec 207
[ 5] 13.00-14.00 sec 293 KBytes 2.40 Mbits/sec 207
[ 5] 14.00-15.00 sec 293 KBytes 2.40 Mbits/sec 207
[ 5] 15.00-16.00 sec 293 KBytes 2.40 Mbits/sec 207
[ 5] 16.00-17.00 sec 293 KBytes 2.40 Mbits/sec 207
[ 5] 17.00-18.00 sec 293 KBytes 2.40 Mbits/sec 207
[ 5] 18.00-19.00 sec 294 KBytes 2.41 Mbits/sec 208
[ 5] 19.00-20.00 sec 293 KBytes 2.40 Mbits/sec 207
[ 5] 20.00-21.00 sec 293 KBytes 2.40 Mbits/sec 207
[ 5] 21.00-22.00 sec 293 KBytes 2.40 Mbits/sec 207
[ 5] 22.00-23.00 sec 293 KBytes 2.40 Mbits/sec 207
[ 5] 23.00-24.00 sec 294 KBytes 2.41 Mbits/sec 208
[ 5] 24.00-25.00 sec 293 KBytes 2.40 Mbits/sec 207
[ 5] 25.00-26.00 sec 293 KBytes 2.40 Mbits/sec 207
[ 5] 26.00-27.00 sec 293 KBytes 2.40 Mbits/sec 207
[ 5] 27.00-28.00 sec 293 KBytes 2.40 Mbits/sec 207
[ 5] 28.00-29.00 sec 294 KBytes 2.41 Mbits/sec 208
[ 5] 30.00-69.81 sec 0.00 Bytes 0.00 bits/sec 0
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval Transfer Bitrate Jitter Lost/Total Datagrams
[ 5] 0.00-69.81 sec 8.58 MBytes 1.03 Mbits/sec 0.000 ms 0/6216 (0%) sender
[ 5] 0.00-69.81 sec 0.00 Bytes 0.00 bits/sec 0.000 ms 0/-1036 (0%) receiver
Connecting to host 127.0.0.1, port 5002
Reverse mode, remote host 127.0.0.1 is sending
[ 5] local 127.0.0.1 port 34141 connected to 127.0.0.1 port 5002
[ ID] Interval Transfer Bitrate Jitter Lost/Total Datagrams
[ 5] 0.00-1.00 sec 128 KBytes 1.05 Mbits/sec 0.011 ms 0/4 (0%) (omitted)
[ 5] 1.00-2.00 sec 128 KBytes 1.05 Mbits/sec 0.012 ms 0/4 (0%) (omitted)
[ 5] 2.00-3.00 sec 128 KBytes 1.05 Mbits/sec 0.019 ms 0/4 (0%) (omitted)
[ 5] 3.00-4.00 sec 128 KBytes 1.05 Mbits/sec 0.023 ms 0/4 (0%) (omitted)
[ 5] 4.00-5.00 sec 128 KBytes 1.05 Mbits/sec 0.022 ms 0/4 (0%) (omitted)
[ 5] 0.00-1.00 sec 96.0 KBytes 786 Kbits/sec 0.003 ms 0/3 (0%)
[ 5] 1.00-2.00 sec 128 KBytes 1.05 Mbits/sec 0.011 ms 0/4 (0%)
[ 5] 2.00-3.00 sec 128 KBytes 1.05 Mbits/sec 0.024 ms 0/4 (0%)
[ 5] 3.00-4.00 sec 128 KBytes 1.05 Mbits/sec 0.022 ms 0/4 (0%)
[ 5] 4.00-5.00 sec 128 KBytes 1.05 Mbits/sec 0.029 ms 0/4 (0%)
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval Transfer Bitrate Jitter Lost/Total Datagrams
[ 5] 0.00-5.00 sec 608 KBytes 996 Kbits/sec 0.000 ms 0/19 (0%) sender
[ 5] 0.00-5.00 sec 608 KBytes 996 Kbits/sec 0.029 ms 0/19 (0%) receiver
Server output:
Accepted connection from 127.0.0.1, port 53711
[ 5] local 127.0.0.1 port 5002 connected to 127.0.0.1 port 34141
[ ID] Interval Transfer Bitrate Total Datagrams
[ 5] 0.00-1.00 sec 128 KBytes 1.05 Mbits/sec 4 (omitted)
[ 5] 1.00-2.00 sec 128 KBytes 1.05 Mbits/sec 4 (omitted)
[ 5] 2.00-3.00 sec 128 KBytes 1.05 Mbits/sec 4 (omitted)
[ 5] 3.00-4.00 sec 128 KBytes 1.05 Mbits/sec 4 (omitted)
[ 5] 4.00-5.00 sec 128 KBytes 1.05 Mbits/sec 4 (omitted)
[ 5] 0.00-1.00 sec 96.0 KBytes 786 Kbits/sec 3
[ 5] 1.00-2.00 sec 128 KBytes 1.05 Mbits/sec 4
[ 5] 2.00-3.00 sec 128 KBytes 1.05 Mbits/sec 4
[ 5] 3.00-4.00 sec 128 KBytes 1.05 Mbits/sec 4
[ 5] 4.00-5.00 sec 128 KBytes 1.05 Mbits/sec 4
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval Transfer Bitrate Jitter Lost/Total Datagrams
[ 5] 0.00-5.00 sec 608 KBytes 996 Kbits/sec 0.000 ms 0/19 (0%) sender
iperf Done.
Connecting to host 172.21.6.102, port 5007
Reverse mode, remote host 172.21.6.102 is sending
[ 5] local 12.1.1.105 port 52299 connected to 172.21.6.102 port 5007
[ ID] Interval Transfer Bitrate Jitter Lost/Total Datagrams
[ 5] 0.00-1.00 sec 389 KBytes 3.19 Mbits/sec 8024.341 ms 131771/132046 (1e+02%) (omitted)
[ 5] 1.00-2.00 sec 602 KBytes 4.93 Mbits/sec 4.031 ms -426/0 (0%) (omitted)
[ 5] 2.00-3.00 sec 638 KBytes 5.22 Mbits/sec 3.643 ms -451/0 (0%) (omitted)
[ 5] 3.00-4.00 sec 632 KBytes 5.18 Mbits/sec 3.607 ms -447/0 (0%) (omitted)
[ 5] 1.00-1.00 sec 567 KBytes 2.32 Mbits/sec 2.950 ms -818/0 (0%)
[ 5] 1.00-2.00 sec 570 KBytes 4.67 Mbits/sec 3.083 ms -403/0 (0%)
[ 5] 2.00-3.00 sec 573 KBytes 4.69 Mbits/sec 3.222 ms -405/0 (0%)
[ 5] 3.00-4.00 sec 566 KBytes 4.63 Mbits/sec 3.114 ms -400/0 (0%)
[ 5] 4.00-5.00 sec 576 KBytes 4.71 Mbits/sec 3.594 ms -407/0 (0%)
[ 5] 5.00-6.00 sec 567 KBytes 4.65 Mbits/sec 3.634 ms -401/0 (0%)
[ 5] 6.00-7.00 sec 571 KBytes 4.68 Mbits/sec 3.196 ms -404/0 (0%)
[ 5] 7.00-8.00 sec 567 KBytes 4.65 Mbits/sec 3.514 ms -401/0 (0%)
[ 5] 8.00-9.00 sec 573 KBytes 4.69 Mbits/sec 3.230 ms -405/0 (0%)
[ 5] 9.00-10.00 sec 570 KBytes 4.67 Mbits/sec 3.334 ms -403/0 (0%)
[ 5] 10.00-11.00 sec 566 KBytes 4.63 Mbits/sec 3.602 ms -400/0 (0%)
[ 5] 11.00-12.00 sec 574 KBytes 4.70 Mbits/sec 3.484 ms -406/0 (0%)
[ 5] 12.00-13.00 sec 571 KBytes 4.68 Mbits/sec 3.339 ms -404/0 (0%)
[ 5] 13.00-14.00 sec 568 KBytes 4.66 Mbits/sec 3.404 ms -402/0 (0%)
[ 5] 14.00-15.00 sec 570 KBytes 4.67 Mbits/sec 3.503 ms -403/0 (0%)
[ 5] 15.00-16.00 sec 573 KBytes 4.69 Mbits/sec 3.369 ms -405/0 (0%)
[ 5] 16.00-17.00 sec 567 KBytes 4.65 Mbits/sec 3.533 ms -401/0 (0%)
[ 5] 17.00-18.00 sec 570 KBytes 4.67 Mbits/sec 3.650 ms -403/0 (0%)
[ 5] 18.00-19.00 sec 573 KBytes 4.69 Mbits/sec 3.532 ms -405/0 (0%)
[ 5] 19.00-20.00 sec 568 KBytes 4.66 Mbits/sec 3.461 ms -402/0 (0%)
[ 5] 20.00-21.00 sec 573 KBytes 4.69 Mbits/sec 3.369 ms -405/0 (0%)
[ 5] 21.00-22.00 sec 566 KBytes 4.63 Mbits/sec 3.654 ms -400/0 (0%)
[ 5] 22.00-23.00 sec 573 KBytes 4.69 Mbits/sec 3.309 ms -405/0 (0%)
[ 5] 23.00-24.00 sec 568 KBytes 4.66 Mbits/sec 3.681 ms -402/0 (0%)
[ 5] 24.00-25.00 sec 570 KBytes 4.67 Mbits/sec 3.443 ms -403/0 (0%)
[ 5] 25.00-26.00 sec 571 KBytes 4.68 Mbits/sec 3.467 ms -404/0 (0%)
[ 5] 26.00-27.00 sec 573 KBytes 4.69 Mbits/sec 3.324 ms -405/0 (0%)
[ 5] 27.00-28.00 sec 566 KBytes 4.63 Mbits/sec 3.425 ms -400/0 (0%)
[ 5] 28.00-29.00 sec 574 KBytes 4.70 Mbits/sec 3.274 ms -406/0 (0%)
[ 5] 29.00-30.00 sec 570 KBytes 4.67 Mbits/sec 3.413 ms -403/0 (0%)
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval Transfer Bitrate Jitter Lost/Total Datagrams
[ 5] 0.00-30.01 sec 16.7 MBytes 4.67 Mbits/sec 0.000 ms 0/-117930 (0%) sender
[SUM] 0.0-30.0 sec 12094 datagrams received out-of-order
[ 5] 0.00-30.00 sec 16.7 MBytes 4.67 Mbits/sec 3.413 ms -12094/0 (0%) receiver
Server output:
Accepted connection from 172.21.6.101, port 47601
[ 5] local 172.21.6.102 port 5007 connected to 172.21.6.101 port 52299
[ ID] Interval Transfer Bitrate Total Datagrams
[ 5] 0.00-1.00 sec 570 KBytes 4.67 Mbits/sec 403 (omitted)
[ 5] 1.00-2.00 sec 570 KBytes 4.67 Mbits/sec 403 (omitted)
[ 5] 2.00-3.00 sec 571 KBytes 4.68 Mbits/sec 404 (omitted)
[ 5] 3.00-4.00 sec 570 KBytes 4.67 Mbits/sec 403 (omitted)
[ 5] 4.00-5.00 sec 570 KBytes 4.67 Mbits/sec 403 (omitted)
[ 5] 0.00-1.00 sec 570 KBytes 4.67 Mbits/sec 403
[ 5] 1.00-2.00 sec 570 KBytes 4.67 Mbits/sec 403
[ 5] 2.00-3.00 sec 570 KBytes 4.67 Mbits/sec 403
[ 5] 3.00-4.00 sec 570 KBytes 4.67 Mbits/sec 403
[ 5] 4.00-5.00 sec 571 KBytes 4.68 Mbits/sec 404
[ 5] 5.00-6.00 sec 570 KBytes 4.67 Mbits/sec 403
[ 5] 6.00-7.00 sec 570 KBytes 4.67 Mbits/sec 403
[ 5] 7.00-8.00 sec 570 KBytes 4.67 Mbits/sec 403
[ 5] 8.00-9.00 sec 571 KBytes 4.68 Mbits/sec 404
[ 5] 9.00-10.00 sec 570 KBytes 4.67 Mbits/sec 403
[ 5] 10.00-11.00 sec 570 KBytes 4.67 Mbits/sec 403
[ 5] 11.00-12.00 sec 570 KBytes 4.67 Mbits/sec 403
[ 5] 12.00-13.00 sec 570 KBytes 4.67 Mbits/sec 403
[ 5] 13.00-14.00 sec 570 KBytes 4.67 Mbits/sec 403
[ 5] 14.00-15.00 sec 570 KBytes 4.67 Mbits/sec 403
[ 5] 15.00-16.00 sec 570 KBytes 4.67 Mbits/sec 403
[ 5] 16.00-17.00 sec 570 KBytes 4.67 Mbits/sec 403
[ 5] 17.00-18.00 sec 570 KBytes 4.67 Mbits/sec 403
[ 5] 18.00-19.00 sec 571 KBytes 4.68 Mbits/sec 404
[ 5] 19.00-20.00 sec 570 KBytes 4.67 Mbits/sec 403
[ 5] 20.00-21.00 sec 570 KBytes 4.67 Mbits/sec 403
[ 5] 21.00-22.00 sec 570 KBytes 4.67 Mbits/sec 403
[ 5] 22.00-23.00 sec 570 KBytes 4.67 Mbits/sec 403
[ 5] 23.00-24.00 sec 570 KBytes 4.67 Mbits/sec 403
[ 5] 24.00-25.00 sec 571 KBytes 4.68 Mbits/sec 404
[ 5] 25.00-26.00 sec 570 KBytes 4.67 Mbits/sec 403
[ 5] 26.00-27.00 sec 570 KBytes 4.67 Mbits/sec 403
[ 5] 27.00-28.00 sec 570 KBytes 4.67 Mbits/sec 403
[ 5] 28.00-29.00 sec 570 KBytes 4.67 Mbits/sec 403
[ 5] 29.00-30.00 sec 570 KBytes 4.67 Mbits/sec 403
[ 5] 30.00-30.01 sec 8.48 KBytes 4.94 Mbits/sec 6
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval Transfer Bitrate Jitter Lost/Total Datagrams
[ 5] 0.00-30.01 sec 16.7 MBytes 4.67 Mbits/sec 0.000 ms 0/12100 (0%) sender
iperf Done.
import sys
import logging
logging.basicConfig(
level=logging.DEBUG,
stream=sys.stdout,
format="[%(asctime)s] %(levelname)8s: %(message)s"
)
import os
os.system(f'rm -rf cmake_targets')
os.system(f'mkdir -p cmake_targets/log')
import unittest
sys.path.append('./') # to find OAI imports below
import cls_oai_html
import cls_oaicitest
import cls_containerize
import epc
class TestPingIperf(unittest.TestCase):
def setUp(self):
self.html = cls_oai_html.HTMLManagement()
self.html.testCaseId = "000000"
self.ci = cls_oaicitest.OaiCiTest()
self.ci.ue_ids = ["test"]
self.ci.nodes = ["localhost"]
self.cont = cls_containerize.Containerize()
self.epc = epc.EPCManagement()
self.epc.IPAddress = "localhost"
self.epc.UserName = None
self.epc.Password = None
self.epc.SourceCodePath = os.getcwd()
def test_ping(self):
self.ci.ping_args = "-c3 127.0.0.1"
self.ci.ping_packetloss_threshold = "0"
# TODO Should need nothing but options and UE(s) to use
success = self.ci.Ping(self.html, self.epc, self.cont)
self.assertTrue(success)
def test_iperf(self):
# note: needs to be five seconds because Iperf() adds -O 3, so if it is
# too short, the server is terminated before the client loaded
# everything
self.ci.iperf_args = "-u -t 5 -b 1M -R"
self.ci.svr_id = "test"
self.ci.svr_node = "localhost"
self.ci.iperf_packetloss_threshold = "0"
self.ci.iperf_bitrate_threshold = "0"
self.ci.iperf_profile = "balanced"
# TODO Should need nothing but options and UE(s) to use
success = self.ci.Iperf(self.html, self.epc, self.cont)
self.assertTrue(success)
if __name__ == '__main__':
unittest.main()
#!/bin/bash
set -x
echo hello, world
services:
test:
image: ubuntu:${TAG:-jammy}
container_name: test_container
cap_drop:
- ALL
entrypoint: /bin/bash -c "sleep infinity"
healthcheck:
test: /bin/bash -c "true"
interval: 1s
timeout: 1s
retries: 1
services:
test:
image: ubuntu:jammy
container_name: test_container
cap_drop:
- ALL
entrypoint: /bin/bash -c "false"
healthcheck:
test: /bin/bash -c "true"
interval: 1s
timeout: 1s
retries: 1
#/bin/bash
branch=$(git rev-parse --abbrev-ref HEAD)
commit=$(git rev-parse HEAD)
file=../../test_results.html
rm -f ${file}
cd ../../
python3 main.py \
--mode=InitiateHtml \
--ranRepository=https://gitlab.eurecom.fr/oai/openairinterface5g.git \
--ranBranch=${branch} \
--ranCommitID=${commit} \
--ranAllowMerge=true \
--ranTargetBranch=develop \
--XMLTestFile=tests/test-runner/test.xml
python3 main.py \
--mode=TesteNB \
--ranRepository=https://gitlab.eurecom.fr/oai/openairinterface5g.git \
--ranBranch=${branch} \
--ranCommitID=${commit} \
--ranAllowMerge=true \
--ranTargetBranch=develop \
--eNBIPAddress=localhost \
--eNBUserName=NONE \
--eNBPassword=NONE \
--eNBSourceCodePath=NONE \
--UEIPAddress=localhost \
--UEUserName=NONE \
--UEPassword=NONE \
--UESourceCodePath=NONE \
--EPCIPAddress=localhost \
--EPCType=OAI \
--EPCUserName=NONE \
--EPCPassword=NONE \
--EPCSourceCodePath=NONE \
--XMLTestFile=tests/test-runner/test.xml
python3 main.py \
--mode=FinalizeHtml \
--finalStatus=true
cd -
if [ -f ${file} ]; then
echo "results are in ${file}"
else
echo "ERROR: no results file created"
fi
......@@ -20,36 +20,49 @@
contact@openairinterface.org
-->
<testCaseList>
<htmlTabRef>rfsim-5gnr-fdd-phytest-down</htmlTabRef>
<htmlTabName>CleanUp Monolithic FDD phytest gNB</htmlTabName>
<htmlTabIcon>trash</htmlTabIcon>
<htmlTabRef>test</htmlTabRef>
<htmlTabName>Manual testing</htmlTabName>
<htmlTabIcon>wrench</htmlTabIcon>
<TestCaseRequestedList>
100012
004000
222222
000001
000002
000003
000004
</TestCaseRequestedList>
<TestCaseExclusionList></TestCaseExclusionList>
<testCase id="100012">
<class>Undeploy_Object</class>
<desc>Undeploy all OAI 5G stack</desc>
<yaml_path>ci-scripts/yaml_files/5g_rfsimulator_fdd_phytest</yaml_path>
<eNB_instance>0</eNB_instance>
<eNB_serverId>0</eNB_serverId>
<testCase id="000001">
<class>Custom_Command</class>
<desc>This should succeed</desc>
<node>localhost</node>
<command>true</command>
<command_fail>yes</command_fail>
</testCase>
<testCase id="004000">
<class>Custom_Command</class>
<desc>Clean-Up any residual volume</desc>
<node>cacofonix</node>
<command>docker volume rm 5g_rfsimulator_fdd_phytest_rrc.config</command>
<testCase id="000002">
<class>Custom_Command</class>
<desc>This should fail</desc>
<node>localhost</node>
<command>false</command>
<command_fail>yes</command_fail>
</testCase>
<testCase id="222222">
<class>Clean_Test_Server_Images</class>
<desc>Clean Test Images on Test Server</desc>
<test_svr_id>0</test_svr_id>
<testCase id="000003">
<class>Custom_Command</class>
<desc>This should be skipped</desc>
<node>localhost</node>
<command>true</command>
<command_fail>yes</command_fail>
</testCase>
<testCase id="000004">
<class>Custom_Command</class>
<desc>This should be executed because marked so</desc>
<always_exec>true</always_exec>
<node>localhost</node>
<command>true</command>
<command_fail>yes</command_fail>
</testCase>
</testCaseList>
......@@ -6,7 +6,6 @@
- Run_T2Test
- Run_NRulsimTest
- Build_eNB
- WaitEndBuild_eNB
- Initialize_eNB
- Terminate_eNB
- Initialize_UE
......@@ -38,10 +37,10 @@
- Deploy_Run_PhySim
- DeployGenObject
- UndeployGenObject
- StatsFromGenObject
- LicenceAndFormattingCheck
- Push_Local_Registry
- Pull_Local_Registry
- Clean_Test_Server_Images
- Custom_Command
- Custom_Script
- Create_Workspace
......@@ -31,7 +31,7 @@
<TestCaseExclusionList></TestCaseExclusionList>
<testCase id="000002">
<class>Create_Workspace</class>
<desc>Creating new Workspace</desc>
<desc>Create new Workspace</desc>
</testCase>
<testCase id="000001">
<class>Build_Cluster_Image</class>
......
......@@ -24,7 +24,6 @@
<htmlTabRef>l2sim-4glte-proxy-build</htmlTabRef>
<htmlTabName>Build L2sim proxy image</htmlTabName>
<htmlTabIcon>wrench</htmlTabIcon>
<repeatCount>1</repeatCount>
<TestCaseRequestedList>
100001
000001
......@@ -32,7 +31,7 @@
<TestCaseExclusionList></TestCaseExclusionList>
<testCase id="100001">
<class>Create_Workspace</class>
<desc>Creating new Workspace</desc>
<desc>Create new Workspace</desc>
<eNB_instance>1</eNB_instance>
<eNB_serverId>1</eNB_serverId>
</testCase>
......
......@@ -24,7 +24,6 @@
<htmlTabRef>l2sim-4glte-tdd</htmlTabRef>
<htmlTabName>Testing 4G LTE L2 sim - FDD eNB</htmlTabName>
<htmlTabIcon>wrench</htmlTabIcon>
<repeatCount>1</repeatCount>
<TestCaseRequestedList>
111111
800813
......@@ -38,6 +37,7 @@
030011
030012
100001
222222
</TestCaseRequestedList>
<TestCaseExclusionList></TestCaseExclusionList>
......@@ -49,7 +49,7 @@
</testCase>
<testCase id="800813">
<class>Create_Workspace</class>
<desc>Creating new Workspace</desc>
<desc>Create new Workspace</desc>
<eNB_instance>0</eNB_instance>
<eNB_serverId>0</eNB_serverId>
</testCase>
......@@ -140,8 +140,16 @@
<testCase id="100001">
<class>Undeploy_Object</class>
<always_exec>true</always_exec>
<desc>Undeploy all OAI 4G stack</desc>
<yaml_path>ci-scripts/yaml_files/4g_l2sim_fdd</yaml_path>
</testCase>
<testCase id="222222">
<class>Clean_Test_Server_Images</class>
<always_exec>true</always_exec>
<desc>Clean Test Images on Test Server</desc>
<test_svr_id>0</test_svr_id>
</testCase>
</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>l2sim-4glte-down</htmlTabRef>
<htmlTabName>CleanUp 4G L2 sim - FDD eNB</htmlTabName>
<htmlTabIcon>trash</htmlTabIcon>
<TestCaseRequestedList>
100002
222222
</TestCaseRequestedList>
<TestCaseExclusionList></TestCaseExclusionList>
<testCase id="100002">
<class>Undeploy_Object</class>
<desc>Undeploy all OAI 4G stack</desc>
<yaml_path>ci-scripts/yaml_files/4g_l2sim_fdd</yaml_path>
<eNB_instance>0</eNB_instance>
<eNB_serverId>0</eNB_serverId>
</testCase>
<testCase id="222222">
<class>Clean_Test_Server_Images</class>
<desc>Clean Test Images on Test Server</desc>
<test_svr_id>0</test_svr_id>
</testCase>
</testCaseList>
......@@ -40,11 +40,12 @@
030011
030012
100011
222222
</TestCaseRequestedList>
<TestCaseExclusionList></TestCaseExclusionList>
<testCase id="800813">
<class>Create_Workspace</class>
<desc>Creating new Workspace</desc>
<desc>Create new Workspace</desc>
<eNB_instance>0</eNB_instance>
<eNB_serverId>0</eNB_serverId>
</testCase>
......@@ -154,10 +155,18 @@
<testCase id="100011">
<class>Undeploy_Object</class>
<always_exec>true</always_exec>
<desc>Undeploy all OAI 4G stack</desc>
<yaml_path>ci-scripts/yaml_files/4g_rfsimulator_fdd_05MHz</yaml_path>
<eNB_instance>0</eNB_instance>
<eNB_serverId>0</eNB_serverId>
</testCase>
<testCase id="222222">
<class>Clean_Test_Server_Images</class>
<always_exec>true</always_exec>
<desc>Clean Test Images on Test Server</desc>
<test_svr_id>0</test_svr_id>
</testCase>
</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>rfsim-4glte-fdd05mhz-down</htmlTabRef>
<htmlTabName>CleanUp 4G RF</htmlTabName>
<htmlTabIcon>trash</htmlTabIcon>
<TestCaseRequestedList>
100011
222222
</TestCaseRequestedList>
<TestCaseExclusionList></TestCaseExclusionList>
<testCase id="100011">
<class>Undeploy_Object</class>
<desc>Undeploy all OAI 4G stack</desc>
<yaml_path>ci-scripts/yaml_files/4g_rfsimulator_fdd_05MHz</yaml_path>
<eNB_instance>0</eNB_instance>
<eNB_serverId>0</eNB_serverId>
</testCase>
<testCase id="222222">
<class>Clean_Test_Server_Images</class>
<desc>Clean Test Images on Test Server</desc>
<test_svr_id>0</test_svr_id>
</testCase>
</testCaseList>
......@@ -36,6 +36,7 @@
030011
030012
100011
222222
</TestCaseRequestedList>
<TestCaseExclusionList></TestCaseExclusionList>
......@@ -47,7 +48,7 @@
</testCase>
<testCase id="800813">
<class>Create_Workspace</class>
<desc>Creating new Workspace</desc>
<desc>Create new Workspace</desc>
<eNB_instance>0</eNB_instance>
<eNB_serverId>0</eNB_serverId>
</testCase>
......@@ -125,10 +126,18 @@
<testCase id="100011">
<class>Undeploy_Object</class>
<always_exec>true</always_exec>
<desc>Undeploy all OAI 4G stack</desc>
<yaml_path>ci-scripts/yaml_files/4g_rfsimulator_fdd_05MHz_noS1</yaml_path>
<eNB_instance>0</eNB_instance>
<eNB_serverId>0</eNB_serverId>
</testCase>
<testCase id="222222">
<class>Clean_Test_Server_Images</class>
<always_exec>true</always_exec>
<desc>Clean Test Images on Test Server</desc>
<test_svr_id>0</test_svr_id>
</testCase>
</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>rfsim-4glte-fdd05mhz-nos1-down</htmlTabRef>
<htmlTabName>CleanUp 4G RF</htmlTabName>
<htmlTabIcon>trash</htmlTabIcon>
<TestCaseRequestedList>
100011
222222
</TestCaseRequestedList>
<TestCaseExclusionList></TestCaseExclusionList>
<testCase id="100011">
<class>Undeploy_Object</class>
<desc>Undeploy all OAI 4G stack</desc>
<yaml_path>ci-scripts/yaml_files/4g_rfsimulator_fdd_05MHz_noS1</yaml_path>
<eNB_instance>0</eNB_instance>
<eNB_serverId>0</eNB_serverId>
</testCase>
<testCase id="222222">
<class>Clean_Test_Server_Images</class>
<desc>Clean Test Images on Test Server</desc>
<test_svr_id>0</test_svr_id>
</testCase>
</testCaseList>
......@@ -40,6 +40,7 @@
030011
030012
100011
222222
</TestCaseRequestedList>
<TestCaseExclusionList></TestCaseExclusionList>
......@@ -51,7 +52,7 @@
</testCase>
<testCase id="800813">
<class>Create_Workspace</class>
<desc>Creating new Workspace</desc>
<desc>Create new Workspace</desc>
<eNB_instance>0</eNB_instance>
<eNB_serverId>0</eNB_serverId>
</testCase>
......@@ -154,10 +155,18 @@
<testCase id="100011">
<class>Undeploy_Object</class>
<always_exec>true</always_exec>
<desc>Undeploy all OAI 4G stack</desc>
<yaml_path>ci-scripts/yaml_files/4g_rfsimulator_fdd_10MHz</yaml_path>
<eNB_instance>0</eNB_instance>
<eNB_serverId>0</eNB_serverId>
</testCase>
<testCase id="222222">
<class>Clean_Test_Server_Images</class>
<always_exec>true</always_exec>
<desc>Clean Test Images on Test Server</desc>
<test_svr_id>0</test_svr_id>
</testCase>
</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>rfsim-4glte-fdd10mhz-down</htmlTabRef>
<htmlTabName>CleanUp 4G RF</htmlTabName>
<htmlTabIcon>trash</htmlTabIcon>
<TestCaseRequestedList>
100011
222222
</TestCaseRequestedList>
<TestCaseExclusionList></TestCaseExclusionList>
<testCase id="100011">
<class>Undeploy_Object</class>
<desc>Undeploy all OAI 4G stack</desc>
<yaml_path>ci-scripts/yaml_files/4g_rfsimulator_fdd_10MHz</yaml_path>
<eNB_instance>0</eNB_instance>
<eNB_serverId>0</eNB_serverId>
</testCase>
<testCase id="222222">
<class>Clean_Test_Server_Images</class>
<desc>Clean Test Images on Test Server</desc>
<test_svr_id>0</test_svr_id>
</testCase>
</testCaseList>
......@@ -40,6 +40,7 @@
030011
030012
100011
222222
</TestCaseRequestedList>
<TestCaseExclusionList></TestCaseExclusionList>
......@@ -51,7 +52,7 @@
</testCase>
<testCase id="800813">
<class>Create_Workspace</class>
<desc>Creating new Workspace</desc>
<desc>Create new Workspace</desc>
<eNB_instance>0</eNB_instance>
<eNB_serverId>0</eNB_serverId>
</testCase>
......@@ -154,10 +155,18 @@
<testCase id="100011">
<class>Undeploy_Object</class>
<always_exec>true</always_exec>
<desc>Undeploy all OAI 4G stack</desc>
<yaml_path>ci-scripts/yaml_files/4g_rfsimulator_fdd_20MHz</yaml_path>
<eNB_instance>0</eNB_instance>
<eNB_serverId>0</eNB_serverId>
</testCase>
<testCase id="222222">
<class>Clean_Test_Server_Images</class>
<always_exec>true</always_exec>
<desc>Clean Test Images on Test Server</desc>
<test_svr_id>0</test_svr_id>
</testCase>
</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>rfsim-4glte-fdd20mhz-down</htmlTabRef>
<htmlTabName>CleanUp 4G RF</htmlTabName>
<htmlTabIcon>trash</htmlTabIcon>
<TestCaseRequestedList>
100011
222222
</TestCaseRequestedList>
<TestCaseExclusionList></TestCaseExclusionList>
<testCase id="100011">
<class>Undeploy_Object</class>
<desc>Undeploy all OAI 4G stack</desc>
<yaml_path>ci-scripts/yaml_files/4g_rfsimulator_fdd_20MHz</yaml_path>
<eNB_instance>0</eNB_instance>
<eNB_serverId>0</eNB_serverId>
</testCase>
<testCase id="222222">
<class>Clean_Test_Server_Images</class>
<desc>Clean Test Images on Test Server</desc>
<test_svr_id>0</test_svr_id>
</testCase>
</testCaseList>
......@@ -33,6 +33,7 @@
000001
030011
100011
222222
</TestCaseRequestedList>
<TestCaseExclusionList></TestCaseExclusionList>
......@@ -44,7 +45,7 @@
</testCase>
<testCase id="800813">
<class>Create_Workspace</class>
<desc>Creating new Workspace</desc>
<desc>Create new Workspace</desc>
<eNB_instance>0</eNB_instance>
<eNB_serverId>0</eNB_serverId>
</testCase>
......@@ -92,10 +93,18 @@
<testCase id="100011">
<class>Undeploy_Object</class>
<always_exec>true</always_exec>
<desc>Undeploy all OAI 4G stack</desc>
<yaml_path>ci-scripts/yaml_files/4g_rfsimulator_fembms</yaml_path>
<eNB_instance>0</eNB_instance>
<eNB_serverId>0</eNB_serverId>
</testCase>
<testCase id="222222">
<class>Clean_Test_Server_Images</class>
<always_exec>true</always_exec>
<desc>Clean Test Images on Test Server</desc>
<test_svr_id>0</test_svr_id>
</testCase>
</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>rfsim-4glte-fembms-down</htmlTabRef>
<htmlTabName>CleanUp 4G RF</htmlTabName>
<htmlTabIcon>trash</htmlTabIcon>
<TestCaseRequestedList>
100011
222222
</TestCaseRequestedList>
<TestCaseExclusionList></TestCaseExclusionList>
<testCase id="100011">
<class>Undeploy_Object</class>
<desc>Undeploy all OAI 4G stack</desc>
<yaml_path>ci-scripts/yaml_files/4g_rfsimulator_fembms</yaml_path>
<eNB_instance>0</eNB_instance>
<eNB_serverId>0</eNB_serverId>
</testCase>
<testCase id="222222">
<class>Clean_Test_Server_Images</class>
<desc>Clean Test Images on Test Server</desc>
<test_svr_id>0</test_svr_id>
</testCase>
</testCaseList>
......@@ -33,6 +33,7 @@
000001
030011
100011
222222
</TestCaseRequestedList>
<TestCaseExclusionList></TestCaseExclusionList>
......@@ -44,7 +45,7 @@
</testCase>
<testCase id="800813">
<class>Create_Workspace</class>
<desc>Creating new Workspace</desc>
<desc>Create new Workspace</desc>
<eNB_instance>0</eNB_instance>
<eNB_serverId>0</eNB_serverId>
</testCase>
......@@ -92,10 +93,18 @@
<testCase id="100011">
<class>Undeploy_Object</class>
<always_exec>true</always_exec>
<desc>Undeploy all OAI 4G stack</desc>
<yaml_path>ci-scripts/yaml_files/4g_rfsimulator_mbms</yaml_path>
<eNB_instance>0</eNB_instance>
<eNB_serverId>0</eNB_serverId>
</testCase>
<testCase id="222222">
<class>Clean_Test_Server_Images</class>
<always_exec>true</always_exec>
<desc>Clean Test Images on Test Server</desc>
<test_svr_id>0</test_svr_id>
</testCase>
</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>rfsim-4glte-mbms-down</htmlTabRef>
<htmlTabName>CleanUp 4G RF</htmlTabName>
<htmlTabIcon>trash</htmlTabIcon>
<TestCaseRequestedList>
100011
222222
</TestCaseRequestedList>
<TestCaseExclusionList></TestCaseExclusionList>
<testCase id="100011">
<class>Undeploy_Object</class>
<desc>Undeploy all OAI 4G stack</desc>
<yaml_path>ci-scripts/yaml_files/4g_rfsimulator_mbms</yaml_path>
<eNB_instance>0</eNB_instance>
<eNB_serverId>0</eNB_serverId>
</testCase>
<testCase id="222222">
<class>Clean_Test_Server_Images</class>
<desc>Clean Test Images on Test Server</desc>
<test_svr_id>0</test_svr_id>
</testCase>
</testCaseList>
......@@ -24,7 +24,6 @@
<htmlTabRef>rfsim-4glte-tdd05mhz</htmlTabRef>
<htmlTabName>Monolithic eNB - TDD 05MHz</htmlTabName>
<htmlTabIcon>wrench</htmlTabIcon>
<repeatCount>1</repeatCount>
<TestCaseRequestedList>
111111
800813
......@@ -41,6 +40,7 @@
030011
030012
100011
222222
</TestCaseRequestedList>
<TestCaseExclusionList></TestCaseExclusionList>
......@@ -52,7 +52,7 @@
</testCase>
<testCase id="800813">
<class>Create_Workspace</class>
<desc>Creating new Workspace</desc>
<desc>Create new Workspace</desc>
<eNB_instance>0</eNB_instance>
<eNB_serverId>0</eNB_serverId>
</testCase>
......@@ -148,10 +148,18 @@
<testCase id="100011">
<class>Undeploy_Object</class>
<always_exec>true</always_exec>
<desc>Undeploy all OAI 4G stack</desc>
<yaml_path>ci-scripts/yaml_files/4g_rfsimulator_tdd_05MHz</yaml_path>
<eNB_instance>0</eNB_instance>
<eNB_serverId>0</eNB_serverId>
</testCase>
<testCase id="222222">
<class>Clean_Test_Server_Images</class>
<always_exec>true</always_exec>
<desc>Clean Test Images on Test Server</desc>
<test_svr_id>0</test_svr_id>
</testCase>
</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>rfsim-4glte-tdd05mhz-down</htmlTabRef>
<htmlTabName>CleanUp 4G RF</htmlTabName>
<htmlTabIcon>trash</htmlTabIcon>
<TestCaseRequestedList>
100011
222222
</TestCaseRequestedList>
<TestCaseExclusionList></TestCaseExclusionList>
<testCase id="100011">
<class>Undeploy_Object</class>
<desc>Undeploy all OAI 4G stack</desc>
<yaml_path>ci-scripts/yaml_files/4g_rfsimulator_tdd_05MHz</yaml_path>
<eNB_instance>0</eNB_instance>
<eNB_serverId>0</eNB_serverId>
</testCase>
<testCase id="222222">
<class>Clean_Test_Server_Images</class>
<desc>Clean Test Images on Test Server</desc>
<test_svr_id>0</test_svr_id>
</testCase>
</testCaseList>
......@@ -33,6 +33,7 @@
000024
020021
100021
222222
</TestCaseRequestedList>
<TestCaseExclusionList></TestCaseExclusionList>
......@@ -44,7 +45,7 @@
</testCase>
<testCase id="800813">
<class>Create_Workspace</class>
<desc>Creating new Workspace</desc>
<desc>Create new Workspace</desc>
<eNB_instance>0</eNB_instance>
<eNB_serverId>0</eNB_serverId>
</testCase>
......@@ -93,6 +94,7 @@
<testCase id="100021">
<class>Undeploy_Object</class>
<always_exec>true</always_exec>
<desc>Undeploy all OAI 5G stack</desc>
<yaml_path>ci-scripts/yaml_files/5g_rfsimulator_e1</yaml_path>
<d_retx_th>1,0,0,0</d_retx_th>
......@@ -101,4 +103,11 @@
<eNB_serverId>0</eNB_serverId>
</testCase>
<testCase id="222222">
<class>Clean_Test_Server_Images</class>
<always_exec>true</always_exec>
<desc>Clean Test Images on Test Server</desc>
<test_svr_id>0</test_svr_id>
</testCase>
</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>rfsim-5gnr-down-e1</htmlTabRef>
<htmlTabName>CleanUp E1+F1 split</htmlTabName>
<htmlTabIcon>trash</htmlTabIcon>
<TestCaseRequestedList>
100022
222222
</TestCaseRequestedList>
<TestCaseExclusionList></TestCaseExclusionList>
<testCase id="100022">
<class>Undeploy_Object</class>
<desc>Undeploy all OAI 5G stack</desc>
<yaml_path>ci-scripts/yaml_files/5g_rfsimulator_e1</yaml_path>
<eNB_instance>0</eNB_instance>
<eNB_serverId>0</eNB_serverId>
</testCase>
<testCase id="222222">
<class>Clean_Test_Server_Images</class>
<desc>Clean Test Images on Test Server</desc>
<test_svr_id>0</test_svr_id>
</testCase>
</testCaseList>
......@@ -35,6 +35,7 @@
030021
030022
100021
222222
</TestCaseRequestedList>
<TestCaseExclusionList></TestCaseExclusionList>
......@@ -46,7 +47,7 @@
</testCase>
<testCase id="800813">
<class>Create_Workspace</class>
<desc>Creating new Workspace</desc>
<desc>Create new Workspace</desc>
<eNB_instance>0</eNB_instance>
<eNB_serverId>0</eNB_serverId>
</testCase>
......@@ -150,6 +151,7 @@
<testCase id="100021">
<class>Undeploy_Object</class>
<always_exec>true</always_exec>
<desc>Undeploy all OAI 5G stack</desc>
<yaml_path>ci-scripts/yaml_files/5g_f1_rfsimulator</yaml_path>
<d_retx_th>30,30,100,100</d_retx_th>
......@@ -158,4 +160,11 @@
<eNB_serverId>0</eNB_serverId>
</testCase>
<testCase id="222222">
<class>Clean_Test_Server_Images</class>
<always_exec>true</always_exec>
<desc>Clean Test Images on Test Server</desc>
<test_svr_id>0</test_svr_id>
</testCase>
</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>rfsim-5gnr-down-f1</htmlTabRef>
<htmlTabName>CleanUp CU-DU F1 split</htmlTabName>
<htmlTabIcon>trash</htmlTabIcon>
<TestCaseRequestedList>
100022
222222
</TestCaseRequestedList>
<TestCaseExclusionList></TestCaseExclusionList>
<testCase id="100022">
<class>Undeploy_Object</class>
<desc>Undeploy all OAI 5G stack</desc>
<yaml_path>ci-scripts/yaml_files/5g_f1_rfsimulator</yaml_path>
<eNB_instance>0</eNB_instance>
<eNB_serverId>0</eNB_serverId>
</testCase>
<testCase id="222222">
<class>Clean_Test_Server_Images</class>
<desc>Clean Test Images on Test Server</desc>
<test_svr_id>0</test_svr_id>
</testCase>
</testCaseList>
......@@ -24,7 +24,6 @@
<htmlTabRef>rfsim-5gnr-fdd</htmlTabRef>
<htmlTabName>Monolithic FDD gNB with SDAP</htmlTabName>
<htmlTabIcon>wrench</htmlTabIcon>
<repeatCount>1</repeatCount>
<TestCaseRequestedList>
111111
800813
......@@ -36,6 +35,7 @@
030011
030012
100011
222222
</TestCaseRequestedList>
<TestCaseExclusionList></TestCaseExclusionList>
......@@ -47,7 +47,7 @@
</testCase>
<testCase id="800813">
<class>Create_Workspace</class>
<desc>Creating new Workspace</desc>
<desc>Create new Workspace</desc>
<eNB_instance>0</eNB_instance>
<eNB_serverId>0</eNB_serverId>
</testCase>
......@@ -120,6 +120,7 @@
<testCase id="100011">
<class>Undeploy_Object</class>
<always_exec>true</always_exec>
<desc>Undeploy all OAI 5G stack</desc>
<yaml_path>ci-scripts/yaml_files/5g_fdd_rfsimulator</yaml_path>
<d_retx_th>1,0,0,0</d_retx_th>
......@@ -128,4 +129,11 @@
<eNB_serverId>0</eNB_serverId>
</testCase>
<testCase id="222222">
<class>Clean_Test_Server_Images</class>
<always_exec>true</always_exec>
<desc>Clean Test Images on Test Server</desc>
<test_svr_id>0</test_svr_id>
</testCase>
</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>rfsim-5gnr-fdd-down</htmlTabRef>
<htmlTabName>CleanUp Monolithic FDD gNB with SDAP</htmlTabName>
<htmlTabIcon>trash</htmlTabIcon>
<TestCaseRequestedList>
100012
222222
</TestCaseRequestedList>
<TestCaseExclusionList></TestCaseExclusionList>
<testCase id="100012">
<class>Undeploy_Object</class>
<desc>Undeploy all OAI 5G stack</desc>
<yaml_path>ci-scripts/yaml_files/5g_fdd_rfsimulator</yaml_path>
<eNB_instance>0</eNB_instance>
<eNB_serverId>0</eNB_serverId>
</testCase>
<testCase id="222222">
<class>Clean_Test_Server_Images</class>
<desc>Clean Test Images on Test Server</desc>
<test_svr_id>0</test_svr_id>
</testCase>
</testCaseList>
......@@ -24,7 +24,6 @@
<htmlTabRef>l2sim-5gnr-tdd</htmlTabRef>
<htmlTabName>Testing 5G NR L2 sim - TDD gNB</htmlTabName>
<htmlTabIcon>wrench</htmlTabIcon>
<repeatCount>1</repeatCount>
<TestCaseRequestedList>
111111
800813
......@@ -36,6 +35,7 @@
020001
020002
100001
222222
</TestCaseRequestedList>
<TestCaseExclusionList></TestCaseExclusionList>
......@@ -47,7 +47,7 @@
</testCase>
<testCase id="800813">
<class>Create_Workspace</class>
<desc>Creating new Workspace</desc>
<desc>Create new Workspace</desc>
<eNB_instance>0</eNB_instance>
<eNB_serverId>0</eNB_serverId>
</testCase>
......@@ -114,6 +114,7 @@
<testCase id="100001">
<class>Undeploy_Object</class>
<always_exec>true</always_exec>
<desc>Undeploy all OAI 5G stack</desc>
<yaml_path>ci-scripts/yaml_files/5g_l2sim_tdd</yaml_path>
<d_retx_th>20,50,100,100</d_retx_th>
......@@ -122,4 +123,11 @@
<eNB_serverId>0</eNB_serverId>
</testCase>
<testCase id="222222">
<class>Clean_Test_Server_Images</class>
<always_exec>true</always_exec>
<desc>Clean Test Images on Test Server</desc>
<test_svr_id>0</test_svr_id>
</testCase>
</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>l2sim-5gnr-down</htmlTabRef>
<htmlTabName>CleanUp 5G L2 sim - TDD gNB</htmlTabName>
<htmlTabIcon>trash</htmlTabIcon>
<TestCaseRequestedList>
100002
222222
</TestCaseRequestedList>
<TestCaseExclusionList></TestCaseExclusionList>
<testCase id="100002">
<class>Undeploy_Object</class>
<desc>Undeploy all OAI 5G stack</desc>
<yaml_path>ci-scripts/yaml_files/5g_l2sim_tdd</yaml_path>
<eNB_instance>0</eNB_instance>
<eNB_serverId>0</eNB_serverId>
</testCase>
<testCase id="222222">
<class>Clean_Test_Server_Images</class>
<desc>Clean Test Images on Test Server</desc>
<test_svr_id>0</test_svr_id>
</testCase>
</testCaseList>
......@@ -24,7 +24,6 @@
<htmlTabRef>rfsim-5gnr-tdd</htmlTabRef>
<htmlTabName>Monolithic SA TDD gNB</htmlTabName>
<htmlTabIcon>wrench</htmlTabIcon>
<repeatCount>1</repeatCount>
<TestCaseRequestedList>
111111
800813
......@@ -51,6 +50,7 @@
333333
020006
100001
222222
</TestCaseRequestedList>
<TestCaseExclusionList></TestCaseExclusionList>
......@@ -62,7 +62,7 @@
</testCase>
<testCase id="800813">
<class>Create_Workspace</class>
<desc>Creating new Workspace</desc>
<desc>Create new Workspace</desc>
<eNB_instance>0</eNB_instance>
<eNB_serverId>0</eNB_serverId>
</testCase>
......@@ -246,6 +246,7 @@
<testCase id="100001">
<class>Undeploy_Object</class>
<always_exec>true</always_exec>
<desc>Undeploy all OAI 5G stack</desc>
<yaml_path>ci-scripts/yaml_files/5g_rfsimulator</yaml_path>
<d_retx_th>1,0,0,0</d_retx_th>
......@@ -254,4 +255,11 @@
<eNB_serverId>0</eNB_serverId>
</testCase>
<testCase id="222222">
<class>Clean_Test_Server_Images</class>
<always_exec>true</always_exec>
<desc>Clean Test Images on Test Server</desc>
<test_svr_id>0</test_svr_id>
</testCase>
</testCaseList>
......@@ -24,7 +24,6 @@
<htmlTabRef>rfsim-24prb-5gnr-tdd</htmlTabRef>
<htmlTabName>Monolithic SA TDD gNB 24PRB</htmlTabName>
<htmlTabIcon>wrench</htmlTabIcon>
<repeatCount>1</repeatCount>
<TestCaseRequestedList>
111111
800813
......@@ -36,6 +35,7 @@
030001
030002
100001
222222
</TestCaseRequestedList>
<TestCaseExclusionList></TestCaseExclusionList>
......@@ -47,7 +47,7 @@
</testCase>
<testCase id="800813">
<class>Create_Workspace</class>
<desc>Creating new Workspace</desc>
<desc>Create new Workspace</desc>
<eNB_instance>0</eNB_instance>
<eNB_serverId>0</eNB_serverId>
</testCase>
......@@ -120,6 +120,7 @@
<testCase id="100001">
<class>Undeploy_Object</class>
<always_exec>true</always_exec>
<desc>Undeploy all OAI 5G stack</desc>
<yaml_path>ci-scripts/yaml_files/5g_rfsimulator_24prb</yaml_path>
<d_retx_th>1,0,0,0</d_retx_th>
......@@ -128,4 +129,11 @@
<eNB_serverId>0</eNB_serverId>
</testCase>
<testCase id="222222">
<class>Clean_Test_Server_Images</class>
<always_exec>true</always_exec>
<desc>Clean Test Images on Test Server</desc>
<test_svr_id>0</test_svr_id>
</testCase>
</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>rfsim-24prb-5gnr-down</htmlTabRef>
<htmlTabName>CleanUp Monolithic SA TDD gNB 24PRB</htmlTabName>
<htmlTabIcon>trash</htmlTabIcon>
<TestCaseRequestedList>
100002
222222
</TestCaseRequestedList>
<TestCaseExclusionList></TestCaseExclusionList>
<testCase id="100002">
<class>Undeploy_Object</class>
<desc>Undeploy all OAI 5G stack</desc>
<yaml_path>ci-scripts/yaml_files/5g_rfsimulator_24prb</yaml_path>
<eNB_instance>0</eNB_instance>
<eNB_serverId>0</eNB_serverId>
</testCase>
<testCase id="222222">
<class>Clean_Test_Server_Images</class>
<desc>Clean Test Images on Test Server</desc>
<test_svr_id>0</test_svr_id>
</testCase>
</testCaseList>
This diff is collapsed.
This diff is collapsed.
......@@ -33,7 +33,7 @@
<testCase id="800813">
<class>Create_Workspace</class>
<desc>Creating new Workspace for server 0</desc>
<desc>Create new Workspace for server 0</desc>
<eNB_instance>0</eNB_instance>
<eNB_serverId>0</eNB_serverId>
</testCase>
......
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
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