diff --git a/ci-scripts/ci_infra.yaml b/ci-scripts/ci_infra.yaml index d1cfe3130a..1bc26659c6 100644 --- a/ci-scripts/ci_infra.yaml +++ b/ci-scripts/ci_infra.yaml @@ -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" diff --git a/ci-scripts/cls_cluster.py b/ci-scripts/cls_cluster.py index 5ddf3872b2..7051ddc446 100644 --- a/ci-scripts/cls_cluster.py +++ b/ci-scripts/cls_cluster.py @@ -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}') diff --git a/ci-scripts/cls_cmd.py b/ci-scripts/cls_cmd.py index 7821f8263c..f0fe2950f8 100644 --- a/ci-scripts/cls_cmd.py +++ b/ci-scripts/cls_cmd.py @@ -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}" diff --git a/ci-scripts/cls_containerize.py b/ci-scripts/cls_containerize.py index 03aed32929..7b9956174e 100644 --- a/ci-scripts/cls_containerize.py +++ b/ci-scripts/cls_containerize.py @@ -60,43 +60,23 @@ import cls_oaicitest #----------------------------------------------------------- IMAGES = ['oai-enb', 'oai-lte-ru', 'oai-lte-ue', 'oai-gnb', 'oai-nr-cuup', 'oai-gnb-aw2s', 'oai-nr-ue', 'oai-gnb-asan', 'oai-nr-ue-asan', 'oai-nr-cuup-asan', 'oai-gnb-aerial', 'oai-gnb-fhi72'] -def CreateWorkspace(sshSession, sourcePath, ranRepository, ranCommitID, ranTargetBranch, ranAllowMerge): +def CreateWorkspace(host, sourcePath, ranRepository, ranCommitID, ranTargetBranch, ranAllowMerge): if ranCommitID == '': logging.error('need ranCommitID in CreateWorkspace()') - sys.exit('Insufficient Parameter in CreateWorkspace()') + raise ValueError('Insufficient Parameter in CreateWorkspace(): need ranCommitID') - sshSession.command(f'rm -rf {sourcePath}', '\$', 10) - sshSession.command('mkdir -p ' + sourcePath, '\$', 5) - (sshSession.cd(sourcePath) if isinstance(sshSession, cls_cmd.Cmd) else sshSession.command('cd ' + sourcePath, '\$', 5)) - # Recent version of git (>2.20?) should handle missing .git extension # without problems - if ranTargetBranch == 'null': - ranTargetBranch = 'develop' - baseBranch = re.sub('origin/', '', ranTargetBranch) - sshSession.command(f'git clone --filter=blob:none -n -b {baseBranch} {ranRepository} .', '\$', 60) - if sshSession.getBefore().count('error') > 0 or sshSession.getBefore().count('error') > 0: - sys.exit('error during clone') - sshSession.command('git config user.email "jenkins@openairinterface.org"', '\$', 5) - sshSession.command('git config user.name "OAI Jenkins"', '\$', 5) - - sshSession.command('mkdir -p cmake_targets/log', '\$', 5) - # if the commit ID is provided use it to point to it - sshSession.command(f'git checkout -f {ranCommitID}', '\$', 30) - if sshSession.getBefore().count(f'HEAD is now at {ranCommitID[:6]}') != 1: - sshSession.command('git log --oneline | head -n5', '\$', 5) - logging.error(f'problems during checkout, is at: {sshSession.getBefore()}') - self.exitStatus = 1 - HTML.CreateHtmlTestRowQueue('N/A', 'KO', "could not checkout correctly") - else: - logging.debug('successful checkout') - # if the branch is not develop, then it is a merge request and we need to do - # the potential merge. Note that merge conflicts should already been checked earlier + script = "scripts/create_workspace.sh" + options = f"{sourcePath} {ranRepository} {ranCommitID}" if ranAllowMerge: if ranTargetBranch == '': ranTargetBranch = 'develop' - logging.debug(f'Merging with the target branch: {ranTargetBranch}') - sshSession.command(f'git merge --ff origin/{ranTargetBranch} -m "Temporary merge for CI"', '\$', 30) + options += f" {ranTargetBranch}" + logging.info(f'execute "{script}" with options "{options}" on node {host}') + ret = cls_cmd.runScript(host, script, 90, options) + logging.debug(f'"{script}" finished with code {ret.returncode}, output:\n{ret.stdout}') + return ret.returncode == 0 -def ImageTagToUse(imageName, ranCommitID, ranBranch, ranAllowMerge): +def CreateTag(ranCommitID, ranBranch, ranAllowMerge): shortCommit = ranCommitID[0:8] if ranAllowMerge: # Allowing contributor to have a name/branchName format @@ -104,8 +84,7 @@ def ImageTagToUse(imageName, ranCommitID, ranBranch, ranAllowMerge): tagToUse = f'{branchName}-{shortCommit}' else: tagToUse = f'develop-{shortCommit}' - fullTag = f'{imageName}:{tagToUse}' - return fullTag + return tagToUse def CopyLogsToExecutor(cmd, sourcePath, log_name): cmd.cd(f'{sourcePath}/cmake_targets') @@ -182,135 +161,143 @@ def GetCredentials(instance): else: raise Exception ("Only supports maximum of 3 servers") -def GetContainerName(mySSH, svcName): - ret = mySSH.run(f"docker compose -f docker-compose.y*ml config --format json {svcName} | jq -r '.services.\"{svcName}\".container_name'") - containerName = ret.stdout - return containerName +def GetContainerName(ssh, svcName, file): + ret = ssh.run(f"docker compose -f {file} config --format json {svcName} | jq -r '.services.\"{svcName}\".container_name'", silent=True) + return ret.stdout -def GetImageInfo(mySSH, containerName): - usedImage = '' - ret = mySSH.run('docker inspect --format="{{.Config.Image}}" ' + containerName) - usedImage = ret.stdout.strip() - logging.debug('Used image is: ' + usedImage) - if usedImage: - ret = mySSH.run('docker image inspect --format "* Size = {{.Size}} bytes\n* Creation = {{.Created}}\n* Id = {{.Id}}" ' + usedImage) - imageInfo = f"Used image is {usedImage}\n{ret.stdout}\n" - return imageInfo +def GetImageName(ssh, svcName, file): + ret = ssh.run(f"docker compose -f {file} config --format json {svcName} | jq -r '.services.\"{svcName}\".image'", silent=True) + if ret.returncode != 0: + return f"cannot retrieve image info for {containerName}: {ret.stdout}" else: - return f"Could not retrieve used image info for {containerName}!\n" + return ret.stdout.strip() -def GetContainerHealth(mySSH, containerName): - if containerName is None: - return 0, 0 - unhealthyNb = 0 - healthyNb = 0 - time.sleep(5) - for _ in range(3): - if containerName != 'db_init': - result = mySSH.run(f'docker inspect --format="{{{{.State.Health.Status}}}}" {containerName}') - unhealthyNb = result.stdout.count('unhealthy') - healthyNb = result.stdout.count('healthy') - unhealthyNb - if healthyNb == 1: - break - else: - time.sleep(10) +def GetContainerHealth(ssh, containerName): + if containerName is None: + return False + if 'db_init' in containerName or 'db-init' in containerName: # exits with 0, there cannot be healthy + return True + time.sleep(5) + for _ in range(3): + result = ssh.run(f'docker inspect --format="{{{{.State.Health.Status}}}}" {containerName}', silent=True) + if result.stdout == 'healthy': + return True + time.sleep(10) + return False + +def ExistEnvFilePrint(ssh, wd, prompt='env vars in existing'): + ret = ssh.run(f'cat {wd}/.env', silent=True) + if ret.returncode != 0: + return False + env_vars = ret.stdout.strip().splitlines() + logging.info(f'{prompt} {wd}/.env: {env_vars}') + return True + +def WriteEnvFile(ssh, services, wd, tag): + ret = ssh.run(f'cat {wd}/.env', silent=True) + registry = "oai-ci" # pull_images() gives us this registry path + envs = {"REGISTRY":registry, "TAG": tag} + if ret.returncode == 0: # it exists, we have to update + # transforms env file to dictionary + old_envs = {} + for l in ret.stdout.strip().splitlines(): + var, val = l.split('=', 1) + old_envs[var] = val.strip('"') + # will retain the old environment variables + envs = {**envs, **old_envs} + for svc in services.split(): + # In some scenarios we have the choice of either pulling normal images + # or -asan images. We need to detect which kind we did pull. + fullImageName = GetImageName(ssh, svc, f"{wd}/docker-compose.y*ml") + image = fullImageName.split("/")[-1].split(":")[0] + checkimg = f"{registry}/{image}-asan:{tag}" + ret = ssh.run(f'docker image inspect {checkimg}', reportNonZero=False) + if ret.returncode == 0: + logging.info(f"detected pulled image {checkimg}") + if "oai-gnb" in image: envs["GNB_IMG"] = "oai-gnb-asan" + elif "oai-nr-ue" in image: envs["NRUE_IMG"] = "oai-nr-ue-asan" + elif "oai-nr-cuup" in image: envs["NRCUUP_IMG"] = "oai-nr-cuup-asan" + else: logging.warning("undetected image format {image}, cannot use asan") + env_string = "\n".join([f"{var}=\"{val}\"" for var,val in envs.items()]) + ssh.run(f'echo -e \'{env_string}\' > {wd}/.env', silent=True) + ExistEnvFilePrint(ssh, wd, prompt='New env vars in file') + +def GetServices(ssh, requested, file): + if requested == [] or requested is None or requested == "": + logging.warning('No service name given: starting all services in docker-compose.yml!') + ret = ssh.run(f'docker compose -f {file} config --services') + if ret.returncode != 0: + return "" else: - unhealthyNb = 0 - healthyNb = 1 - break - return healthyNb, unhealthyNb + return ' '.join(ret.stdout.splitlines()) + else: + return requested -def ReTagImages(mySSH,IMAGES,ranCommitID,ranBranch,ranAllowMerge,displayedNewTags): - mySSH.run('cp docker-compose.y*ml ci-docker-compose.yml', 5) - for image in IMAGES: - imageTag = ImageTagToUse(image, ranCommitID, ranBranch, ranAllowMerge) - if image == 'oai-gnb' or image == 'oai-nr-ue' or image == 'oai-nr-cuup': - ret = mySSH.run(f'docker image inspect oai-ci/{imageTag}', reportNonZero=False, silent=False) - if ret.returncode != 0: - imageTag = imageTag.replace('oai-gnb', 'oai-gnb-asan') - imageTag = imageTag.replace('oai-nr-ue', 'oai-nr-ue-asan') - imageTag = imageTag.replace('oai-nr-cuup', 'oai-nr-cuup-asan') - if not displayedNewTags: - logging.debug(f'\u001B[1m Using sanitized version of {image} with {imageTag}\u001B[0m') - mySSH.run(f'sed -i -e "s@oaisoftwarealliance/{image}:develop@oai-ci/{imageTag}@" ci-docker-compose.yml',silent=True) +def CopyinContainerLog(ssh, lSourcePath, yaml, containerName, filename): + remote_filename = f"{lSourcePath}/cmake_targets/log/{filename}" + ssh.run(f'docker logs {containerName} &> {remote_filename}') + local_dir = f"{os.getcwd()}/../cmake_targets/log/{yaml}" + os.system(f'mkdir -p {local_dir}') + local_filename = f"{local_dir}/{filename}" + return ssh.copyin(remote_filename, local_filename) -def DeployServices(mySSH,svcName): - allServices = [] - if svcName == '': - logging.warning('No service name given: starting all services in ci-docker-compose.yml!') - ret = mySSH.run(f'docker compose -f ci-docker-compose.yml config --services') - allServices = ret.stdout.splitlines() - deployStatus = mySSH.run(f'docker compose --file ci-docker-compose.yml up -d -- {svcName}', 50) - return deployStatus.returncode,allServices - -def CopyinContainerLog(mySSH,lSourcePath,ymlPath,containerName,filename): - logPath = f'{os.getcwd()}/../cmake_targets/log/{ymlPath[2]}' - os.system(f'mkdir -p {logPath}') - mySSH.run(f'docker logs {containerName} > {lSourcePath}/cmake_targets/log/{filename} 2>&1') - copyin_res = mySSH.copyin(f'{lSourcePath}/cmake_targets/log/{filename}', os.path.join(logPath, filename)) - return copyin_res - -def GetRunningServices(mySSH,yamlDir): - ret = mySSH.run(f'docker compose -f {yamlDir}/ci-docker-compose.yml config --services') +def GetRunningServices(ssh, file): + ret = ssh.run(f'docker compose -f {file} config --services') + if ret.returncode != 0: + return None allServices = ret.stdout.splitlines() - services = [] + running_services = [] for s in allServices: # outputs the hash if the container is running - ret = mySSH.run(f'docker compose -f {yamlDir}/ci-docker-compose.yml ps --all --quiet -- {s}') - c = ret.stdout - logging.debug(f'running service {s} with container id {c}') - if ret.stdout != "" and ret.returncode == 0: # something is running for that service - services.append((s, c)) - logging.info(f'stopping services {[s for s, _ in services]}') - return services + ret = ssh.run(f'docker compose -f {file} ps --all --quiet -- {s}') + if ret.returncode != 0: + logging.info(f"service {s}: {ret.stdout}") + elif ret.stdout == "": + logging.warning(f"could not retrieve information for service {s}") + else: + c = ret.stdout + logging.debug(f'running service {s} with container id {c}') + running_services.append((s, c)) + logging.info(f'stopping services: {running_services}') + return running_services -def CheckLogs(self,mySSH,ymlPath,service_name,HTML,RAN): - logPath = f'{os.getcwd()}/../cmake_targets/log/{ymlPath[2]}' +def CheckLogs(self, yaml, service_name, HTML, RAN): + logPath = f'{os.getcwd()}/../cmake_targets/log/{yaml}' filename = f'{logPath}/{service_name}-{HTML.testCase_id}.log' - isFailed = 0 + success = True if (any(sub in service_name for sub in ['oai_ue','oai-nr-ue','lte_ue'])): logging.debug(f'\u001B[1m Analyzing UE logfile {filename} \u001B[0m') logStatus = cls_oaicitest.OaiCiTest().AnalyzeLogFile_UE(filename, HTML, RAN) + opt = f"UE log analysis for service {service_name}" + # usage of htmlUEFailureMsg/htmleNBFailureMsg is because Analyze log files + # abuse HTML to store their reports, and we here want to put custom options, + # which is not possible with CreateHtmlTestRow + # solution: use HTML templates, where we don't need different HTML write funcs if (logStatus < 0): - HTML.CreateHtmlTestRow('UE log Analysis', 'KO', logStatus) - isFailed = 1 + HTML.CreateHtmlTestRowQueue(opt, 'KO', [HTML.htmlUEFailureMsg]) + success = False else: - HTML.CreateHtmlTestRow('UE log Analysis', 'OK', CONST.ALL_PROCESSES_OK) + HTML.CreateHtmlTestRowQueue(opt, 'OK', [HTML.htmlUEFailureMsg]) + HTML.htmlUEFailureMsg = "" elif service_name == 'nv-cubb': msg = 'Undeploy PNF/Nvidia CUBB' HTML.CreateHtmlTestRow(msg, 'OK', CONST.ALL_PROCESSES_OK) elif (any(sub in service_name for sub in ['enb','rru','rcc','cu','du','gnb'])): logging.debug(f'\u001B[1m Analyzing XnB logfile {filename}\u001B[0m') logStatus = RAN.AnalyzeLogFile_eNB(filename, HTML, self.ran_checkers) + opt = f"xNB log analysis for service {service_name}" if (logStatus < 0): - HTML.CreateHtmlTestRow(RAN.runtime_stats, 'KO', logStatus) - isFailed = 1 + HTML.CreateHtmlTestRowQueue(opt, 'KO', [HTML.htmleNBFailureMsg]) + success = False else: - HTML.CreateHtmlTestRow(RAN.runtime_stats, 'OK', CONST.ALL_PROCESSES_OK) + HTML.CreateHtmlTestRowQueue(opt, 'OK', [HTML.htmleNBFailureMsg]) + HTML.htmleNBFailureMsg = "" else: logging.info(f'Skipping to analyze log for service name {service_name}') - return isFailed -# pyshark livecapture launches 2 processes: -# * One using dumpcap -i lIfs -w - (ie redirecting the packets to STDOUT) -# * One using tshark -i - -w loFile (ie capturing from STDIN from previous process) -# but in fact the packets are read by the following loop before being in fact -# really written to loFile. -# So it is mandatory to keep the loop -def LaunchPySharkCapture(lIfs, lFilter, loFile): - capture = pyshark.LiveCapture(interface=lIfs, bpf_filter=lFilter, output_file=loFile, debug=False) - for packet in capture.sniff_continuously(): - pass + HTML.CreateHtmlTestRowQueue(f"service {service_name}", 'OK', ["no analysis function"]) + logging.debug(f"log check: service {service_name} passed analysis {success}") + return success -def StopPySharkCapture(testcase): - with cls_cmd.LocalCmd() as myCmd: - cmd = 'killall tshark' - myCmd.run(cmd, reportNonZero=False) - cmd = 'killall dumpcap' - myCmd.run(cmd, reportNonZero=False) - time.sleep(5) - cmd = f'mv /tmp/capture_{testcase}.pcap ../cmake_targets/log/{testcase}/.' - myCmd.run(cmd, timeout=100, reportNonZero=False) - return False #----------------------------------------------------------- # Class Declaration #----------------------------------------------------------- @@ -340,11 +327,9 @@ class Containerize(): self.proxyCommit = None self.eNB_instance = 0 self.eNB_serverId = ['', '', ''] - self.deployKind = [True, True, True] self.yamlPath = ['', '', ''] self.services = ['', '', ''] - self.nb_healthy = [0, 0, 0] - self.exitStatus = 0 + self.deploymentTag = '' self.eNB_logFile = ['', '', ''] self.testCase_id = '' @@ -356,7 +341,6 @@ class Containerize(): self.deployedContainers = [] self.tsharkStarted = False - self.displayedNewTags = False self.pingContName = '' self.pingOptions = '' self.pingLossThreshold = '' @@ -664,8 +648,6 @@ class Containerize(): buildProxy = mySSH.getBefore().count('o such image') != 0 if buildProxy: mySSH.command(self.cli + ' build ' + self.cliBuildOptions + ' --target oai-lte-multi-ue-proxy --tag proxy:' + tag + ' --file docker/Dockerfile.ubuntu18.04 . > cmake_targets/log/proxy-build.log 2>&1', '\$', 180) - # Note: at this point, OAI images are flattened, but we cannot do this - # here, as the flatten script is not in the proxy repo mySSH.command(self.cli + ' image inspect --format=\'Size = {{.Size}} bytes\' proxy:' + tag, '\$', 5) mySSH.command(self.cli + ' image prune --force || true','\$', 15) if mySSH.getBefore().count('o such image') != 0: @@ -857,19 +839,20 @@ class Containerize(): if self.ranAllowMerge: orgTag = 'ci-temp' for image in IMAGES: - tagToUse = ImageTagToUse(image, self.ranCommitID, self.ranBranch, self.ranAllowMerge) - mySSH.command(f'docker image tag {image}:{orgTag} {imagePrefix}/{tagToUse}', '\$', 5) + tagToUse = CreateTag(self.ranCommitID, self.ranBranch, self.ranAllowMerge) + imageTag = f"{image}:{tagToUse}" + mySSH.command(f'docker image tag {image}:{orgTag} {imagePrefix}/{imageTag}', '\$', 5) if re.search('Error response from daemon: No such image:', mySSH.getBefore()) is not None: continue - mySSH.command(f'docker push {imagePrefix}/{tagToUse}', '\$', 120) + mySSH.command(f'docker push {imagePrefix}/{imageTag}', '\$', 120) if re.search(': digest:', mySSH.getBefore()) is None: logging.debug(mySSH.getBefore()) - msg = f'Could not push {image} to local registry : {tagToUse}' + msg = f'Could not push {image} to local registry : {imageTag}' logging.error(msg) mySSH.close() HTML.CreateHtmlTestRow(msg, 'KO', CONST.ALL_PROCESSES_OK) return False - mySSH.command(f'docker rmi {imagePrefix}/{tagToUse} {image}:{orgTag}', '\$', 30) + mySSH.command(f'docker rmi {imagePrefix}/{imageTag} {image}:{orgTag}', '\$', 30) mySSH.command(f'docker logout {imagePrefix}', '\$', 5) if re.search('Removing login credentials', mySSH.getBefore()) is None: @@ -914,19 +897,22 @@ class Containerize(): myCmd.close() HTML.CreateHtmlTestRow(msg, 'KO', CONST.ALL_PROCESSES_OK) return False + pulled_images = [] for image in self.imageToPull: - tagToUse = ImageTagToUse(image, self.ranCommitID, self.ranBranch, self.ranAllowMerge) - cmd = f'docker pull {imagePrefix}/{tagToUse}' + tagToUse = CreateTag(self.ranCommitID, self.ranBranch, self.ranAllowMerge) + imageTag = f"{image}:{tagToUse}" + cmd = f'docker pull {imagePrefix}/{imageTag}' response = myCmd.run(cmd, timeout=120) if response.returncode != 0: logging.debug(response) - msg = f'Could not pull {image} from local registry : {tagToUse}' + msg = f'Could not pull {image} from local registry : {imageTag}' logging.error(msg) myCmd.close() HTML.CreateHtmlTestRow('msg', 'KO', CONST.ALL_PROCESSES_OK) return False - myCmd.run(f'docker tag {imagePrefix}/{tagToUse} oai-ci/{tagToUse}') - myCmd.run(f'docker rmi {imagePrefix}/{tagToUse}') + myCmd.run(f'docker tag {imagePrefix}/{imageTag} oai-ci/{imageTag}') + myCmd.run(f'docker rmi {imagePrefix}/{imageTag}') + pulled_images += [f"oai-ci/{imageTag}"] response = myCmd.run(f'docker logout {imagePrefix}') if response.returncode != 0: msg = 'Could not log off from local registry' @@ -935,7 +921,8 @@ class Containerize(): HTML.CreateHtmlTestRow(msg, 'KO', CONST.ALL_PROCESSES_OK) return False myCmd.close() - HTML.CreateHtmlTestRow('N/A', 'OK', CONST.ALL_PROCESSES_OK) + msg = "Pulled Images:\n" + '\n'.join(pulled_images) + HTML.CreateHtmlTestRowQueue('N/A', 'OK', [msg]) return True def Clean_Test_Server_Images(self, HTML): @@ -967,7 +954,8 @@ class Containerize(): myCmd = cls_cmd.LocalCmd() for image in IMAGES: - imageTag = ImageTagToUse(image, self.ranCommitID, self.ranBranch, self.ranAllowMerge) + tag = CreateTag(self.ranCommitID, self.ranBranch, self.ranAllowMerge) + imageTag = f"{image}:{tag}" cmd = f'docker rmi oai-ci/{imageTag}' myCmd.run(cmd, reportNonZero=False) @@ -995,51 +983,62 @@ class Containerize(): HELP.GenericHelp(CONST.Version) sys.exit('Insufficient Parameter') - logging.info(f"Running on server {lIpAddr}") - sshSession = cls_cmd.getConnection(lIpAddr) + success = CreateWorkspace(lIpAddr, lSourcePath, self.ranRepository, self.ranCommitID, self.ranTargetBranch, self.ranAllowMerge) + if success: + HTML.CreateHtmlTestRowQueue('N/A', 'OK', [f"created workspace {lSourcePath}"]) + else: + HTML.CreateHtmlTestRowQueue('N/A', 'KO', ["cannot create workspace"]) + return success - CreateWorkspace(sshSession, lSourcePath, self.ranRepository, self.ranCommitID, self.ranTargetBranch, self.ranAllowMerge) - HTML.CreateHtmlTestRow('N/A', 'OK', CONST.ALL_PROCESSES_OK) - - def DeployObject(self, HTML, EPC): + def DeployObject(self, HTML): lIpAddr, lUserName, lPassWord, lSourcePath = GetCredentials(self) if lIpAddr == '' or lUserName == '' or lPassWord == '' or lSourcePath == '': HELP.GenericHelp(CONST.Version) sys.exit('Insufficient Parameter') logging.debug('\u001B[1m Deploying OAI Object on server: ' + lIpAddr + '\u001B[0m') - self.deployKind[self.eNB_instance] = True - mySSH = cls_cmd.getConnection(lIpAddr, f'{lSourcePath}/{self.yamlPath[self.eNB_instance]}') - logging.info(f'Current working directory: {lSourcePath}/{self.yamlPath[self.eNB_instance]}') - ReTagImages(mySSH,IMAGES,self.ranCommitID, self.ranBranch, self.ranAllowMerge, self.displayedNewTags) - deployStatus,allServices = DeployServices(mySSH,self.services[self.eNB_instance]) - if deployStatus != 0: - mySSH.close() - self.exitStatus = 1 - logging.error('Could not deploy') - HTML.CreateHtmlTestRow('Could not deploy', 'KO', CONST.ALL_PROCESSES_OK) - return - services_list = allServices if self.services[self.eNB_instance].split() == [] else self.services[self.eNB_instance].split() - status = True - imagesInfo="" - for svcName in services_list: - containerName = GetContainerName(mySSH, svcName) - healthyNb,unhealthyNb = GetContainerHealth(mySSH,containerName) - self.testCase_id = HTML.testCase_id - self.eNB_logFile[self.eNB_instance] = f'{svcName}-{self.testCase_id}.log' - if unhealthyNb: - logging.warning(f"Deployment Failed: Trying to copy container logs {self.eNB_logFile[self.eNB_instance]}") - CopyinContainerLog(mySSH,lSourcePath,self.yamlPath[0].split('/'),containerName,self.eNB_logFile[self.eNB_instance]) - status = False - imagesInfo += (GetImageInfo(mySSH, containerName)) - mySSH.close() - imagesInfo += ("\n") - if status: - imagesInfo += ("Healthy deployment!") - HTML.CreateHtmlTestRowQueue('N/A', 'OK', [(imagesInfo)]) + yaml = self.yamlPath[self.eNB_instance].strip('/') + wd = f'{lSourcePath}/{yaml}' + + with cls_cmd.getConnection(lIpAddr) as ssh: + services = GetServices(ssh, self.services[self.eNB_instance], f"{wd}/docker-compose.y*ml") + if services == [] or services == ' ' or services == None: + msg = "Cannot determine services to start" + logging.error(msg) + HTML.CreateHtmlTestRowQueue('N/A', 'KO', [msg]) + return False + + ExistEnvFilePrint(ssh, wd) + WriteEnvFile(ssh, services, wd, self.deploymentTag) + + logging.info(f"will start services {services}") + status = ssh.run(f'docker compose -f {wd}/docker-compose.y*ml up -d -- {services}') + if status.returncode != 0: + msg = f"cannot deploy services {services}: {status.stdout}" + logging.error(msg) + HTML.CreateHtmlTestRowQueue('N/A', 'KO', [msg]) + return False + + imagesInfo = [] + fstatus = True + for svc in services.split(): + containerName = GetContainerName(ssh, svc, f"{wd}/docker-compose.y*ml") + healthy = GetContainerHealth(ssh, containerName) + if not healthy: + tgtlogfile = f'{svc}-{HTML.testCase_id}.log' + logging.warning(f"Deployment Failed: Trying to copy container logs to {tgtlogfile}") + yaml_dir = yaml.split('/')[-1] + CopyinContainerLog(ssh, lSourcePath, yaml_dir, containerName, tgtlogfile) + imagesInfo += [f"Failed to deploy: service {svc}"] + fstatus = False + else: + image = GetImageName(ssh, svc, f"{wd}/docker-compose.y*ml") + logging.info(f"service {svc} healthy, container {containerName}, image {image}") + imagesInfo += [f"service {svc} healthy, image {image}"] + if fstatus: + HTML.CreateHtmlTestRowQueue('N/A', 'OK', ['\n'.join(imagesInfo)]) else: - self.exitStatus = 1 - imagesInfo += ("Unhealthy deployment! -- Check logs for reason!") - HTML.CreateHtmlTestRowQueue('N/A', 'KO', [(imagesInfo)]) + HTML.CreateHtmlTestRowQueue('N/A', 'KO', ['\n'.join(imagesInfo)]) + return fstatus def UndeployObject(self, HTML, RAN): lIpAddr, lUserName, lPassWord, lSourcePath = GetCredentials(self) @@ -1047,81 +1046,32 @@ class Containerize(): HELP.GenericHelp(CONST.Version) sys.exit('Insufficient Parameter') logging.debug(f'\u001B[1m Undeploying OAI Object from server: {lIpAddr}\u001B[0m') - mySSH = cls_cmd.getConnection(lIpAddr) - yamlDir = f'{lSourcePath}/{self.yamlPath[self.eNB_instance]}' - services = GetRunningServices(mySSH, yamlDir) - mySSH.run(f'docker compose -f {yamlDir}/ci-docker-compose.yml stop -t3') - copyin_res = True - copyin_res = all(CopyinContainerLog(mySSH, lSourcePath, self.yamlPath[0].split('/'), container_id, f'{service_name}-{HTML.testCase_id}.log') for service_name, container_id in services) - mySSH.run(f'docker compose -f {yamlDir}/ci-docker-compose.yml down -v') + yaml = self.yamlPath[self.eNB_instance].strip('/') + wd = f'{lSourcePath}/{yaml}' + yaml_dir = yaml.split('/')[-1] + with cls_cmd.getConnection(lIpAddr) as ssh: + ExistEnvFilePrint(ssh, wd) + services = GetRunningServices(ssh, f"{wd}/docker-compose.y*ml") + copyin_res = None + if services is not None: + all_serv = " ".join([s for s, _ in services]) + ssh.run(f'docker compose -f {wd}/docker-compose.y*ml stop -- {all_serv}') + copyin_res = all(CopyinContainerLog(ssh, lSourcePath, yaml_dir, c, f'{s}-{HTML.testCase_id}.log') for s, c in services) + else: + logging.warning('could not identify services to stop => no log file') + ssh.run(f'docker compose -f {wd}/docker-compose.y*ml down -v') + ssh.run(f'rm {wd}/.env') if not copyin_res: - HTML.htmleNBFailureMsg='Could not copy logfile(s) to analyze it!' - HTML.CreateHtmlTestRow('N/A', 'KO', CONST.ENB_PROCESS_NOLOGFILE_TO_ANALYZE) - self.exitStatus = 1 + HTML.CreateHtmlTestRowQueue('N/A', 'KO', ['Could not copy logfile(s)']) + return False else: - log_results = [CheckLogs(self, mySSH, self.yamlPath[0].split('/'), service_name, HTML, RAN) for service_name, _ in services] - self.exitStatus = 1 if any(log_results) else 0 - logging.info('\u001B[1m Undeploying OAI Object Pass\u001B[0m') if self.exitStatus == 0 else logging.error('\u001B[1m Undeploying OAI Object Failed\u001B[0m') - mySSH.close() - - def CaptureOnDockerNetworks(self): - myCmd = cls_cmd.LocalCmd(d = self.yamlPath[0]) - cmd = 'docker-compose -f docker-compose-ci.yml config | grep com.docker.network.bridge.name | sed -e "s@^.*name: @@"' - networkNames = myCmd.run(cmd, silent=True) - myCmd.close() - # Allow only: control plane RAN (SCTP), HTTP of control in CN (port 80), PFCP traffic (port 8805), MySQL (port 3306) - capture_filter = 'sctp or port 80 or port 8805 or icmp or port 3306' - interfaces = [] - iInterfaces = '' - for name in networkNames.stdout.split('\n'): - if re.search('rfsim', name) is not None or re.search('l2sim', name) is not None: - interfaces.append(name) - iInterfaces += f'-i {name} ' - ymlPath = self.yamlPath[0].split('/') - output_file = f'/tmp/capture_{ymlPath[1]}.pcap' - self.tsharkStarted = True - # On old systems (ubuntu 18), pyshark live-capture is buggy. - # Going back to old method - if sys.version_info < (3, 7): - cmd = f'nohup tshark -f "{capture_filter}" {iInterfaces} -w {output_file} > /tmp/tshark.log 2>&1 &' - myCmd = cls_cmd.LocalCmd() - myCmd.run(cmd, timeout=5, reportNonZero=False) - myCmd.close() - return - x = threading.Thread(target = LaunchPySharkCapture, args = (interfaces,capture_filter,output_file,)) - x.daemon = True - x.start() - - def StatsFromGenObject(self, HTML): - self.exitStatus = 0 - ymlPath = self.yamlPath[0].split('/') - logPath = '../cmake_targets/log/' + ymlPath[1] - - # if the containers are running, recover the logs! - myCmd = cls_cmd.LocalCmd(d = self.yamlPath[0]) - cmd = 'docker-compose -f docker-compose-ci.yml ps --all' - deployStatus = myCmd.run(cmd, timeout=30) - cmd = 'docker stats --no-stream --format "table {{.Container}}\t{{.CPUPerc}}\t{{.MemUsage}}\t{{.MemPerc}}" ' - anyLogs = False - for state in deployStatus.stdout.split('\n'): - res = re.search('Name|NAME|----------', state) - if res is not None: - continue - if len(state) == 0: - continue - res = re.search('^(?P[a-zA-Z0-9\-\_]+) ', state) - if res is not None: - anyLogs = True - cmd += res.group('container_name') + ' ' - message = '' - if anyLogs: - stats = myCmd.run(cmd, timeout=30) - for statLine in stats.stdout.split('\n'): - logging.debug(statLine) - message += statLine + '\n' - myCmd.close() - - HTML.CreateHtmlTestRowQueue(self.pingOptions, 'OK', [message]) + log_results = [CheckLogs(self, yaml_dir, s, HTML, RAN) for s, _ in services] + success = all(log_results) + if success: + logging.info('\u001B[1m Undeploying OAI Object Pass\u001B[0m') + else: + logging.error('\u001B[1m Undeploying OAI Object Failed\u001B[0m') + return success def CheckAndAddRoute(self, svrName, ipAddr, userName, password): logging.debug('Checking IP routing on ' + svrName) diff --git a/ci-scripts/cls_native.py b/ci-scripts/cls_native.py new file mode 100644 index 0000000000..d9c281907a --- /dev/null +++ b/ci-scripts/cls_native.py @@ -0,0 +1,64 @@ +#/* +# * 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 diff --git a/ci-scripts/cls_oai_html.py b/ci-scripts/cls_oai_html.py index 04971485a6..93176d1375 100644 --- a/ci-scripts/cls_oai_html.py +++ b/ci-scripts/cls_oai_html.py @@ -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(' \n') self.htmlFile.write(' Final Tab Status\n') if passStatus: self.htmlFile.write(' PASS \n') else: - if testOkEvenIfUnstable: - self.htmlFile.write(' KNOWN UNSTABLE SCENARIO \n') - else: - self.htmlFile.write(' FAIL \n') + self.htmlFile.write(' FAIL \n') self.htmlFile.write(' \n') self.htmlFile.write(' \n') self.htmlFile.write(' \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>/' test_results.html" - else: - cmd = "sed -i -e 's/__STATE_" + self.htmlTabNames[0] + "__/<\/span>/' test_results.html" + cmd = "sed -i -e 's/__STATE_" + self.htmlTabNames[0] + "__/<\/span>/' test_results.html" subprocess.run(cmd, shell=True) self.htmlFooterCreated = False @@ -279,14 +265,6 @@ class HTMLManagement(): self.htmlFile.write('\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(' \n') - self.htmlFile.write(' ---- Try Run #' + str(cntnumfails) + ' ---- \n') - self.htmlFile.write(' \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' {status}\n') elif (str(status) == 'KO'): self.htmlFile.write(f' {status}\n') + elif str(status) == 'SKIP': + self.htmlFile.write(f' {status}\n') else: addOrangeBK = True self.htmlFile.write(f' {status}\n') diff --git a/ci-scripts/cls_oaicitest.py b/ci-scripts/cls_oaicitest.py index 61f88bb557..1729a45620 100644 --- a/ci-scripts/cls_oaicitest.py +++ b/ci-scripts/cls_oaicitest.py @@ -37,13 +37,7 @@ import re # reg import pexpect # pexpect import time # sleep import os -import subprocess -import xml.etree.ElementTree as ET import logging -import datetime -import signal -import statistics as stat -from multiprocessing import SimpleQueue, Lock import concurrent.futures import json @@ -150,8 +144,8 @@ def Iperf_analyzeV3UDP(filename, iperf_bitrate_threshold, iperf_packetloss_thres receiver_bitrate = None with open(filename, 'r') as server_file: for line in server_file.readlines(): - res_sender = re.search(r'(?P[0-9\.]+)\s+(?P[KMG]bits\/sec)\s+(?P[0-9\.]+\s+ms)\s+(?P\d+)/(?P\d+) \((?P[0-9\.]+).*?\s+(sender)', line) - res_receiver = re.search(r'(?P[0-9\.]+)\s+(?P[KMG]bits\/sec)\s+(?P[0-9\.]+\s+ms)\s+(?P\d+)/(?P\d+) \((?P[0-9\.]+).*?\s+(receiver)', line) + res_sender = re.search(r'(?P[0-9\.]+)\s+(?P[KMG]?bits\/sec)\s+(?P[0-9\.]+\s+ms)\s+(?P-?\d+)/(?P-?\d+) \((?P[0-9\.]+).*?\s+(sender)', line) + res_receiver = re.search(r'(?P[0-9\.]+)\s+(?P[KMG]?bits\/sec)\s+(?P[0-9\.]+\s+ms)\s+(?P-?\d+)/(?P-?\d+)\s+\((?P[0-9\.]+)%\).*?(receiver)', line) if res_sender is not None: sender_bitrate = res_sender.group('bitrate') sender_unit = res_sender.group('unit') @@ -226,6 +220,43 @@ def Iperf_analyzeV2UDP(server_filename, iperf_bitrate_threshold, iperf_packetlos pal_msg += f' (too high! >{self.iperf_packetloss_threshold}%)' return (result, f'{req_msg}\n{bir_msg}\n{brl_msg}\n{jit_msg}\n{pal_msg}') +def Custom_Command(HTML, node, command, command_fail): + logging.info(f"Executing custom command on {node}") + cmd = cls_cmd.getConnection(node) + ret = cmd.run(command) + cmd.close() + logging.debug(f"Custom_Command: {command} on node: {node} - {'OK, command succeeded' if ret.returncode == 0 else f'Error, return code: {ret.returncode}'}") + status = 'OK' + message = [] + if ret.returncode != 0 and not command_fail: + message = [ret.stdout] + logging.warning(f'Custom_Command output: {message}') + status = 'Warning' + if ret.returncode != 0 and command_fail: + message = [ret.stdout] + logging.error(f'Custom_Command failed: output: {message}') + status = 'KO' + HTML.CreateHtmlTestRowQueue(command, status, message) + return status == 'OK' or status == 'Warning' + +def Custom_Script(HTML, node, script, command_fail): + logging.info(f"Executing custom script on {node}") + ret = cls_cmd.runScript(node, script, 90) + logging.debug(f"Custom_Script: {script} on node: {node} - return code {ret.returncode}, output:\n{ret.stdout}") + status = 'OK' + message = [ret.stdout] + if ret.returncode != 0 and not command_fail: + status = 'Warning' + if ret.returncode != 0 and command_fail: + status = 'KO' + HTML.CreateHtmlTestRowQueue(script, status, message) + return status == 'OK' or status == 'Warning' + +def IdleSleep(HTML, idle_sleep_time): + time.sleep(idle_sleep_time) + HTML.CreateHtmlTestRow(f"{idle_sleep_time} sec", 'OK', CONST.ALL_PROCESSES_OK) + return True + #----------------------------------------------------------- # OaiCiTest Class Definition #----------------------------------------------------------- @@ -238,12 +269,8 @@ class OaiCiTest(): self.ranAllowMerge = False self.ranTargetBranch = '' - self.FailReportCnt = 0 self.testCase_id = '' self.testXMLfiles = [] - self.testUnstable = False - self.testMinStableId = '999999' - self.testStabilityPointReached = False self.desc = '' self.ping_args = '' self.ping_packetloss_threshold = '' @@ -254,8 +281,6 @@ class OaiCiTest(): self.iperf_profile = '' self.iperf_options = '' self.iperf_tcp_rate_target = '' - self.idle_sleep_time = 0 - self.repeatCounts = [] self.finalStatus = False self.UEIPAddress = '' self.UEUserName = '' @@ -279,8 +304,9 @@ class OaiCiTest(): messages.append(f'{uename}: initialized' if f.result() else f'{uename}: ERROR during Initialization') [f.result() for f in futures] HTML.CreateHtmlTestRowQueue('N/A', 'OK', messages) + return True - def AttachUE(self, HTML, RAN, EPC, CONTAINERS): + def AttachUE(self, HTML): ues = [cls_module.Module_UE(ue_id, server_name) for ue_id, server_name in zip(self.ue_ids, self.nodes)] with concurrent.futures.ThreadPoolExecutor(max_workers=64) as executor: futures = [executor.submit(ue.attach) for ue in ues] @@ -288,12 +314,13 @@ class OaiCiTest(): futures = [executor.submit(ue.checkMTU) for ue in ues] mtus = [f.result() for f in futures] messages = [f"UE {ue.getName()}: {ue.getIP()}" for ue in ues] - if all(attached) and all(mtus): + success = all(attached) and all(mtus) + if success: HTML.CreateHtmlTestRowQueue('N/A', 'OK', messages) else: logging.error(f'error attaching or wrong MTU: attached {attached}, mtus {mtus}') HTML.CreateHtmlTestRowQueue('N/A', 'KO', ["Could not retrieve UE IP address(es) or MTU(s) wrong!"]) - self.AutoTerminateUEandeNB(HTML, RAN, EPC, CONTAINERS) + return success def DetachUE(self, HTML): ues = [cls_module.Module_UE(ue_id, server_name) for ue_id, server_name in zip(self.ue_ids, self.nodes)] @@ -302,18 +329,21 @@ class OaiCiTest(): [f.result() for f in futures] messages = [f"UE {ue.getName()}: detached" for ue in ues] HTML.CreateHtmlTestRowQueue('NA', 'OK', messages) + return True def DataDisableUE(self, HTML): ues = [cls_module.Module_UE(n.strip()) for n in self.ue_ids] with concurrent.futures.ThreadPoolExecutor(max_workers=64) as executor: futures = [executor.submit(ue.dataDisable) for ue in ues] status = [f.result() for f in futures] - if all(status): + success = all(status) + if success: messages = [f"UE {ue.getName()}: data disabled" for ue in ues] HTML.CreateHtmlTestRowQueue('NA', 'OK', messages) else: logging.error(f'error enabling data: {status}') HTML.CreateHtmlTestRowQueue('N/A', 'KO', ["Could not disable UE data!"]) + return success def DataEnableUE(self, HTML): ues = [cls_module.Module_UE(n.strip()) for n in self.ue_ids] @@ -321,12 +351,14 @@ class OaiCiTest(): with concurrent.futures.ThreadPoolExecutor(max_workers=64) as executor: futures = [executor.submit(ue.dataEnable) for ue in ues] status = [f.result() for f in futures] - if all(status): + success = all(status) + if success: messages = [f"UE {ue.getName()}: data enabled" for ue in ues] HTML.CreateHtmlTestRowQueue('NA', 'OK', messages) else: logging.error(f'error enabling data: {status}') HTML.CreateHtmlTestRowQueue('N/A', 'KO', ["Could not enable UE data!"]) + return success def CheckStatusUE(self,HTML): ues = [cls_module.Module_UE(n.strip()) for n in self.ue_ids] @@ -336,8 +368,9 @@ class OaiCiTest(): futures = [executor.submit(ue.check) for ue in ues] messages = [f.result() for f in futures] HTML.CreateHtmlTestRowQueue('NA', 'OK', messages) + return True - def Ping_common(self, EPC, ue, RAN, CONTAINERS, printLock): + def Ping_common(self, EPC, ue, logPath): # Launch ping on the EPC side (true for ltebox and old open-air-cn) ping_status = 0 ueIP = ue.getIP() @@ -345,10 +378,6 @@ class OaiCiTest(): return (False, f"UE {ue.getName()} has no IP address") ping_log_file = f'ping_{self.testCase_id}_{ue.getName()}.log' ping_time = re.findall("-c *(\d+)",str(self.ping_args)) - # Creating destination log folder if needed on the python executor workspace - ymlPath = CONTAINERS.yamlPath[0].split('/') - logPath = f'../cmake_targets/log/{ymlPath[2]}' - os.system(f'mkdir -p {logPath}') local_ping_log_file = f'{logPath}/{ping_log_file}' # if has pattern %cn_ip%, replace with core IP address, else we assume the IP is present if re.search('%cn_ip%', self.ping_args): @@ -369,7 +398,6 @@ class OaiCiTest(): ue_header = f'UE {ue.getName()} ({ueIP})' if response.returncode != 0: message = ue_header + ': ping crashed: TIMEOUT?' - logging.error('\u001B[1;37;41m ' + message + ' \u001B[0m') return (False, message) #copy the ping log file to have it locally for analysis (ping stats) @@ -381,13 +409,11 @@ class OaiCiTest(): result = re.search(', (?P[0-9\.]+)% packet loss, time [0-9\.]+ms', ping_output) if result is None: message = ue_header + ': Packet Loss Not Found!' - logging.error(f'\u001B[1;37;41m {message} \u001B[0m') return (False, message) packetloss = result.group('packetloss') result = re.search('rtt min\/avg\/max\/mdev = (?P[0-9\.]+)\/(?P[0-9\.]+)\/(?P[0-9\.]+)\/[0-9\.]+ ms', ping_output) if result is None: message = ue_header + ': Ping RTT_Min RTT_Avg RTT_Max Not Found!' - logging.error(f'\u001B[1;37;41m {message} \u001B[0m') return (False, message) rtt_min = result.group('rtt_min') rtt_avg = result.group('rtt_avg') @@ -398,59 +424,60 @@ class OaiCiTest(): avg_msg = f'RTT(Avg) : {rtt_avg} ms' max_msg = f'RTT(Max) : {rtt_max} ms' - # adding a lock for cleaner display in command line - printLock.acquire() - logging.info(f'\u001B[1;37;44m ping result for {ue_header} \u001B[0m') - logging.info(f'\u001B[1;34m {pal_msg} \u001B[0m') - logging.info(f'\u001B[1;34m {min_msg} \u001B[0m') - logging.info(f'\u001B[1;34m {avg_msg} \u001B[0m') - logging.info(f'\u001B[1;34m {max_msg} \u001B[0m') - message = f'{ue_header}\n{pal_msg}\n{min_msg}\n{avg_msg}\n{max_msg}' #checking packet loss compliance if float(packetloss) > float(self.ping_packetloss_threshold): message += '\nPacket Loss too high' - logging.error(f'\u001B[1;37;41m Packet Loss too high; Target: {self.ping_packetloss_threshold}%\u001B[0m') - printLock.release() return (False, message) elif float(packetloss) > 0: message += '\nPacket Loss is not 0%' - logging.info('\u001B[1;30;43m Packet Loss is not 0% \u001B[0m') if self.ping_rttavg_threshold != '': if float(rtt_avg) > float(self.ping_rttavg_threshold): ping_rttavg_error_msg = f'RTT(Avg) too high: {rtt_avg} ms; Target: {self.ping_rttavg_threshold} ms' message += f'\n {ping_rttavg_error_msg}' - logging.error('\u001B[1;37;41m'+ ping_rttavg_error_msg +' \u001B[0m') - printLock.release() return (False, message) - printLock.release() return (True, message) - def Ping(self,HTML,RAN,EPC,CONTAINERS): + def Ping(self, HTML, EPC, CONTAINERS): if EPC.IPAddress == '' or EPC.UserName == '' or EPC.Password == '' or EPC.SourceCodePath == '': HELP.GenericHelp(CONST.Version) sys.exit('Insufficient Parameter') if self.ue_ids == []: raise Exception("no module names in self.ue_ids provided") + # Creating destination log folder if needed on the python executor workspace + with cls_cmd.getConnection('localhost') as local: + ymlPath = CONTAINERS.yamlPath[0].split('/') + logPath = f'{os.getcwd()}/../cmake_targets/log/{ymlPath[-1]}' + local.run(f'mkdir -p {logPath}', silent=True) ues = [cls_module.Module_UE(ue_id, server_name) for ue_id, server_name in zip(self.ue_ids, self.nodes)] logging.debug(ues) - pingLock = Lock() with concurrent.futures.ThreadPoolExecutor(max_workers=64) as executor: - futures = [executor.submit(self.Ping_common, EPC, ue, RAN, CONTAINERS, pingLock) for ue in ues] + futures = [executor.submit(self.Ping_common, EPC, ue, logPath) for ue in ues] results = [f.result() for f in futures] # each result in results is a tuple, first member goes to successes, second to messages successes, messages = map(list, zip(*results)) - if len(successes) == len(ues) and all(successes): + + success = len(successes) == len(ues) and all(successes) + logger = logging.info if success else logging.error + hcolor = "\u001B[1;37;44m" if success else "\u001B[1;37;41m" + lcolor = "\u001B[1;34m" if success else "\u001B[1;31m" + for m in messages: + lines = m.split('\n') + logger(f'{hcolor} ping result for {lines[0]} \u001B[0m') + for l in lines[1:]: + logger(f'{lcolor} {l}\u001B[0m') + + if success: HTML.CreateHtmlTestRowQueue(self.ping_args, 'OK', messages) else: HTML.CreateHtmlTestRowQueue(self.ping_args, 'KO', messages) - self.AutoTerminateUEandeNB(HTML,RAN,EPC,CONTAINERS) + return success - def Iperf_Module(self, EPC, ue, svr, RAN, idx, ue_num, CONTAINERS): + def Iperf_Module(self, EPC, ue, svr, idx, ue_num, logPath): ueIP = ue.getIP() if not ueIP: return (False, f"UE {ue.getName()} has no IP address") @@ -465,58 +492,38 @@ class OaiCiTest(): udpIperf = re.search('-u', iperf_opt) is not None bidirIperf = re.search('--bidir', iperf_opt) is not None client_filename = f'iperf_client_{self.testCase_id}_{ue.getName()}.log' - ymlPath = CONTAINERS.yamlPath[0].split('/') - logPath = f'../cmake_targets/log/{ymlPath[2]}' - # Creating destination log folder if needed on the python executor workspace - os.system(f'mkdir -p {logPath}') if udpIperf: target_bitrate, iperf_opt = Iperf_ComputeModifiedBW(idx, ue_num, self.iperf_profile, self.iperf_args) # note: for UDP testing we don't want to use json report - reports 0 Mbps received bitrate jsonReport = "" # note: enable server report collection on the UE side, no need to store and collect server report separately on the server side serverReport = "--get-server-output" - logging.info(f'iperf options modified from "{self.iperf_args}" to "{iperf_opt}" for {ue.getName()}') iperf_time = Iperf_ComputeTime(self.iperf_args) # hack: the ADB UEs don't have iperf in $PATH, so we need to hardcode for the moment iperf_ue = '/data/local/tmp/iperf3' if re.search('adb', ue.getName()) else 'iperf3' ue_header = f'UE {ue.getName()} ({ueIP})' - # create log directory on executor node - with cls_cmd.getConnection('localhost') as local: - local.run(f'mkdir -p {logPath}') with cls_cmd.getConnection(ue.getHost()) as cmd_ue, cls_cmd.getConnection(EPC.IPAddress) as cmd_svr: port = 5002 + idx # note: some core setups start an iperf3 server automatically, indicated in ci_infra by runIperf3Server: False` t = iperf_time * 2.5 - cmd_ue.run(f'rm /tmp/{client_filename}', reportNonZero=False) + cmd_ue.run(f'rm /tmp/{client_filename}', reportNonZero=False, silent=True) if runIperf3Server: cmd_svr.run(f'{svr.getCmdPrefix()} nohup timeout -vk3 {t} iperf3 -s -B {svrIP} -p {port} -1 {jsonReport} &', timeout=t) cmd_ue.run(f'{ue.getCmdPrefix()} timeout -vk3 {t} {iperf_ue} -B {ueIP} -c {svrIP} -p {port} {iperf_opt} {jsonReport} {serverReport} -O 5 >> /tmp/{client_filename}', timeout=t) - localPath = f'{os.getcwd()}' - # note: copy iperf3 log to the directory for log collection, used by pipelines running on executor machine - cmd_ue.copyin(f'/tmp/{client_filename}', f'{localPath}/{logPath}/{client_filename}') # note: copy iperf3 log to the current directory for log analysis and log collection - cmd_ue.copyin(f'/tmp/{client_filename}', f'{localPath}/{client_filename}') - cmd_ue.run(f'rm /tmp/{client_filename}', reportNonZero=False) + dest_filename = f'{logPath}/{client_filename}' + cmd_ue.copyin(f'/tmp/{client_filename}', dest_filename) + cmd_ue.run(f'rm /tmp/{client_filename}', reportNonZero=False, silent=True) if udpIperf: - status, msg = Iperf_analyzeV3UDP(client_filename, self.iperf_bitrate_threshold, self.iperf_packetloss_threshold, target_bitrate) + status, msg = Iperf_analyzeV3UDP(dest_filename, self.iperf_bitrate_threshold, self.iperf_packetloss_threshold, target_bitrate) elif bidirIperf: - status, msg = Iperf_analyzeV3BIDIRJson(client_filename) + status, msg = Iperf_analyzeV3BIDIRJson(dest_filename) else: - status, msg = Iperf_analyzeV3TCPJson(client_filename, self.iperf_tcp_rate_target) + status, msg = Iperf_analyzeV3TCPJson(dest_filename, self.iperf_tcp_rate_target) - logging.info(f'\u001B[1;37;45m iperf result for {ue_header}\u001B[0m') - for l in msg.split('\n'): - logging.info(f'\u001B[1;35m {l} \u001B[0m') return (status, f'{ue_header}\n{msg}') - def IperfNoS1(self,HTML,RAN,EPC,CONTAINERS): - raise 'IperfNoS1 not implemented' - - def Iperf(self,HTML,RAN,EPC,CONTAINERS): - result = re.search('noS1', str(RAN.Initialize_eNB_args)) - if result is not None: - self.IperfNoS1(HTML,RAN,EPC,CONTAINERS) - return + def Iperf(self,HTML,EPC,CONTAINERS): if EPC.IPAddress == '' or EPC.UserName == '' or EPC.Password == '' or EPC.SourceCodePath == '': HELP.GenericHelp(CONST.Version) sys.exit('Insufficient Parameter') @@ -525,21 +532,37 @@ class OaiCiTest(): if self.ue_ids == [] or self.svr_id == None: raise Exception("no module names in self.ue_ids or/and self.svr_id provided") + # create log directory on executor node + with cls_cmd.getConnection('localhost') as local: + ymlPath = CONTAINERS.yamlPath[0].split('/') + logPath = f'{os.getcwd()}/../cmake_targets/log/{ymlPath[-1]}' + local.run(f'mkdir -p {logPath}', silent=True) ues = [cls_module.Module_UE(ue_id, server_name) for ue_id, server_name in zip(self.ue_ids, self.nodes)] svr = cls_module.Module_UE(self.svr_id,self.svr_node) logging.debug(ues) with concurrent.futures.ThreadPoolExecutor(max_workers=64) as executor: - futures = [executor.submit(self.Iperf_Module, EPC, ue, svr, RAN, i, len(ues), CONTAINERS) for i, ue in enumerate(ues)] + futures = [executor.submit(self.Iperf_Module, EPC, ue, svr, i, len(ues), logPath) for i, ue in enumerate(ues)] results = [f.result() for f in futures] # each result in results is a tuple, first member goes to successes, second to messages successes, messages = map(list, zip(*results)) - if len(successes) == len(ues) and all(successes): + + success = len(successes) == len(ues) and all(successes) + logger = logging.info if success else logging.error + hcolor = "\u001B[1;37;45m" if success else "\u001B[1;37;41m" + lcolor = "\u001B[1;35m" if success else "\u001B[1;31m" + for m in messages: + lines = m.split('\n') + logger(f'{hcolor} iperf result for {lines[0]} \u001B[0m') + for l in lines[1:]: + logger(f'{lcolor} {l}\u001B[0m') + + if success: HTML.CreateHtmlTestRowQueue(self.iperf_args, 'OK', messages) else: HTML.CreateHtmlTestRowQueue(self.iperf_args, 'KO', messages) - self.AutoTerminateUEandeNB(HTML,RAN,EPC,CONTAINERS) + return success - def Iperf2_Unidir(self,HTML,RAN,EPC,CONTAINERS): + def Iperf2_Unidir(self,HTML,EPC,CONTAINERS): if self.ue_ids == [] or self.svr_id == None or len(self.ue_ids) != 1: raise Exception("no module names in self.ue_ids or/and self.svr_id provided, multi UE scenario not supported") ue = cls_module.Module_UE(self.ue_ids[0].strip(),self.nodes[0].strip()) @@ -552,7 +575,7 @@ class OaiCiTest(): return (False, f"Iperf server {ue.getName()} has no IP address") server_filename = f'iperf_server_{self.testCase_id}_{ue.getName()}.log' ymlPath = CONTAINERS.yamlPath[0].split('/') - logPath = f'../cmake_targets/log/{ymlPath[-1]}' + logPath = f'{os.getcwd()}/../cmake_targets/log/{ymlPath[-1]}' iperf_time = Iperf_ComputeTime(self.iperf_args) target_bitrate, iperf_opt = Iperf_ComputeModifiedBW(0, 1, self.iperf_profile, self.iperf_args) t = iperf_time*2.5 @@ -577,7 +600,7 @@ class OaiCiTest(): HTML.CreateHtmlTestRowQueue(self.iperf_args, 'OK', [f'{ue_header}\n{msg}']) else: HTML.CreateHtmlTestRowQueue(self.iperf_args, 'KO', [f'{ue_header}\n{msg}']) - self.AutoTerminateUEandeNB(HTML,RAN,EPC,CONTAINERS) + return success def AnalyzeLogFile_UE(self, UElogFile,HTML,RAN): if (not os.path.isfile(f'{UElogFile}')): @@ -858,68 +881,7 @@ class OaiCiTest(): archive_info = [f'Log at: {a}' if a else 'No log available' for a in archives] messages = [f"UE {ue.getName()}: {log}" for (ue, log) in zip(ues, archive_info)] HTML.CreateHtmlTestRowQueue(f'N/A', 'OK', messages) - - def AutoTerminateUEandeNB(self,HTML,RAN,EPC,CONTAINERS): - if (RAN.Initialize_eNB_args != ''): - self.testCase_id = 'AUTO-KILL-RAN' - HTML.testCase_id = self.testCase_id - self.desc = 'Automatic Termination of all RAN nodes' - HTML.desc = self.desc - self.ShowTestID() - #terminate all RAN nodes eNB/gNB/OCP - for instance in range(0, len(RAN.air_interface)): - if RAN.air_interface[instance]!='': - logging.debug(f'Auto Termination of Instance {instance} : {RAN.air_interface[instance]}') - RAN.eNB_instance=instance - RAN.TerminateeNB(HTML,EPC) - if CONTAINERS.yamlPath[0] != '': - self.testCase_id = 'AUTO-KILL-CONTAINERS' - HTML.testCase_id = self.testCase_id - self.desc = 'Automatic Termination of all RAN containers' - HTML.desc = self.desc - self.ShowTestID() - for instance in range(0, len(CONTAINERS.yamlPath)): - if CONTAINERS.yamlPath[instance]!='': - CONTAINERS.eNB_instance=instance - if CONTAINERS.deployKind[instance]: - CONTAINERS.UndeployObject(HTML,RAN) - else: - CONTAINERS.UndeployGenObject(HTML,RAN, self) - RAN.prematureExit=True - - #this function is called only if eNB/gNB fails to start - #RH to be re-factored - def AutoTerminateeNB(self,HTML,RAN,EPC,CONTAINERS): - if (RAN.Initialize_eNB_args != ''): - self.testCase_id = 'AUTO-KILL-RAN' - HTML.testCase_id = self.testCase_id - self.desc = 'Automatic Termination of all RAN nodes' - HTML.desc = self.desc - self.ShowTestID() - #terminate all RAN nodes eNB/gNB/OCP - for instance in range(0, len(RAN.air_interface)): - if RAN.air_interface[instance]!='': - logging.debug(f'Auto Termination of Instance {instance} : {RAN.air_interface[instance]}') - RAN.eNB_instance=instance - RAN.TerminateeNB(HTML,EPC) - if CONTAINERS.yamlPath[0] != '': - self.testCase_id = 'AUTO-KILL-CONTAINERS' - HTML.testCase_id = self.testCase_id - self.desc = 'Automatic Termination of all RAN containers' - HTML.desc = self.desc - self.ShowTestID() - for instance in range(0, len(CONTAINERS.yamlPath)): - if CONTAINERS.yamlPath[instance]!='': - CONTAINERS.eNB_instance=instance - if CONTAINERS.deployKind[instance]: - CONTAINERS.UndeployObject(HTML,RAN) - else: - CONTAINERS.UndeployGenObject(HTML,RAN,self) - RAN.prematureExit=True - - def IdleSleep(self,HTML): - time.sleep(self.idle_sleep_time) - HTML.CreateHtmlTestRow(str(self.idle_sleep_time) + ' sec', 'OK', CONST.ALL_PROCESSES_OK) + return True def LogCollectBuild(self,RAN): # Some pipelines are using "none" IP / Credentials @@ -989,12 +951,6 @@ class OaiCiTest(): SSH.command(f'echo {self.UEPassword} | sudo -S rm ue*.log core* ue_*record.raw ue_*.pcap ue_*txt', '\$', 5) SSH.close() - def ConditionalExit(self): - if self.testUnstable: - if self.testStabilityPointReached or self.testMinStableId == '999999': - sys.exit(0) - sys.exit(1) - def ShowTestID(self): logging.info(f'\u001B[1m----------------------------------------\u001B[0m') logging.info(f'\u001B[1m Test ID: {self.testCase_id} \u001B[0m') diff --git a/ci-scripts/cls_physim.py b/ci-scripts/cls_physim.py index 3604065caf..7d4dd7d33a 100644 --- a/ci-scripts/cls_physim.py +++ b/ci-scripts/cls_physim.py @@ -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) diff --git a/ci-scripts/cls_physim1.py b/ci-scripts/cls_physim1.py index 1888e00068..0fa88aff32 100644 --- a/ci-scripts/cls_physim1.py +++ b/ci-scripts/cls_physim1.py @@ -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() diff --git a/ci-scripts/cls_static_code_analysis.py b/ci-scripts/cls_static_code_analysis.py index 55c479c16a..ed5867c4cb 100644 --- a/ci-scripts/cls_static_code_analysis.py +++ b/ci-scripts/cls_static_code_analysis.py @@ -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 diff --git a/ci-scripts/cots_ue_ctl.yaml b/ci-scripts/cots_ue_ctl.yaml deleted file mode 100644 index c22fca246b..0000000000 --- a/ci-scripts/cots_ue_ctl.yaml +++ /dev/null @@ -1,20 +0,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 diff --git a/ci-scripts/epc.py b/ci-scripts/epc.py index b03573685a..97d1f1a8cb 100644 --- a/ci-scripts/epc.py +++ b/ci-scripts/epc.py @@ -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() diff --git a/ci-scripts/flatten_image.py b/ci-scripts/flatten_image.py deleted file mode 100644 index 55ac8ff0da..0000000000 --- a/ci-scripts/flatten_image.py +++ /dev/null @@ -1,116 +0,0 @@ -""" - 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() diff --git a/ci-scripts/main.py b/ci-scripts/main.py index 0e54401b7b..0886f4f9fa 100644 --- a/ci-scripts/main.py +++ b/ci-scripts/main.py @@ -44,6 +44,7 @@ import cls_containerize #class Containerize for all container-based operations import cls_static_code_analysis #class for static code analysis import cls_physim1 #class PhySim for physical simulators deploy and run import cls_cluster # class for building/deploying on cluster +import cls_native # class for all native/source-based operations import sshconnection import epc @@ -102,7 +103,16 @@ def AssignParams(params_dict): -def GetParametersFromXML(action): +def ExecuteActionWithParam(action): + global SSH + global EPC + global RAN + global HTML + global CONTAINERS + global SCA + global PHYSIM + global CLUSTER + global ldpc if action == 'Build_eNB' or action == 'Build_Image' or action == 'Build_Proxy' or action == "Build_Cluster_Image" or action == "Build_Run_Tests": RAN.Build_eNB_args=test.findtext('Build_eNB_args') CONTAINERS.imageKind=test.findtext('kind') @@ -139,19 +149,16 @@ def GetParametersFromXML(action): proxy_commit = test.findtext('proxy_commit') if proxy_commit is not None: CONTAINERS.proxyCommit = proxy_commit - - elif action == 'WaitEndBuild_eNB': - RAN.Build_eNB_args=test.findtext('Build_eNB_args') - eNB_instance=test.findtext('eNB_instance') - if (eNB_instance is None): - RAN.eNB_instance=0 - else: - RAN.eNB_instance=int(eNB_instance) - eNB_serverId=test.findtext('eNB_serverId') - if (eNB_serverId is None): - RAN.eNB_serverId[RAN.eNB_instance]='0' - else: - RAN.eNB_serverId[RAN.eNB_instance]=eNB_serverId + if action == 'Build_eNB': + success = cls_native.Native.Build(HTML.testCase_id, HTML, RAN.eNBIPAddress, RAN.eNBSourceCodePath, RAN.Build_eNB_args) + elif action == 'Build_Image': + success = CONTAINERS.BuildImage(HTML) + elif action == 'Build_Proxy': + success = CONTAINERS.BuildProxy(HTML) + elif action == 'Build_Cluster_Image': + success = CLUSTER.BuildClusterImage(HTML) + elif action == 'Build_Run_Tests': + success = CONTAINERS.BuildRunTests(HTML) elif action == 'Initialize_eNB': RAN.eNB_Trace=test.findtext('eNB_Trace') @@ -187,6 +194,7 @@ def GetParametersFromXML(action): cmd_prefix = test.findtext('cmd_prefix') if cmd_prefix is not None: RAN.cmd_prefix = cmd_prefix + success = RAN.InitializeeNB(HTML, EPC) elif action == 'Terminate_eNB': eNB_instance=test.findtext('eNB_instance') @@ -214,6 +222,7 @@ def GetParametersFromXML(action): RAN.air_interface[RAN.eNB_instance] = 'lte-softmodem' else: RAN.air_interface[RAN.eNB_instance] = air_interface.lower() +'-softmodem' + success = RAN.TerminateeNB(HTML, EPC) elif action == 'Initialize_UE' or action == 'Attach_UE' or action == 'Detach_UE' or action == 'Terminate_UE' or action == 'CheckStatusUE' or action == 'DataEnable_UE' or action == 'DataDisable_UE': CiTestObj.ue_ids = test.findtext('id').split(' ') @@ -224,6 +233,20 @@ def GetParametersFromXML(action): sys.exit("Mismatch in number of Nodes and UIs") else: CiTestObj.nodes = [None] * len(CiTestObj.ue_ids) + if action == 'Initialize_UE': + success = CiTestObj.InitializeUE(HTML) + elif action == 'Attach_UE': + success = CiTestObj.AttachUE(HTML) + elif action == 'Detach_UE': + success = CiTestObj.DetachUE(HTML) + elif action == 'Terminate_UE': + success = CiTestObj.TerminateUE(HTML) + elif action == 'CheckStatusUE': + success = CiTestObj.CheckStatusUE(HTML) + elif action == 'DataEnable_UE': + success = CiTestObj.DataEnableUE(HTML) + elif action == 'DataDisable_UE': + success = CiTestObj.DataDisableUE(HTML) elif action == 'Ping': CiTestObj.ping_args = test.findtext('ping_args') @@ -237,6 +260,7 @@ def GetParametersFromXML(action): else: CiTestObj.nodes = [None] * len(CiTestObj.ue_ids) ping_rttavg_threshold = test.findtext('ping_rttavg_threshold') or '' + success = CiTestObj.Ping(HTML,EPC,CONTAINERS) elif action == 'Iperf' or action == 'Iperf2_Unidir': CiTestObj.iperf_args = test.findtext('iperf_args') @@ -262,21 +286,14 @@ def GetParametersFromXML(action): if CiTestObj.iperf_options != 'check' and CiTestObj.iperf_options != 'sink': logging.error('test-case has wrong option ' + CiTestObj.iperf_options) CiTestObj.iperf_options = 'check' - - elif action == 'Iperf2_Unidir': - CiTestObj.iperf_args = test.findtext('iperf_args') - CiTestObj.ue_ids = test.findtext('id').split(' ') - CiTestObj.svr_id = test.findtext('svr_id') or None - CiTestObj.iperf_packetloss_threshold = test.findtext('iperf_packetloss_threshold') - CiTestObj.iperf_bitrate_threshold = test.findtext('iperf_bitrate_threshold') or '90' - CiTestObj.iperf_profile = test.findtext('iperf_profile') or 'balanced' + if action == 'Iperf': + success = CiTestObj.Iperf(HTML, EPC, CONTAINERS) + elif action == 'Iperf2_Unidir': + success = CiTestObj.Iperf2_Unidir(HTML, EPC, CONTAINERS) elif action == 'IdleSleep': - string_field = test.findtext('idle_sleep_time_in_sec') - if (string_field is None): - CiTestObj.idle_sleep_time = 5 - else: - CiTestObj.idle_sleep_time = int(string_field) + st = test.findtext('idle_sleep_time_in_sec') or "5" + success = cls_oaicitest.IdleSleep(HTML, int(st)) elif action == 'Build_PhySim': ldpc.buildargs = test.findtext('physim_build_args') @@ -288,33 +305,52 @@ def GetParametersFromXML(action): ldpc.forced_workspace_cleanup=True else: ldpc.forced_workspace_cleanup=False + success = ldpc.Build_PhySim(HTML,CONST) + + elif action == 'Deploy_Run_PhySim': + success = PHYSIM.Deploy_PhySim(HTML) elif action == 'Initialize_MME': string_field = test.findtext('option') if (string_field is not None): EPC.mmeConfFile = string_field + success = EPC.InitializeMME(HTML) elif action == 'Initialize_HSS' or action == 'Initialize_SPGW': - pass + if action == 'Initialize_HSS': + success = EPC.InitializeHSS(HTML) + elif action == 'Initialize_SPGW': + success = EPC.InitializeSPGW(HTML) elif action == 'Terminate_HSS' or action == 'Terminate_MME' or action == 'Terminate_SPGW': - pass + if action == 'Terminate_HSS': + success = EPC.TerminateHSS(HTML) + elif action == 'Terminate_MME': + success = EPC.TerminateMME(HTML) + elif action == 'Terminate_SPGW': + success = EPC.TerminateSPGW(HTML) elif action == 'Deploy_EPC': string_field = test.findtext('parameters') if (string_field is not None): EPC.yamlPath = string_field + success = EPC.DeployEpc(HTML) + + elif action == 'Undeploy_EPC': + success = EPC.UndeployEpc(HTML) elif action == 'Initialize_5GCN': string_field = test.findtext('args') if (string_field is not None): EPC.cfgDeploy = string_field EPC.cnID = test.findtext('cn_id') + success = EPC.Initialize5GCN(HTML) elif action == 'Terminate_5GCN': string_field = test.findtext('args') if (string_field is not None): EPC.cfgUnDeploy = string_field EPC.cnID = test.findtext('cn_id') + success = EPC.Terminate5GCN(HTML) elif action == 'Deploy_Object' or action == 'Undeploy_Object' or action == "Create_Workspace": eNB_instance=test.findtext('eNB_instance') @@ -339,22 +375,36 @@ def GetParametersFromXML(action): string_field = test.findtext('services') if string_field is not None: CONTAINERS.services[CONTAINERS.eNB_instance] = string_field + CONTAINERS.deploymentTag = cls_containerize.CreateTag(CONTAINERS.ranCommitID, CONTAINERS.ranBranch, CONTAINERS.ranAllowMerge) + if action == 'Deploy_Object': + success = CONTAINERS.DeployObject(HTML) + elif action == 'Undeploy_Object': + success = CONTAINERS.UndeployObject(HTML, RAN) + elif action == 'Create_Workspace': + success = CONTAINERS.Create_Workspace(HTML) elif action == 'Run_CUDATest' or action == 'Run_NRulsimTest' or action == 'Run_T2Test': ldpc.runargs = test.findtext('physim_run_args') ldpc.runsim = test.findtext('physim_run') ldpc.timethrs = test.findtext('physim_time_threshold') + if action == 'Run_CUDATest': + success = ldpc.Run_CUDATest(HTML,CONST,id) + elif action == 'Run_NRulsimTest': + success = ldpc.Run_NRulsimTest(HTML,CONST,id) + elif action == 'Run_T2Test': + success = ldpc.Run_T2Test(HTML,CONST,id) elif action == 'LicenceAndFormattingCheck': - pass + success = SCA.LicenceAndFormattingCheck(HTML) elif action == 'Cppcheck_Analysis': - pass + success = SCA.CppCheckAnalysis(HTML) elif action == 'Push_Local_Registry': string_field = test.findtext('registry_svr_id') if (string_field is not None): CONTAINERS.registrySvrId = string_field + success = CONTAINERS.Push_Image_to_Local_Registry(HTML) elif action == 'Pull_Local_Registry': string_field = test.findtext('test_svr_id') @@ -364,15 +414,26 @@ def GetParametersFromXML(action): string_field = test.findtext('images_to_pull') if (string_field is not None): CONTAINERS.imageToPull = string_field.split() + success = CONTAINERS.Pull_Image_from_Local_Registry(HTML) elif action == 'Clean_Test_Server_Images': string_field = test.findtext('test_svr_id') if (string_field is not None): CONTAINERS.testSvrId = string_field + success = CONTAINERS.Clean_Test_Server_Images(HTML) + elif action == 'Custom_Command': - RAN.node = test.findtext('node') - RAN.command = test.findtext('command') - RAN.command_fail = test.findtext('command_fail') in ['True', 'true', 'Yes', 'yes'] + node = test.findtext('node') + command = test.findtext('command') + command_fail = test.findtext('command_fail') in ['True', 'true', 'Yes', 'yes'] + success = cls_oaicitest.Custom_Command(HTML, node, command, command_fail) + + elif action == 'Custom_Script': + node = test.findtext('node') + script = test.findtext('script') + command_fail = test.findtext('command_fail') in ['True', 'true', 'Yes', 'yes'] + success = cls_oaicitest.Custom_Script(HTML, node, script, command_fail) + elif action == 'Pull_Cluster_Image': string_field = test.findtext('images_to_pull') if (string_field is not None): @@ -380,9 +441,13 @@ def GetParametersFromXML(action): string_field = test.findtext('test_svr_id') if (string_field is not None): CLUSTER.testSvrId = string_field - else: - logging.warning(f"unknown action {action} from option-parsing point-of-view") + success = CLUSTER.PullClusterImage(HTML, RAN) + else: + logging.warning(f"unknown action {action}, skip step") + success = True # by default, we skip the step and print a warning + + return success #check if given test is in list #it is in list if one of the strings in 'list' is at the beginning of 'test' @@ -595,15 +660,6 @@ elif re.match('^TesteNB$', mode, re.IGNORECASE) or re.match('^TestUE$', mode, re if (HTML.nbTestXMLfiles == 1): HTML.htmlTabRefs.append(xmlRoot.findtext('htmlTabRef',default='test-tab-0')) HTML.htmlTabNames.append(xmlRoot.findtext('htmlTabName',default='Test-0')) - repeatCount = xmlRoot.findtext('repeatCount',default='1') - testStability = xmlRoot.findtext('TestUnstable',default='False') - CiTestObj.repeatCounts.append(int(repeatCount)) - if testStability == 'True': - CiTestObj.testUnstable = True - HTML.testUnstable = True - CiTestObj.testMinStableId = xmlRoot.findtext('TestMinId',default='999999') - HTML.testMinStableId = CiTestObj.testMinStableId - logging.warning('Test is tagged as Unstable -- starting from TestID ' + str(CiTestObj.testMinStableId)) all_tests=xmlRoot.findall('testCase') exclusion_tests=exclusion_tests.split() @@ -666,185 +722,47 @@ elif re.match('^TesteNB$', mode, re.IGNORECASE) or re.match('^TestUE$', mode, re if CONTAINERS.eNB1IPAddress == '172.21.16.137': CONTAINERS.CheckAndAddRoute('nepes', CONTAINERS.eNB1IPAddress, CONTAINERS.eNB1UserName, CONTAINERS.eNB1Password) - CiTestObj.FailReportCnt = 0 - RAN.prematureExit=True + task_set_succeeded = True HTML.startTime=int(round(time.time() * 1000)) - while CiTestObj.FailReportCnt < CiTestObj.repeatCounts[0] and RAN.prematureExit: - RAN.prematureExit=False - # At every iteration of the retry loop, a separator will be added - # pass CiTestObj.FailReportCnt as parameter of HTML.CreateHtmlRetrySeparator - HTML.CreateHtmlRetrySeparator(CiTestObj.FailReportCnt) - for test_case_id in todo_tests: - if RAN.prematureExit: - break - for test in all_tests: - if RAN.prematureExit: - break - id = test.get('id') - if test_case_id != id: - continue - CiTestObj.testCase_id = id - HTML.testCase_id=CiTestObj.testCase_id - EPC.testCase_id=CiTestObj.testCase_id - CiTestObj.desc = test.findtext('desc') - HTML.desc=CiTestObj.desc - action = test.findtext('class') - if (CheckClassValidity(xml_class_list, action, id) == False): - continue - CiTestObj.ShowTestID() - GetParametersFromXML(action) - try: - if action == 'Build_eNB': - RAN.BuildeNB(HTML) - elif action == 'WaitEndBuild_eNB': - RAN.WaitBuildeNBisFinished(HTML) - elif action == 'Custom_Command': - RAN.CustomCommand(HTML) - if RAN.prematureExit: - CiTestObj.AutoTerminateeNB(HTML,RAN,EPC,CONTAINERS) - elif action == 'Initialize_eNB': - RAN.InitializeeNB(HTML, EPC) - if RAN.prematureExit: - CiTestObj.AutoTerminateeNB(HTML,RAN,EPC,CONTAINERS) - elif action == 'Terminate_eNB': - RAN.TerminateeNB(HTML, EPC) - elif action == 'Initialize_UE': - CiTestObj.InitializeUE(HTML) - elif action == 'Terminate_UE': - CiTestObj.TerminateUE(HTML) - elif action == 'Attach_UE': - CiTestObj.AttachUE(HTML, RAN, EPC, CONTAINERS) - elif action == 'Detach_UE': - CiTestObj.DetachUE(HTML) - elif action == 'DataDisable_UE': - CiTestObj.DataDisableUE(HTML) - elif action == 'DataEnable_UE': - CiTestObj.DataEnableUE(HTML) - elif action == 'CheckStatusUE': - CiTestObj.CheckStatusUE(HTML) - elif action == 'Ping': - CiTestObj.Ping(HTML,RAN,EPC,CONTAINERS) - elif action == 'Iperf': - CiTestObj.Iperf(HTML,RAN,EPC,CONTAINERS) - elif action == 'Iperf2_Unidir': - CiTestObj.Iperf2_Unidir(HTML,RAN,EPC,CONTAINERS) - elif action == 'Initialize_HSS': - EPC.InitializeHSS(HTML) - elif action == 'Terminate_HSS': - EPC.TerminateHSS(HTML) - elif action == 'Initialize_MME': - EPC.InitializeMME(HTML) - elif action == 'Terminate_MME': - EPC.TerminateMME(HTML) - elif action == 'Initialize_SPGW': - EPC.InitializeSPGW(HTML) - elif action == 'Terminate_SPGW': - EPC.TerminateSPGW(HTML) - elif action == 'Initialize_5GCN': - EPC.Initialize5GCN(HTML) - elif action == 'Terminate_5GCN': - EPC.Terminate5GCN(HTML) - elif action == 'Deploy_EPC': - EPC.DeployEpc(HTML) - elif action == 'Undeploy_EPC': - EPC.UndeployEpc(HTML) - elif action == 'IdleSleep': - CiTestObj.IdleSleep(HTML) - elif action == 'Build_PhySim': - HTML=ldpc.Build_PhySim(HTML,CONST) - if ldpc.exitStatus==1: - RAN.prematureExit = True - elif action == 'Run_CUDATest': - HTML=ldpc.Run_CUDATest(HTML,CONST,id) - if ldpc.exitStatus==1: - RAN.prematureExit = True - elif action == 'Run_T2Test': - HTML=ldpc.Run_T2Test(HTML,CONST,id) - if ldpc.exitStatus==1: - RAN.prematureExit = True - elif action == 'Run_NRulsimTest': - HTML=ldpc.Run_NRulsimTest(HTML,CONST,id) - if ldpc.exitStatus==1: - RAN.prematureExit = True - elif action == 'Pull_Cluster_Image': - if not CLUSTER.PullClusterImage(HTML,RAN): - RAN.prematureExit = True - elif action == 'Build_Cluster_Image': - if not CLUSTER.BuildClusterImage(HTML): - RAN.prematureExit = True - elif action == 'Build_Image': - success = CONTAINERS.BuildImage(HTML) - if not success: - RAN.prematureExit = True - elif action == 'Build_Run_Tests': - success = CONTAINERS.BuildRunTests(HTML) - if not success: - RAN.prematureExit = True - elif action == 'Build_Proxy': - success = CONTAINERS.BuildProxy(HTML) - if not success: - RAN.prematureExit = True - elif action == 'Push_Local_Registry': - success = CONTAINERS.Push_Image_to_Local_Registry(HTML) - if not success: - RAN.prematureExit = True - elif action == 'Pull_Local_Registry': - success = CONTAINERS.Pull_Image_from_Local_Registry(HTML) - if not success: - RAN.prematureExit = True - elif action == 'Clean_Test_Server_Images': - success = CONTAINERS.Clean_Test_Server_Images(HTML) - if not success: - RAN.prematureExit = True - elif action == 'Create_Workspace': - CONTAINERS.Create_Workspace(HTML) - elif action == 'Deploy_Object': - CONTAINERS.DeployObject(HTML, EPC) - if CONTAINERS.exitStatus==1: - CiTestObj.AutoTerminateeNB(HTML,RAN,EPC,CONTAINERS) - RAN.prematureExit = True - elif action == 'Undeploy_Object': - CONTAINERS.UndeployObject(HTML, RAN) - if CONTAINERS.exitStatus == 1: - CiTestObj.AutoTerminateeNB(HTML,RAN,EPC,CONTAINERS) - RAN.prematureExit = True - elif action == 'Cppcheck_Analysis': - SCA.CppCheckAnalysis(HTML) - elif action == 'LicenceAndFormattingCheck': - ret = SCA.LicenceAndFormattingCheck(HTML) - if ret != 0: - RAN.prematureExit = True - elif action == 'Deploy_Run_PhySim': - PHYSIM.Deploy_PhySim(HTML, RAN) - elif action == 'IperfFromContainer': - CONTAINERS.IperfFromContainer(HTML, RAN, CiTestObj) - if CONTAINERS.exitStatus==1: - RAN.prematureExit = True - elif action == 'Push_Images_To_Test_Servers': - logging.debug('To be implemented') - else: - sys.exit('Invalid class (action) from xml') - except Exception as e: - s = traceback.format_exc() - logging.error(f'while running CI, an exception occurred:\n{s}') - HTML.CreateHtmlTestRowQueue("N/A", 'KO', [f"CI test code encountered an exception:\n{s}"]) - RAN.prematureExit = True - if RAN.prematureExit: - if CiTestObj.testCase_id == CiTestObj.testMinStableId: - logging.warning('Scenario has reached minimal stability point') - CiTestObj.testStabilityPointReached = True - HTML.testStabilityPointReached = True - CiTestObj.FailReportCnt += 1 - if CiTestObj.FailReportCnt == CiTestObj.repeatCounts[0] and RAN.prematureExit: - logging.error('\u001B[1;37;41mScenario failed ' + str(CiTestObj.FailReportCnt) + ' time(s)\u001B[0m') + for test_case_id in todo_tests: + for test in all_tests: + id = test.get('id') + if test_case_id != id: + continue + CiTestObj.testCase_id = id + HTML.testCase_id=CiTestObj.testCase_id + EPC.testCase_id=CiTestObj.testCase_id + CiTestObj.desc = test.findtext('desc') + always_exec = test.findtext('always_exec') in ['True', 'true', 'Yes', 'yes'] + HTML.desc=CiTestObj.desc + action = test.findtext('class') + if (CheckClassValidity(xml_class_list, action, id) == False): + continue + CiTestObj.ShowTestID() + if not task_set_succeeded and not always_exec: + msg = f"skipping test due to prior error" + logging.warning(msg) + HTML.CreateHtmlTestRowQueue(msg, "SKIP", []) + break + try: + test_succeeded = ExecuteActionWithParam(action) + if not test_succeeded: + logging.error(f"test ID {test_case_id} action {action} failed ({test_succeeded}), skipping next tests") + task_set_succeeded = False + except Exception as e: + s = traceback.format_exc() + logging.error(f'while running CI, an exception occurred:\n{s}') + HTML.CreateHtmlTestRowQueue("N/A", 'KO', [f"CI test code encountered an exception:\n{s}"]) + task_set_succeeded = False + break + + if not task_set_succeeded: + logging.error('\u001B[1;37;41mScenario failed\u001B[0m') HTML.CreateHtmlTabFooter(False) - if CiTestObj.testUnstable and (CiTestObj.testStabilityPointReached or CiTestObj.testMinStableId == '999999'): - logging.warning('\u001B[1;30;43mScenario has reached minimal stability point -- Not a Failure\u001B[0m') - else: - sys.exit('Failed Scenario') + sys.exit('Failed Scenario') else: - logging.info('\u001B[1;37;42mScenario passed after ' + str(CiTestObj.FailReportCnt) + ' time(s)\u001B[0m') + logging.info('\u001B[1;37;42mScenario passed\u001B[0m') HTML.CreateHtmlTabFooter(True) elif re.match('^LoadParams$', mode, re.IGNORECASE): pass diff --git a/ci-scripts/py_params.yaml b/ci-scripts/py_params.yaml deleted file mode 100644 index 0c1d660ee8..0000000000 --- a/ci-scripts/py_params.yaml +++ /dev/null @@ -1,48 +0,0 @@ -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 diff --git a/ci-scripts/py_params_template.yaml b/ci-scripts/py_params_template.yaml deleted file mode 100644 index b6ef9c6892..0000000000 --- a/ci-scripts/py_params_template.yaml +++ /dev/null @@ -1,90 +0,0 @@ -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 diff --git a/ci-scripts/ran.py b/ci-scripts/ran.py index ad1b2bc5e4..4c56c5e8ac 100644 --- a/ci-scripts/ran.py +++ b/ci-scripts/ran.py @@ -55,7 +55,6 @@ class RANManagement(): def __init__(self): - self.prematureExit = False self.ranRepository = '' self.ranBranch = '' self.ranAllowMerge = False @@ -106,242 +105,6 @@ class RANManagement(): # RAN management functions #----------------------------------------------------------- - def BuildeNB(self, HTML): - if self.ranRepository == '' or self.ranBranch == '' or self.ranCommitID == '': - HELP.GenericHelp(CONST.Version) - sys.exit('Insufficient Parameter') - if self.eNB_serverId[self.eNB_instance] == '0': - lIpAddr = self.eNBIPAddress - lUserName = self.eNBUserName - lPassWord = self.eNBPassword - lSourcePath = self.eNBSourceCodePath - elif self.eNB_serverId[self.eNB_instance] == '1': - lIpAddr = self.eNB1IPAddress - lUserName = self.eNB1UserName - lPassWord = self.eNB1Password - lSourcePath = self.eNB1SourceCodePath - elif self.eNB_serverId[self.eNB_instance] == '2': - lIpAddr = self.eNB2IPAddress - lUserName = self.eNB2UserName - lPassWord = self.eNB2Password - lSourcePath = self.eNB2SourceCodePath - if lIpAddr == '' or lUserName == '' or lPassWord == '' or lSourcePath == '': - HELP.GenericHelp(CONST.Version) - sys.exit('Insufficient Parameter') - logging.debug('Building on server: ' + lIpAddr) - mySSH = SSH.SSHConnection() - mySSH.open(lIpAddr, lUserName, lPassWord) - - # Check if we build an 5G-NR gNB or an LTE eNB - result = re.search('--RU', self.Build_eNB_args) - if result is not None: - self.air_interface[self.eNB_instance] = 'oairu' - else: - result = re.search('--gNB', self.Build_eNB_args) - if result is not None: - self.air_interface[self.eNB_instance] = 'nr-softmodem' - else: - self.air_interface[self.eNB_instance] = 'lte-softmodem' - - # Worakround for some servers, we need to erase completely the workspace - if self.Build_eNB_forced_workspace_cleanup: - mySSH.command('echo ' + lPassWord + ' | sudo -S rm -Rf ' + lSourcePath, '\$', 15) - self.testCase_id = HTML.testCase_id - # on RedHat/CentOS .git extension is mandatory - result = re.search('([a-zA-Z0-9\:\-\.\/])+\.git', self.ranRepository) - if result is not None: - full_ran_repo_name = self.ranRepository.replace('git/', 'git') - else: - full_ran_repo_name = self.ranRepository + '.git' - mySSH.command('mkdir -p ' + lSourcePath, '\$', 5) - mySSH.command('cd ' + lSourcePath, '\$', 5) - mySSH.command('if [ ! -e .git ]; then stdbuf -o0 git clone ' + full_ran_repo_name + ' .; else stdbuf -o0 git fetch --prune; fi', '\$', 600) - # Raphael: here add a check if git clone or git fetch went smoothly - mySSH.command('git config user.email "jenkins@openairinterface.org"', '\$', 5) - mySSH.command('git config user.name "OAI Jenkins"', '\$', 5) - mySSH.command('git advice.detachedHead false', '\$', 5) - # Checking the BUILD INFO file - if not self.backgroundBuild: - mySSH.command('ls *.txt', '\$', 5) - result = re.search('LAST_BUILD_INFO', mySSH.getBefore()) - if result is not None: - mismatch = False - mySSH.command('grep --colour=never SRC_COMMIT LAST_BUILD_INFO.txt', '\$', 2) - result = re.search(self.ranCommitID, mySSH.getBefore()) - if result is None: - mismatch = True - mySSH.command('grep --colour=never MERGED_W_TGT_BRANCH LAST_BUILD_INFO.txt', '\$', 2) - if (self.ranAllowMerge): - result = re.search('YES', mySSH.getBefore()) - if result is None: - mismatch = True - mySSH.command('grep --colour=never TGT_BRANCH LAST_BUILD_INFO.txt', '\$', 2) - if self.ranTargetBranch == '': - result = re.search('develop', mySSH.getBefore()) - else: - result = re.search(self.ranTargetBranch, mySSH.getBefore()) - if result is None: - mismatch = True - else: - result = re.search('NO', mySSH.getBefore()) - if result is None: - mismatch = True - if not mismatch: - mySSH.close() - HTML.CreateHtmlTestRow(self.Build_eNB_args, 'OK', CONST.ALL_PROCESSES_OK) - return - - mySSH.command('echo ' + lPassWord + ' | sudo -S git clean -x -d -ff', '\$', 30) - # if the commit ID is provided use it to point to it - if self.ranCommitID != '': - mySSH.command('git checkout -f ' + self.ranCommitID, '\$', 30) - # if the branch is not develop, then it is a merge request and we need to do - # the potential merge. Note that merge conflicts should already been checked earlier - if (self.ranAllowMerge): - if self.ranTargetBranch == '': - if (self.ranBranch != 'develop') and (self.ranBranch != 'origin/develop'): - mySSH.command('git merge --ff origin/develop -m "Temporary merge for CI"', '\$', 30) - else: - logging.debug('Merging with the target branch: ' + self.ranTargetBranch) - mySSH.command('git merge --ff origin/' + self.ranTargetBranch + ' -m "Temporary merge for CI"', '\$', 30) - logging.debug(mySSH.getBefore()) # print what git said when merging/checking out - mySSH.command('source oaienv', '\$', 5) - mySSH.command('cd cmake_targets', '\$', 5) - mySSH.command('mkdir -p log', '\$', 5) - mySSH.command('chmod 777 log', '\$', 5) - # no need to remove in log (git clean did the trick) - if self.backgroundBuild: - mySSH.command('echo "./build_oai ' + self.Build_eNB_args + '" > ./my-lte-softmodem-build.sh', '\$', 5) - mySSH.command('chmod 775 ./my-lte-softmodem-build.sh', '\$', 5) - mySSH.command('echo ' + lPassWord + ' | sudo -S ls', '\$', 5) - logging.debug(mySSH.getBefore()) # print current directory contents for verification - mySSH.command('echo $USER; nohup sudo -E ./my-lte-softmodem-build.sh' + ' > ' + lSourcePath + '/cmake_targets/compile_oai_enb.log ' + ' 2>&1 &', lUserName, 5) - mySSH.close() - HTML.CreateHtmlTestRow(self.Build_eNB_args, 'OK', CONST.ALL_PROCESSES_OK) - self.backgroundBuildTestId[int(self.eNB_instance)] = self.testCase_id - return - mySSH.command('stdbuf -o0 ./build_oai ' + self.Build_eNB_args + ' 2>&1 | stdbuf -o0 tee compile_oai_enb.log', 'BUILD SHOULD BE SUCCESSFUL|build have failed', 900) - mySSH.close() - self.checkBuildeNB(lIpAddr, lUserName, lPassWord, lSourcePath, self.testCase_id, HTML) - - def WaitBuildeNBisFinished(self, HTML): - if self.eNB_serverId[self.eNB_instance] == '0': - lIpAddr = self.eNBIPAddress - lUserName = self.eNBUserName - lPassWord = self.eNBPassword - lSourcePath = self.eNBSourceCodePath - elif self.eNB_serverId[self.eNB_instance] == '1': - lIpAddr = self.eNB1IPAddress - lUserName = self.eNB1UserName - lPassWord = self.eNB1Password - lSourcePath = self.eNB1SourceCodePath - elif self.eNB_serverId[self.eNB_instance] == '2': - lIpAddr = self.eNB2IPAddress - lUserName = self.eNB2UserName - lPassWord = self.eNB2Password - lSourcePath = self.eNB2SourceCodePath - if lIpAddr == '' or lUserName == '' or lPassWord == '' or lSourcePath == '': - HELP.GenericHelp(CONST.Version) - sys.exit('Insufficient Parameter') - logging.debug('Waiting for end of build on server: ' + lIpAddr) - mySSH = SSH.SSHConnection() - mySSH.open(lIpAddr, lUserName, lPassWord) - count = 40 - buildOAIprocess = True - while (count > 0) and buildOAIprocess: - mySSH.command('ps aux | grep --color=never build_ | grep -v grep', '\$', 6) - result = re.search('build_oai', mySSH.getBefore()) - if result is None: - buildOAIprocess = False - else: - count -= 1 - time.sleep(30) - mySSH.close() - self.checkBuildeNB(lIpAddr, lUserName, lPassWord, lSourcePath, self.backgroundBuildTestId[int(self.eNB_instance)], HTML) - - def CustomCommand(self, HTML): - logging.info(f"Executing custom command on {self.node}") - cmd = cls_cmd.getConnection(self.node) - ret = cmd.run(self.command) - cmd.close() - logging.debug(f"CustomCommand: {self.command} on node: {self.node} - {'OK, command succeeded' if ret.returncode == 0 else f'Error, return code: {ret.returncode}'}") - status = 'OK' - message = [] - if ret.returncode != 0 and not self.command_fail: - message = [ret.stdout] - logging.warning(f'CustomCommand output: {message}') - status = 'Warning' - if self.command_fail: # important command since it would make the pipeline fail, so show output in HTML - message = [ret.stdout] - if ret.returncode != 0 and self.command_fail: - message = [ret.stdout] - logging.error(f'CustomCommand failed: output: {message}') - status = 'KO' - self.prematureExit = True - HTML.CreateHtmlTestRowQueue(self.command, status, message) - - def checkBuildeNB(self, lIpAddr, lUserName, lPassWord, lSourcePath, testcaseId, HTML): - HTML.testCase_id=testcaseId - - mySSH = SSH.SSHConnection() - mySSH.open(lIpAddr, lUserName, lPassWord) - mySSH.command('cd ' + lSourcePath + '/cmake_targets', '\$', 3) - mySSH.command('ls ran_build/build', '\$', 3) - mySSH.command('ls ran_build/build', '\$', 3) - - #check if we have the build corresponding to the air interface keywords (nr-softmode, lte-softmodem) - logging.info('CHECK Build with IP='+lIpAddr+' SourcePath='+lSourcePath) - result = re.search(self.air_interface[self.eNB_instance], mySSH.getBefore()) - if result is None: - buildStatus = False #if not, build failed - else: - buildStatus = True - # Generating a BUILD INFO file - mySSH.command('echo "SRC_BRANCH: ' + self.ranBranch + '" > ../LAST_BUILD_INFO.txt', '\$', 2) - mySSH.command('echo "SRC_COMMIT: ' + self.ranCommitID + '" >> ../LAST_BUILD_INFO.txt', '\$', 2) - if (self.ranAllowMerge): - mySSH.command('echo "MERGED_W_TGT_BRANCH: YES" >> ../LAST_BUILD_INFO.txt', '\$', 2) - if self.ranTargetBranch == '': - mySSH.command('echo "TGT_BRANCH: develop" >> ../LAST_BUILD_INFO.txt', '\$', 2) - else: - mySSH.command('echo "TGT_BRANCH: ' + self.ranTargetBranch + '" >> ../LAST_BUILD_INFO.txt', '\$', 2) - else: - mySSH.command('echo "MERGED_W_TGT_BRANCH: NO" >> ../LAST_BUILD_INFO.txt', '\$', 2) - - - mySSH.command('mkdir -p build_log_' + testcaseId, '\$', 5) - mySSH.command('mv log/* ' + 'build_log_' + testcaseId, '\$', 5) - mySSH.command('mv compile_oai_enb.log ' + 'build_log_' + testcaseId, '\$', 5) - if self.eNB_serverId[self.eNB_instance] != '0': - mySSH.command('cd cmake_targets', '\$', 5) - mySSH.command('if [ -e tmp_build' + testcaseId + '.zip ]; then rm -f tmp_build' + testcaseId + '.zip; fi', '\$', 5) - mySSH.command('zip -r -qq tmp_build' + testcaseId + '.zip build_log_' + testcaseId, '\$', 5) - mySSH.close() - if (os.path.isfile('./tmp_build' + testcaseId + '.zip')): - os.remove('./tmp_build' + testcaseId + '.zip') - mySSH.copyin(lIpAddr, lUserName, lPassWord, lSourcePath + '/cmake_targets/tmp_build' + testcaseId + '.zip', '.') - if (os.path.isfile('./tmp_build' + testcaseId + '.zip')): - mySSH.copyout(self.eNBIPAddress, self.eNBUserName, self.eNBPassword, './tmp_build' + testcaseId + '.zip', self.eNBSourceCodePath + '/cmake_targets/.') - os.remove('./tmp_build' + testcaseId + '.zip') - mySSH.open(self.eNBIPAddress, self.eNBUserName, self.eNBPassword) - mySSH.command('cd ' + self.eNBSourceCodePath + '/cmake_targets', '\$', 5) - #-qq quiet / -u update orcreate files - mySSH.command('unzip -o -u -qq -DD tmp_build' + testcaseId + '.zip', '\$', 5) - mySSH.command('rm -f tmp_build' + testcaseId + '.zip', '\$', 5) - mySSH.close() - else: - mySSH.close() - - #generate logging info depending on buildStatus and air interface - if buildStatus: - logging.info('\u001B[1m Building OAI ' + self.air_interface[self.eNB_instance] + ' Pass\u001B[0m') - HTML.CreateHtmlTestRow(self.Build_eNB_args, 'OK', CONST.ALL_PROCESSES_OK) - else: - logging.error('\u001B[1m Building OAI ' + self.air_interface[self.eNB_instance] + ' Failed\u001B[0m') - HTML.CreateHtmlTestRow(self.Build_eNB_args, 'KO', CONST.ALL_PROCESSES_OK) - HTML.CreateHtmlTabFooter(False) - sys.exit(1) - def InitializeeNB(self, HTML, EPC): if self.eNB_serverId[self.eNB_instance] == '0': lIpAddr = self.eNBIPAddress @@ -509,8 +272,7 @@ class RANManagement(): copyin_res = mySSH.copyin(localEpcIpAddr, localEpcUserName, localEpcPassword, '/tmp/' + self.epcPcapFile, '.') if (copyin_res == 0): mySSH.copyout(lIpAddr, lUserName, lPassWord, self.epcPcapFile, lSourcePath + '/cmake_targets/.') - self.prematureExit = True - return + return False else: mySSH.command('stdbuf -o0 cat enb_' + self.testCase_id + '.log | grep -E --text --color=never -i "wait|sync|Starting|Started"', '\$', 4) if rruCheck: @@ -548,45 +310,44 @@ class RANManagement(): mySSH.close() - HTML.CreateHtmlTestRow(f'{self.cmd_prefix} {self.air_interface[self.eNB_instance]} -O {config_file} {extra_options}', 'OK', CONST.ALL_PROCESSES_OK) logging.debug('\u001B[1m Initialize eNB/gNB Completed\u001B[0m') + return enbDidSync def CheckeNBProcess(self, status_queue): - try: - # At least the instance 0 SHALL be on! - if self.eNBstatuses[0] == 0: - lIpAddr = self.eNBIPAddress - lUserName = self.eNBUserName - lPassWord = self.eNBPassword - elif self.eNBstatuses[0] == 1: - lIpAddr = self.eNB1IPAddress - lUserName = self.eNB1UserName - lPassWord = self.eNB1Password - elif self.eNBstatuses[0] == 2: - lIpAddr = self.eNB2IPAddress - lUserName = self.eNB2UserName - lPassWord = self.eNB2Password - else: - lIpAddr = self.eNBIPAddress - lUserName = self.eNBUserName - lPassWord = self.eNBPassword - mySSH = SSH.SSHConnection() - mySSH.open(lIpAddr, lUserName, lPassWord) - if self.air_interface[self.eNB_instance] == '': - pattern = 'softmodem' - else: - pattern = self.air_interface[self.eNB_instance] - mySSH.command('stdbuf -o0 ps -aux | grep --color=never ' + pattern + ' | grep -v grep', '\$', 5) - result = re.search(pattern, mySSH.getBefore()) - if result is None: - logging.debug('\u001B[1;37;41m eNB Process Not Found! \u001B[0m') - status_queue.put(CONST.ENB_PROCESS_FAILED) - else: - status_queue.put(CONST.ENB_PROCESS_OK) - mySSH.close() - except: - os.kill(os.getppid(),signal.SIGUSR1) + # At least the instance 0 SHALL be on! + if self.eNBstatuses[0] == 0: + lIpAddr = self.eNBIPAddress + lUserName = self.eNBUserName + lPassWord = self.eNBPassword + elif self.eNBstatuses[0] == 1: + lIpAddr = self.eNB1IPAddress + lUserName = self.eNB1UserName + lPassWord = self.eNB1Password + elif self.eNBstatuses[0] == 2: + lIpAddr = self.eNB2IPAddress + lUserName = self.eNB2UserName + lPassWord = self.eNB2Password + else: + lIpAddr = self.eNBIPAddress + lUserName = self.eNBUserName + lPassWord = self.eNBPassword + mySSH = SSH.SSHConnection() + mySSH.open(lIpAddr, lUserName, lPassWord) + if self.air_interface[self.eNB_instance] == '': + pattern = 'softmodem' + else: + pattern = self.air_interface[self.eNB_instance] + mySSH.command('stdbuf -o0 ps -aux | grep --color=never ' + pattern + ' | grep -v grep', '\$', 5) + result = re.search(pattern, mySSH.getBefore()) + success = result is not None + if not success: + logging.debug('\u001B[1;37;41m eNB Process Not Found! \u001B[0m') + status_queue.put(CONST.ENB_PROCESS_FAILED) + else: + status_queue.put(CONST.ENB_PROCESS_OK) + mySSH.close() + return success def TerminateeNB(self, HTML, EPC): if self.eNB_serverId[self.eNB_instance] == '0': @@ -666,6 +427,7 @@ class RANManagement(): logStatus = self.AnalyzeLogFile_eNB(extracted_log_file, HTML, self.ran_checkers) HTML.CreateHtmlTestRow(self.runtime_stats, 'OK', CONST.ALL_PROCESSES_OK) self.eNBLogFiles[int(self.eNB_instance)] = '' + return True else: analyzeFile = False if self.eNBLogFiles[int(self.eNB_instance)] != '': @@ -684,7 +446,7 @@ class RANManagement(): HTML.htmleNBFailureMsg='Could not copy ' + nodeB_prefix + 'NB logfile to analyze it!' HTML.CreateHtmlTestRow('N/A', 'KO', CONST.ENB_PROCESS_NOLOGFILE_TO_ANALYZE) self.eNBmbmsEnables[int(self.eNB_instance)] = False - return + return False if self.eNB_serverId[self.eNB_instance] != '0': #*stats.log files + pickle + png @@ -702,9 +464,8 @@ class RANManagement(): #display rt stats for gNB only if len(self.datalog_rt_stats)!=0 and nodeB_prefix == 'g': HTML.CreateHtmlDataLogTable(self.datalog_rt_stats) - self.prematureExit = True self.eNBmbmsEnables[int(self.eNB_instance)] = False - return + return False else: HTML.CreateHtmlTestRow(self.runtime_stats, 'OK', CONST.ALL_PROCESSES_OK) else: @@ -714,6 +475,7 @@ class RANManagement(): HTML.CreateHtmlDataLogTable(self.datalog_rt_stats) self.eNBmbmsEnables[int(self.eNB_instance)] = False self.eNBstatuses[int(self.eNB_instance)] = -1 + return True def LogCollecteNB(self): mySSH = SSH.SSHConnection() @@ -1327,7 +1089,6 @@ class RANManagement(): rruMsg = 'Slave RRU DID NOT receive the RRU_frame_resynch command from RAU' logging.debug('\u001B[1;37;41m ' + rruMsg + ' \u001B[0m') htmleNBFailureMsg += rruMsg + '\n' - self.prematureExit = True global_status = CONST.ENB_PROCESS_SLAVE_RRU_NOT_SYNCED if foundSegFault: logging.debug('\u001B[1;37;41m ' + nodeB_prefix + 'NB ended with a Segmentation Fault! \u001B[0m') diff --git a/ci-scripts/ran_dashboard/Hdashboard.py b/ci-scripts/ran_dashboard/Hdashboard.py deleted file mode 100644 index 625baa8f46..0000000000 --- a/ci-scripts/ran_dashboard/Hdashboard.py +++ /dev/null @@ -1,126 +0,0 @@ -#/* -# * 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() diff --git a/ci-scripts/scripts/create_workspace.sh b/ci-scripts/scripts/create_workspace.sh new file mode 100755 index 0000000000..0dd1f3aca7 --- /dev/null +++ b/ci-scripts/scripts/create_workspace.sh @@ -0,0 +1,25 @@ +#!/bin/bash + +function die() { + echo $@ + exit 1 +} + +[ $# -ge 3 -a $# -le 4 ] || die "usage: $0 []" + +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" diff --git a/ci-scripts/sshconnection.py b/ci-scripts/sshconnection.py index 65a0a0bd67..a41b8bf7f1 100644 --- a/ci-scripts/sshconnection.py +++ b/ci-scripts/sshconnection.py @@ -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') diff --git a/ci-scripts/template-host.xml b/ci-scripts/template-host.xml deleted file mode 100644 index efd9912c7a..0000000000 --- a/ci-scripts/template-host.xml +++ /dev/null @@ -1,27 +0,0 @@ - - - hvm - - - - - - - - - - - - - - - - - - - - - - - diff --git a/ci-scripts/tests/README.md b/ci-scripts/tests/README.md new file mode 100644 index 0000000000..f926ea4ac5 --- /dev/null +++ b/ci-scripts/tests/README.md @@ -0,0 +1,25 @@ +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!). diff --git a/ci-scripts/tests/cmd.py b/ci-scripts/tests/cmd.py new file mode 100644 index 0000000000..4d7aedfa0e --- /dev/null +++ b/ci-scripts/tests/cmd.py @@ -0,0 +1,99 @@ +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() diff --git a/ci-scripts/tests/deployment.py b/ci-scripts/tests/deployment.py new file mode 100644 index 0000000000..a6cf8e06b0 --- /dev/null +++ b/ci-scripts/tests/deployment.py @@ -0,0 +1,84 @@ +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() diff --git a/ci-scripts/tests/iperf-analysis.py b/ci-scripts/tests/iperf-analysis.py new file mode 100644 index 0000000000..53d5bdda1d --- /dev/null +++ b/ci-scripts/tests/iperf-analysis.py @@ -0,0 +1,77 @@ +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() diff --git a/ci-scripts/tests/log/iperf_udp_msg_nok.txt b/ci-scripts/tests/log/iperf_udp_msg_nok.txt new file mode 100644 index 0000000000..0e03a2dc76 --- /dev/null +++ b/ci-scripts/tests/log/iperf_udp_msg_nok.txt @@ -0,0 +1,4 @@ +Sender Bitrate : 0.52 Mbps +Receiver Bitrate: 0.52 Mbps (too low! < 99%) +Jitter : 0.026 ms +Packet Loss : 10 % (too high! > 0%) diff --git a/ci-scripts/tests/log/iperf_udp_msg_nok2.txt b/ci-scripts/tests/log/iperf_udp_msg_nok2.txt new file mode 100644 index 0000000000..c0c34193f2 --- /dev/null +++ b/ci-scripts/tests/log/iperf_udp_msg_nok2.txt @@ -0,0 +1,4 @@ +Sender Bitrate : 0.00 Mbps +Receiver Bitrate: 3.98 Mbps (too low! < 99%) +Jitter : 3.847 ms +Packet Loss : 0.038 % (too high! > 0%) diff --git a/ci-scripts/tests/log/iperf_udp_msg_nok3.txt b/ci-scripts/tests/log/iperf_udp_msg_nok3.txt new file mode 100644 index 0000000000..c302493e85 --- /dev/null +++ b/ci-scripts/tests/log/iperf_udp_msg_nok3.txt @@ -0,0 +1,4 @@ +Sender Bitrate : 1.03 Mbps +Receiver Bitrate: 0.00 Mbps (too low! < 99%) +Jitter : 0.000 ms +Packet Loss : 0 % diff --git a/ci-scripts/tests/log/iperf_udp_msg_ok.txt b/ci-scripts/tests/log/iperf_udp_msg_ok.txt new file mode 100644 index 0000000000..defea05c79 --- /dev/null +++ b/ci-scripts/tests/log/iperf_udp_msg_ok.txt @@ -0,0 +1,4 @@ +Sender Bitrate : 1.00 Mbps +Receiver Bitrate: 1.00 Mbps (99.60 %) +Jitter : 0.029 ms +Packet Loss : 0 % diff --git a/ci-scripts/tests/log/iperf_udp_msg_ok2.txt b/ci-scripts/tests/log/iperf_udp_msg_ok2.txt new file mode 100644 index 0000000000..31a5ec14cd --- /dev/null +++ b/ci-scripts/tests/log/iperf_udp_msg_ok2.txt @@ -0,0 +1,4 @@ +Sender Bitrate : 4.67 Mbps +Receiver Bitrate: 4.67 Mbps (100.00 %) +Jitter : 3.413 ms +Packet Loss : 0 % diff --git a/ci-scripts/tests/log/iperf_udp_test_nok.log b/ci-scripts/tests/log/iperf_udp_test_nok.log new file mode 100644 index 0000000000..e7bd59824d --- /dev/null +++ b/ci-scripts/tests/log/iperf_udp_test_nok.log @@ -0,0 +1,39 @@ +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. diff --git a/ci-scripts/tests/log/iperf_udp_test_nok2.log b/ci-scripts/tests/log/iperf_udp_test_nok2.log new file mode 100644 index 0000000000..8889879f48 --- /dev/null +++ b/ci-scripts/tests/log/iperf_udp_test_nok2.log @@ -0,0 +1,43 @@ +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 diff --git a/ci-scripts/tests/log/iperf_udp_test_nok3.log b/ci-scripts/tests/log/iperf_udp_test_nok3.log new file mode 100644 index 0000000000..07b34da526 --- /dev/null +++ b/ci-scripts/tests/log/iperf_udp_test_nok3.log @@ -0,0 +1,41 @@ +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 diff --git a/ci-scripts/tests/log/iperf_udp_test_ok.log b/ci-scripts/tests/log/iperf_udp_test_ok.log new file mode 100644 index 0000000000..79163df625 --- /dev/null +++ b/ci-scripts/tests/log/iperf_udp_test_ok.log @@ -0,0 +1,39 @@ +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. diff --git a/ci-scripts/tests/log/iperf_udp_test_ok2.log b/ci-scripts/tests/log/iperf_udp_test_ok2.log new file mode 100644 index 0000000000..59277a1104 --- /dev/null +++ b/ci-scripts/tests/log/iperf_udp_test_ok2.log @@ -0,0 +1,90 @@ +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. diff --git a/ci-scripts/tests/ping-iperf.py b/ci-scripts/tests/ping-iperf.py new file mode 100644 index 0000000000..6ba35d04d3 --- /dev/null +++ b/ci-scripts/tests/ping-iperf.py @@ -0,0 +1,55 @@ +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() diff --git a/ci-scripts/tests/scripts/hello-fail.sh b/ci-scripts/tests/scripts/hello-fail.sh new file mode 100755 index 0000000000..a14d3b9a6f --- /dev/null +++ b/ci-scripts/tests/scripts/hello-fail.sh @@ -0,0 +1,4 @@ +#!/bin/bash + +echo $@ +false diff --git a/ci-scripts/tests/scripts/hello-world.sh b/ci-scripts/tests/scripts/hello-world.sh new file mode 100755 index 0000000000..959918d85a --- /dev/null +++ b/ci-scripts/tests/scripts/hello-world.sh @@ -0,0 +1,4 @@ +#!/bin/bash + +set -x +echo hello, world diff --git a/ci-scripts/tests/simple-dep/docker-compose.yml b/ci-scripts/tests/simple-dep/docker-compose.yml new file mode 100644 index 0000000000..058bba9931 --- /dev/null +++ b/ci-scripts/tests/simple-dep/docker-compose.yml @@ -0,0 +1,12 @@ +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 diff --git a/ci-scripts/tests/simple-fail/docker-compose.yml b/ci-scripts/tests/simple-fail/docker-compose.yml new file mode 100644 index 0000000000..c6d5a04e4a --- /dev/null +++ b/ci-scripts/tests/simple-fail/docker-compose.yml @@ -0,0 +1,12 @@ +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 diff --git a/ci-scripts/tests/test-runner/run.sh b/ci-scripts/tests/test-runner/run.sh new file mode 100755 index 0000000000..40d0289453 --- /dev/null +++ b/ci-scripts/tests/test-runner/run.sh @@ -0,0 +1,49 @@ +#/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 diff --git a/ci-scripts/tests/test-runner/test.xml b/ci-scripts/tests/test-runner/test.xml new file mode 100644 index 0000000000..d5efacfdae --- /dev/null +++ b/ci-scripts/tests/test-runner/test.xml @@ -0,0 +1,68 @@ + + + + test + Manual testing + wrench + + 000001 + 000002 + 000003 + 000004 + + + + + Custom_Command + This should succeed + localhost + true + yes + + + + Custom_Command + This should fail + localhost + false + yes + + + + Custom_Command + This should be skipped + localhost + true + yes + + + + Custom_Command + This should be executed because marked so + true + localhost + true + yes + + diff --git a/ci-scripts/xml_class_list.yml b/ci-scripts/xml_class_list.yml index 34f63e8c2b..325797c29e 100755 --- a/ci-scripts/xml_class_list.yml +++ b/ci-scripts/xml_class_list.yml @@ -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 diff --git a/ci-scripts/xml_files/cluster_image_build.xml b/ci-scripts/xml_files/cluster_image_build.xml index b389fa7e21..6810873b1c 100644 --- a/ci-scripts/xml_files/cluster_image_build.xml +++ b/ci-scripts/xml_files/cluster_image_build.xml @@ -31,7 +31,7 @@ Create_Workspace - Creating new Workspace + Create new Workspace Build_Cluster_Image diff --git a/ci-scripts/xml_files/container_4g_l2sim_proxy.xml b/ci-scripts/xml_files/container_4g_l2sim_proxy.xml index 1d59868855..cd57a24b6a 100644 --- a/ci-scripts/xml_files/container_4g_l2sim_proxy.xml +++ b/ci-scripts/xml_files/container_4g_l2sim_proxy.xml @@ -24,7 +24,6 @@ l2sim-4glte-proxy-build Build L2sim proxy image wrench - 1 100001 000001 @@ -32,7 +31,7 @@ Create_Workspace - Creating new Workspace + Create new Workspace 1 1 diff --git a/ci-scripts/xml_files/container_4g_l2sim_tdd.xml b/ci-scripts/xml_files/container_4g_l2sim_tdd.xml index 1a0e2e89e3..97a0610efa 100644 --- a/ci-scripts/xml_files/container_4g_l2sim_tdd.xml +++ b/ci-scripts/xml_files/container_4g_l2sim_tdd.xml @@ -24,7 +24,6 @@ l2sim-4glte-tdd Testing 4G LTE L2 sim - FDD eNB wrench - 1 111111 800813 @@ -38,6 +37,7 @@ 030011 030012 100001 + 222222 @@ -49,7 +49,7 @@ Create_Workspace - Creating new Workspace + Create new Workspace 0 0 @@ -140,8 +140,16 @@ Undeploy_Object + true Undeploy all OAI 4G stack ci-scripts/yaml_files/4g_l2sim_fdd + + Clean_Test_Server_Images + true + Clean Test Images on Test Server + 0 + + diff --git a/ci-scripts/xml_files/container_4g_l2sim_tdd_down.xml b/ci-scripts/xml_files/container_4g_l2sim_tdd_down.xml deleted file mode 100644 index 8ac78f544d..0000000000 --- a/ci-scripts/xml_files/container_4g_l2sim_tdd_down.xml +++ /dev/null @@ -1,47 +0,0 @@ - - - l2sim-4glte-down - CleanUp 4G L2 sim - FDD eNB - trash - - 100002 - 222222 - - - - - Undeploy_Object - Undeploy all OAI 4G stack - ci-scripts/yaml_files/4g_l2sim_fdd - 0 - 0 - - - - Clean_Test_Server_Images - Clean Test Images on Test Server - 0 - - - diff --git a/ci-scripts/xml_files/container_4g_rfsim_fdd_05MHz.xml b/ci-scripts/xml_files/container_4g_rfsim_fdd_05MHz.xml index a637d79cba..a60a8e2d4d 100644 --- a/ci-scripts/xml_files/container_4g_rfsim_fdd_05MHz.xml +++ b/ci-scripts/xml_files/container_4g_rfsim_fdd_05MHz.xml @@ -40,11 +40,12 @@ 030011 030012 100011 + 222222 Create_Workspace - Creating new Workspace + Create new Workspace 0 0 @@ -154,10 +155,18 @@ Undeploy_Object + true Undeploy all OAI 4G stack ci-scripts/yaml_files/4g_rfsimulator_fdd_05MHz 0 0 + + Clean_Test_Server_Images + true + Clean Test Images on Test Server + 0 + + diff --git a/ci-scripts/xml_files/container_4g_rfsim_fdd_05MHz_down.xml b/ci-scripts/xml_files/container_4g_rfsim_fdd_05MHz_down.xml deleted file mode 100644 index f7ac0a00d6..0000000000 --- a/ci-scripts/xml_files/container_4g_rfsim_fdd_05MHz_down.xml +++ /dev/null @@ -1,47 +0,0 @@ - - - rfsim-4glte-fdd05mhz-down - CleanUp 4G RF - trash - - 100011 - 222222 - - - - - Undeploy_Object - Undeploy all OAI 4G stack - ci-scripts/yaml_files/4g_rfsimulator_fdd_05MHz - 0 - 0 - - - - Clean_Test_Server_Images - Clean Test Images on Test Server - 0 - - - diff --git a/ci-scripts/xml_files/container_4g_rfsim_fdd_05MHz_noS1.xml b/ci-scripts/xml_files/container_4g_rfsim_fdd_05MHz_noS1.xml index 642342e7b8..d5c67c9835 100644 --- a/ci-scripts/xml_files/container_4g_rfsim_fdd_05MHz_noS1.xml +++ b/ci-scripts/xml_files/container_4g_rfsim_fdd_05MHz_noS1.xml @@ -36,6 +36,7 @@ 030011 030012 100011 + 222222 @@ -47,7 +48,7 @@ Create_Workspace - Creating new Workspace + Create new Workspace 0 0 @@ -125,10 +126,18 @@ Undeploy_Object + true Undeploy all OAI 4G stack ci-scripts/yaml_files/4g_rfsimulator_fdd_05MHz_noS1 0 0 + + Clean_Test_Server_Images + true + Clean Test Images on Test Server + 0 + + diff --git a/ci-scripts/xml_files/container_4g_rfsim_fdd_05MHz_noS1_down.xml b/ci-scripts/xml_files/container_4g_rfsim_fdd_05MHz_noS1_down.xml deleted file mode 100644 index d1b6d6ab93..0000000000 --- a/ci-scripts/xml_files/container_4g_rfsim_fdd_05MHz_noS1_down.xml +++ /dev/null @@ -1,47 +0,0 @@ - - - rfsim-4glte-fdd05mhz-nos1-down - CleanUp 4G RF - trash - - 100011 - 222222 - - - - - Undeploy_Object - Undeploy all OAI 4G stack - ci-scripts/yaml_files/4g_rfsimulator_fdd_05MHz_noS1 - 0 - 0 - - - - Clean_Test_Server_Images - Clean Test Images on Test Server - 0 - - - diff --git a/ci-scripts/xml_files/container_4g_rfsim_fdd_10MHz.xml b/ci-scripts/xml_files/container_4g_rfsim_fdd_10MHz.xml index cddecd09d0..50e53c8624 100644 --- a/ci-scripts/xml_files/container_4g_rfsim_fdd_10MHz.xml +++ b/ci-scripts/xml_files/container_4g_rfsim_fdd_10MHz.xml @@ -40,6 +40,7 @@ 030011 030012 100011 + 222222 @@ -51,7 +52,7 @@ Create_Workspace - Creating new Workspace + Create new Workspace 0 0 @@ -154,10 +155,18 @@ Undeploy_Object + true Undeploy all OAI 4G stack ci-scripts/yaml_files/4g_rfsimulator_fdd_10MHz 0 0 + + Clean_Test_Server_Images + true + Clean Test Images on Test Server + 0 + + diff --git a/ci-scripts/xml_files/container_4g_rfsim_fdd_10MHz_down.xml b/ci-scripts/xml_files/container_4g_rfsim_fdd_10MHz_down.xml deleted file mode 100644 index 2cb868e17a..0000000000 --- a/ci-scripts/xml_files/container_4g_rfsim_fdd_10MHz_down.xml +++ /dev/null @@ -1,47 +0,0 @@ - - - rfsim-4glte-fdd10mhz-down - CleanUp 4G RF - trash - - 100011 - 222222 - - - - - Undeploy_Object - Undeploy all OAI 4G stack - ci-scripts/yaml_files/4g_rfsimulator_fdd_10MHz - 0 - 0 - - - - Clean_Test_Server_Images - Clean Test Images on Test Server - 0 - - - diff --git a/ci-scripts/xml_files/container_4g_rfsim_fdd_20MHz.xml b/ci-scripts/xml_files/container_4g_rfsim_fdd_20MHz.xml index 619257cbc1..12bf5533ba 100644 --- a/ci-scripts/xml_files/container_4g_rfsim_fdd_20MHz.xml +++ b/ci-scripts/xml_files/container_4g_rfsim_fdd_20MHz.xml @@ -40,6 +40,7 @@ 030011 030012 100011 + 222222 @@ -51,7 +52,7 @@ Create_Workspace - Creating new Workspace + Create new Workspace 0 0 @@ -154,10 +155,18 @@ Undeploy_Object + true Undeploy all OAI 4G stack ci-scripts/yaml_files/4g_rfsimulator_fdd_20MHz 0 0 + + Clean_Test_Server_Images + true + Clean Test Images on Test Server + 0 + + diff --git a/ci-scripts/xml_files/container_4g_rfsim_fdd_20MHz_down.xml b/ci-scripts/xml_files/container_4g_rfsim_fdd_20MHz_down.xml deleted file mode 100644 index 0582267082..0000000000 --- a/ci-scripts/xml_files/container_4g_rfsim_fdd_20MHz_down.xml +++ /dev/null @@ -1,47 +0,0 @@ - - - rfsim-4glte-fdd20mhz-down - CleanUp 4G RF - trash - - 100011 - 222222 - - - - - Undeploy_Object - Undeploy all OAI 4G stack - ci-scripts/yaml_files/4g_rfsimulator_fdd_20MHz - 0 - 0 - - - - Clean_Test_Server_Images - Clean Test Images on Test Server - 0 - - - diff --git a/ci-scripts/xml_files/container_4g_rfsim_fembms.xml b/ci-scripts/xml_files/container_4g_rfsim_fembms.xml index d33832d3c2..48f740b873 100644 --- a/ci-scripts/xml_files/container_4g_rfsim_fembms.xml +++ b/ci-scripts/xml_files/container_4g_rfsim_fembms.xml @@ -33,6 +33,7 @@ 000001 030011 100011 + 222222 @@ -44,7 +45,7 @@ Create_Workspace - Creating new Workspace + Create new Workspace 0 0 @@ -92,10 +93,18 @@ Undeploy_Object + true Undeploy all OAI 4G stack ci-scripts/yaml_files/4g_rfsimulator_fembms 0 0 + + Clean_Test_Server_Images + true + Clean Test Images on Test Server + 0 + + diff --git a/ci-scripts/xml_files/container_4g_rfsim_fembms_down.xml b/ci-scripts/xml_files/container_4g_rfsim_fembms_down.xml deleted file mode 100644 index d78e9794e0..0000000000 --- a/ci-scripts/xml_files/container_4g_rfsim_fembms_down.xml +++ /dev/null @@ -1,47 +0,0 @@ - - - rfsim-4glte-fembms-down - CleanUp 4G RF - trash - - 100011 - 222222 - - - - - Undeploy_Object - Undeploy all OAI 4G stack - ci-scripts/yaml_files/4g_rfsimulator_fembms - 0 - 0 - - - - Clean_Test_Server_Images - Clean Test Images on Test Server - 0 - - - diff --git a/ci-scripts/xml_files/container_4g_rfsim_mbms.xml b/ci-scripts/xml_files/container_4g_rfsim_mbms.xml index 04ec93ebf5..4abf69fb3e 100644 --- a/ci-scripts/xml_files/container_4g_rfsim_mbms.xml +++ b/ci-scripts/xml_files/container_4g_rfsim_mbms.xml @@ -33,6 +33,7 @@ 000001 030011 100011 + 222222 @@ -44,7 +45,7 @@ Create_Workspace - Creating new Workspace + Create new Workspace 0 0 @@ -92,10 +93,18 @@ Undeploy_Object + true Undeploy all OAI 4G stack ci-scripts/yaml_files/4g_rfsimulator_mbms 0 0 + + Clean_Test_Server_Images + true + Clean Test Images on Test Server + 0 + + diff --git a/ci-scripts/xml_files/container_4g_rfsim_mbms_down.xml b/ci-scripts/xml_files/container_4g_rfsim_mbms_down.xml deleted file mode 100644 index 3ad172be93..0000000000 --- a/ci-scripts/xml_files/container_4g_rfsim_mbms_down.xml +++ /dev/null @@ -1,47 +0,0 @@ - - - rfsim-4glte-mbms-down - CleanUp 4G RF - trash - - 100011 - 222222 - - - - - Undeploy_Object - Undeploy all OAI 4G stack - ci-scripts/yaml_files/4g_rfsimulator_mbms - 0 - 0 - - - - Clean_Test_Server_Images - Clean Test Images on Test Server - 0 - - - diff --git a/ci-scripts/xml_files/container_4g_rfsim_tdd_05MHz.xml b/ci-scripts/xml_files/container_4g_rfsim_tdd_05MHz.xml index 94bc18dc5a..fa3c6862b7 100644 --- a/ci-scripts/xml_files/container_4g_rfsim_tdd_05MHz.xml +++ b/ci-scripts/xml_files/container_4g_rfsim_tdd_05MHz.xml @@ -24,7 +24,6 @@ rfsim-4glte-tdd05mhz Monolithic eNB - TDD 05MHz wrench - 1 111111 800813 @@ -41,6 +40,7 @@ 030011 030012 100011 + 222222 @@ -52,7 +52,7 @@ Create_Workspace - Creating new Workspace + Create new Workspace 0 0 @@ -148,10 +148,18 @@ Undeploy_Object + true Undeploy all OAI 4G stack ci-scripts/yaml_files/4g_rfsimulator_tdd_05MHz 0 0 + + Clean_Test_Server_Images + true + Clean Test Images on Test Server + 0 + + diff --git a/ci-scripts/xml_files/container_4g_rfsim_tdd_05MHz_down.xml b/ci-scripts/xml_files/container_4g_rfsim_tdd_05MHz_down.xml deleted file mode 100644 index 0a6d6bb890..0000000000 --- a/ci-scripts/xml_files/container_4g_rfsim_tdd_05MHz_down.xml +++ /dev/null @@ -1,47 +0,0 @@ - - - rfsim-4glte-tdd05mhz-down - CleanUp 4G RF - trash - - 100011 - 222222 - - - - - Undeploy_Object - Undeploy all OAI 4G stack - ci-scripts/yaml_files/4g_rfsimulator_tdd_05MHz - 0 - 0 - - - - Clean_Test_Server_Images - Clean Test Images on Test Server - 0 - - - diff --git a/ci-scripts/xml_files/container_5g_e1_rfsim.xml b/ci-scripts/xml_files/container_5g_e1_rfsim.xml index 87827cbdf7..bf4cf6ec04 100644 --- a/ci-scripts/xml_files/container_5g_e1_rfsim.xml +++ b/ci-scripts/xml_files/container_5g_e1_rfsim.xml @@ -33,6 +33,7 @@ 000024 020021 100021 + 222222 @@ -44,7 +45,7 @@ Create_Workspace - Creating new Workspace + Create new Workspace 0 0 @@ -93,6 +94,7 @@ Undeploy_Object + true Undeploy all OAI 5G stack ci-scripts/yaml_files/5g_rfsimulator_e1 1,0,0,0 @@ -101,4 +103,11 @@ 0 + + Clean_Test_Server_Images + true + Clean Test Images on Test Server + 0 + + diff --git a/ci-scripts/xml_files/container_5g_e1_rfsim_down.xml b/ci-scripts/xml_files/container_5g_e1_rfsim_down.xml deleted file mode 100644 index 3f10e0e32c..0000000000 --- a/ci-scripts/xml_files/container_5g_e1_rfsim_down.xml +++ /dev/null @@ -1,47 +0,0 @@ - - - rfsim-5gnr-down-e1 - CleanUp E1+F1 split - trash - - 100022 - 222222 - - - - - Undeploy_Object - Undeploy all OAI 5G stack - ci-scripts/yaml_files/5g_rfsimulator_e1 - 0 - 0 - - - - Clean_Test_Server_Images - Clean Test Images on Test Server - 0 - - - diff --git a/ci-scripts/xml_files/container_5g_f1_rfsim.xml b/ci-scripts/xml_files/container_5g_f1_rfsim.xml index 56071f4b1b..16c02050d2 100644 --- a/ci-scripts/xml_files/container_5g_f1_rfsim.xml +++ b/ci-scripts/xml_files/container_5g_f1_rfsim.xml @@ -35,6 +35,7 @@ 030021 030022 100021 + 222222 @@ -46,7 +47,7 @@ Create_Workspace - Creating new Workspace + Create new Workspace 0 0 @@ -150,6 +151,7 @@ Undeploy_Object + true Undeploy all OAI 5G stack ci-scripts/yaml_files/5g_f1_rfsimulator 30,30,100,100 @@ -158,4 +160,11 @@ 0 + + Clean_Test_Server_Images + true + Clean Test Images on Test Server + 0 + + diff --git a/ci-scripts/xml_files/container_5g_f1_rfsim_down.xml b/ci-scripts/xml_files/container_5g_f1_rfsim_down.xml deleted file mode 100644 index 18b917697c..0000000000 --- a/ci-scripts/xml_files/container_5g_f1_rfsim_down.xml +++ /dev/null @@ -1,47 +0,0 @@ - - - rfsim-5gnr-down-f1 - CleanUp CU-DU F1 split - trash - - 100022 - 222222 - - - - - Undeploy_Object - Undeploy all OAI 5G stack - ci-scripts/yaml_files/5g_f1_rfsimulator - 0 - 0 - - - - Clean_Test_Server_Images - Clean Test Images on Test Server - 0 - - - diff --git a/ci-scripts/xml_files/container_5g_fdd_rfsim.xml b/ci-scripts/xml_files/container_5g_fdd_rfsim.xml index 4a677ee41f..d3640da596 100644 --- a/ci-scripts/xml_files/container_5g_fdd_rfsim.xml +++ b/ci-scripts/xml_files/container_5g_fdd_rfsim.xml @@ -24,7 +24,6 @@ rfsim-5gnr-fdd Monolithic FDD gNB with SDAP wrench - 1 111111 800813 @@ -36,6 +35,7 @@ 030011 030012 100011 + 222222 @@ -47,7 +47,7 @@ Create_Workspace - Creating new Workspace + Create new Workspace 0 0 @@ -120,6 +120,7 @@ Undeploy_Object + true Undeploy all OAI 5G stack ci-scripts/yaml_files/5g_fdd_rfsimulator 1,0,0,0 @@ -128,4 +129,11 @@ 0 + + Clean_Test_Server_Images + true + Clean Test Images on Test Server + 0 + + diff --git a/ci-scripts/xml_files/container_5g_fdd_rfsim_down.xml b/ci-scripts/xml_files/container_5g_fdd_rfsim_down.xml deleted file mode 100644 index 85421f7b6d..0000000000 --- a/ci-scripts/xml_files/container_5g_fdd_rfsim_down.xml +++ /dev/null @@ -1,47 +0,0 @@ - - - rfsim-5gnr-fdd-down - CleanUp Monolithic FDD gNB with SDAP - trash - - 100012 - 222222 - - - - - Undeploy_Object - Undeploy all OAI 5G stack - ci-scripts/yaml_files/5g_fdd_rfsimulator - 0 - 0 - - - - Clean_Test_Server_Images - Clean Test Images on Test Server - 0 - - - diff --git a/ci-scripts/xml_files/container_5g_l2sim_tdd.xml b/ci-scripts/xml_files/container_5g_l2sim_tdd.xml index d53e2a4932..c3e4662294 100644 --- a/ci-scripts/xml_files/container_5g_l2sim_tdd.xml +++ b/ci-scripts/xml_files/container_5g_l2sim_tdd.xml @@ -24,7 +24,6 @@ l2sim-5gnr-tdd Testing 5G NR L2 sim - TDD gNB wrench - 1 111111 800813 @@ -36,6 +35,7 @@ 020001 020002 100001 + 222222 @@ -47,7 +47,7 @@ Create_Workspace - Creating new Workspace + Create new Workspace 0 0 @@ -114,6 +114,7 @@ Undeploy_Object + true Undeploy all OAI 5G stack ci-scripts/yaml_files/5g_l2sim_tdd 20,50,100,100 @@ -122,4 +123,11 @@ 0 + + Clean_Test_Server_Images + true + Clean Test Images on Test Server + 0 + + diff --git a/ci-scripts/xml_files/container_5g_l2sim_tdd_down.xml b/ci-scripts/xml_files/container_5g_l2sim_tdd_down.xml deleted file mode 100644 index 36ce7c71f6..0000000000 --- a/ci-scripts/xml_files/container_5g_l2sim_tdd_down.xml +++ /dev/null @@ -1,47 +0,0 @@ - - - l2sim-5gnr-down - CleanUp 5G L2 sim - TDD gNB - trash - - 100002 - 222222 - - - - - Undeploy_Object - Undeploy all OAI 5G stack - ci-scripts/yaml_files/5g_l2sim_tdd - 0 - 0 - - - - Clean_Test_Server_Images - Clean Test Images on Test Server - 0 - - - diff --git a/ci-scripts/xml_files/container_5g_rfsim.xml b/ci-scripts/xml_files/container_5g_rfsim.xml index 2145207318..16eacb02c5 100644 --- a/ci-scripts/xml_files/container_5g_rfsim.xml +++ b/ci-scripts/xml_files/container_5g_rfsim.xml @@ -24,7 +24,6 @@ rfsim-5gnr-tdd Monolithic SA TDD gNB wrench - 1 111111 800813 @@ -51,6 +50,7 @@ 333333 020006 100001 + 222222 @@ -62,7 +62,7 @@ Create_Workspace - Creating new Workspace + Create new Workspace 0 0 @@ -246,6 +246,7 @@ Undeploy_Object + true Undeploy all OAI 5G stack ci-scripts/yaml_files/5g_rfsimulator 1,0,0,0 @@ -254,4 +255,11 @@ 0 + + Clean_Test_Server_Images + true + Clean Test Images on Test Server + 0 + + diff --git a/ci-scripts/xml_files/container_5g_rfsim_24prb.xml b/ci-scripts/xml_files/container_5g_rfsim_24prb.xml index 6f4d800d4d..2e3bbf1d3a 100644 --- a/ci-scripts/xml_files/container_5g_rfsim_24prb.xml +++ b/ci-scripts/xml_files/container_5g_rfsim_24prb.xml @@ -24,7 +24,6 @@ rfsim-24prb-5gnr-tdd Monolithic SA TDD gNB 24PRB wrench - 1 111111 800813 @@ -36,6 +35,7 @@ 030001 030002 100001 + 222222 @@ -47,7 +47,7 @@ Create_Workspace - Creating new Workspace + Create new Workspace 0 0 @@ -120,6 +120,7 @@ Undeploy_Object + true Undeploy all OAI 5G stack ci-scripts/yaml_files/5g_rfsimulator_24prb 1,0,0,0 @@ -128,4 +129,11 @@ 0 + + Clean_Test_Server_Images + true + Clean Test Images on Test Server + 0 + + diff --git a/ci-scripts/xml_files/container_5g_rfsim_24prb_down.xml b/ci-scripts/xml_files/container_5g_rfsim_24prb_down.xml deleted file mode 100644 index 09084b0503..0000000000 --- a/ci-scripts/xml_files/container_5g_rfsim_24prb_down.xml +++ /dev/null @@ -1,47 +0,0 @@ - - - rfsim-24prb-5gnr-down - CleanUp Monolithic SA TDD gNB 24PRB - trash - - 100002 - 222222 - - - - - Undeploy_Object - Undeploy all OAI 5G stack - ci-scripts/yaml_files/5g_rfsimulator_24prb - 0 - 0 - - - - Clean_Test_Server_Images - Clean Test Images on Test Server - 0 - - - diff --git a/ci-scripts/xml_files/container_5g_rfsim_2x2.xml b/ci-scripts/xml_files/container_5g_rfsim_2x2.xml index 6e1dbef31d..a18928cc80 100644 --- a/ci-scripts/xml_files/container_5g_rfsim_2x2.xml +++ b/ci-scripts/xml_files/container_5g_rfsim_2x2.xml @@ -24,7 +24,6 @@ rfsim-5gnr-tdd-2x2 Monolithic SA TDD 2x2 gNB wrench - 1 111111 800813 @@ -36,6 +35,7 @@ 030001 030002 100001 + 222222 @@ -47,7 +47,7 @@ Create_Workspace - Creating new Workspace + Create new Workspace 0 0 @@ -120,6 +120,7 @@ Undeploy_Object + true Undeploy all OAI 5G stack ci-scripts/yaml_files/5g_rfsimulator_2x2 0 @@ -128,4 +129,11 @@ 1,0,0,0 + + Clean_Test_Server_Images + true + Clean Test Images on Test Server + 0 + + diff --git a/ci-scripts/xml_files/container_5g_rfsim_2x2_down.xml b/ci-scripts/xml_files/container_5g_rfsim_2x2_down.xml deleted file mode 100644 index 5d92987c5b..0000000000 --- a/ci-scripts/xml_files/container_5g_rfsim_2x2_down.xml +++ /dev/null @@ -1,47 +0,0 @@ - - - rfsim-5gnr-2x2-down - CleanUp SA Monolithic TDD 2x2 gNB - trash - - 100002 - 222222 - - - - - Undeploy_Object - Undeploy all OAI 5G stack - ci-scripts/yaml_files/5g_rfsimulator_2x2 - 0 - 0 - - - - Clean_Test_Server_Images - Clean Test Images on Test Server - 0 - - - diff --git a/ci-scripts/xml_files/container_5g_rfsim_down.xml b/ci-scripts/xml_files/container_5g_rfsim_down.xml deleted file mode 100644 index 0c9348e8d6..0000000000 --- a/ci-scripts/xml_files/container_5g_rfsim_down.xml +++ /dev/null @@ -1,47 +0,0 @@ - - - rfsim-5gnr-down - CleanUp SA Monolithic TDD gNB - trash - - 100002 - 222222 - - - - - Undeploy_Object - Undeploy all OAI 5G stack - ci-scripts/yaml_files/5g_rfsimulator - 0 - 0 - - - - Clean_Test_Server_Images - Clean Test Images on Test Server - 0 - - - diff --git a/ci-scripts/xml_files/container_5g_rfsim_f1_accelleran.xml b/ci-scripts/xml_files/container_5g_rfsim_f1_accelleran.xml index 31d9a04790..c8dc1cf9b2 100644 --- a/ci-scripts/xml_files/container_5g_rfsim_f1_accelleran.xml +++ b/ci-scripts/xml_files/container_5g_rfsim_f1_accelleran.xml @@ -32,6 +32,7 @@ 020021 100021 100022 + 222222 @@ -43,7 +44,7 @@ Create_Workspace - Creating new Workspace + Create new Workspace 0 0 @@ -74,10 +75,18 @@ Undeploy_Object + true Undeploy all OAI 5G stack ci-scripts/yaml_files/5g_rfsimulator_accelleran 0 0 + + Clean_Test_Server_Images + true + Clean Test Images on Test Server + 0 + + diff --git a/ci-scripts/xml_files/container_5g_rfsim_f1_accelleran_down.xml b/ci-scripts/xml_files/container_5g_rfsim_f1_accelleran_down.xml deleted file mode 100644 index c8960ccae8..0000000000 --- a/ci-scripts/xml_files/container_5g_rfsim_f1_accelleran_down.xml +++ /dev/null @@ -1,47 +0,0 @@ - - - rfsim-5gnr-down-f1-accelleran - CleanUp - trash - - 100022 - 222222 - - - - - Undeploy_Object - Undeploy all OAI 5G stack - ci-scripts/yaml_files/5g_rfsimulator_accelleran - 0 - 0 - - - - Clean_Test_Server_Images - Clean Test Images on Test Server - 0 - - - diff --git a/ci-scripts/xml_files/container_5g_rfsim_fdd_phytest.xml b/ci-scripts/xml_files/container_5g_rfsim_fdd_phytest.xml index 464197ef7a..10081b9606 100644 --- a/ci-scripts/xml_files/container_5g_rfsim_fdd_phytest.xml +++ b/ci-scripts/xml_files/container_5g_rfsim_fdd_phytest.xml @@ -24,7 +24,6 @@ rfsim-5gnr-fdd-phytest Monolithic FDD phytest gNB wrench - 1 111111 800813 @@ -36,6 +35,7 @@ 030011 030012 100011 + 222222 @@ -54,7 +54,7 @@ Create_Workspace - Creating new Workspace + Create new Workspace 0 0 @@ -120,6 +120,7 @@ Undeploy_Object + true Undeploy all OAI 5G stack ci-scripts/yaml_files/5g_rfsimulator_fdd_phytest 10,100,100,100 @@ -128,4 +129,11 @@ 0 + + Clean_Test_Server_Images + true + Clean Test Images on Test Server + 0 + + diff --git a/ci-scripts/xml_files/container_5g_rfsim_fdd_phytest_down.xml b/ci-scripts/xml_files/container_5g_rfsim_fdd_phytest_down.xml deleted file mode 100644 index 14c3f0f32a..0000000000 --- a/ci-scripts/xml_files/container_5g_rfsim_fdd_phytest_down.xml +++ /dev/null @@ -1,55 +0,0 @@ - - - rfsim-5gnr-fdd-phytest-down - CleanUp Monolithic FDD phytest gNB - trash - - 100012 - 004000 - 222222 - - - - - Undeploy_Object - Undeploy all OAI 5G stack - ci-scripts/yaml_files/5g_rfsimulator_fdd_phytest - 0 - 0 - - - - Custom_Command - Clean-Up any residual volume - cacofonix - docker volume rm 5g_rfsimulator_fdd_phytest_rrc.config - - - - Clean_Test_Server_Images - Clean Test Images on Test Server - 0 - - - diff --git a/ci-scripts/xml_files/container_5g_rfsim_fr2_32prb.xml b/ci-scripts/xml_files/container_5g_rfsim_fr2_32prb.xml index 9d1253b31f..b29be08d21 100644 --- a/ci-scripts/xml_files/container_5g_rfsim_fr2_32prb.xml +++ b/ci-scripts/xml_files/container_5g_rfsim_fr2_32prb.xml @@ -24,7 +24,6 @@ rfsim-fr2-32prb-5gnr-tdd Monolithic FR2 gNB wrench - 1 111111 800813 @@ -33,6 +32,7 @@ 020001 020002 100001 + 222222 @@ -45,7 +45,7 @@ Create_Workspace - Creating new Workspace + Create new Workspace 0 0 @@ -88,6 +88,7 @@ Undeploy_Object + true Undeploy all OAI 5G stack ci-scripts/yaml_files/5g_rfsimulator_fr2_32prb 10,0,0,0 @@ -96,4 +97,11 @@ 0 + + Clean_Test_Server_Images + true + Clean Test Images on Test Server + 0 + + diff --git a/ci-scripts/xml_files/container_5g_rfsim_fr2_32prb_down.xml b/ci-scripts/xml_files/container_5g_rfsim_fr2_32prb_down.xml deleted file mode 100644 index 9537b0d5bb..0000000000 --- a/ci-scripts/xml_files/container_5g_rfsim_fr2_32prb_down.xml +++ /dev/null @@ -1,47 +0,0 @@ - - - rfsim-fr2-32prb-5gnr-down - CleanUp Monolithic FR2 do-ra gNB - trash - - 100002 - 222222 - - - - - Undeploy_Object - Undeploy all OAI 5G stack - ci-scripts/yaml_files/5g_rfsimulator_fr2_32prb - 0 - 0 - - - - Clean_Test_Server_Images - Clean Test Images on Test Server - 0 - - - diff --git a/ci-scripts/xml_files/container_5g_rfsim_ntn_geo.xml b/ci-scripts/xml_files/container_5g_rfsim_ntn_geo.xml index 0b72888889..04bf430f03 100644 --- a/ci-scripts/xml_files/container_5g_rfsim_ntn_geo.xml +++ b/ci-scripts/xml_files/container_5g_rfsim_ntn_geo.xml @@ -24,7 +24,6 @@ rfsim-5gnr-ntn-geo Monolithic SA NTN GEO gNB wrench - 1 111111 100001 @@ -35,6 +34,7 @@ 020001 020002 100001 + 222222 @@ -47,7 +47,7 @@ Create_Workspace - Creating new Workspace + Create new Workspace 0 0 @@ -96,10 +96,18 @@ Undeploy_Object + true Undeploy all OAI 5G stack ci-scripts/yaml_files/5g_rfsimulator_ntn_geo 0 0 + + Clean_Test_Server_Images + true + Clean Test Images on Test Server + 0 + + diff --git a/ci-scripts/xml_files/container_5g_rfsim_ntn_geo_down.xml b/ci-scripts/xml_files/container_5g_rfsim_ntn_geo_down.xml deleted file mode 100644 index 48b4a67fb2..0000000000 --- a/ci-scripts/xml_files/container_5g_rfsim_ntn_geo_down.xml +++ /dev/null @@ -1,47 +0,0 @@ - - - rfsim-5gnr-ntn-geo-down - CleanUp SA Monolithic NTN GEO gNB - trash - - 100002 - 222222 - - - - - Undeploy_Object - Undeploy all OAI 5G stack - ci-scripts/yaml_files/5g_rfsimulator_ntn_geo - 0 - 0 - - - - Clean_Test_Server_Images - Clean Test Images on Test Server - 0 - - - diff --git a/ci-scripts/xml_files/container_5g_rfsim_sidelink.xml b/ci-scripts/xml_files/container_5g_rfsim_sidelink.xml index daa1152722..d42f8851bb 100644 --- a/ci-scripts/xml_files/container_5g_rfsim_sidelink.xml +++ b/ci-scripts/xml_files/container_5g_rfsim_sidelink.xml @@ -24,7 +24,6 @@ rfsim-5gnr-sidelink Sidelink test wrench - 1 111111 800813 @@ -33,6 +32,7 @@ 000004 000005 100001 + 222222 @@ -45,7 +45,7 @@ Create_Workspace - Creating new Workspace + Create new Workspace 0 0 @@ -84,6 +84,7 @@ Undeploy_Object + true Undeploy all OAI 5G stack ci-scripts/yaml_files/5g_rfsimulator_sidelink 1,0,0,0 @@ -92,4 +93,11 @@ 0 + + Clean_Test_Server_Images + true + Clean Test Images on Test Server + 0 + + diff --git a/ci-scripts/xml_files/container_5g_rfsim_sidelink_down.xml b/ci-scripts/xml_files/container_5g_rfsim_sidelink_down.xml deleted file mode 100644 index 6608ebc572..0000000000 --- a/ci-scripts/xml_files/container_5g_rfsim_sidelink_down.xml +++ /dev/null @@ -1,47 +0,0 @@ - - - rfsim-5gnr-sidelink-down - CleanUp sidelink test - trash - - 100002 - 222222 - - - - - Undeploy_Object - Undeploy all OAI 5G stack - ci-scripts/yaml_files/5g_rfsimulator_sidelink - 0 - 0 - - - - Clean_Test_Server_Images - Clean Test Images on Test Server - 0 - - - diff --git a/ci-scripts/xml_files/container_5g_rfsim_tdd_dora.xml b/ci-scripts/xml_files/container_5g_rfsim_tdd_dora.xml index a6b754dacb..35834493cc 100644 --- a/ci-scripts/xml_files/container_5g_rfsim_tdd_dora.xml +++ b/ci-scripts/xml_files/container_5g_rfsim_tdd_dora.xml @@ -24,7 +24,6 @@ rfsim-tdd-dora-5gnr-tdd Monolithic do-ra TDD gNB wrench - 1 111111 800813 @@ -34,6 +33,8 @@ 020001 020002 100001 + 004000 + 222222 @@ -52,7 +53,7 @@ Create_Workspace - Creating new Workspace + Create new Workspace 0 0 @@ -94,6 +95,7 @@ Undeploy_Object + true Undeploy all OAI 5G stack ci-scripts/yaml_files/5g_rfsimulator_tdd_dora 0,0,0,0 @@ -102,4 +104,19 @@ 0 + + Custom_Command + true + Clean-Up any residual volume + cacofonix + docker volume rm 5g_rfsimulator_tdd_dora_rrc.config + + + + Clean_Test_Server_Images + true + Clean Test Images on Test Server + 0 + + diff --git a/ci-scripts/xml_files/container_5g_rfsim_tdd_dora_down.xml b/ci-scripts/xml_files/container_5g_rfsim_tdd_dora_down.xml deleted file mode 100644 index 35ebe2314a..0000000000 --- a/ci-scripts/xml_files/container_5g_rfsim_tdd_dora_down.xml +++ /dev/null @@ -1,55 +0,0 @@ - - - rfsim-tdd-dora-5gnr-down - CleanUp Monolithic do-ra TDD gNB - trash - - 100002 - 004000 - 222222 - - - - - Undeploy_Object - Undeploy all OAI 5G stack - ci-scripts/yaml_files/5g_rfsimulator_tdd_dora - 0 - 0 - - - - Custom_Command - Clean-Up any residual volume - cacofonix - docker volume rm 5g_rfsimulator_tdd_dora_rrc.config - - - - Clean_Test_Server_Images - Clean Test Images on Test Server - 0 - - - diff --git a/ci-scripts/xml_files/container_5g_rfsim_u0_25prb.xml b/ci-scripts/xml_files/container_5g_rfsim_u0_25prb.xml index 6d5d99f595..38d88b7e5e 100644 --- a/ci-scripts/xml_files/container_5g_rfsim_u0_25prb.xml +++ b/ci-scripts/xml_files/container_5g_rfsim_u0_25prb.xml @@ -24,7 +24,6 @@ rfsim-5gnr-fdd-u0-25prb Monolithic SA FDD u0 25PRB gNB wrench - 1 111111 800813 @@ -36,6 +35,7 @@ 030001 030002 100001 + 222222 @@ -47,7 +47,7 @@ Create_Workspace - Creating new Workspace + Create new Workspace 0 0 @@ -120,6 +120,7 @@ Undeploy_Object + true Undeploy all OAI 5G stack ci-scripts/yaml_files/5g_rfsimulator_u0_25prb 1,0,0,0 @@ -128,4 +129,11 @@ 0 + + Clean_Test_Server_Images + true + Clean Test Images on Test Server + 0 + + diff --git a/ci-scripts/xml_files/container_5g_rfsim_u0_25prb_down.xml b/ci-scripts/xml_files/container_5g_rfsim_u0_25prb_down.xml deleted file mode 100644 index 78b9aacc95..0000000000 --- a/ci-scripts/xml_files/container_5g_rfsim_u0_25prb_down.xml +++ /dev/null @@ -1,47 +0,0 @@ - - - rfsim-5gnr-u0-25prb-down - CleanUp SA Monolithic FDD u0 25PRB gNB - trash - - 100002 - 222222 - - - - - Undeploy_Object - Undeploy all OAI 5G stack - ci-scripts/yaml_files/5g_rfsimulator_u0_25prb - 0 - 0 - - - - Clean_Test_Server_Images - Clean Test Images on Test Server - 0 - - - diff --git a/ci-scripts/xml_files/container_image_build.xml b/ci-scripts/xml_files/container_image_build.xml index cde7c7ce60..58b3c00d5e 100644 --- a/ci-scripts/xml_files/container_image_build.xml +++ b/ci-scripts/xml_files/container_image_build.xml @@ -33,7 +33,7 @@ Create_Workspace - Creating new Workspace for server 0 + Create new Workspace for server 0 0 0 diff --git a/ci-scripts/xml_files/container_image_build_cross.xml b/ci-scripts/xml_files/container_image_build_cross.xml index c8bc67e51f..046ceb5413 100644 --- a/ci-scripts/xml_files/container_image_build_cross.xml +++ b/ci-scripts/xml_files/container_image_build_cross.xml @@ -31,7 +31,7 @@ Create_Workspace - Creating new Workspace + Create new Workspace 0 0 diff --git a/ci-scripts/xml_files/container_l2sim_proxy.xml b/ci-scripts/xml_files/container_l2sim_proxy.xml index 2f938ab8e5..ead040de82 100644 --- a/ci-scripts/xml_files/container_l2sim_proxy.xml +++ b/ci-scripts/xml_files/container_l2sim_proxy.xml @@ -24,7 +24,6 @@ l2sim-4glte-5gnr-proxy-build Build L2sim proxy image wrench - 1 100001 000001 @@ -33,7 +32,7 @@ Create_Workspace - Creating new Workspace + Create new Workspace 1 1 diff --git a/ci-scripts/xml_files/container_lte_b200_fdd_05Mhz_tm1.xml b/ci-scripts/xml_files/container_lte_b200_fdd_05Mhz_tm1.xml index 268be0974c..00516269a6 100644 --- a/ci-scripts/xml_files/container_lte_b200_fdd_05Mhz_tm1.xml +++ b/ci-scripts/xml_files/container_lte_b200_fdd_05Mhz_tm1.xml @@ -36,6 +36,7 @@ Replaces xml_files/enb_usrp210_band7_test_05mhz_tm1.xml 040301 040501 040603 040604 040605 040606 040607 040641 040642 040643 040644 040401 040201 030201 200000 +222222 @@ -54,6 +55,7 @@ Replaces xml_files/enb_usrp210_band7_test_05mhz_tm1.xml Custom_Command + true Enable Sleep States hutch sudo cpupower idle-set -E @@ -66,7 +68,7 @@ Replaces xml_files/enb_usrp210_band7_test_05mhz_tm1.xml Create_Workspace - Creating new Workspace for server 0 + Create new Workspace for server 0 0 0 @@ -86,6 +88,7 @@ Replaces xml_files/enb_usrp210_band7_test_05mhz_tm1.xml Undeploy_Object + true Undeploy eNB ci-scripts/yaml_files/lte_b200_fdd_05Mhz_tm1 0 @@ -99,6 +102,7 @@ Replaces xml_files/enb_usrp210_band7_test_05mhz_tm1.xml Terminate_UE + true Terminate UE adb_ue_1 adb_ue_2 @@ -109,6 +113,7 @@ Replaces xml_files/enb_usrp210_band7_test_05mhz_tm1.xml Detach_UE + true Detach UEs adb_ue_1 adb_ue_2 @@ -202,5 +207,12 @@ Replaces xml_files/enb_usrp210_band7_test_05mhz_tm1.xml ltebox-nano + + Clean_Test_Server_Images + true + Clean Test Images on Test Server + 0 + + diff --git a/ci-scripts/xml_files/container_lte_b200_fdd_05Mhz_tm1_if4_5.xml b/ci-scripts/xml_files/container_lte_b200_fdd_05Mhz_tm1_if4_5.xml index adfe8860d6..4ede8e072b 100644 --- a/ci-scripts/xml_files/container_lte_b200_fdd_05Mhz_tm1_if4_5.xml +++ b/ci-scripts/xml_files/container_lte_b200_fdd_05Mhz_tm1_if4_5.xml @@ -35,6 +35,7 @@ 040301 040531 040633 040634 040636 040671 040672 040673 040401 040201 030231 200000 +222222 @@ -53,6 +54,7 @@ Custom_Command + true Enable Sleep States hutch sudo cpupower idle-set -E @@ -65,7 +67,7 @@ Create_Workspace - Creating new Workspace for server 0 + Create new Workspace for server 0 0 0 @@ -94,6 +96,7 @@ Undeploy_Object + true Undeploy RCC/RRU ci-scripts/yaml_files/lte_b200_fdd_05Mhz_if4.5 0 @@ -107,6 +110,7 @@ Terminate_UE + true Terminate UE adb_ue_1 adb_ue_2 @@ -117,6 +121,7 @@ Detach_UE + true Detach UEs adb_ue_1 adb_ue_2 @@ -185,4 +190,11 @@ ltebox-nano + + Clean_Test_Server_Images + true + Clean Test Images on Test Server + 0 + + diff --git a/ci-scripts/xml_files/container_lte_b200_fdd_05Mhz_tm1_no_rrc_activity.xml b/ci-scripts/xml_files/container_lte_b200_fdd_05Mhz_tm1_no_rrc_activity.xml index 673bf65609..b9bc7f7a42 100644 --- a/ci-scripts/xml_files/container_lte_b200_fdd_05Mhz_tm1_no_rrc_activity.xml +++ b/ci-scripts/xml_files/container_lte_b200_fdd_05Mhz_tm1_no_rrc_activity.xml @@ -35,6 +35,7 @@ Replaces xml_files/enb_usrp210_band7_test_05mhz_tm1_rrc_inactivity_no_flexran.xm 000010 040301 040502 000011 040302 000001 000012 040303 000002 000013 040503 040401 040201 030202 200000 +222222 @@ -52,13 +53,14 @@ Replaces xml_files/enb_usrp210_band7_test_05mhz_tm1_rrc_inactivity_no_flexran.xm Custom_Command + true Enable Sleep States hutch sudo cpupower idle-set -E Create_Workspace - Creating new Workspace for server 0 + Create new Workspace for server 0 0 0 @@ -72,6 +74,7 @@ Replaces xml_files/enb_usrp210_band7_test_05mhz_tm1_rrc_inactivity_no_flexran.xm Undeploy_Object + true Undeploy eNB ci-scripts/yaml_files/lte_b200_fdd_05Mhz_tm1_no_rrc_activity 0 @@ -85,6 +88,7 @@ Replaces xml_files/enb_usrp210_band7_test_05mhz_tm1_rrc_inactivity_no_flexran.xm Terminate_UE + true Terminate UE adb_ue_1 adb_ue_2 @@ -95,6 +99,7 @@ Replaces xml_files/enb_usrp210_band7_test_05mhz_tm1_rrc_inactivity_no_flexran.xm Detach_UE + true Detach UE adb_ue_1 adb_ue_2 @@ -167,5 +172,12 @@ Replaces xml_files/enb_usrp210_band7_test_05mhz_tm1_rrc_inactivity_no_flexran.xm adb_ue_1 adb_ue_2 + + Clean_Test_Server_Images + true + Clean Test Images on Test Server + 0 + + diff --git a/ci-scripts/xml_files/container_lte_b200_fdd_10Mhz_tm1.xml b/ci-scripts/xml_files/container_lte_b200_fdd_10Mhz_tm1.xml index 472122d2e4..958e0a895a 100644 --- a/ci-scripts/xml_files/container_lte_b200_fdd_10Mhz_tm1.xml +++ b/ci-scripts/xml_files/container_lte_b200_fdd_10Mhz_tm1.xml @@ -37,6 +37,7 @@ Replaces xml_files/enb_usrp210_band7_test_10mhz_tm1.xml 040301 040511 040613 040614 040615 040651 040652 040653 040654 040401 040201 030211 200000 +222222 @@ -54,13 +55,14 @@ Replaces xml_files/enb_usrp210_band7_test_10mhz_tm1.xml Custom_Command + true Enable Sleep States hutch sudo cpupower idle-set -E Create_Workspace - Creating new Workspace for server 0 + Create new Workspace for server 0 0 0 @@ -80,6 +82,7 @@ Replaces xml_files/enb_usrp210_band7_test_10mhz_tm1.xml Undeploy_Object + true Undeploy eNB ci-scripts/yaml_files/lte_b200_fdd_10Mhz_tm1 0 @@ -93,6 +96,7 @@ Replaces xml_files/enb_usrp210_band7_test_10mhz_tm1.xml Terminate_UE + true Terminate UE adb_ue_1 adb_ue_2 @@ -103,6 +107,7 @@ Replaces xml_files/enb_usrp210_band7_test_10mhz_tm1.xml Detach_UE + true Detach UE adb_ue_1 adb_ue_2 @@ -197,5 +202,12 @@ Replaces xml_files/enb_usrp210_band7_test_10mhz_tm1.xml ltebox-nano + + Clean_Test_Server_Images + true + Clean Test Images on Test Server + 0 + + diff --git a/ci-scripts/xml_files/container_lte_b200_fdd_10Mhz_tm1_cdrx.xml b/ci-scripts/xml_files/container_lte_b200_fdd_10Mhz_tm1_cdrx.xml index 1534150b01..60a9bd0c16 100644 --- a/ci-scripts/xml_files/container_lte_b200_fdd_10Mhz_tm1_cdrx.xml +++ b/ci-scripts/xml_files/container_lte_b200_fdd_10Mhz_tm1_cdrx.xml @@ -36,6 +36,7 @@ Replaces xml_files/enb_usrp210_band7_test_10mhz_tm1.xml 040201 030212 200000 +222222 @@ -53,13 +54,14 @@ Replaces xml_files/enb_usrp210_band7_test_10mhz_tm1.xml Custom_Command + true Enable Sleep States hutch sudo cpupower idle-set -E Create_Workspace - Creating new Workspace for server 0 + Create new Workspace for server 0 0 0 @@ -73,6 +75,7 @@ Replaces xml_files/enb_usrp210_band7_test_10mhz_tm1.xml Undeploy_Object + true Undeploy eNB ci-scripts/yaml_files/lte_b200_fdd_10Mhz_tm1_cdrx 0 @@ -86,6 +89,7 @@ Replaces xml_files/enb_usrp210_band7_test_10mhz_tm1.xml Terminate_UE + true Terminate UE adb_ue_1 adb_ue_2 @@ -96,6 +100,7 @@ Replaces xml_files/enb_usrp210_band7_test_10mhz_tm1.xml Detach_UE + true Detach UE adb_ue_1 adb_ue_2 @@ -129,5 +134,12 @@ Replaces xml_files/enb_usrp210_band7_test_10mhz_tm1.xml ltebox-nano + + Clean_Test_Server_Images + true + Clean Test Images on Test Server + 0 + + diff --git a/ci-scripts/xml_files/container_lte_b200_fdd_10Mhz_tm1_oaiue.xml b/ci-scripts/xml_files/container_lte_b200_fdd_10Mhz_tm1_oaiue.xml index 0e58e6b6ed..10cd2e89c1 100644 --- a/ci-scripts/xml_files/container_lte_b200_fdd_10Mhz_tm1_oaiue.xml +++ b/ci-scripts/xml_files/container_lte_b200_fdd_10Mhz_tm1_oaiue.xml @@ -41,6 +41,8 @@ 030211 200000 200001 +222222 +333333 @@ -70,19 +72,21 @@ Custom_Command + true Enable Sleep States (hutch) hutch sudo cpupower idle-set -E Custom_Command + true Enable Sleep States (carabe) carabe sudo cpupower idle-set -E Create_Workspace - Creating new Workspace for server 0 + Create new Workspace for server 0 0 0 @@ -95,7 +99,7 @@ Create_Workspace - Creating new Workspace for server 1 + Create new Workspace for server 1 1 1 @@ -121,6 +125,7 @@ Undeploy_Object + true Undeploy eNB ci-scripts/yaml_files/lte_b200_fdd_10Mhz_tm1_magma 0 @@ -129,6 +134,7 @@ Undeploy_Object + true Undeploy LTE-UE ci-scripts/yaml_files/lte_b200_fdd_10Mhz_oai_ue_magma 1 @@ -180,4 +186,18 @@ nano-cn4g + + Clean_Test_Server_Images + true + Clean Test Images on eNB Test Server + 0 + + + + Clean_Test_Server_Images + true + Clean Test Images on LTE-UE Test Server + 1 + + diff --git a/ci-scripts/xml_files/container_lte_b200_fdd_10Mhz_tm1_oaiue_cleanup.xml b/ci-scripts/xml_files/container_lte_b200_fdd_10Mhz_tm1_oaiue_cleanup.xml deleted file mode 100644 index 03d502fe14..0000000000 --- a/ci-scripts/xml_files/container_lte_b200_fdd_10Mhz_tm1_oaiue_cleanup.xml +++ /dev/null @@ -1,63 +0,0 @@ - - - images-clean-up - Images Clean-Up - trash - -000000 -111111 -222222 -333333 - - - - - Undeploy_Object - Undeploy eNB - ci-scripts/yaml_files/lte_b200_fdd_10Mhz_tm1_magma - 0 - 0 - - - - Undeploy_Object - Undeploy LTE-UE - ci-scripts/yaml_files/lte_b200_fdd_10Mhz_oai_ue_magma - 1 - 1 - - - - Clean_Test_Server_Images - Clean Test Images on eNB Test Server - 0 - - - - Clean_Test_Server_Images - Clean Test Images on LTE-UE Test Server - 1 - - - diff --git a/ci-scripts/xml_files/container_lte_b200_fdd_20Mhz_tm1.xml b/ci-scripts/xml_files/container_lte_b200_fdd_20Mhz_tm1.xml index 48aa606fa4..510d0d3f2e 100644 --- a/ci-scripts/xml_files/container_lte_b200_fdd_20Mhz_tm1.xml +++ b/ci-scripts/xml_files/container_lte_b200_fdd_20Mhz_tm1.xml @@ -36,6 +36,7 @@ Replaces xml_files/enb_usrp210_band7_test_10mhz_tm1.xml 040301 040521 040623 040624 040625 040662 040401 040201 030221 200000 +222222 @@ -53,13 +54,14 @@ Replaces xml_files/enb_usrp210_band7_test_10mhz_tm1.xml Custom_Command + true Enable Sleep States hutch sudo cpupower idle-set -E Create_Workspace - Creating new Workspace for server 0 + Create new Workspace for server 0 0 0 @@ -79,6 +81,7 @@ Replaces xml_files/enb_usrp210_band7_test_10mhz_tm1.xml Undeploy_Object + true Undeploy eNB ci-scripts/yaml_files/lte_b200_fdd_20Mhz_tm1 0 @@ -92,6 +95,7 @@ Replaces xml_files/enb_usrp210_band7_test_10mhz_tm1.xml Terminate_UE + true Terminate UE adb_ue_1 adb_ue_2 @@ -102,6 +106,7 @@ Replaces xml_files/enb_usrp210_band7_test_10mhz_tm1.xml Detach_UE + true Detach UE adb_ue_1 adb_ue_2 @@ -197,5 +202,12 @@ Replaces xml_files/enb_usrp210_band7_test_10mhz_tm1.xml ltebox-nano + + Clean_Test_Server_Images + true + Clean Test Images on Test Server + 0 + + diff --git a/ci-scripts/xml_files/container_lte_b200_fdd_cleanup.xml b/ci-scripts/xml_files/container_lte_b200_fdd_cleanup.xml deleted file mode 100644 index bc9d2cb361..0000000000 --- a/ci-scripts/xml_files/container_lte_b200_fdd_cleanup.xml +++ /dev/null @@ -1,38 +0,0 @@ - - - test-fdd-cleanup - CleanUp 4G LTE FDD - trash - - 222222 - - - - - Clean_Test_Server_Images - Clean Test Images on Test Server - 0 - - - diff --git a/ci-scripts/xml_files/container_lte_b200_tdd_05Mhz_tm1.xml b/ci-scripts/xml_files/container_lte_b200_tdd_05Mhz_tm1.xml index a512156ff5..c8bcde980f 100644 --- a/ci-scripts/xml_files/container_lte_b200_tdd_05Mhz_tm1.xml +++ b/ci-scripts/xml_files/container_lte_b200_tdd_05Mhz_tm1.xml @@ -36,6 +36,7 @@ Replaces xml_files/enb_usrp210_band40_test_05mhz_tm1.xml 040301 040501 040602 040601 040603 040604 040605 040642 040641 040643 040644 040645 040401 040201 030204 200000 +222222 @@ -54,6 +55,7 @@ Replaces xml_files/enb_usrp210_band40_test_05mhz_tm1.xml Custom_Command + true Enable Sleep States starsky sudo cpupower idle-set -E @@ -67,7 +69,7 @@ Replaces xml_files/enb_usrp210_band40_test_05mhz_tm1.xml Create_Workspace - Creating new Workspace for server 0 + Create new Workspace for server 0 0 0 @@ -87,6 +89,7 @@ Replaces xml_files/enb_usrp210_band40_test_05mhz_tm1.xml Undeploy_Object + true Undeploy eNB ci-scripts/yaml_files/lte_b200_tdd_05Mhz_tm1 0 @@ -100,6 +103,7 @@ Replaces xml_files/enb_usrp210_band40_test_05mhz_tm1.xml Terminate_UE + true Terminate UE adb_ue_1 adb_ue_2 @@ -110,6 +114,7 @@ Replaces xml_files/enb_usrp210_band40_test_05mhz_tm1.xml Detach_UE + true Detach UE adb_ue_1 adb_ue_2 @@ -214,4 +219,11 @@ Replaces xml_files/enb_usrp210_band40_test_05mhz_tm1.xml ltebox-nano + + Clean_Test_Server_Images + true + Clean Test Images on Test Server + 0 + + diff --git a/ci-scripts/xml_files/container_lte_b200_tdd_05Mhz_tm1_if4_5.xml b/ci-scripts/xml_files/container_lte_b200_tdd_05Mhz_tm1_if4_5.xml index 827675f3fb..22a86d1f57 100644 --- a/ci-scripts/xml_files/container_lte_b200_tdd_05Mhz_tm1_if4_5.xml +++ b/ci-scripts/xml_files/container_lte_b200_tdd_05Mhz_tm1_if4_5.xml @@ -33,8 +33,8 @@ 030135 040301 040532 040631 040632 040634 040635 040681 040682 040684 040685 040401 040201 030231 -040101 200000 +222222 @@ -53,6 +53,7 @@ Custom_Command + true Enable Sleep States starsky sudo cpupower idle-set -E @@ -66,7 +67,7 @@ Create_Workspace - Creating new Workspace for server 0 + Create new Workspace for server 0 0 0 @@ -95,6 +96,7 @@ Undeploy_Object + true Undeploy RRU/RCC ci-scripts/yaml_files/lte_b200_tdd_05Mhz_if4.5 0 @@ -108,6 +110,7 @@ Terminate_UE + true Terminate UE adb_ue_1 adb_ue_2 @@ -118,6 +121,7 @@ Detach_UE + true Detach UE adb_ue_1 adb_ue_2 @@ -201,4 +205,11 @@ ltebox-nano + + Clean_Test_Server_Images + true + Clean Test Images on Test Server + 0 + + diff --git a/ci-scripts/xml_files/container_lte_b200_tdd_05Mhz_tm2.xml b/ci-scripts/xml_files/container_lte_b200_tdd_05Mhz_tm2.xml index 77a13d9407..068d4521b2 100644 --- a/ci-scripts/xml_files/container_lte_b200_tdd_05Mhz_tm2.xml +++ b/ci-scripts/xml_files/container_lte_b200_tdd_05Mhz_tm2.xml @@ -52,13 +52,14 @@ Replaces xml_files/enb_usrp210_band40_test_05mhz_tm2.xml Custom_Command + true Enable Sleep States starsky sudo cpupower idle-set -E Create_Workspace - Creating new Workspace for server 0 + Create new Workspace for server 0 0 0 @@ -78,6 +79,7 @@ Replaces xml_files/enb_usrp210_band40_test_05mhz_tm2.xml Undeploy_Object + true Undeploy eNB ci-scripts/yaml_files/lte_b200_tdd_05Mhz_tm2 0 @@ -91,6 +93,7 @@ Replaces xml_files/enb_usrp210_band40_test_05mhz_tm2.xml Terminate_UE + true Terminate UE adb_ue_1 adb_ue_2 @@ -101,6 +104,7 @@ Replaces xml_files/enb_usrp210_band40_test_05mhz_tm2.xml Detach_UE + true Detach UE adb_ue_1 adb_ue_2 diff --git a/ci-scripts/xml_files/container_lte_b200_tdd_10Mhz_tm1.xml b/ci-scripts/xml_files/container_lte_b200_tdd_10Mhz_tm1.xml index ed37d24eae..570fffef71 100644 --- a/ci-scripts/xml_files/container_lte_b200_tdd_10Mhz_tm1.xml +++ b/ci-scripts/xml_files/container_lte_b200_tdd_10Mhz_tm1.xml @@ -35,6 +35,7 @@ Replaces xml_files/enb_usrp210_band40_test_10mhz_tm1.xml 040301 040511 040612 040611 040613 040614 040615 040652 040651 040653 040654 040655 040401 040201 030214 200000 +222222 @@ -52,13 +53,14 @@ Replaces xml_files/enb_usrp210_band40_test_10mhz_tm1.xml Custom_Command + true Enable Sleep States starsky sudo cpupower idle-set -E Create_Workspace - Creating new Workspace for server 0 + Create new Workspace for server 0 0 0 @@ -78,6 +80,7 @@ Replaces xml_files/enb_usrp210_band40_test_10mhz_tm1.xml Undeploy_Object + true Undeploy eNB ci-scripts/yaml_files/lte_b200_tdd_10Mhz_tm1 0 @@ -91,6 +94,7 @@ Replaces xml_files/enb_usrp210_band40_test_10mhz_tm1.xml Terminate_UE + true Terminate UE adb_ue_1 adb_ue_2 @@ -101,6 +105,7 @@ Replaces xml_files/enb_usrp210_band40_test_10mhz_tm1.xml Detach_UE + true Detach UE adb_ue_1 adb_ue_2 @@ -205,4 +210,11 @@ Replaces xml_files/enb_usrp210_band40_test_10mhz_tm1.xml ltebox-nano + + Clean_Test_Server_Images + true + Clean Test Images on Test Server + 0 + + diff --git a/ci-scripts/xml_files/container_lte_b200_tdd_20Mhz_tm1.xml b/ci-scripts/xml_files/container_lte_b200_tdd_20Mhz_tm1.xml index 1a9983e67e..49826d782c 100644 --- a/ci-scripts/xml_files/container_lte_b200_tdd_20Mhz_tm1.xml +++ b/ci-scripts/xml_files/container_lte_b200_tdd_20Mhz_tm1.xml @@ -35,6 +35,7 @@ Replaces xml_files/enb_usrp210_band40_test_20mhz_tm1.xml 040301 040521 040622 040621 040623 040662 040401 040201 030224 200000 +222222 @@ -52,13 +53,14 @@ Replaces xml_files/enb_usrp210_band40_test_20mhz_tm1.xml Custom_Command + true Enable Sleep States starsky sudo cpupower idle-set -E Create_Workspace - Creating new Workspace for server 0 + Create new Workspace for server 0 0 0 @@ -78,6 +80,7 @@ Replaces xml_files/enb_usrp210_band40_test_20mhz_tm1.xml Undeploy_Object + true Undeploy eNB ci-scripts/yaml_files/lte_b200_tdd_20Mhz_tm1 0 @@ -91,6 +94,7 @@ Replaces xml_files/enb_usrp210_band40_test_20mhz_tm1.xml Terminate_UE + true Terminate UE adb_ue_1 adb_ue_2 @@ -101,6 +105,7 @@ Replaces xml_files/enb_usrp210_band40_test_20mhz_tm1.xml Detach_UE + true Detach UE adb_ue_1 adb_ue_2 @@ -203,4 +208,11 @@ Replaces xml_files/enb_usrp210_band40_test_20mhz_tm1.xml ltebox-nano + + Clean_Test_Server_Images + true + Clean Test Images on Test Server + 0 + + diff --git a/ci-scripts/xml_files/container_lte_b200_tdd_20Mhz_tm1_default_scheduler.xml b/ci-scripts/xml_files/container_lte_b200_tdd_20Mhz_tm1_default_scheduler.xml index e3f0f49140..8e47a61a48 100644 --- a/ci-scripts/xml_files/container_lte_b200_tdd_20Mhz_tm1_default_scheduler.xml +++ b/ci-scripts/xml_files/container_lte_b200_tdd_20Mhz_tm1_default_scheduler.xml @@ -35,6 +35,7 @@ Replaces xml_files/enb_usrp210_band40_test_20mhz_tm1_default_scheduler.xml 040301 040522 040627 040626 040628 040629 040630 040667 040666 040668 040669 040670 040401 040201 030225 200000 +222222 @@ -53,13 +54,14 @@ Replaces xml_files/enb_usrp210_band40_test_20mhz_tm1_default_scheduler.xml Custom_Command + true Enable Sleep States starsky sudo cpupower idle-set -E Create_Workspace - Creating new Workspace for server 0 + Create new Workspace for server 0 0 0 @@ -79,6 +81,7 @@ Replaces xml_files/enb_usrp210_band40_test_20mhz_tm1_default_scheduler.xml Undeploy_Object + true Undeploy eNB ci-scripts/yaml_files/lte_b200_tdd_20Mhz_tm1_default_scheduler 0 @@ -92,6 +95,7 @@ Replaces xml_files/enb_usrp210_band40_test_20mhz_tm1_default_scheduler.xml Terminate_UE + true Terminate UE adb_ue_1 adb_ue_2 @@ -102,6 +106,7 @@ Replaces xml_files/enb_usrp210_band40_test_20mhz_tm1_default_scheduler.xml Detach_UE + true Detach UE adb_ue_1 adb_ue_2 @@ -208,4 +213,11 @@ Replaces xml_files/enb_usrp210_band40_test_20mhz_tm1_default_scheduler.xml ltebox-nano + + Clean_Test_Server_Images + true + Clean Test Images on Test Server + 0 + + diff --git a/ci-scripts/xml_files/container_lte_b200_tdd_cleanup.xml b/ci-scripts/xml_files/container_lte_b200_tdd_cleanup.xml deleted file mode 100644 index 671ef0e5f4..0000000000 --- a/ci-scripts/xml_files/container_lte_b200_tdd_cleanup.xml +++ /dev/null @@ -1,38 +0,0 @@ - - - test-tdd-cleanup - CleanUp 4G LTE TDD - trash - - 222222 - - - - - Clean_Test_Server_Images - Clean Test Images on Test Server - 0 - - - diff --git a/ci-scripts/xml_files/container_lte_n3xx_tdd_2x2_cleanup.xml b/ci-scripts/xml_files/container_lte_n3xx_tdd_2x2_cleanup.xml deleted file mode 100644 index 01c89ae585..0000000000 --- a/ci-scripts/xml_files/container_lte_n3xx_tdd_2x2_cleanup.xml +++ /dev/null @@ -1,54 +0,0 @@ - - - images-clean-up - Images Clean-Up - trash - -111111 -222222 -333333 - - - - - Detach_UE - Detach UE - up2 - - - - Undeploy_Object - Undeploy eNB - ci-scripts/yaml_files/lte_n3xx_tdd_2x2_tm2 - 0 - 0 - - - - Clean_Test_Server_Images - Clean Test Images - 0 - - - diff --git a/ci-scripts/xml_files/container_lte_n3xx_tdd_2x2_tm1.xml b/ci-scripts/xml_files/container_lte_n3xx_tdd_2x2_tm1.xml index e7f7549a46..d144448301 100644 --- a/ci-scripts/xml_files/container_lte_n3xx_tdd_2x2_tm1.xml +++ b/ci-scripts/xml_files/container_lte_n3xx_tdd_2x2_tm1.xml @@ -25,7 +25,6 @@ TEST-LTE-2x2-N3XX-TM1 2.6 Ghz TDD LTE 2x2 TM1 tasks - 1 111111 @@ -41,6 +40,7 @@ 070001 010010 030201 +333333 @@ -67,7 +67,7 @@ Create_Workspace - Creating new Workspace + Create new Workspace 0 0 @@ -131,12 +131,14 @@ Detach_UE + true Detach UE up2 Undeploy_Object + true Undeploy gNB ci-scripts/yaml_files/lte_n3xx_tdd_2x2_tm1 0 @@ -147,5 +149,12 @@ --> + + Clean_Test_Server_Images + true + Clean Test Images + 0 + + diff --git a/ci-scripts/xml_files/container_lte_n3xx_tdd_2x2_tm2.xml b/ci-scripts/xml_files/container_lte_n3xx_tdd_2x2_tm2.xml index 3792b673d5..50494d7778 100644 --- a/ci-scripts/xml_files/container_lte_n3xx_tdd_2x2_tm2.xml +++ b/ci-scripts/xml_files/container_lte_n3xx_tdd_2x2_tm2.xml @@ -25,7 +25,6 @@ TEST-LTE-2x2-N3XXi-TM2 2.6 Ghz TDD LTE 2x2 TM2 tasks - 1 111111 @@ -41,6 +40,7 @@ 071001 010010 031201 +333333 @@ -67,7 +67,7 @@ Create_Workspace - Creating new Workspace + Create new Workspace 0 0 @@ -131,12 +131,14 @@ Detach_UE + true Detach UE up2 Undeploy_Object + true Undeploy gNB ci-scripts/yaml_files/lte_n3xx_tdd_2x2_tm2 0 @@ -147,5 +149,13 @@ --> + + Clean_Test_Server_Images + true + Clean Test Images + 0 + + + diff --git a/ci-scripts/xml_files/container_nsa_b200_quectel.xml b/ci-scripts/xml_files/container_nsa_b200_quectel.xml index 037ca1dc8c..c745cb90aa 100644 --- a/ci-scripts/xml_files/container_nsa_b200_quectel.xml +++ b/ci-scripts/xml_files/container_nsa_b200_quectel.xml @@ -24,7 +24,6 @@ TEST-NSA-FR1-TM1-B200 NSA SanityCheck with QUECTEL tasks - 1 200000 100000 @@ -50,6 +49,8 @@ 030201 300000 600000 + 222220 + 222221 @@ -82,6 +83,7 @@ Custom_Command + true Enable Sleep States (nepes) nepes sudo cpupower idle-set -E @@ -94,6 +96,7 @@ Custom_Command + true Enable Sleep States (ofqot) ofqot sudo cpupower idle-set -E @@ -106,6 +109,7 @@ Terminate_UE + true Terminate Quectel idefix @@ -116,12 +120,13 @@ Detach_UE + true Detach UE idefix Create_Workspace - Creating new Workspace + Create new Workspace 0 0 @@ -134,7 +139,7 @@ Create_Workspace - Creating new Workspace + Create new Workspace 1 1 @@ -225,6 +230,7 @@ Undeploy_Object + true Undeploy eNB ci-scripts/yaml_files/nsa_b200_enb 0 @@ -233,6 +239,7 @@ Undeploy_Object + true Undeploy gNB ci-scripts/yaml_files/nsa_b200_gnb 1 @@ -241,5 +248,19 @@ 10,100,100,100 + + Clean_Test_Server_Images + true + Clean Test Images on Test Server + 0 + + + + Clean_Test_Server_Images + true + Clean Test Images on Test Server + 1 + + diff --git a/ci-scripts/xml_files/container_nsa_b200_terminate.xml b/ci-scripts/xml_files/container_nsa_b200_terminate.xml deleted file mode 100644 index c76e3c5891..0000000000 --- a/ci-scripts/xml_files/container_nsa_b200_terminate.xml +++ /dev/null @@ -1,78 +0,0 @@ - - - TEST-NSA-FR1-TM1-B200-terminate - NSA tear-down in case of problem - tasks - 1 - - 010001 - 010002 - 030202 - 030201 - 222220 - 222221 - - - - - Detach_UE - Detach UE - idefix - - - Terminate_UE - Terminate Quectel - idefix - - - - Undeploy_Object - Undeploy eNB - ci-scripts/yaml_files/nsa_b200_enb - 0 - 0 - - - - Undeploy_Object - Undeploy gNB - ci-scripts/yaml_files/nsa_b200_gnb - 1 - 1 - - - - Clean_Test_Server_Images - Clean Test Images on Test Server - 0 - - - - Clean_Test_Server_Images - Clean Test Images on Test Server - 1 - - - - diff --git a/ci-scripts/xml_files/container_sa_aerial_quectel.xml b/ci-scripts/xml_files/container_sa_aerial_quectel.xml index 877b694e61..3f49e5fa8d 100644 --- a/ci-scripts/xml_files/container_sa_aerial_quectel.xml +++ b/ci-scripts/xml_files/container_sa_aerial_quectel.xml @@ -24,7 +24,6 @@ TEST-AERIAL-SA AERIAL 100 MHz TDD SA tasks - 1 111111 000222 @@ -37,6 +36,7 @@ 000033 000222 222222 + 333333 @@ -49,7 +49,7 @@ Create_Workspace - Creating new Workspace for server 0 + Create new Workspace for server 0 0 0 @@ -108,12 +108,14 @@ Detach_UE + true Detach Quectel up2-aerial Undeploy_Object + true Undeploy gNB ci-scripts/yaml_files/sa_gnb_aerial 0 @@ -121,5 +123,13 @@ 20,100,100,100 20,100,100,100 + + + Clean_Test_Server_Images + true + Clean Test Images on Test Server + 0 + + diff --git a/ci-scripts/xml_files/container_sa_aerial_quectel_cleanup.xml b/ci-scripts/xml_files/container_sa_aerial_quectel_cleanup.xml deleted file mode 100644 index 4a8a88fd8a..0000000000 --- a/ci-scripts/xml_files/container_sa_aerial_quectel_cleanup.xml +++ /dev/null @@ -1,54 +0,0 @@ - - - test-aerial-cleanup - CleanUp AERIAL - trash - - 000000 - 111111 - 222222 - - - - - Undeploy_Object - Undeploy gNB - ci-scripts/yaml_files/sa_gnb_aerial - 0 - 0 - - - - Clean_Test_Server_Images - Clean Test Images on Test Server - 0 - - - - Detach_UE - Terminate UE - up2-aerial - - - diff --git a/ci-scripts/xml_files/container_sa_aw2s_asue.xml b/ci-scripts/xml_files/container_sa_aw2s_asue.xml index 0f96abaee8..0e4e967c52 100644 --- a/ci-scripts/xml_files/container_sa_aw2s_asue.xml +++ b/ci-scripts/xml_files/container_sa_aw2s_asue.xml @@ -24,7 +24,6 @@ TEST-5G-AW2S 20 MHz TDD SA tasks - 1 010000 001000 @@ -57,6 +56,7 @@ 004000 000002 030000 + 333333 @@ -68,7 +68,7 @@ Create_Workspace - Creating new Workspace + Create new Workspace 0 0 @@ -243,12 +243,14 @@ Detach_UE + true Detach UE amarisoft_ue_1 amarisoft_ue_2 amarisoft_ue_3 amarisoft_ue_4 amarisoft_ue_5 amarisoft_ue_6 amarisoft_ue_7 amarisoft_ue_8 amarisoft_ue_9 amarisoft_ue_10 amarisoft_ue_11 amarisoft_ue_12 amarisoft_ue_13 amarisoft_ue_14 amarisoft_ue_15 amarisoft_ue_16 Terminate_UE + true Terminate UE amarisoft_ue @@ -261,10 +263,18 @@ Undeploy_Object + true Undeploy gNB ci-scripts/yaml_files/sa_aw2s_gnb 0 0 + + Clean_Test_Server_Images + true + Clean Test Images on Test Server + 0 + + diff --git a/ci-scripts/xml_files/container_sa_aw2s_asue_cleanup.xml b/ci-scripts/xml_files/container_sa_aw2s_asue_cleanup.xml deleted file mode 100644 index 0b90afeee3..0000000000 --- a/ci-scripts/xml_files/container_sa_aw2s_asue_cleanup.xml +++ /dev/null @@ -1,55 +0,0 @@ - - - test-aw2s-cleanup - CleanUp AW2S ASUE - trash - - 111111 - 222222 - 333333 - - - - - Terminate_UE - Terminate UE - amarisoft_ue - - - - Undeploy_Object - Undeploy gNB - ci-scripts/yaml_files/sa_aw2s_gnb - 0 - 0 - - - - Clean_Test_Server_Images - Clean Test Images on Test Server - 0 - - - - diff --git a/ci-scripts/xml_files/container_sa_b200_quectel.xml b/ci-scripts/xml_files/container_sa_b200_quectel.xml index 4b6575df5f..4a4c8309a5 100644 --- a/ci-scripts/xml_files/container_sa_b200_quectel.xml +++ b/ci-scripts/xml_files/container_sa_b200_quectel.xml @@ -24,7 +24,6 @@ TEST-SA-FR1-B200 20 MHz TDD SA tasks - 1 100000 111111 @@ -53,6 +52,7 @@ 010002 030201 200000 + 222222 @@ -71,6 +71,7 @@ Custom_Command + true Enable Sleep States ofqot sudo cpupower idle-set -E @@ -83,6 +84,7 @@ Terminate_UE + true Terminate Quectel idefix @@ -93,12 +95,13 @@ Detach_UE + true Detach UE idefix Create_Workspace - Creating new Workspace for server 0 + Create new Workspace for server 0 0 0 @@ -204,6 +207,7 @@ Undeploy_Object + true Undeploy gNB ci-scripts/yaml_files/sa_b200_gnb 0 @@ -212,5 +216,12 @@ 10,100,100,100 + + Clean_Test_Server_Images + true + Clean Test Images on Test Server + 0 + + diff --git a/ci-scripts/xml_files/container_sa_b200_terminate.xml b/ci-scripts/xml_files/container_sa_b200_terminate.xml deleted file mode 100644 index 26836fb096..0000000000 --- a/ci-scripts/xml_files/container_sa_b200_terminate.xml +++ /dev/null @@ -1,54 +0,0 @@ - - - TEST-SA-FR1-B200-terminate - Tear-down - tasks - 1 - - 010001 - 010002 - 030201 - - - - - Detach_UE - Detach UE - idefix - - - Terminate_UE - Terminate Quectel - idefix - - - - Undeploy_Object - Undeploy gNB - ci-scripts/yaml_files/sa_b200_gnb - 0 - 0 - - - diff --git a/ci-scripts/xml_files/container_sa_e1_b200_quectel.xml b/ci-scripts/xml_files/container_sa_e1_b200_quectel.xml index 963ab9981f..563167a2dd 100644 --- a/ci-scripts/xml_files/container_sa_e1_b200_quectel.xml +++ b/ci-scripts/xml_files/container_sa_e1_b200_quectel.xml @@ -24,7 +24,6 @@ TEST-SA-FR1-F1-E1-B200 40 MHz TDD F1+E1 SA tasks - 1 333333 300000 @@ -50,6 +49,7 @@ 310002 330201 200000 + 222222 @@ -67,6 +67,7 @@ Terminate_UE + true Terminate Quectel idefix @@ -77,12 +78,13 @@ Detach_UE + true Detach Quectel idefix Create_Workspace - Creating new Workspace + Create new Workspace 0 0 @@ -119,6 +121,7 @@ Custom_Command + true Enable Sleep States ofqot sudo cpupower idle-set -E @@ -202,7 +205,8 @@ Undeploy_Object - Undeploy CU-DU + true + Undeploy CUCP/CU-UP/DU ci-scripts/yaml_files/sa_e1_b200_gnb 0 0 @@ -210,5 +214,12 @@ 10,100,100,100 + + Clean_Test_Server_Images + true + Clean Test Images on Test Server + 0 + + diff --git a/ci-scripts/xml_files/container_sa_e1_b200_terminate.xml b/ci-scripts/xml_files/container_sa_e1_b200_terminate.xml deleted file mode 100644 index ae61c1b6ce..0000000000 --- a/ci-scripts/xml_files/container_sa_e1_b200_terminate.xml +++ /dev/null @@ -1,61 +0,0 @@ - - - TEST-SA-FR1-F1-E1-B200-terminate - Tear-down - tasks - 1 - - 010001 - 010002 - 330201 - 222222 - - - - - Detach_UE - Detach UE - idefix - - - Terminate_UE - Terminate Quectel - idefix - - - - Undeploy_Object - Undeploy CU-CP/CU-UP/DU - ci-scripts/yaml_files/sa_e1_b200_gnb - 0 - 0 - - - - Clean_Test_Server_Images - Clean Test Images on Test Server - 0 - - - diff --git a/ci-scripts/xml_files/container_sa_f1_b200_quectel.xml b/ci-scripts/xml_files/container_sa_f1_b200_quectel.xml index 5f4a09dd83..e03180e236 100644 --- a/ci-scripts/xml_files/container_sa_f1_b200_quectel.xml +++ b/ci-scripts/xml_files/container_sa_f1_b200_quectel.xml @@ -24,8 +24,8 @@ TEST-SA-FR1-F1-B200 10 MHz FDD F1 SA tasks - 1 + 111111 100000 110002 800813 @@ -57,9 +57,17 @@ 100001 130201 200000 + 222222 + + Pull_Local_Registry + Pull Images from Local Registry + 0 + oai-gnb + + Initialize_UE Initialize Quectel @@ -67,6 +75,7 @@ Terminate_UE + true Terminate Quectel idefix @@ -77,12 +86,13 @@ Detach_UE + true Detach Quectel idefix Create_Workspace - Creating new Workspace + Create new Workspace 0 0 @@ -111,6 +121,7 @@ Custom_Command + true Enable Sleep States ofqot sudo cpupower idle-set -E @@ -227,6 +238,7 @@ Undeploy_Object + true Undeploy CU-DU ci-scripts/yaml_files/sa_f1_b200_gnb 0 @@ -235,5 +247,12 @@ 10,100,100,100 + + Clean_Test_Server_Images + true + Clean Test Images on Test Server + 0 + + diff --git a/ci-scripts/xml_files/container_sa_f1_b200_terminate.xml b/ci-scripts/xml_files/container_sa_f1_b200_terminate.xml deleted file mode 100644 index df02f63b7f..0000000000 --- a/ci-scripts/xml_files/container_sa_f1_b200_terminate.xml +++ /dev/null @@ -1,54 +0,0 @@ - - - TEST-SA-FR1-F1-B200-terminate - Tear-down - tasks - 1 - - 010001 - 010002 - 230201 - - - - - Detach_UE - Detach UE - idefix - - - Terminate_UE - Terminate Quectel - idefix - - - - Undeploy_Object - Undeploy CU-DU - ci-scripts/yaml_files/sa_f1_b200_gnb - 0 - 0 - - - diff --git a/ci-scripts/xml_files/container_sa_fhi72_vvdn_up2.xml b/ci-scripts/xml_files/container_sa_fhi72_vvdn_up2.xml index 2b3b02fb2b..215fe3ea26 100644 --- a/ci-scripts/xml_files/container_sa_fhi72_vvdn_up2.xml +++ b/ci-scripts/xml_files/container_sa_fhi72_vvdn_up2.xml @@ -24,7 +24,6 @@ test-5g-fhi72-vvdn 100 MHz TDD SA VVDN tasks - 1 200000 110000 @@ -40,14 +39,16 @@ 103000 100002 130000 + 777777 + 888888 - Custom_Command + Custom_Script Setup sriov and network interfaces VVDN cacofonix - /opt/FHI7.2/setup_sriov_vvdn.sh + yes @@ -59,7 +60,7 @@ Create_Workspace - Creating new Workspace for server 0 + Create new Workspace for server 0 0 0 @@ -128,6 +129,7 @@ Detach_UE + true Detach UE up2-fhi72 @@ -140,10 +142,28 @@ Undeploy_Object + true Undeploy gNB ci-scripts/yaml_files/sa_fhi_7.2_vvdn_gnb 0 0 + + Clean_Test_Server_Images + true + Clean Test Images on Test Server + 0 + + + + Custom_Script + true + Set CPU to idle state, set kernel parameters to default values + cacofonix + + yes + + + diff --git a/ci-scripts/xml_files/container_sa_fhi72_vvdn_up2_cleanup.xml b/ci-scripts/xml_files/container_sa_fhi72_vvdn_up2_cleanup.xml deleted file mode 100644 index 1a9aecfc8a..0000000000 --- a/ci-scripts/xml_files/container_sa_fhi72_vvdn_up2_cleanup.xml +++ /dev/null @@ -1,63 +0,0 @@ - - - cleanup-fhi72-vvdn - Cleanup VVDN - trash - - 555555 - 666666 - 777777 - 888888 - - - - - Detach_UE - Detach UE - up2-fhi72 - - - - Undeploy_Object - Undeploy gNB - ci-scripts/yaml_files/sa_fhi_7.2_vvdn_gnb - 0 - 0 - - - - Clean_Test_Server_Images - Clean Test Images on Test Server - 0 - - - - Custom_Command - Set CPU to idle state, set kernel parameters to default values - cacofonix - /opt/FHI7.2/setup_cleanup.sh - yes - - - diff --git a/ci-scripts/xml_files/container_sa_n310_2X2_100MHz_cleanup.xml b/ci-scripts/xml_files/container_sa_n310_2X2_100MHz_cleanup.xml deleted file mode 100644 index eb62cdbdd3..0000000000 --- a/ci-scripts/xml_files/container_sa_n310_2X2_100MHz_cleanup.xml +++ /dev/null @@ -1,55 +0,0 @@ - - - test-cleanup - CleanUp SA 2x2 - trash - - 011111 - 022222 - 033333 - - - - - Detach_UE - Detach UE - up2 - - - - Undeploy_Object - Undeploy gNB - ci-scripts/yaml_files/5g_sa_n310_2x2_100MHz - 0 - 0 - oai-gnb - - - - Clean_Test_Server_Images - Clean Test Images on Test Server - 0 - - - diff --git a/ci-scripts/xml_files/container_sa_n310_2X2_100MHz_quectel.xml b/ci-scripts/xml_files/container_sa_n310_2X2_100MHz_quectel.xml index 643f0a0ab0..6b7c8a92ec 100644 --- a/ci-scripts/xml_files/container_sa_n310_2X2_100MHz_quectel.xml +++ b/ci-scripts/xml_files/container_sa_n310_2X2_100MHz_quectel.xml @@ -24,7 +24,6 @@ TEST-SA-FR1-N310-2x2-100MHz 100 MHz TDD SA 2x2 tasks - 1 100000 111111 @@ -40,6 +39,7 @@ 000001 040201 200000 + 033333 @@ -59,6 +59,7 @@ Custom_Command + true Enable Sleep States matix sudo cpupower idle-set -E @@ -72,12 +73,13 @@ Detach_UE + true Detach UE up2 Create_Workspace - Creating new Workspace + Create new Workspace 0 0 @@ -140,6 +142,7 @@ Undeploy_Object + true Undeploy gNB ci-scripts/yaml_files/5g_sa_n310_2x2_100MHz 0 @@ -149,5 +152,12 @@ 10,100,100,100 + + Clean_Test_Server_Images + true + Clean Test Images on Test Server + 0 + + diff --git a/ci-scripts/xml_files/container_sa_n310_2X2_60MHz_cleanup.xml b/ci-scripts/xml_files/container_sa_n310_2X2_60MHz_cleanup.xml deleted file mode 100644 index 3efd2f7be8..0000000000 --- a/ci-scripts/xml_files/container_sa_n310_2X2_60MHz_cleanup.xml +++ /dev/null @@ -1,55 +0,0 @@ - - - test-cleanup - CleanUp SA 2x2 - trash - - 111111 - 222222 - 333333 - - - - - Detach_UE - Detach UE - up2 - - - - Undeploy_Object - Undeploy gNB - ci-scripts/yaml_files/5g_sa_n310_2x2_60MHz - 0 - 0 - oai-gnb - - - - Clean_Test_Server_Images - Clean Test Images on Test Server - 0 - - - diff --git a/ci-scripts/xml_files/container_sa_n310_2X2_60MHz_quectel.xml b/ci-scripts/xml_files/container_sa_n310_2X2_60MHz_quectel.xml index c5b12e7ac3..c94c30a7b2 100644 --- a/ci-scripts/xml_files/container_sa_n310_2X2_60MHz_quectel.xml +++ b/ci-scripts/xml_files/container_sa_n310_2X2_60MHz_quectel.xml @@ -24,7 +24,6 @@ TEST-SA-FR1-N310-2x2-60MHz 60 MHz 2x2 TDD SA tasks - 1 100000 111111 @@ -40,6 +39,7 @@ 000001 030201 200000 + 333333 @@ -59,6 +59,7 @@ Custom_Command + true Enable Sleep States matix sudo cpupower idle-set -E @@ -72,12 +73,13 @@ Detach_UE + true Detach UE up2 Create_Workspace - Creating new Workspace + Create new Workspace 0 0 @@ -140,6 +142,7 @@ Undeploy_Object + true Undeploy gNB ci-scripts/yaml_files/5g_sa_n310_2x2_60MHz 0 @@ -149,5 +152,12 @@ 10,100,100,100 + + Clean_Test_Server_Images + true + Clean Test Images on Test Server + 0 + + diff --git a/ci-scripts/xml_files/container_sa_n310_nrue.xml b/ci-scripts/xml_files/container_sa_n310_nrue.xml index 92be5590b3..a358bbf5f8 100644 --- a/ci-scripts/xml_files/container_sa_n310_nrue.xml +++ b/ci-scripts/xml_files/container_sa_n310_nrue.xml @@ -24,7 +24,6 @@ TEST-5G-NRUE 40 MHz TDD SA tasks - 1 010000 010001 800813 @@ -37,6 +36,8 @@ 000100 000200 040001 040000 + 333333 + 444444 @@ -69,7 +70,7 @@ Create_Workspace - Creating new Workspace + Create new Workspace 0 0 @@ -82,7 +83,7 @@ Create_Workspace - Creating new Workspace + Create new Workspace 1 1 @@ -140,6 +141,7 @@ Undeploy_Object + true Undeploy gNB ci-scripts/yaml_files/5g_sa_n310_gnb 0 @@ -150,10 +152,25 @@ Undeploy_Object + true Undeploy nr UE ci-scripts/yaml_files/5g_sa_n310_nrue 1 1 + + Clean_Test_Server_Images + true + Clean Test Images on Test Server + 0 + + + + Clean_Test_Server_Images + true + Clean Test Images on Test Server + 1 + + diff --git a/ci-scripts/xml_files/container_sa_n310_nrue_cleanup.xml b/ci-scripts/xml_files/container_sa_n310_nrue_cleanup.xml deleted file mode 100644 index 035e38a40d..0000000000 --- a/ci-scripts/xml_files/container_sa_n310_nrue_cleanup.xml +++ /dev/null @@ -1,64 +0,0 @@ - - - test-aw2s-cleanup - CleanUp of test servers - trash - - 111111 - 222222 - 333333 - 444444 - - - - - Undeploy_Object - Undeploy gNB - ci-scripts/yaml_files/5g_sa_n310_gnb - 0 - 0 - - - - Undeploy_Object - Undeploy nr UE - ci-scripts/yaml_files/5g_sa_n310_nrue - 1 - 1 - - - - Clean_Test_Server_Images - Clean Test Images on Test Server - 0 - - - - Clean_Test_Server_Images - Clean Test Images on Test Server - 1 - - - - diff --git a/ci-scripts/xml_files/container_sa_sc_b200_quectel.xml b/ci-scripts/xml_files/container_sa_sc_b200_quectel.xml index fd59e20574..54df2fa1a4 100644 --- a/ci-scripts/xml_files/container_sa_sc_b200_quectel.xml +++ b/ci-scripts/xml_files/container_sa_sc_b200_quectel.xml @@ -24,7 +24,6 @@ TEST-SA-FR1-SC-FDMA-B200 40 MHz TDD SA with SC-FDMA tasks - 1 300000 311111 @@ -47,6 +46,7 @@ 210002 230201 400000 + 222222 @@ -65,6 +65,7 @@ Custom_Command + true Enable Sleep States ofqot sudo cpupower idle-set -E @@ -77,6 +78,7 @@ Terminate_UE + true Terminate Quectel idefix @@ -87,12 +89,13 @@ Detach_UE + true Detach UE idefix Create_Workspace - Creating new Workspace + Create new Workspace 0 0 @@ -198,6 +201,7 @@ Undeploy_Object + true Undeploy gNB ci-scripts/yaml_files/sa_sc_b200_gnb 0 @@ -206,5 +210,12 @@ 10,100,100,100 + + Clean_Test_Server_Images + true + Clean Test Images on Test Server + 0 + + diff --git a/ci-scripts/xml_files/container_sa_sc_b200_terminate.xml b/ci-scripts/xml_files/container_sa_sc_b200_terminate.xml deleted file mode 100644 index f47c16258f..0000000000 --- a/ci-scripts/xml_files/container_sa_sc_b200_terminate.xml +++ /dev/null @@ -1,54 +0,0 @@ - - - TEST-SA-FR1-B200-terminate - Tear-down - tasks - 1 - - 010001 - 010002 - 030201 - - - - - Detach_UE - Detach UE - idefix - - - Terminate_UE - Terminate Quectel - idefix - - - - Undeploy_Object - Undeploy gNB - ci-scripts/yaml_files/sa_sc_b200_gnb - 0 - 0 - - - diff --git a/ci-scripts/xml_files/cppcheck.xml b/ci-scripts/xml_files/cppcheck.xml index 6ec7a58e55..18d8760b0d 100644 --- a/ci-scripts/xml_files/cppcheck.xml +++ b/ci-scripts/xml_files/cppcheck.xml @@ -31,7 +31,7 @@ Create_Workspace - Creating new Workspace + Create new Workspace Cppcheck_Analysis diff --git a/ci-scripts/xml_files/fr1_enb_build.xml b/ci-scripts/xml_files/fr1_enb_build.xml deleted file mode 100644 index 6ea1ccfd29..0000000000 --- a/ci-scripts/xml_files/fr1_enb_build.xml +++ /dev/null @@ -1,58 +0,0 @@ - - - build-tab - Build - wrench - - 100000 - 000001 - 000002 - - - - - Build_eNB - Build eNB - -w USRP -c --eNB --ninja - 0 - 0 - True - True - - - - WaitEndBuild_eNB - Wait for end of Build eNB - 0 - 0 - - - - Custom_Command - To reboot USRP - obelix - ssh root@172.21.19.13 reboot ; sleep 45 - - - diff --git a/ci-scripts/xml_files/fr1_nsa_2x2_quectel.xml b/ci-scripts/xml_files/fr1_nsa_2x2_quectel.xml index 5ca01a196e..3efff2f0c7 100644 --- a/ci-scripts/xml_files/fr1_nsa_2x2_quectel.xml +++ b/ci-scripts/xml_files/fr1_nsa_2x2_quectel.xml @@ -24,7 +24,6 @@ TEST-NSA-FR1-TM2-Tab1 NSA 2x2 Ping DL UL with QUECTEL tasks - 1 100000 700000 @@ -58,6 +57,7 @@ Custom_Command + true Enable Sleep States (obelix) obelix sudo cpupower idle-set -E @@ -70,6 +70,7 @@ Custom_Command + true Enable Sleep States (asterix) asterix sudo cpupower idle-set -E @@ -82,6 +83,7 @@ Terminate_UE + true Terminate Quectel nrmodule2_quectel @@ -92,6 +94,7 @@ Detach_UE + true Detach Quectel nrmodule2_quectel @@ -123,7 +126,7 @@ Custom_Command - To reboot USRP + Reboot USRP asterix ssh root@172.21.19.14 reboot ; sleep 45 @@ -184,6 +187,7 @@ Terminate_eNB + true Terminate eNB 0 0 @@ -192,6 +196,7 @@ Terminate_eNB + true Terminate gNB 1 1 diff --git a/ci-scripts/xml_files/fr1_nsa_2x2_quectel_attach_detach.xml b/ci-scripts/xml_files/fr1_nsa_2x2_quectel_attach_detach.xml index f859cd1be9..170bb6443b 100644 --- a/ci-scripts/xml_files/fr1_nsa_2x2_quectel_attach_detach.xml +++ b/ci-scripts/xml_files/fr1_nsa_2x2_quectel_attach_detach.xml @@ -24,7 +24,6 @@ TEST-NSA-FR1-TM2-Tab2 NSA 2x2 Attach-Detach with QUECTEL tasks - 1 100000 300000 @@ -63,6 +62,7 @@ Terminate_UE + true Terminate Quectel nrmodule2_quectel @@ -85,6 +85,7 @@ Custom_Command + true Enable Sleep States (asterix) asterix sudo cpupower idle-set -E @@ -97,6 +98,7 @@ Custom_Command + true Enable Sleep States (obelix) obelix sudo cpupower idle-set -E @@ -152,6 +154,7 @@ Terminate_eNB + true Terminate eNB 0 0 @@ -160,6 +163,7 @@ Terminate_eNB + true Terminate gNB 1 1 diff --git a/ci-scripts/xml_files/fr1_nsa_quectel.xml b/ci-scripts/xml_files/fr1_nsa_quectel.xml index 1a08d33ecf..755f3ad969 100644 --- a/ci-scripts/xml_files/fr1_nsa_quectel.xml +++ b/ci-scripts/xml_files/fr1_nsa_quectel.xml @@ -24,7 +24,6 @@ TEST-NSA-FR1-TM1 NSA Ping DL UL with QUECTEL tasks - 1 100000 200000 @@ -92,6 +91,7 @@ Terminate_UE + true Terminate Quectel idefix @@ -102,6 +102,7 @@ Detach_UE + true Detach Quectel idefix @@ -175,6 +176,7 @@ Terminate_eNB + true Terminate eNB 0 0 @@ -183,6 +185,7 @@ Terminate_eNB + true Terminate gNB 1 1 diff --git a/ci-scripts/xml_files/fr1_nsa_quectel_attach_detach.xml b/ci-scripts/xml_files/fr1_nsa_quectel_attach_detach.xml index 261e2623dd..66bcf54be2 100644 --- a/ci-scripts/xml_files/fr1_nsa_quectel_attach_detach.xml +++ b/ci-scripts/xml_files/fr1_nsa_quectel_attach_detach.xml @@ -24,7 +24,6 @@ TEST-NSA-FR1-TM1 NSA Ping Attach Detach with QUECTEL tasks - 1 030000 040000 @@ -58,6 +57,7 @@ Terminate_UE + true Terminate Quectel idefix @@ -140,6 +140,7 @@ Terminate_eNB + true Terminate eNB 0 0 @@ -148,6 +149,7 @@ Terminate_eNB + true Terminate gNB 1 1 diff --git a/ci-scripts/xml_files/fr1_nsa_quectel_long.xml b/ci-scripts/xml_files/fr1_nsa_quectel_long.xml index cccbd3fa41..aebf6bf668 100644 --- a/ci-scripts/xml_files/fr1_nsa_quectel_long.xml +++ b/ci-scripts/xml_files/fr1_nsa_quectel_long.xml @@ -24,7 +24,6 @@ TEST-NSA-FR1-TM1 NSA Ping DL UL with QUECTEL (Longer) tasks - 1 030000 040000 @@ -54,6 +53,7 @@ Terminate_UE + true Terminate Quectel idefix @@ -64,6 +64,7 @@ Detach_UE + true Detach Quectel idefix @@ -137,6 +138,7 @@ Terminate_eNB + true Terminate eNB 0 0 @@ -145,6 +147,7 @@ Terminate_eNB + true Terminate gNB 1 1 diff --git a/ci-scripts/xml_files/gnb_phytest_usrp_run.xml b/ci-scripts/xml_files/gnb_phytest_usrp_run.xml index 83e7d23f04..88f5079b68 100644 --- a/ci-scripts/xml_files/gnb_phytest_usrp_run.xml +++ b/ci-scripts/xml_files/gnb_phytest_usrp_run.xml @@ -24,7 +24,6 @@ gNB-PHY-Test-40 Timing phytest 40 MHz tasks - 1 100000 090101 000001 090109 200000 @@ -37,6 +36,7 @@ Custom_Command + true Enable Sleep States caracal sudo cpupower idle-set -E @@ -61,6 +61,7 @@ Terminate_eNB + true Terminate gNB NR diff --git a/ci-scripts/xml_files/gnb_phytest_usrp_run_100_2x2.xml b/ci-scripts/xml_files/gnb_phytest_usrp_run_100_2x2.xml index fdad18d099..f81d747bfe 100644 --- a/ci-scripts/xml_files/gnb_phytest_usrp_run_100_2x2.xml +++ b/ci-scripts/xml_files/gnb_phytest_usrp_run_100_2x2.xml @@ -24,7 +24,6 @@ gNB-PHY-Test-100-2x2 Timing phytest 100 MHz 2x2 tasks - 1 100000 390101 000001 390109 200000 @@ -37,6 +36,7 @@ Custom_Command + true Enable Sleep States caracal sudo cpupower idle-set -E @@ -61,6 +61,7 @@ Terminate_eNB + true Terminate gNB NR diff --git a/ci-scripts/xml_files/gnb_phytest_usrp_run_60.xml b/ci-scripts/xml_files/gnb_phytest_usrp_run_60.xml index 31be6e8ac4..4b0fec92e2 100644 --- a/ci-scripts/xml_files/gnb_phytest_usrp_run_60.xml +++ b/ci-scripts/xml_files/gnb_phytest_usrp_run_60.xml @@ -24,7 +24,6 @@ gNB-PHY-Test-60 Timing phytest 60 MHz tasks - 1 100000 190101 000001 190109 200000 @@ -37,6 +36,7 @@ Custom_Command + true Enable Sleep States caracal sudo cpupower idle-set -E @@ -61,6 +61,7 @@ Terminate_eNB + true Terminate gNB NR diff --git a/ci-scripts/xml_files/gnb_phytest_usrp_run_60_2x2.xml b/ci-scripts/xml_files/gnb_phytest_usrp_run_60_2x2.xml index 09dbbd7757..f9e298127f 100644 --- a/ci-scripts/xml_files/gnb_phytest_usrp_run_60_2x2.xml +++ b/ci-scripts/xml_files/gnb_phytest_usrp_run_60_2x2.xml @@ -24,7 +24,6 @@ gNB-PHY-Test-60-2x2 Timing phytest 60 MHz 2x2 tasks - 1 100000 290101 000001 290109 200000 @@ -37,6 +36,7 @@ Custom_Command + true Enable Sleep States caracal sudo cpupower idle-set -E @@ -61,6 +61,7 @@ Terminate_eNB + true Terminate gNB NR diff --git a/ci-scripts/xml_files/gnb_usrp_build.xml b/ci-scripts/xml_files/gnb_usrp_build.xml index 769128967a..f67098116b 100644 --- a/ci-scripts/xml_files/gnb_usrp_build.xml +++ b/ci-scripts/xml_files/gnb_usrp_build.xml @@ -24,24 +24,29 @@ gnb-build-tab Build-gNB wrench - 1 100000 +000000 010101 + + Create_Workspace + Create new Workspace + + TesteNB Build_eNB Build gNB (USRP) - --gNB -w USRP --ninja -c -P --build-lib "ldpc_cuda ldpc_t2" --cmake-opt -DASN1C_EXEC=/opt/asn1c/bin/asn1c + --gNB -w USRP --ninja -c -P --build-lib ldpc_cuda --build-lib ldpc_t2 --cmake-opt -DASN1C_EXEC=/opt/asn1c/bin/asn1c True Custom_Command - To reboot USRP + Reboot USRP caracal ssh root@192.168.20.2 reboot diff --git a/ci-scripts/xml_files/ldpc_gpu_test.xml b/ci-scripts/xml_files/ldpc_gpu_test.xml index 78d147b2fa..d50a841b16 100644 --- a/ci-scripts/xml_files/ldpc_gpu_test.xml +++ b/ci-scripts/xml_files/ldpc_gpu_test.xml @@ -25,7 +25,6 @@ test-ldpc-gpu Test-ldpc-GPU tasks - 1 000002 000003 000004 000005 000006 000007 000008 000009 000010 000011 000012 000013 000014 000015 000016 000017 000018 000019 000020 000021 diff --git a/ci-scripts/xml_files/physim_build_source.xml b/ci-scripts/xml_files/physim_build_source.xml index f062ca53ce..7ba2a06800 100644 --- a/ci-scripts/xml_files/physim_build_source.xml +++ b/ci-scripts/xml_files/physim_build_source.xml @@ -23,7 +23,6 @@ build-offload Build physical simulators tasks - 1 000001 diff --git a/ci-scripts/xml_files/sa_cn5g_asue_start.xml b/ci-scripts/xml_files/sa_cn5g_asue_start.xml index 3ae4aff9fc..a9d3a88d5d 100644 --- a/ci-scripts/xml_files/sa_cn5g_asue_start.xml +++ b/ci-scripts/xml_files/sa_cn5g_asue_start.xml @@ -39,7 +39,7 @@ Custom_Command - To reboot USRP + Reboot USRP asterix ssh root@172.21.19.14 reboot ; sleep 45 diff --git a/ci-scripts/xml_files/t2_offload_dec_nr_ulsim.xml b/ci-scripts/xml_files/t2_offload_dec_nr_ulsim.xml index 3b991bafe3..b7125f100b 100644 --- a/ci-scripts/xml_files/t2_offload_dec_nr_ulsim.xml +++ b/ci-scripts/xml_files/t2_offload_dec_nr_ulsim.xml @@ -23,7 +23,6 @@ test-t2-offload-dec Test T2 Offload Decoder tasks - 1 010111 010112 010121 010122 010131 010132 010211 010212 010221 010222 010231 010232 diff --git a/ci-scripts/xml_files/t2_offload_enc_nr_dlsim.xml b/ci-scripts/xml_files/t2_offload_enc_nr_dlsim.xml index debf1aebf1..9a9b7b2437 100644 --- a/ci-scripts/xml_files/t2_offload_enc_nr_dlsim.xml +++ b/ci-scripts/xml_files/t2_offload_enc_nr_dlsim.xml @@ -23,7 +23,6 @@ test-t2-offload-enc Test T2 Offload Encoder tasks - 1 000111 000112 000121 000122 000131 000132 000211 000212 000221 000222 000231 000232 diff --git a/ci-scripts/yaml_files/4g_l2sim_fdd/docker-compose.yml b/ci-scripts/yaml_files/4g_l2sim_fdd/docker-compose.yml index 0595a180cd..c02b009eea 100644 --- a/ci-scripts/yaml_files/4g_l2sim_fdd/docker-compose.yml +++ b/ci-scripts/yaml_files/4g_l2sim_fdd/docker-compose.yml @@ -178,7 +178,7 @@ services: retries: 5 oai_enb: - image: oaisoftwarealliance/oai-enb:develop + image: ${REGISTRY:-oaisoftwarealliance}/oai-enb:${TAG:-develop} privileged: true container_name: l2sim4g-oai-enb network_mode: "host" @@ -210,7 +210,7 @@ services: retries: 5 oai_ue1: - image: oaisoftwarealliance/oai-lte-ue:develop + image: ${REGISTRY:-oaisoftwarealliance}/oai-lte-ue:${TAG:-develop} privileged: true container_name: l2sim4g-oai-lte-ue1 network_mode: "host" @@ -229,7 +229,7 @@ services: retries: 5 oai_ue2: - image: oaisoftwarealliance/oai-lte-ue:develop + image: ${REGISTRY:-oaisoftwarealliance}/oai-lte-ue:${TAG:-develop} privileged: true container_name: l2sim4g-oai-lte-ue2 network_mode: "host" diff --git a/ci-scripts/yaml_files/4g_rfsimulator_fdd_05MHz/docker-compose.yml b/ci-scripts/yaml_files/4g_rfsimulator_fdd_05MHz/docker-compose.yml index d1f3d439ac..97c4ee82ab 100644 --- a/ci-scripts/yaml_files/4g_rfsimulator_fdd_05MHz/docker-compose.yml +++ b/ci-scripts/yaml_files/4g_rfsimulator_fdd_05MHz/docker-compose.yml @@ -178,7 +178,7 @@ services: retries: 5 oai_enb0: - image: oaisoftwarealliance/oai-enb:develop + image: ${REGISTRY:-oaisoftwarealliance}/oai-enb:${TAG:-develop} privileged: true container_name: rfsim4g-oai-enb networks: @@ -196,7 +196,7 @@ services: retries: 5 oai_ue0: - image: oaisoftwarealliance/oai-lte-ue:develop + image: ${REGISTRY:-oaisoftwarealliance}/oai-lte-ue:${TAG:-develop} privileged: true container_name: rfsim4g-oai-lte-ue0 networks: diff --git a/ci-scripts/yaml_files/4g_rfsimulator_fdd_05MHz_noS1/docker-compose.yml b/ci-scripts/yaml_files/4g_rfsimulator_fdd_05MHz_noS1/docker-compose.yml index 6f9049c503..2bc0e97a35 100644 --- a/ci-scripts/yaml_files/4g_rfsimulator_fdd_05MHz_noS1/docker-compose.yml +++ b/ci-scripts/yaml_files/4g_rfsimulator_fdd_05MHz_noS1/docker-compose.yml @@ -1,6 +1,6 @@ services: oai_enb0: - image: oaisoftwarealliance/oai-enb:develop + image: ${REGISTRY:-oaisoftwarealliance}/oai-enb:${TAG:-develop} privileged: true container_name: rfsim4g-oai-enb networks: @@ -18,7 +18,7 @@ services: retries: 5 oai_ue0: - image: oaisoftwarealliance/oai-lte-ue:develop + image: ${REGISTRY:-oaisoftwarealliance}/oai-lte-ue:${TAG:-develop} privileged: true container_name: rfsim4g-oai-lte-ue0 networks: diff --git a/ci-scripts/yaml_files/4g_rfsimulator_fdd_10MHz/docker-compose.yml b/ci-scripts/yaml_files/4g_rfsimulator_fdd_10MHz/docker-compose.yml index 65f2431f4c..c77dfdfd27 100644 --- a/ci-scripts/yaml_files/4g_rfsimulator_fdd_10MHz/docker-compose.yml +++ b/ci-scripts/yaml_files/4g_rfsimulator_fdd_10MHz/docker-compose.yml @@ -178,7 +178,7 @@ services: retries: 5 oai_enb0: - image: oaisoftwarealliance/oai-enb:develop + image: ${REGISTRY:-oaisoftwarealliance}/oai-enb:${TAG:-develop} privileged: true container_name: rfsim4g-oai-enb networks: @@ -196,7 +196,7 @@ services: retries: 5 oai_ue0: - image: oaisoftwarealliance/oai-lte-ue:develop + image: ${REGISTRY:-oaisoftwarealliance}/oai-lte-ue:${TAG:-develop} privileged: true container_name: rfsim4g-oai-lte-ue0 networks: diff --git a/ci-scripts/yaml_files/4g_rfsimulator_fdd_20MHz/docker-compose.yml b/ci-scripts/yaml_files/4g_rfsimulator_fdd_20MHz/docker-compose.yml index 778700ee3b..25e3d797bb 100644 --- a/ci-scripts/yaml_files/4g_rfsimulator_fdd_20MHz/docker-compose.yml +++ b/ci-scripts/yaml_files/4g_rfsimulator_fdd_20MHz/docker-compose.yml @@ -178,7 +178,7 @@ services: retries: 5 oai_enb0: - image: oaisoftwarealliance/oai-enb:develop + image: ${REGISTRY:-oaisoftwarealliance}/oai-enb:${TAG:-develop} privileged: true container_name: rfsim4g-oai-enb networks: @@ -196,7 +196,7 @@ services: retries: 5 oai_ue0: - image: oaisoftwarealliance/oai-lte-ue:develop + image: ${REGISTRY:-oaisoftwarealliance}/oai-lte-ue:${TAG:-develop} privileged: true container_name: rfsim4g-oai-lte-ue0 networks: diff --git a/ci-scripts/yaml_files/4g_rfsimulator_fembms/docker-compose.yml b/ci-scripts/yaml_files/4g_rfsimulator_fembms/docker-compose.yml index 62e5356115..da5399d5e6 100644 --- a/ci-scripts/yaml_files/4g_rfsimulator_fembms/docker-compose.yml +++ b/ci-scripts/yaml_files/4g_rfsimulator_fembms/docker-compose.yml @@ -1,6 +1,6 @@ services: oai_enb0: - image: oaisoftwarealliance/oai-enb:develop + image: ${REGISTRY:-oaisoftwarealliance}/oai-enb:${TAG:-develop} privileged: true container_name: rfsim4g-oai-enb networks: @@ -18,7 +18,7 @@ services: retries: 5 oai_ue0: - image: oaisoftwarealliance/oai-lte-ue:develop + image: ${REGISTRY:-oaisoftwarealliance}/oai-lte-ue:${TAG:-develop} privileged: true container_name: rfsim4g-oai-lte-ue0 networks: diff --git a/ci-scripts/yaml_files/4g_rfsimulator_mbms/docker-compose.yml b/ci-scripts/yaml_files/4g_rfsimulator_mbms/docker-compose.yml index 7fd381e5d5..d3a2f02ab2 100644 --- a/ci-scripts/yaml_files/4g_rfsimulator_mbms/docker-compose.yml +++ b/ci-scripts/yaml_files/4g_rfsimulator_mbms/docker-compose.yml @@ -1,6 +1,6 @@ services: oai_enb0: - image: oaisoftwarealliance/oai-enb:develop + image: ${REGISTRY:-oaisoftwarealliance}/oai-enb:${TAG:-develop} privileged: true container_name: rfsim4g-oai-enb networks: @@ -18,7 +18,7 @@ services: retries: 5 oai_ue0: - image: oaisoftwarealliance/oai-lte-ue:develop + image: ${REGISTRY:-oaisoftwarealliance}/oai-lte-ue:${TAG:-develop} privileged: true container_name: rfsim4g-oai-lte-ue0 networks: diff --git a/ci-scripts/yaml_files/4g_rfsimulator_tdd_05MHz/docker-compose.yml b/ci-scripts/yaml_files/4g_rfsimulator_tdd_05MHz/docker-compose.yml index 789caffb99..a3ce6f4de6 100644 --- a/ci-scripts/yaml_files/4g_rfsimulator_tdd_05MHz/docker-compose.yml +++ b/ci-scripts/yaml_files/4g_rfsimulator_tdd_05MHz/docker-compose.yml @@ -178,7 +178,7 @@ services: retries: 5 oai_enb0: - image: oaisoftwarealliance/oai-enb:develop + image: ${REGISTRY:-oaisoftwarealliance}/oai-enb:${TAG:-develop} privileged: true container_name: rfsim4g-oai-enb networks: @@ -196,7 +196,7 @@ services: retries: 5 oai_ue0: - image: oaisoftwarealliance/oai-lte-ue:develop + image: ${REGISTRY:-oaisoftwarealliance}/oai-lte-ue:${TAG:-develop} privileged: true container_name: rfsim4g-oai-lte-ue0 networks: diff --git a/ci-scripts/yaml_files/5g_f1_rfsimulator/docker-compose.yaml b/ci-scripts/yaml_files/5g_f1_rfsimulator/docker-compose.yaml index 7eb3998fdd..16d78139b1 100644 --- a/ci-scripts/yaml_files/5g_f1_rfsimulator/docker-compose.yaml +++ b/ci-scripts/yaml_files/5g_f1_rfsimulator/docker-compose.yaml @@ -83,7 +83,7 @@ services: retries: 5 oai-cu: - image: oaisoftwarealliance/oai-gnb:develop + image: ${REGISTRY:-oaisoftwarealliance}/${GNB_IMG:-oai-gnb}:${TAG:-develop} container_name: rfsim5g-oai-cu cap_drop: - ALL @@ -104,7 +104,7 @@ services: retries: 5 oai-du: - image: oaisoftwarealliance/oai-gnb:develop + image: ${REGISTRY:-oaisoftwarealliance}/${GNB_IMG:-oai-gnb}:${TAG:-develop} container_name: rfsim5g-oai-du cap_drop: - ALL @@ -129,7 +129,7 @@ services: retries: 5 oai-nr-ue: - image: oaisoftwarealliance/oai-nr-ue:develop + image: ${REGISTRY:-oaisoftwarealliance}/${NRUE_IMG:-oai-nr-ue}:${TAG:-develop} container_name: rfsim5g-oai-nr-ue cap_drop: - ALL diff --git a/ci-scripts/yaml_files/5g_fdd_rfsimulator/docker-compose.yaml b/ci-scripts/yaml_files/5g_fdd_rfsimulator/docker-compose.yaml index 11e1fc4534..d284312482 100644 --- a/ci-scripts/yaml_files/5g_fdd_rfsimulator/docker-compose.yaml +++ b/ci-scripts/yaml_files/5g_fdd_rfsimulator/docker-compose.yaml @@ -81,7 +81,7 @@ services: timeout: 5s retries: 5 oai-gnb: - image: oaisoftwarealliance/oai-gnb:develop + image: ${REGISTRY:-oaisoftwarealliance}/${GNB_IMG:-oai-gnb}:${TAG:-develop} container_name: rfsim5g-oai-gnb cap_drop: - ALL @@ -101,7 +101,7 @@ services: timeout: 5s retries: 5 oai-nr-ue: - image: oaisoftwarealliance/oai-nr-ue:develop + image: ${REGISTRY:-oaisoftwarealliance}/${NRUE_IMG:-oai-nr-ue}:${TAG:-develop} container_name: rfsim5g-oai-nr-ue cap_drop: - ALL diff --git a/ci-scripts/yaml_files/5g_l2sim_tdd/docker-compose.yaml b/ci-scripts/yaml_files/5g_l2sim_tdd/docker-compose.yaml index d56239d0b4..67f64983d2 100644 --- a/ci-scripts/yaml_files/5g_l2sim_tdd/docker-compose.yaml +++ b/ci-scripts/yaml_files/5g_l2sim_tdd/docker-compose.yaml @@ -81,7 +81,7 @@ services: timeout: 5s retries: 5 oai-gnb: - image: oaisoftwarealliance/oai-gnb:develop + image: ${REGISTRY:-oaisoftwarealliance}/${GNB_IMG:-oai-gnb}:${TAG:-develop} container_name: "l2sim-oai-gnb" cap_drop: - ALL @@ -119,7 +119,7 @@ services: retries: 5 oai-nr-ue0: - image: oaisoftwarealliance/oai-nr-ue:develop + image: ${REGISTRY:-oaisoftwarealliance}/${NRUE_IMG:-oai-nr-ue}:${TAG:-develop} container_name: "l2sim-oai-nr-ue0" cap_drop: - ALL diff --git a/ci-scripts/yaml_files/5g_rfsimulator/docker-compose.yaml b/ci-scripts/yaml_files/5g_rfsimulator/docker-compose.yaml index edee7895ca..4e7001638f 100644 --- a/ci-scripts/yaml_files/5g_rfsimulator/docker-compose.yaml +++ b/ci-scripts/yaml_files/5g_rfsimulator/docker-compose.yaml @@ -81,7 +81,7 @@ services: timeout: 5s retries: 5 oai-gnb: - image: oaisoftwarealliance/oai-gnb:develop + image: ${REGISTRY:-oaisoftwarealliance}/${GNB_IMG:-oai-gnb}:${TAG:-develop} container_name: rfsim5g-oai-gnb cap_drop: - ALL @@ -101,7 +101,7 @@ services: timeout: 5s retries: 5 oai-nr-ue: - image: oaisoftwarealliance/oai-nr-ue:develop + image: ${REGISTRY:-oaisoftwarealliance}/${NRUE_IMG:-oai-nr-ue}:${TAG:-develop} container_name: rfsim5g-oai-nr-ue cap_drop: - ALL @@ -125,7 +125,7 @@ services: timeout: 5s retries: 5 oai-nr-ue2: - image: oaisoftwarealliance/oai-nr-ue:develop + image: ${REGISTRY:-oaisoftwarealliance}/${NRUE_IMG:-oai-nr-ue}:${TAG:-develop} container_name: rfsim5g-oai-nr-ue2 cap_drop: - ALL @@ -149,7 +149,7 @@ services: timeout: 5s retries: 5 oai-nr-ue3: - image: oaisoftwarealliance/oai-nr-ue:develop + image: ${REGISTRY:-oaisoftwarealliance}/${NRUE_IMG:-oai-nr-ue}:${TAG:-develop} container_name: rfsim5g-oai-nr-ue3 cap_drop: - ALL @@ -173,7 +173,7 @@ services: timeout: 5s retries: 5 oai-nr-ue4: - image: oaisoftwarealliance/oai-nr-ue:develop + image: ${REGISTRY:-oaisoftwarealliance}/${NRUE_IMG:-oai-nr-ue}:${TAG:-develop} container_name: rfsim5g-oai-nr-ue4 cap_drop: - ALL @@ -197,7 +197,7 @@ services: timeout: 5s retries: 5 oai-nr-ue5: - image: oaisoftwarealliance/oai-nr-ue:develop + image: ${REGISTRY:-oaisoftwarealliance}/${NRUE_IMG:-oai-nr-ue}:${TAG:-develop} container_name: rfsim5g-oai-nr-ue5 cap_drop: - ALL @@ -221,7 +221,7 @@ services: timeout: 5s retries: 5 oai-nr-ue6: - image: oaisoftwarealliance/oai-nr-ue:develop + image: ${REGISTRY:-oaisoftwarealliance}/${NRUE_IMG:-oai-nr-ue}:${TAG:-develop} container_name: rfsim5g-oai-nr-ue6 cap_drop: - ALL @@ -245,7 +245,7 @@ services: timeout: 5s retries: 5 oai-nr-ue7: - image: oaisoftwarealliance/oai-nr-ue:develop + image: ${REGISTRY:-oaisoftwarealliance}/${NRUE_IMG:-oai-nr-ue}:${TAG:-develop} container_name: rfsim5g-oai-nr-ue7 cap_drop: - ALL @@ -269,7 +269,7 @@ services: timeout: 5s retries: 5 oai-nr-ue8: - image: oaisoftwarealliance/oai-nr-ue:develop + image: ${REGISTRY:-oaisoftwarealliance}/${NRUE_IMG:-oai-nr-ue}:${TAG:-develop} container_name: rfsim5g-oai-nr-ue8 cap_drop: - ALL @@ -293,7 +293,7 @@ services: timeout: 5s retries: 5 oai-nr-ue9: - image: oaisoftwarealliance/oai-nr-ue:develop + image: ${REGISTRY:-oaisoftwarealliance}/${NRUE_IMG:-oai-nr-ue}:${TAG:-develop} container_name: rfsim5g-oai-nr-ue9 cap_drop: - ALL @@ -317,7 +317,7 @@ services: timeout: 5s retries: 5 oai-nr-ue10: - image: oaisoftwarealliance/oai-nr-ue:develop + image: ${REGISTRY:-oaisoftwarealliance}/${NRUE_IMG:-oai-nr-ue}:${TAG:-develop} container_name: rfsim5g-oai-nr-ue10 cap_drop: - ALL diff --git a/ci-scripts/yaml_files/5g_rfsimulator_24prb/docker-compose.yaml b/ci-scripts/yaml_files/5g_rfsimulator_24prb/docker-compose.yaml index 86573d0227..29f2618365 100644 --- a/ci-scripts/yaml_files/5g_rfsimulator_24prb/docker-compose.yaml +++ b/ci-scripts/yaml_files/5g_rfsimulator_24prb/docker-compose.yaml @@ -81,7 +81,7 @@ services: timeout: 5s retries: 5 oai-gnb: - image: oaisoftwarealliance/oai-gnb:develop + image: ${REGISTRY:-oaisoftwarealliance}/${GNB_IMG:-oai-gnb}:${TAG:-develop} container_name: rfsim5g-oai-gnb cap_drop: - ALL @@ -101,7 +101,7 @@ services: timeout: 5s retries: 5 oai-nr-ue: - image: oaisoftwarealliance/oai-nr-ue:develop + image: ${REGISTRY:-oaisoftwarealliance}/${NRUE_IMG:-oai-nr-ue}:${TAG:-develop} container_name: rfsim5g-oai-nr-ue cap_drop: - ALL diff --git a/ci-scripts/yaml_files/5g_rfsimulator_2x2/docker-compose.yaml b/ci-scripts/yaml_files/5g_rfsimulator_2x2/docker-compose.yaml index 29600aa655..e611ec3a1a 100644 --- a/ci-scripts/yaml_files/5g_rfsimulator_2x2/docker-compose.yaml +++ b/ci-scripts/yaml_files/5g_rfsimulator_2x2/docker-compose.yaml @@ -81,7 +81,7 @@ services: timeout: 5s retries: 5 oai-gnb: - image: oaisoftwarealliance/oai-gnb:develop + image: ${REGISTRY:-oaisoftwarealliance}/${GNB_IMG:-oai-gnb}:${TAG:-develop} container_name: rfsim5g-oai-gnb cap_drop: - ALL @@ -102,7 +102,7 @@ services: retries: 5 oai-nr-ue: - image: oaisoftwarealliance/oai-nr-ue:develop + image: ${REGISTRY:-oaisoftwarealliance}/${NRUE_IMG:-oai-nr-ue}:${TAG:-develop} container_name: rfsim5g-oai-nr-ue cap_drop: - ALL diff --git a/ci-scripts/yaml_files/5g_rfsimulator_accelleran/docker-compose.yaml b/ci-scripts/yaml_files/5g_rfsimulator_accelleran/docker-compose.yaml index daaec8e5ee..8ecb2f9c91 100644 --- a/ci-scripts/yaml_files/5g_rfsimulator_accelleran/docker-compose.yaml +++ b/ci-scripts/yaml_files/5g_rfsimulator_accelleran/docker-compose.yaml @@ -1,6 +1,6 @@ services: oai-du: - image: oaisoftwarealliance/oai-gnb:develop + image: ${REGISTRY:-oaisoftwarealliance}/${GNB_IMG:-oai-gnb}:${TAG:-develop} container_name: rfsim5g-oai-du cap_drop: - ALL @@ -15,7 +15,7 @@ services: timeout: 5s retries: 5 oai-nr-ue: - image: oaisoftwarealliance/oai-nr-ue:develop + image: ${REGISTRY:-oaisoftwarealliance}/${NRUE_IMG:-oai-nr-ue}:${TAG:-develop} container_name: rfsim5g-oai-nr-ue cap_drop: - ALL diff --git a/ci-scripts/yaml_files/5g_rfsimulator_e1/docker-compose.yaml b/ci-scripts/yaml_files/5g_rfsimulator_e1/docker-compose.yaml index 92f04bc074..8c937ed76c 100644 --- a/ci-scripts/yaml_files/5g_rfsimulator_e1/docker-compose.yaml +++ b/ci-scripts/yaml_files/5g_rfsimulator_e1/docker-compose.yaml @@ -65,7 +65,7 @@ services: ipv4_address: 192.168.72.134 oai-cucp: - image: oaisoftwarealliance/oai-gnb:develop + image: ${REGISTRY:-oaisoftwarealliance}/${GNB_IMG:-oai-gnb}:${TAG:-develop} container_name: rfsim5g-oai-cucp cap_drop: - ALL @@ -92,7 +92,7 @@ services: retries: 5 oai-cuup: - image: oaisoftwarealliance/oai-nr-cuup:develop + image: ${REGISTRY:-oaisoftwarealliance}/${NRCUUP_IMG:-oai-nr-cuup}:${TAG:-develop} container_name: rfsim5g-oai-cuup cap_drop: - ALL @@ -121,7 +121,7 @@ services: retries: 5 oai-cuup2: - image: oaisoftwarealliance/oai-nr-cuup:develop + image: ${REGISTRY:-oaisoftwarealliance}/${NRCUUP_IMG:-oai-nr-cuup}:${TAG:-develop} container_name: rfsim5g-oai-cuup2 cap_drop: - ALL @@ -153,7 +153,7 @@ services: retries: 5 oai-cuup3: - image: oaisoftwarealliance/oai-nr-cuup:develop + image: ${REGISTRY:-oaisoftwarealliance}/${NRCUUP_IMG:-oai-nr-cuup}:${TAG:-develop} container_name: rfsim5g-oai-cuup3 cap_drop: - ALL @@ -185,7 +185,7 @@ services: retries: 5 oai-du: - image: oaisoftwarealliance/oai-gnb:develop + image: ${REGISTRY:-oaisoftwarealliance}/${GNB_IMG:-oai-gnb}:${TAG:-develop} container_name: rfsim5g-oai-du cap_drop: - ALL @@ -214,7 +214,7 @@ services: retries: 5 oai-du2: - image: oaisoftwarealliance/oai-gnb:develop + image: ${REGISTRY:-oaisoftwarealliance}/${GNB_IMG:-oai-gnb}:${TAG:-develop} container_name: rfsim5g-oai-du2 cap_drop: - ALL @@ -246,7 +246,7 @@ services: retries: 5 oai-du3: - image: oaisoftwarealliance/oai-gnb:develop + image: ${REGISTRY:-oaisoftwarealliance}/${GNB_IMG:-oai-gnb}:${TAG:-develop} container_name: rfsim5g-oai-du3 cap_drop: - ALL @@ -278,7 +278,7 @@ services: retries: 5 oai-nr-ue: - image: oaisoftwarealliance/oai-nr-ue:develop + image: ${REGISTRY:-oaisoftwarealliance}/${NRUE_IMG:-oai-nr-ue}:${TAG:-develop} container_name: rfsim5g-oai-nr-ue cap_drop: - ALL @@ -306,7 +306,7 @@ services: retries: 5 oai-nr-ue2: - image: oaisoftwarealliance/oai-nr-ue:develop + image: ${REGISTRY:-oaisoftwarealliance}/${NRUE_IMG:-oai-nr-ue}:${TAG:-develop} container_name: rfsim5g-oai-nr-ue2 cap_drop: - ALL @@ -334,7 +334,7 @@ services: retries: 5 oai-nr-ue3: - image: oaisoftwarealliance/oai-nr-ue:develop + image: ${REGISTRY:-oaisoftwarealliance}/${NRUE_IMG:-oai-nr-ue}:${TAG:-develop} container_name: rfsim5g-oai-nr-ue3 cap_drop: - ALL diff --git a/ci-scripts/yaml_files/5g_rfsimulator_fdd_phytest/docker-compose.yaml b/ci-scripts/yaml_files/5g_rfsimulator_fdd_phytest/docker-compose.yaml index b60c34e945..1dec021ffc 100644 --- a/ci-scripts/yaml_files/5g_rfsimulator_fdd_phytest/docker-compose.yaml +++ b/ci-scripts/yaml_files/5g_rfsimulator_fdd_phytest/docker-compose.yaml @@ -1,6 +1,6 @@ services: oai-gnb: - image: oaisoftwarealliance/oai-gnb:develop + image: ${REGISTRY:-oaisoftwarealliance}/${GNB_IMG:-oai-gnb}:${TAG:-develop} container_name: rfsim5g-oai-gnb cap_drop: - ALL @@ -25,7 +25,7 @@ services: retries: 5 oai-nr-ue: - image: oaisoftwarealliance/oai-nr-ue:develop + image: ${REGISTRY:-oaisoftwarealliance}/${NRUE_IMG:-oai-nr-ue}:${TAG:-develop} container_name: rfsim5g-oai-nr-ue cap_drop: - ALL diff --git a/ci-scripts/yaml_files/5g_rfsimulator_fr2_32prb/docker-compose.yaml b/ci-scripts/yaml_files/5g_rfsimulator_fr2_32prb/docker-compose.yaml index 22900465b6..de43f8742e 100644 --- a/ci-scripts/yaml_files/5g_rfsimulator_fr2_32prb/docker-compose.yaml +++ b/ci-scripts/yaml_files/5g_rfsimulator_fr2_32prb/docker-compose.yaml @@ -82,7 +82,7 @@ services: retries: 5 oai-gnb: - image: oaisoftwarealliance/oai-gnb:develop + image: ${REGISTRY:-oaisoftwarealliance}/${GNB_IMG:-oai-gnb}:${TAG:-develop} container_name: rfsim5g-oai-gnb cap_drop: - ALL @@ -101,7 +101,7 @@ services: retries: 5 oai-nr-ue: - image: oaisoftwarealliance/oai-nr-ue:develop + image: ${REGISTRY:-oaisoftwarealliance}/${NRUE_IMG:-oai-nr-ue}:${TAG:-develop} container_name: rfsim5g-oai-nr-ue cap_drop: - ALL diff --git a/ci-scripts/yaml_files/5g_rfsimulator_ntn_geo/docker-compose.yaml b/ci-scripts/yaml_files/5g_rfsimulator_ntn_geo/docker-compose.yaml index 983969d840..581dd266c0 100644 --- a/ci-scripts/yaml_files/5g_rfsimulator_ntn_geo/docker-compose.yaml +++ b/ci-scripts/yaml_files/5g_rfsimulator_ntn_geo/docker-compose.yaml @@ -81,7 +81,7 @@ services: timeout: 5s retries: 5 oai-gnb: - image: oaisoftwarealliance/oai-gnb:develop + image: ${REGISTRY:-oaisoftwarealliance}/${GNB_IMG:-oai-gnb}:${TAG:-develop} container_name: rfsim5g-oai-gnb cap_drop: - ALL @@ -102,7 +102,7 @@ services: retries: 5 oai-nr-ue: - image: oaisoftwarealliance/oai-nr-ue:develop + image: ${REGISTRY:-oaisoftwarealliance}/${NRUE_IMG:-oai-nr-ue}:${TAG:-develop} container_name: rfsim5g-oai-nr-ue cap_drop: - ALL diff --git a/ci-scripts/yaml_files/5g_rfsimulator_sidelink/docker-compose.yaml b/ci-scripts/yaml_files/5g_rfsimulator_sidelink/docker-compose.yaml index 684962b0a6..35e6a4eee9 100644 --- a/ci-scripts/yaml_files/5g_rfsimulator_sidelink/docker-compose.yaml +++ b/ci-scripts/yaml_files/5g_rfsimulator_sidelink/docker-compose.yaml @@ -1,6 +1,6 @@ services: oai-nr-ue-1: - image: oaisoftwarealliance/oai-nr-ue:develop + image: ${REGISTRY:-oaisoftwarealliance}/${NRUE_IMG:-oai-nr-ue}:${TAG:-develop} container_name: rfsim5g-oai-nr-ue-1 cap_drop: - ALL @@ -23,7 +23,7 @@ services: retries: 5 oai-nr-ue-2: - image: oaisoftwarealliance/oai-nr-ue:develop + image: ${REGISTRY:-oaisoftwarealliance}/${NRUE_IMG:-oai-nr-ue}:${TAG:-develop} container_name: rfsim5g-oai-nr-ue-2 cap_drop: - ALL diff --git a/ci-scripts/yaml_files/5g_rfsimulator_tdd_dora/docker-compose.yaml b/ci-scripts/yaml_files/5g_rfsimulator_tdd_dora/docker-compose.yaml index f5a3d9a042..89f6562697 100644 --- a/ci-scripts/yaml_files/5g_rfsimulator_tdd_dora/docker-compose.yaml +++ b/ci-scripts/yaml_files/5g_rfsimulator_tdd_dora/docker-compose.yaml @@ -1,6 +1,6 @@ services: oai-gnb: - image: oaisoftwarealliance/oai-gnb:develop + image: ${REGISTRY:-oaisoftwarealliance}/${GNB_IMG:-oai-gnb}:${TAG:-develop} container_name: rfsim5g-oai-gnb cap_drop: - ALL @@ -25,7 +25,7 @@ services: retries: 5 oai-nr-ue: - image: oaisoftwarealliance/oai-nr-ue:develop + image: ${REGISTRY:-oaisoftwarealliance}/${NRUE_IMG:-oai-nr-ue}:${TAG:-develop} container_name: rfsim5g-oai-nr-ue cap_drop: - ALL diff --git a/ci-scripts/yaml_files/5g_rfsimulator_u0_25prb/docker-compose.yaml b/ci-scripts/yaml_files/5g_rfsimulator_u0_25prb/docker-compose.yaml index 2ae4874eee..197c43a476 100644 --- a/ci-scripts/yaml_files/5g_rfsimulator_u0_25prb/docker-compose.yaml +++ b/ci-scripts/yaml_files/5g_rfsimulator_u0_25prb/docker-compose.yaml @@ -81,7 +81,7 @@ services: timeout: 5s retries: 5 oai-gnb: - image: oaisoftwarealliance/oai-gnb:develop + image: ${REGISTRY:-oaisoftwarealliance}/${GNB_IMG:-oai-gnb}:${TAG:-develop} container_name: rfsim5g-oai-gnb cap_drop: - ALL @@ -102,7 +102,7 @@ services: retries: 5 oai-nr-ue: - image: oaisoftwarealliance/oai-nr-ue:develop + image: ${REGISTRY:-oaisoftwarealliance}/${NRUE_IMG:-oai-nr-ue}:${TAG:-develop} container_name: rfsim5g-oai-nr-ue cap_drop: - ALL diff --git a/ci-scripts/yaml_files/5g_sa_n310_2x2_100MHz/docker-compose.yml b/ci-scripts/yaml_files/5g_sa_n310_2x2_100MHz/docker-compose.yml index decdf813e9..6d597d3a86 100644 --- a/ci-scripts/yaml_files/5g_sa_n310_2x2_100MHz/docker-compose.yml +++ b/ci-scripts/yaml_files/5g_sa_n310_2x2_100MHz/docker-compose.yml @@ -1,6 +1,6 @@ services: oai-gnb: - image: oaisoftwarealliance/oai-gnb:develop + image: ${REGISTRY:-oaisoftwarealliance}/${GNB_IMG:-oai-gnb}:${TAG:-develop} network_mode: "host" container_name: oai-gnb cap_drop: diff --git a/ci-scripts/yaml_files/5g_sa_n310_2x2_60MHz/docker-compose.yml b/ci-scripts/yaml_files/5g_sa_n310_2x2_60MHz/docker-compose.yml index f827b83cad..43211d7381 100644 --- a/ci-scripts/yaml_files/5g_sa_n310_2x2_60MHz/docker-compose.yml +++ b/ci-scripts/yaml_files/5g_sa_n310_2x2_60MHz/docker-compose.yml @@ -1,6 +1,6 @@ services: oai-gnb: - image: oaisoftwarealliance/oai-gnb:develop + image: ${REGISTRY:-oaisoftwarealliance}/${GNB_IMG:-oai-gnb}:${TAG:-develop} network_mode: "host" container_name: oai-gnb cap_drop: diff --git a/ci-scripts/yaml_files/5g_sa_n310_gnb/docker-compose.yml b/ci-scripts/yaml_files/5g_sa_n310_gnb/docker-compose.yml index cf2ea3742c..330b4b022b 100644 --- a/ci-scripts/yaml_files/5g_sa_n310_gnb/docker-compose.yml +++ b/ci-scripts/yaml_files/5g_sa_n310_gnb/docker-compose.yml @@ -1,6 +1,6 @@ services: oai-gnb: - image: oaisoftwarealliance/oai-gnb:develop + image: ${REGISTRY:-oaisoftwarealliance}/${GNB_IMG:-oai-gnb}:${TAG:-develop} network_mode: "host" container_name: oai-gnb cap_drop: diff --git a/ci-scripts/yaml_files/5g_sa_n310_nrue/docker-compose.yml b/ci-scripts/yaml_files/5g_sa_n310_nrue/docker-compose.yml index 5c4c005fdb..0cf5db7dc4 100644 --- a/ci-scripts/yaml_files/5g_sa_n310_nrue/docker-compose.yml +++ b/ci-scripts/yaml_files/5g_sa_n310_nrue/docker-compose.yml @@ -1,6 +1,6 @@ services: oai-nr-ue: - image: oaisoftwarealliance/oai-nr-ue:develop + image: ${REGISTRY:-oaisoftwarealliance}/${NRUE_IMG:-oai-nr-ue}:${TAG:-develop} network_mode: host container_name: oai-nr-ue cap_drop: diff --git a/ci-scripts/yaml_files/fr1_enb_mono_fdd_tim/docker-compose.yml b/ci-scripts/yaml_files/fr1_enb_mono_fdd_tim/docker-compose.yml index e0ae4d3472..4c40d738a4 100644 --- a/ci-scripts/yaml_files/fr1_enb_mono_fdd_tim/docker-compose.yml +++ b/ci-scripts/yaml_files/fr1_enb_mono_fdd_tim/docker-compose.yml @@ -1,6 +1,6 @@ services: enb_mono_fdd: - image: oaisoftwarealliance/oai-enb:develop + image: ${REGISTRY:-oaisoftwarealliance}/oai-enb:${TAG:-develop} privileged: true container_name: prod-enb-mono-fdd environment: diff --git a/ci-scripts/yaml_files/lte_b200_fdd_05Mhz_if4.5/docker-compose.yml b/ci-scripts/yaml_files/lte_b200_fdd_05Mhz_if4.5/docker-compose.yml index f611e8b37c..d15a9df172 100644 --- a/ci-scripts/yaml_files/lte_b200_fdd_05Mhz_if4.5/docker-compose.yml +++ b/ci-scripts/yaml_files/lte_b200_fdd_05Mhz_if4.5/docker-compose.yml @@ -1,6 +1,6 @@ services: rru_fdd: - image: oaisoftwarealliance/oai-enb:develop + image: ${REGISTRY:-oaisoftwarealliance}/oai-enb:${TAG:-develop} privileged: true container_name: lte-b200-rru-fdd-05Mhz-tm1 network_mode: "host" @@ -17,7 +17,7 @@ services: timeout: 5s retries: 5 rcc_fdd: - image: oaisoftwarealliance/oai-enb:develop + image: ${REGISTRY:-oaisoftwarealliance}/oai-enb:${TAG:-develop} privileged: true container_name: lte-b200-rcc-fdd-05Mhz-tm1 network_mode: "host" diff --git a/ci-scripts/yaml_files/lte_b200_fdd_05Mhz_tm1/docker-compose.yml b/ci-scripts/yaml_files/lte_b200_fdd_05Mhz_tm1/docker-compose.yml index e411f6403d..2a6e7bb51a 100644 --- a/ci-scripts/yaml_files/lte_b200_fdd_05Mhz_tm1/docker-compose.yml +++ b/ci-scripts/yaml_files/lte_b200_fdd_05Mhz_tm1/docker-compose.yml @@ -1,6 +1,6 @@ services: enb_mono_fdd: - image: oaisoftwarealliance/oai-enb:develop + image: ${REGISTRY:-oaisoftwarealliance}/oai-enb:${TAG:-develop} privileged: true container_name: lte-b200-enb-fdd-05Mhz-tm1 environment: diff --git a/ci-scripts/yaml_files/lte_b200_fdd_05Mhz_tm1_no_rrc_activity/docker-compose.yml b/ci-scripts/yaml_files/lte_b200_fdd_05Mhz_tm1_no_rrc_activity/docker-compose.yml index 3545c60579..7cdc585d34 100644 --- a/ci-scripts/yaml_files/lte_b200_fdd_05Mhz_tm1_no_rrc_activity/docker-compose.yml +++ b/ci-scripts/yaml_files/lte_b200_fdd_05Mhz_tm1_no_rrc_activity/docker-compose.yml @@ -1,6 +1,6 @@ services: enb_mono_fdd: - image: oaisoftwarealliance/oai-enb:develop + image: ${REGISTRY:-oaisoftwarealliance}/oai-enb:${TAG:-develop} privileged: true container_name: lte-b200-enb-fdd-05Mhz-tm1 environment: diff --git a/ci-scripts/yaml_files/lte_b200_fdd_10Mhz_oai_ue_magma/docker-compose.yml b/ci-scripts/yaml_files/lte_b200_fdd_10Mhz_oai_ue_magma/docker-compose.yml index 074d331f65..c6d64cc028 100644 --- a/ci-scripts/yaml_files/lte_b200_fdd_10Mhz_oai_ue_magma/docker-compose.yml +++ b/ci-scripts/yaml_files/lte_b200_fdd_10Mhz_oai_ue_magma/docker-compose.yml @@ -1,6 +1,6 @@ services: lte_ue0: - image: oaisoftwarealliance/oai-lte-ue:develop + image: ${REGISTRY:-oaisoftwarealliance}/oai-lte-ue:${TAG:-develop} privileged: true container_name: lte-b200-ue-fdd-10Mhz-tm1 environment: diff --git a/ci-scripts/yaml_files/lte_b200_fdd_10Mhz_tm1/docker-compose.yml b/ci-scripts/yaml_files/lte_b200_fdd_10Mhz_tm1/docker-compose.yml index 2d57d8f089..14d1045de8 100644 --- a/ci-scripts/yaml_files/lte_b200_fdd_10Mhz_tm1/docker-compose.yml +++ b/ci-scripts/yaml_files/lte_b200_fdd_10Mhz_tm1/docker-compose.yml @@ -1,6 +1,6 @@ services: enb_mono_fdd: - image: oaisoftwarealliance/oai-enb:develop + image: ${REGISTRY:-oaisoftwarealliance}/oai-enb:${TAG:-develop} privileged: true container_name: lte-b200-enb-fdd-10Mhz-tm1 environment: diff --git a/ci-scripts/yaml_files/lte_b200_fdd_10Mhz_tm1_cdrx/docker-compose.yml b/ci-scripts/yaml_files/lte_b200_fdd_10Mhz_tm1_cdrx/docker-compose.yml index 8ba616aea3..d1fcd91850 100644 --- a/ci-scripts/yaml_files/lte_b200_fdd_10Mhz_tm1_cdrx/docker-compose.yml +++ b/ci-scripts/yaml_files/lte_b200_fdd_10Mhz_tm1_cdrx/docker-compose.yml @@ -1,6 +1,6 @@ services: enb_mono_fdd: - image: oaisoftwarealliance/oai-enb:develop + image: ${REGISTRY:-oaisoftwarealliance}/oai-enb:${TAG:-develop} privileged: true container_name: lte-b200-enb-fdd-10Mhz-tm1 environment: diff --git a/ci-scripts/yaml_files/lte_b200_fdd_10Mhz_tm1_magma/docker-compose.yml b/ci-scripts/yaml_files/lte_b200_fdd_10Mhz_tm1_magma/docker-compose.yml index 3c7d511b77..6b1b583863 100644 --- a/ci-scripts/yaml_files/lte_b200_fdd_10Mhz_tm1_magma/docker-compose.yml +++ b/ci-scripts/yaml_files/lte_b200_fdd_10Mhz_tm1_magma/docker-compose.yml @@ -1,6 +1,6 @@ services: enb_mono_fdd: - image: oaisoftwarealliance/oai-enb:develop + image: ${REGISTRY:-oaisoftwarealliance}/oai-enb:${TAG:-develop} privileged: true container_name: lte-b200-enb-fdd-10Mhz-tm1 environment: diff --git a/ci-scripts/yaml_files/lte_b200_fdd_20Mhz_tm1/docker-compose.yml b/ci-scripts/yaml_files/lte_b200_fdd_20Mhz_tm1/docker-compose.yml index d98b9670de..a36afb957e 100644 --- a/ci-scripts/yaml_files/lte_b200_fdd_20Mhz_tm1/docker-compose.yml +++ b/ci-scripts/yaml_files/lte_b200_fdd_20Mhz_tm1/docker-compose.yml @@ -1,6 +1,6 @@ services: enb_mono_fdd: - image: oaisoftwarealliance/oai-enb:develop + image: ${REGISTRY:-oaisoftwarealliance}/oai-enb:${TAG:-develop} privileged: true container_name: lte-b200-enb-fdd-20Mhz-tm1 environment: diff --git a/ci-scripts/yaml_files/lte_b200_tdd_05Mhz_if4.5/docker-compose.yml b/ci-scripts/yaml_files/lte_b200_tdd_05Mhz_if4.5/docker-compose.yml index 67d97f6b80..0311390ab7 100644 --- a/ci-scripts/yaml_files/lte_b200_tdd_05Mhz_if4.5/docker-compose.yml +++ b/ci-scripts/yaml_files/lte_b200_tdd_05Mhz_if4.5/docker-compose.yml @@ -1,6 +1,6 @@ services: rru_tdd: - image: oaisoftwarealliance/oai-enb:develop + image: ${REGISTRY:-oaisoftwarealliance}/oai-enb:${TAG:-develop} privileged: true container_name: lte-b200-rru-tdd-05Mhz-tm1 network_mode: "host" @@ -17,7 +17,7 @@ services: timeout: 5s retries: 5 rcc_tdd: - image: oaisoftwarealliance/oai-enb:develop + image: ${REGISTRY:-oaisoftwarealliance}/oai-enb:${TAG:-develop} privileged: true container_name: lte-b200-rcc-tdd-05Mhz-tm1 network_mode: "host" diff --git a/ci-scripts/yaml_files/lte_b200_tdd_05Mhz_tm1/docker-compose.yml b/ci-scripts/yaml_files/lte_b200_tdd_05Mhz_tm1/docker-compose.yml index edb6f34f70..68f48d7087 100644 --- a/ci-scripts/yaml_files/lte_b200_tdd_05Mhz_tm1/docker-compose.yml +++ b/ci-scripts/yaml_files/lte_b200_tdd_05Mhz_tm1/docker-compose.yml @@ -1,6 +1,6 @@ services: enb_mono_tdd: - image: oaisoftwarealliance/oai-enb:develop + image: ${REGISTRY:-oaisoftwarealliance}/oai-enb:${TAG:-develop} privileged: true container_name: lte-b200-enb-tdd-05Mhz-tm1 environment: diff --git a/ci-scripts/yaml_files/lte_b200_tdd_05Mhz_tm2/docker-compose.yml b/ci-scripts/yaml_files/lte_b200_tdd_05Mhz_tm2/docker-compose.yml index 6a6523969a..b11b268129 100644 --- a/ci-scripts/yaml_files/lte_b200_tdd_05Mhz_tm2/docker-compose.yml +++ b/ci-scripts/yaml_files/lte_b200_tdd_05Mhz_tm2/docker-compose.yml @@ -1,6 +1,6 @@ services: enb_mono_tdd: - image: oaisoftwarealliance/oai-enb:develop + image: ${REGISTRY:-oaisoftwarealliance}/oai-enb:${TAG:-develop} privileged: true container_name: lte-b200-enb-tdd-05Mhz-tm2 environment: diff --git a/ci-scripts/yaml_files/lte_b200_tdd_10Mhz_tm1/docker-compose.yml b/ci-scripts/yaml_files/lte_b200_tdd_10Mhz_tm1/docker-compose.yml index 8144caeea2..7934784cdc 100644 --- a/ci-scripts/yaml_files/lte_b200_tdd_10Mhz_tm1/docker-compose.yml +++ b/ci-scripts/yaml_files/lte_b200_tdd_10Mhz_tm1/docker-compose.yml @@ -1,6 +1,6 @@ services: enb_mono_tdd: - image: oaisoftwarealliance/oai-enb:develop + image: ${REGISTRY:-oaisoftwarealliance}/oai-enb:${TAG:-develop} privileged: true container_name: lte-b200-enb-tdd-10Mhz-tm1 environment: diff --git a/ci-scripts/yaml_files/lte_b200_tdd_20Mhz_tm1/docker-compose.yml b/ci-scripts/yaml_files/lte_b200_tdd_20Mhz_tm1/docker-compose.yml index 5c8827bfe8..0bca3bc43a 100644 --- a/ci-scripts/yaml_files/lte_b200_tdd_20Mhz_tm1/docker-compose.yml +++ b/ci-scripts/yaml_files/lte_b200_tdd_20Mhz_tm1/docker-compose.yml @@ -1,6 +1,6 @@ services: enb_mono_tdd: - image: oaisoftwarealliance/oai-enb:develop + image: ${REGISTRY:-oaisoftwarealliance}/oai-enb:${TAG:-develop} privileged: true container_name: lte-b200-enb-tdd-20Mhz-tm1 environment: diff --git a/ci-scripts/yaml_files/lte_b200_tdd_20Mhz_tm1_default_scheduler/docker-compose.yml b/ci-scripts/yaml_files/lte_b200_tdd_20Mhz_tm1_default_scheduler/docker-compose.yml index bae9a753f4..953cce7ffc 100644 --- a/ci-scripts/yaml_files/lte_b200_tdd_20Mhz_tm1_default_scheduler/docker-compose.yml +++ b/ci-scripts/yaml_files/lte_b200_tdd_20Mhz_tm1_default_scheduler/docker-compose.yml @@ -1,6 +1,6 @@ services: enb_mono_tdd: - image: oaisoftwarealliance/oai-enb:develop + image: ${REGISTRY:-oaisoftwarealliance}/oai-enb:${TAG:-develop} privileged: true container_name: lte-b200-enb-tdd-20Mhz-tm1 environment: diff --git a/ci-scripts/yaml_files/lte_n3xx_tdd_2x2_tm1/docker-compose.yml b/ci-scripts/yaml_files/lte_n3xx_tdd_2x2_tm1/docker-compose.yml index cd66a7be7a..5ac5b93d14 100644 --- a/ci-scripts/yaml_files/lte_n3xx_tdd_2x2_tm1/docker-compose.yml +++ b/ci-scripts/yaml_files/lte_n3xx_tdd_2x2_tm1/docker-compose.yml @@ -1,6 +1,6 @@ services: oai-enb: - image: oaisoftwarealliance/oai-enb:develop + image: ${REGISTRY:-oaisoftwarealliance}/oai-enb:${TAG:-develop} privileged: true container_name: oai-enb environment: diff --git a/ci-scripts/yaml_files/lte_n3xx_tdd_2x2_tm2/docker-compose.yml b/ci-scripts/yaml_files/lte_n3xx_tdd_2x2_tm2/docker-compose.yml index 07f9e00b5c..929c9633c7 100644 --- a/ci-scripts/yaml_files/lte_n3xx_tdd_2x2_tm2/docker-compose.yml +++ b/ci-scripts/yaml_files/lte_n3xx_tdd_2x2_tm2/docker-compose.yml @@ -1,6 +1,6 @@ services: oai-enb: - image: oaisoftwarealliance/oai-enb:develop + image: ${REGISTRY:-oaisoftwarealliance}/oai-enb:${TAG:-develop} privileged: true container_name: oai-enb environment: diff --git a/ci-scripts/yaml_files/nsa_b200_enb/docker-compose.yml b/ci-scripts/yaml_files/nsa_b200_enb/docker-compose.yml index fac36481bc..76790c44f9 100644 --- a/ci-scripts/yaml_files/nsa_b200_enb/docker-compose.yml +++ b/ci-scripts/yaml_files/nsa_b200_enb/docker-compose.yml @@ -1,6 +1,6 @@ services: enb_mono_fdd: - image: oaisoftwarealliance/oai-enb:develop + image: ${REGISTRY:-oaisoftwarealliance}/oai-enb:${TAG:-develop} privileged: true container_name: nsa-b200-enb ulimits: diff --git a/ci-scripts/yaml_files/nsa_b200_gnb/docker-compose.yml b/ci-scripts/yaml_files/nsa_b200_gnb/docker-compose.yml index 6945d33cd3..28bf0bc1f3 100644 --- a/ci-scripts/yaml_files/nsa_b200_gnb/docker-compose.yml +++ b/ci-scripts/yaml_files/nsa_b200_gnb/docker-compose.yml @@ -1,6 +1,6 @@ services: gnb_mono_tdd: - image: oaisoftwarealliance/oai-gnb:develop + image: ${REGISTRY:-oaisoftwarealliance}/${GNB_IMG:-oai-gnb}:${TAG:-develop} container_name: nsa-b200-gnb cap_drop: - ALL diff --git a/ci-scripts/yaml_files/sa_aw2s_gnb/docker-compose.yml b/ci-scripts/yaml_files/sa_aw2s_gnb/docker-compose.yml index 05499f0678..03b9914404 100644 --- a/ci-scripts/yaml_files/sa_aw2s_gnb/docker-compose.yml +++ b/ci-scripts/yaml_files/sa_aw2s_gnb/docker-compose.yml @@ -1,6 +1,6 @@ services: oai-gnb: - image: oaisoftwarealliance/oai-gnb-aw2s:develop + image: ${REGISTRY:-oaisoftwarealliance}/oai-gnb-aw2s:${TAG:-develop} network_mode: "host" container_name: oai-gnb-aw2s cap_drop: diff --git a/ci-scripts/yaml_files/sa_b200_gnb/docker-compose.yml b/ci-scripts/yaml_files/sa_b200_gnb/docker-compose.yml index 3f884ff809..b11fc2d7fa 100644 --- a/ci-scripts/yaml_files/sa_b200_gnb/docker-compose.yml +++ b/ci-scripts/yaml_files/sa_b200_gnb/docker-compose.yml @@ -1,6 +1,6 @@ services: gnb_mono_tdd: - image: oaisoftwarealliance/oai-gnb:develop + image: ${REGISTRY:-oaisoftwarealliance}/${GNB_IMG:-oai-gnb}:${TAG:-develop} container_name: sa-b200-gnb cap_drop: - ALL diff --git a/ci-scripts/yaml_files/sa_e1_b200_gnb/docker-compose.yml b/ci-scripts/yaml_files/sa_e1_b200_gnb/docker-compose.yml index 83bbbdc7c4..83b8360b8f 100644 --- a/ci-scripts/yaml_files/sa_e1_b200_gnb/docker-compose.yml +++ b/ci-scripts/yaml_files/sa_e1_b200_gnb/docker-compose.yml @@ -1,6 +1,6 @@ services: gnb_cucp: - image: oaisoftwarealliance/oai-gnb:develop + image: ${REGISTRY:-oaisoftwarealliance}/${GNB_IMG:-oai-gnb}:${TAG:-develop} container_name: sa-cucp-gnb cap_drop: - ALL @@ -25,7 +25,7 @@ services: retries: 5 gnb_cuup: - image: oaisoftwarealliance/oai-nr-cuup:develop + image: ${REGISTRY:-oaisoftwarealliance}/${NRCUUP_IMG:-oai-nr-cuup}:${TAG:-develop} container_name: sa-cuup-gnb cap_drop: - ALL @@ -52,7 +52,7 @@ services: retries: 5 gnb_du_tdd: - image: oaisoftwarealliance/oai-gnb:develop + image: ${REGISTRY:-oaisoftwarealliance}/${GNB_IMG:-oai-gnb}:${TAG:-develop} container_name: sa-du-b200-gnb cap_drop: - ALL diff --git a/ci-scripts/yaml_files/sa_f1_b200_gnb/docker-compose.yml b/ci-scripts/yaml_files/sa_f1_b200_gnb/docker-compose.yml index 0f4b12fbb6..4965111c32 100644 --- a/ci-scripts/yaml_files/sa_f1_b200_gnb/docker-compose.yml +++ b/ci-scripts/yaml_files/sa_f1_b200_gnb/docker-compose.yml @@ -1,6 +1,6 @@ services: gnb_cu: - image: oaisoftwarealliance/oai-gnb:develop + image: ${REGISTRY:-oaisoftwarealliance}/${GNB_IMG:-oai-gnb}:${TAG:-develop} container_name: sa-cu-gnb cap_drop: - ALL @@ -26,7 +26,7 @@ services: retries: 5 gnb_du_fdd: - image: oaisoftwarealliance/oai-gnb:develop + image: ${REGISTRY:-oaisoftwarealliance}/${GNB_IMG:-oai-gnb}:${TAG:-develop} container_name: sa-du-b200-gnb cap_drop: - ALL diff --git a/ci-scripts/yaml_files/sa_fhi_7.2_benetel550_gnb/docker-compose.yml b/ci-scripts/yaml_files/sa_fhi_7.2_benetel550_gnb/docker-compose.yml index 5eda4688c3..1228160fbb 100644 --- a/ci-scripts/yaml_files/sa_fhi_7.2_benetel550_gnb/docker-compose.yml +++ b/ci-scripts/yaml_files/sa_fhi_7.2_benetel550_gnb/docker-compose.yml @@ -1,6 +1,6 @@ services: oai-gnb: - image: oaisoftwarealliance/oai-gnb-fhi72:develop + image: ${REGISTRY:-oaisoftwarealliance}/oai-gnb-fhi72:${TAG:-develop} cap_add: - SYS_ADMIN - IPC_LOCK diff --git a/ci-scripts/yaml_files/sa_fhi_7.2_vvdn_gnb/docker-compose.yml b/ci-scripts/yaml_files/sa_fhi_7.2_vvdn_gnb/docker-compose.yml index 7adac57359..4ea7498639 100644 --- a/ci-scripts/yaml_files/sa_fhi_7.2_vvdn_gnb/docker-compose.yml +++ b/ci-scripts/yaml_files/sa_fhi_7.2_vvdn_gnb/docker-compose.yml @@ -1,6 +1,6 @@ services: oai-gnb: - image: oaisoftwarealliance/oai-gnb-fhi72:develop + image: ${REGISTRY:-oaisoftwarealliance}/oai-gnb-fhi72:${TAG:-develop} cap_add: - SYS_ADMIN - IPC_LOCK diff --git a/ci-scripts/yaml_files/sa_gnb_aerial/docker-compose.yaml b/ci-scripts/yaml_files/sa_gnb_aerial/docker-compose.yaml index f8fb0726a4..1bc99ff4ba 100644 --- a/ci-scripts/yaml_files/sa_gnb_aerial/docker-compose.yaml +++ b/ci-scripts/yaml_files/sa_gnb_aerial/docker-compose.yaml @@ -34,7 +34,7 @@ services: retries: 5 oai-gnb-aerial: cpuset: "13-20" - image: oaisoftwarealliance/oai-gnb-aerial:develop + image: ${REGISTRY:-oaisoftwarealliance}/oai-gnb-aerial:${TAG:-develop} depends_on: nv-cubb: condition: service_healthy diff --git a/ci-scripts/yaml_files/sa_sc_b200_gnb/docker-compose.yml b/ci-scripts/yaml_files/sa_sc_b200_gnb/docker-compose.yml index a036a1ad29..70773fd1a9 100644 --- a/ci-scripts/yaml_files/sa_sc_b200_gnb/docker-compose.yml +++ b/ci-scripts/yaml_files/sa_sc_b200_gnb/docker-compose.yml @@ -1,6 +1,6 @@ services: gnb_mono_tdd: - image: oaisoftwarealliance/oai-gnb:develop + image: ${REGISTRY:-oaisoftwarealliance}/${GNB_IMG:-oai-gnb}:${TAG:-develop} container_name: sa-b200-gnb cap_drop: - ALL