diff --git a/ci-scripts/ci_ueinfra.yaml b/ci-scripts/ci_infra.yaml similarity index 92% rename from ci-scripts/ci_ueinfra.yaml rename to ci-scripts/ci_infra.yaml index 7fda8bab20..8142e960dd 100644 --- a/ci-scripts/ci_ueinfra.yaml +++ b/ci-scripts/ci_infra.yaml @@ -56,6 +56,39 @@ adb_ue_2: MTU: 1500 LogStore: /media/usb-drive/ci_adb_2-logs +oc-cn5g: + Host: avra + NetworkScript: echo "inet 172.21.6.102" + RunIperf3Server: False + +porcepix-cn4g: + Host: porcepix + NetworkScript: docker exec prod-trf-gen ip a show dev eth0 + CmdPrefix: docker exec prod-trf-gen + +porcepix-cn5g: + Host: porcepix + NetworkScript: docker exec prod-trf-gen ip a show dev eth0 + CmdPrefix: docker exec prod-trf-gen + RunIperf3Server: False + +nano-cn4g: + Host: nano + NetworkScript: docker exec prod-trf-gen ip a show dev eth0 + CmdPrefix: docker exec prod-trf-gen + +ltebox-nano: + Host: nano + NetworkScript: ip a show dev tun1 + +sabox-nepes: + Host: nepes + NetworkScript: ip a show dev tun1 + +ltebox-nepes: + Host: nepes + NetworkScript: ip a show dev tun1 + amarisoft_ue: Host: amariue InitScript: /root/lteue-linux-2023-10-27/ue/lteue /root/oaicicd/ran_sa_aw2s_asue_2x2/aw2s-multi-20897-2x2.cfg & @@ -306,6 +339,18 @@ rfsim4g_enb_nos1: CmdPrefix: docker exec rfsim4g-oai-enb IF: oaitun_enb1 +rfsim4g_enb_fembms: + Host: localhost + NetworkScript: docker exec rfsim4g-oai-enb ip a show dev oaitun_enm1 + CmdPrefix: docker exec rfsim4g-oai-enb + IF: oaitun_enm1 + +rfsim4g_ue_fembms: + Host: localhost + NetworkScript: docker exec rfsim4g-oai-lte-ue0 ip a show dev oaitun_uem1 + CmdPrefix: docker exec rfsim4g-oai-lte-ue0 + IF: oaitun_uem1 + l2sim5g_ue: Host: localhost AttachScript: docker start l2sim-oai-nr-ue0 diff --git a/ci-scripts/cls_cmd.py b/ci-scripts/cls_cmd.py index 4eb64e2abe..7821f8263c 100644 --- a/ci-scripts/cls_cmd.py +++ b/ci-scripts/cls_cmd.py @@ -31,7 +31,8 @@ import subprocess as sp import os import paramiko import uuid -import sys +import sys +import time SSHTIMEOUT=7 @@ -106,6 +107,7 @@ class LocalCmd(Cmd): # 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) + time.sleep(0.1) else: ret = sp.run(line, shell=True, cwd=self.cwd, stdout=sp.PIPE, stderr=sp.STDOUT, timeout=timeout) except Exception as e: @@ -210,6 +212,7 @@ class RemoteCmd(Cmd): # however, we don't want to wait for commands with &, so just return fake command self.client.exec_command(line, timeout = 5) ret = sp.CompletedProcess(args=line, returncode=0, stdout=b'') + time.sleep(0.1) else: stdin, stdout, stderr = self.client.exec_command(line, timeout=timeout) ret = sp.CompletedProcess(args=line, returncode=stdout.channel.recv_exit_status(), stdout=stdout.read(size=None) + stderr.read(size=None)) diff --git a/ci-scripts/cls_containerize.py b/ci-scripts/cls_containerize.py index 860412e9f3..2eb0a98d16 100644 --- a/ci-scripts/cls_containerize.py +++ b/ci-scripts/cls_containerize.py @@ -169,97 +169,6 @@ def AnalyzeBuildLogs(buildRoot, images, globalStatus): collectInfo[image] = files return collectInfo -def AnalyzeIperf(cliOptions, clientReport, serverReport): - req_bw = 1.0 # default iperf throughput, in Mbps - result = re.search('-b *(?P[0-9\.]+)(?P[kKMG])', cliOptions) - if result is not None: - req_bw = float(result.group('iperf_bandwidth')) - magn = result.group('magnitude') - if magn == "k" or magn == "K": - req_bw /= 1000 - elif magn == "G": - req_bw *= 1000 - req_dur = 10 # default iperf send duration - result = re.search('-t *(?P[0-9]+)', cliOptions) - if result is not None: - req_dur = int(result.group('duration')) - - reportLine = None - # find server report in client status - clientReportLines = clientReport.split('\n') - for l in range(len(clientReportLines)): - res = re.search('read failed: Connection refused', clientReportLines[l]) - if res is not None: - message = 'iperf connection refused by server!' - logging.error(f'\u001B[1;37;41mIperf Test FAIL: {message}\u001B[0m') - return (False, message) - res = re.search('Server Report:', clientReportLines[l]) - if res is not None and l + 1 < len(clientReportLines): - reportLine = clientReportLines[l+1] - logging.debug(f'found server report: "{reportLine}"') - - statusTemplate = '(?:|\[ *\d+\].*) +0\.0-\s*(?P[0-9\.]+) +sec +[0-9\.]+ [kKMG]Bytes +(?P[0-9\.]+) (?P[kKMG])bits\/sec +(?P[0-9\.]+) ms +(\d+\/ *\d+) +(\((?P[0-9\.]+)%\))' - # if we do not find a server report in the client logs, check the server logs - # and use the last line which is typically close/identical to server report - if reportLine is None: - for l in serverReport.split('\n'): - res = re.search(statusTemplate, l) - if res is not None: - reportLine = l - if reportLine is None: - logging.warning('no report in server status found!') - return (False, 'could not parse iperf logs') - logging.debug(f'found client status: {reportLine}') - - result = re.search(statusTemplate, reportLine) - if result is None: - logging.error('could not analyze report from statusTemplate') - return (False, 'could not parse iperf logs') - - duration = float(result.group('duration')) - bitrate = float(result.group('bitrate')) - magn = result.group('magnitude') - if magn == "k" or magn == "K": - bitrate /= 1000 - elif magn == "G": # we assume bitrate in Mbps, therefore it must be G now - bitrate *= 1000 - jitter = float(result.group('jitter')) - packetloss = float(result.group('packetloss')) - - logging.debug('\u001B[1;37;44m iperf result \u001B[0m') - msg = f'Req Bitrate: {req_bw}' - logging.debug(f'\u001B[1;34m{msg}\u001B[0m') - - br_loss = bitrate/req_bw - bmsg = f'Bitrate : {bitrate} (perf {br_loss})' - logging.debug(f'\u001B[1;34m{bmsg}\u001B[0m') - msg += '\n' + bmsg - if br_loss < 0.9: - msg += '\nBitrate performance too low (<90%)' - logging.debug(f'\u001B[1;37;41mBitrate performance too low (<90%)\u001B[0m') - return (False, msg) - - plmsg = f'Packet Loss: {packetloss}%' - logging.debug(f'\u001B[1;34m{plmsg}\u001B[0m') - msg += '\n' + plmsg - if packetloss > 5.0: - msg += '\nPacket Loss too high!' - logging.debug(f'\u001B[1;37;41mPacket Loss too high \u001B[0m') - return (False, msg) - - dmsg = f'Duration : {duration} (req {req_dur})' - logging.debug(f'\u001B[1;34m{dmsg}\u001B[0m') - msg += '\n' + dmsg - if duration < float(req_dur): - msg += '\nDuration of iperf too short!' - logging.debug(f'\u001B[1;37;41mDuration of iperf too short\u001B[0m') - return (False, msg) - - jmsg = f'Jitter : {jitter}' - logging.debug(f'\u001B[1;34m{jmsg}\u001B[0m') - msg += '\n' + jmsg - return (True, msg) - #----------------------------------------------------------- # Class Declaration #----------------------------------------------------------- @@ -1026,7 +935,6 @@ class Containerize(): cnt = 100 status = True logging.info('\u001B[1m Deploying OAI object Pass\u001B[0m') - time.sleep(10) else: # containers are unhealthy, so we won't start. However, logs are stored at the end # in UndeployObject so we here store the logs of the unhealthy container to report it @@ -1467,76 +1375,6 @@ class Containerize(): HTML.CreateHtmlTestRowQueue(self.pingOptions, 'OK', [message]) - def PingExit(self, HTML, RAN, UE, status, message): - if status: - HTML.CreateHtmlTestRowQueue(self.pingOptions, 'OK', [message]) - else: - logging.error('\u001B[1;37;41m ping test FAIL -- ' + message + ' \u001B[0m') - HTML.CreateHtmlTestRowQueue(self.pingOptions, 'KO', [message]) - # Automatic undeployment - logging.warning('----------------------------------------') - logging.warning('\u001B[1m Starting Automatic undeployment \u001B[0m') - logging.warning('----------------------------------------') - HTML.testCase_id = 'AUTO-UNDEPLOY' - HTML.desc = 'Automatic Un-Deployment' - self.UndeployGenObject(HTML, RAN, UE) - self.exitStatus = 1 - - def IperfFromContainer(self, HTML, RAN, UE): - myCmd = cls_cmd.LocalCmd() - self.exitStatus = 0 - - ymlPath = self.yamlPath[0].split('/') - logPath = '../cmake_targets/log/' + ymlPath[1] - cmd = f'mkdir -p {logPath}' - myCmd.run(cmd, silent=True) - - # Start the server process - cmd = f'docker exec -d {self.svrContName} /bin/bash -c "nohup iperf {self.svrOptions} > /tmp/iperf_server.log 2>&1"' - myCmd.run(cmd) - time.sleep(3) - - # Start the client process - cmd = f'docker exec {self.cliContName} /bin/bash -c "iperf {self.cliOptions}" 2>&1 | tee {logPath}/iperf_client_{HTML.testCase_id}.log' - clientStatus = myCmd.run(cmd, timeout=100) - - # Stop the server process - cmd = f'docker exec {self.svrContName} /bin/bash -c "pkill iperf"' - myCmd.run(cmd) - time.sleep(3) - serverStatusFilename = f'{logPath}/iperf_server_{HTML.testCase_id}.log' - cmd = f'docker cp {self.svrContName}:/tmp/iperf_server.log {serverStatusFilename}' - myCmd.run(cmd, timeout=60) - myCmd.close() - - # clientStatus was retrieved above. The serverStatus was - # written in the background, then copied to the local machine - with open(serverStatusFilename, 'r') as f: - serverStatus = f.read() - (iperfStatus, msg) = AnalyzeIperf(self.cliOptions, clientStatus.stdout, serverStatus) - if iperfStatus: - logging.info('\u001B[1m Iperf Test PASS\u001B[0m') - else: - logging.error('\u001B[1;37;41m Iperf Test FAIL\u001B[0m') - self.IperfExit(HTML, RAN, UE, iperfStatus, msg) - - def IperfExit(self, HTML, RAN, UE, status, message): - html_cell = f'UE\n{message}' - if status: - HTML.CreateHtmlTestRowQueue(self.cliOptions, 'OK', [html_cell]) - else: - logging.error('\u001B[1m Iperf Test FAIL -- ' + message + ' \u001B[0m') - HTML.CreateHtmlTestRowQueue(self.cliOptions, 'KO', [html_cell]) - # Automatic undeployment - logging.warning('----------------------------------------') - logging.warning('\u001B[1m Starting Automatic undeployment \u001B[0m') - logging.warning('----------------------------------------') - HTML.testCase_id = 'AUTO-UNDEPLOY' - HTML.desc = 'Automatic Un-Deployment' - self.UndeployGenObject(HTML, RAN, UE) - self.exitStatus = 1 - - def CheckAndAddRoute(self, svrName, ipAddr, userName, password): logging.debug('Checking IP routing on ' + svrName) mySSH = SSH.SSHConnection() diff --git a/ci-scripts/cls_module_ue.py b/ci-scripts/cls_module.py similarity index 96% rename from ci-scripts/cls_module_ue.py rename to ci-scripts/cls_module.py index 19dac1044d..d0cfba0299 100644 --- a/ci-scripts/cls_module_ue.py +++ b/ci-scripts/cls_module.py @@ -41,7 +41,7 @@ import cls_cmd class Module_UE: - def __init__(self, module_name, filename="ci_ueinfra.yaml"): + def __init__(self, module_name, filename="ci_infra.yaml"): with open(filename, 'r') as f: all_ues = yaml.load(f, Loader=yaml.FullLoader) m = all_ues.get(module_name) @@ -64,7 +64,8 @@ class Module_UE: self.trace = m.get('trace') == True self.logStore = m.get('LogStore') self.cmd_prefix = m.get('CmdPrefix') - logging.info(f'initialized UE {self.module_name}@{self.host} from {filename}') + self.runIperf3Server = m.get('RunIperf3Server', True) + logging.info(f'initialized {self.module_name}@{self.host} from {filename}') def __str__(self): return f"{self.module_name}@{self.host} [IP: {self.getIP()}]" @@ -189,6 +190,9 @@ class Module_UE: def getHost(self): return self.host + def getRunIperf3Server(self): + return self.runIperf3Server + def getCmdPrefix(self): return self.cmd_prefix if self.cmd_prefix else "" diff --git a/ci-scripts/cls_oaicitest.py b/ci-scripts/cls_oaicitest.py index 55ca34c9f3..102eb1dfe7 100644 --- a/ci-scripts/cls_oaicitest.py +++ b/ci-scripts/cls_oaicitest.py @@ -45,6 +45,7 @@ import signal import statistics as stat from multiprocessing import SimpleQueue, Lock import concurrent.futures +import json #import our libs import helpreadme as HELP @@ -52,13 +53,188 @@ import constants as CONST import cls_cluster as OC import sshconnection -import cls_module_ue +import cls_module import cls_cmd logging.getLogger("matplotlib").setLevel(logging.WARNING) import matplotlib.pyplot as plt import numpy as np +#----------------------------------------------------------- +# Helper functions used here and in other classes +#----------------------------------------------------------- +def Iperf_ComputeModifiedBW(idx, ue_num, profile, args): + result = re.search('-b\s*(?P[0-9\.]+)(?P[KMG])', str(args)) + if result is None: + raise Exception('Iperf bandwidth not found or in incorrect format!') + iperf_bandwidth = result.group('iperf_bandwidth') + if profile == 'balanced': + iperf_bandwidth_new = float(iperf_bandwidth)/ue_num + if profile == 'single-ue': + iperf_bandwidth_new = float(iperf_bandwidth) + if profile == 'unbalanced': + # residual is 2% of max bw + residualBW = float(iperf_bandwidth) / 50 + if idx == 0: + iperf_bandwidth_new = float(iperf_bandwidth) - ((ue_num - 1) * residualBW) + else: + iperf_bandwidth_new = residualBW + iperf_bandwidth_str = result.group(0) + iperf_bandwidth_unit = result.group(2) + iperf_bandwidth_str_new = f"-b {'%.2f' % iperf_bandwidth_new}{iperf_bandwidth_unit}" + result = re.sub(iperf_bandwidth_str, iperf_bandwidth_str_new, str(args)) + if result is None: + raise Exception('Calculate Iperf bandwidth failed!') + return result + +def Iperf_ComputeTime(args): + result = re.search('-t\s*(?P\d+)', str(args)) + if result is None: + raise Exception('Iperf time not found!') + return int(result.group('iperf_time')) + +def Iperf_analyzeV3TCPJson(filename, iperf_tcp_rate_target): + if (not os.path.isfile(filename)): + return (False, 'Iperf3 TCP: Log file not present') + if (os.path.getsize(filename)==0): + return (False, 'Iperf3 TCP: Log file is empty') + + with open(filename) as file: + filename = json.load(file) + try: + sender_bitrate = round(filename['end']['streams'][0]['sender']['bits_per_second']/1000000,2) + receiver_bitrate = round(filename['end']['streams'][0]['receiver']['bits_per_second']/1000000,2) + except Exception as e: + return (False, 'Could not compute Iperf3 bitrate!') + + snd_msg = f'Sender Bitrate : {sender_bitrate} Mbps' + rcv_msg = f'Receiver Bitrate : {receiver_bitrate} Mbps' + success = True + if (iperf_tcp_rate_target is not None): + if (int(receiver_bitrate) < int(iperf_tcp_rate_target)): + rcv_msg += f" (too low! < {iperf_tcp_rate_target} Mbps)" + success = False + else: + rcv_msg += f" (target : {iperf_tcp_rate_target} Mbps)" + return(success, f'{snd_msg}\n{rcv_msg}') + +def Iperf_analyzeV3BIDIRJson(filename): + if (not os.path.isfile(filename)): + return (False, 'Iperf3 Bidir TCP: Log file not present') + if (os.path.getsize(filename)==0): + return (False, 'Iperf3 Bidir TCP: Log file is empty') + + with open(filename) as file: + filename = json.load(file) + try: + sender_bitrate_dl = round(filename['end']['streams'][0]['sender']['bits_per_second']/1000000,2) + receiver_bitrate_dl = round(filename['end']['streams'][0]['receiver']['bits_per_second']/1000000,2) + sender_bitrate_ul = round(filename['end']['streams'][1]['sender']['bits_per_second']/1000000,2) + receiver_bitrate_ul = round(filename['end']['streams'][1]['receiver']['bits_per_second']/1000000,2) + except Exception as e: + return (False, 'Could not compute BIDIR bitrate!') + + msg = f'Sender Bitrate DL : {sender_bitrate_dl} Mbps\n' + msg += f'Receiver Bitrate DL : {receiver_bitrate_dl} Mbps\n' + msg += f'Sender Bitrate UL : {sender_bitrate_ul} Mbps\n' + msg += f'Receiver Bitrate UL : {receiver_bitrate_ul} Mbps\n' + return (True, msg) + +def Iperf_analyzeV3UDP(filename, iperf_bitrate_threshold, iperf_packetloss_threshold): + if (not os.path.isfile(filename)): + return (False, 'Iperf3 UDP: Log file not present') + if (os.path.getsize(filename)==0): + return (False, 'Iperf3 UDP: Log file is empty') + sender_bitrate = None + 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) + if res_sender is not None: + sender_bitrate = res_sender.group('bitrate') + sender_unit = res_sender.group('unit') + sender_jitter = res_sender.group('jitter') + sender_lostPack = res_sender.group('lostPack') + sender_sentPack = res_sender.group('sentPack') + sender_packetloss = res_sender.group('lost') + if res_receiver is not None: + receiver_bitrate = res_receiver.group('bitrate') + receiver_unit = res_receiver.group('unit') + receiver_jitter = res_receiver.group('jitter') + receiver_lostPack = res_receiver.group('lostPack') + receiver_receivedPack = res_receiver.group('receivedPack') + receiver_packetloss = res_receiver.group('lost') + + if receiver_bitrate is not None and sender_bitrate is not None: + if sender_unit == 'Kbits/sec': + sender_bitrate = float(sender_bitrate) / 1000 + if receiver_unit == 'Kbits/sec': + receiver_bitrate = float(receiver_bitrate) / 1000 + br_perf = 100 * float(receiver_bitrate) / float(sender_bitrate) + br_perf = '%.2f ' % br_perf + sender_bitrate = '%.2f ' % float(sender_bitrate) + receiver_bitrate = '%.2f ' % float(receiver_bitrate) + req_msg = f'Sender Bitrate : {sender_bitrate} Mbps' + bir_msg = f'Receiver Bitrate : {receiver_bitrate} Mbps' + brl_msg = f'{br_perf}%' + jit_msg = f'Jitter : {receiver_jitter}' + pal_msg = f'Packet Loss : {receiver_packetloss} %' + if float(br_perf) < float(iperf_bitrate_threshold): + brl_msg = f'too low! < {iperf_bitrate_threshold}%' + if float(receiver_packetloss) > float(iperf_packetloss_threshold): + pal_msg += f' (too high! > {iperf_packetloss_threshold}%)' + result = float(br_perf) >= float(iperf_bitrate_threshold) and float(receiver_packetloss) <= float(iperf_packetloss_threshold) + return (result, f'{req_msg}\n{bir_msg} ({brl_msg})\n{jit_msg}\n{pal_msg}') + else: + return (False, 'Could not analyze iperf report') + +def Iperf_analyzeV2UDP(server_filename, iperf_bitrate_threshold, iperf_packetloss_threshold, iperf_opt): + if (not os.path.isfile(server_filename)): + return (False, 'Could not analyze, server report not found!') + # Computing the requested bandwidth in float + req_bw = 1.0 # default iperf throughput, in Mbps + result = re.search('-b *(?P[0-9\.]+)(?P[kKMG])', iperf_opt) + if result is not None: + req_bw = float(result.group('iperf_bandwidth')) + magn = result.group('magnitude') + if magn == "k" or magn == "K": + req_bw /= 1000 + elif magn == "G": + req_bw *= 1000 + statusTemplate = '(?:|\[ *\d+\].*) +0\.0-\s*(?P[0-9\.]+) +sec +[0-9\.]+ [kKMG]Bytes +(?P[0-9\.]+) (?P[kKMG])bits\/sec +(?P[0-9\.]+) ms +(\d+\/ *\d+) +(\((?P[0-9\.]+)%\))' + + with open(server_filename, 'r') as server_file: + for line in server_file.readlines(): + res = re.search(statusTemplate, str(line)) + if res is not None: + result = res + if result is None: + return (False, 'Could not parse server report!') + + bitrate = float(result.group('bitrate')) + magn = result.group('magnitude') + if magn == "k" or magn == "K": + bitrate /= 1000 + elif magn == "G": # we assume bitrate in Mbps, therefore it must be G now + bitrate *= 1000 + jitter = float(result.group('jitter')) + packetloss = float(result.group('packetloss')) + br_perf = float(bitrate)/float(req_bw) * 100 + br_perf = '%.2f ' % br_perf + + result = float(br_perf) >= float(iperf_bitrate_threshold) and float(packetloss) <= float(iperf_packetloss_threshold) + req_msg = f'Req Bitrate : {req_bw}' + bir_msg = f'Bitrate : {bitrate}' + brl_msg = f'Bitrate Perf: {br_perf} %' + if float(br_perf) < float(iperf_bitrate_threshold): + brl_msg += f' (too low! <{iperf_bitrate_threshold}%)' + jit_msg = f'Jitter : {jitter}' + pal_msg = f'Packet Loss : {packetloss}' + if float(packetloss) > float(iperf_packetloss_threshold): + 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}') + #----------------------------------------------------------- # OaiCiTest Class Definition #----------------------------------------------------------- @@ -86,7 +262,7 @@ class OaiCiTest(): self.iperf_bitrate_threshold = '' self.iperf_profile = '' self.iperf_options = '' - self.iperf_direction = '' + self.iperf_tcp_rate_target = '' self.nbMaxUEtoAttach = -1 self.UEDevices = [] self.UEDevicesStatus = [] @@ -113,6 +289,7 @@ class OaiCiTest(): self.clean_repository = True self.air_interface='' self.ue_ids = [] + self.svr_id = None self.cmd_prefix = '' # prefix before {lte,nr}-uesoftmodem @@ -222,7 +399,7 @@ class OaiCiTest(): def InitializeUE(self, HTML): - ues = [cls_module_ue.Module_UE(n.strip()) for n in self.ue_ids] + ues = [cls_module.Module_UE(n.strip()) for n in self.ue_ids] messages = [] with concurrent.futures.ThreadPoolExecutor() as executor: futures = [executor.submit(ue.initialize) for ue in ues] @@ -438,7 +615,7 @@ class OaiCiTest(): self.AutoTerminateUEandeNB(HTML,RAN,EPC,CONTAINERS) def AttachUE(self, HTML, RAN, EPC, CONTAINERS): - ues = [cls_module_ue.Module_UE(n.strip()) for n in self.ue_ids] + ues = [cls_module.Module_UE(n.strip()) for n in self.ue_ids] with concurrent.futures.ThreadPoolExecutor() as executor: futures = [executor.submit(ue.attach) for ue in ues] attached = [f.result() for f in futures] @@ -453,7 +630,7 @@ class OaiCiTest(): self.AutoTerminateUEandeNB(HTML, RAN, EPC, CONTAINERS) def DetachUE(self, HTML): - ues = [cls_module_ue.Module_UE(n.strip()) for n in self.ue_ids] + ues = [cls_module.Module_UE(n.strip()) for n in self.ue_ids] with concurrent.futures.ThreadPoolExecutor() as executor: futures = [executor.submit(ue.detach) for ue in ues] [f.result() for f in futures] @@ -461,7 +638,7 @@ class OaiCiTest(): HTML.CreateHtmlTestRowQueue('NA', 'OK', messages) def DataDisableUE(self, HTML): - ues = [cls_module_ue.Module_UE(n.strip()) for n in self.ue_ids] + ues = [cls_module.Module_UE(n.strip()) for n in self.ue_ids] with concurrent.futures.ThreadPoolExecutor() as executor: futures = [executor.submit(ue.dataDisable) for ue in ues] status = [f.result() for f in futures] @@ -473,7 +650,7 @@ class OaiCiTest(): HTML.CreateHtmlTestRowQueue('N/A', 'KO', ["Could not disable UE data!"]) def DataEnableUE(self, HTML): - ues = [cls_module_ue.Module_UE(n.strip()) for n in self.ue_ids] + ues = [cls_module.Module_UE(n.strip()) for n in self.ue_ids] logging.debug(f'disabling data for UEs {ues}') with concurrent.futures.ThreadPoolExecutor() as executor: futures = [executor.submit(ue.dataEnable) for ue in ues] @@ -486,7 +663,7 @@ class OaiCiTest(): HTML.CreateHtmlTestRowQueue('N/A', 'KO', ["Could not enable UE data!"]) def CheckStatusUE(self,HTML): - ues = [cls_module_ue.Module_UE(n.strip()) for n in self.ue_ids] + ues = [cls_module.Module_UE(n.strip()) for n in self.ue_ids] logging.debug(f'checking status of UEs {ues}') messages = [] with concurrent.futures.ThreadPoolExecutor() as executor: @@ -590,7 +767,7 @@ class OaiCiTest(): if self.ue_ids == []: raise Exception("no module names in self.ue_ids provided") - ues = [cls_module_ue.Module_UE(n.strip()) for n in self.ue_ids] + ues = [cls_module.Module_UE(n.strip()) for n in self.ue_ids] logging.debug(ues) pingLock = Lock() with concurrent.futures.ThreadPoolExecutor() as executor: @@ -604,372 +781,65 @@ class OaiCiTest(): HTML.CreateHtmlTestRowQueue(self.ping_args, 'KO', messages) self.AutoTerminateUEandeNB(HTML,RAN,EPC,CONTAINERS) - def Iperf_ComputeTime(self): - result = re.search('-t (?P\d+)', str(self.iperf_args)) - if result is None: - logging.debug('\u001B[1;37;41m Iperf time Not Found! \u001B[0m') - sys.exit(1) - return result.group('iperf_time') - - def Iperf_ComputeModifiedBW(self, idx, ue_num): - result = re.search('-b (?P[0-9\.]+)[KMG]', str(self.iperf_args)) - if result is None: - logging.error('\u001B[1;37;41m Iperf bandwidth Not Found! \u001B[0m') - sys.exit(1) - iperf_bandwidth = result.group('iperf_bandwidth') - if self.iperf_profile == 'balanced': - iperf_bandwidth_new = float(iperf_bandwidth)/ue_num - if self.iperf_profile == 'single-ue': - iperf_bandwidth_new = float(iperf_bandwidth) - if self.iperf_profile == 'unbalanced': - # residual is 2% of max bw - residualBW = float(iperf_bandwidth) / 50 - if idx == 0: - iperf_bandwidth_new = float(iperf_bandwidth) - ((ue_num - 1) * residualBW) - else: - iperf_bandwidth_new = residualBW - iperf_bandwidth_str = f'-b {iperf_bandwidth}' - iperf_bandwidth_str_new = f"-b {'%.2f' % iperf_bandwidth_new}" - result = re.sub(iperf_bandwidth_str, iperf_bandwidth_str_new, str(self.iperf_args)) - if result is None: - logging.error('\u001B[1;37;41m Calculate Iperf bandwidth Failed! \u001B[0m') - sys.exit(1) - return result - - def Iperf_analyzeV2TCPOutput(self, SSH, filename): - - SSH.command(f'awk -f /tmp/tcp_iperf_stats.awk {filename}', '\$', 5) - result = re.search('Avg Bitrate : (?P[0-9\.]+ Mbits\/sec) Max Bitrate : (?P[0-9\.]+ Mbits\/sec) Min Bitrate : (?P[0-9\.]+ Mbits\/sec)', SSH.getBefore()) - if result is not None: - avgbitrate = result.group('average') - maxbitrate = result.group('maximum') - minbitrate = result.group('minimum') - msg = 'TCP Stats :\n' - if avgbitrate is not None: - msg += f'Avg Bitrate : {avgbitrate} \n' - if maxbitrate is not None: - msg += f'Max Bitrate : {maxbitrate} \n' - if minbitrate is not None: - msg += f'Min Bitrate : {minbitrate} \n' - return (True, msg) - - return (False, "could not analyze log file") - - def Iperf_analyzeV2Output(self, iperf_real_options, EPC, SSH): - - result = re.search('-u', str(iperf_real_options)) - if result is None: - filename = f'{EPC.SourceCodePath}/scripts/iperf_{self.testCase_id}_{device_id}.log' - response = self.Iperf_analyzeV2TCPOutput(SSH, filename) - return response - - result = re.search('Server Report:', SSH.getBefore()) - if result is None: - result = re.search('read failed: Connection refused', SSH.getBefore()) - if result is not None: - msg = 'Could not connect to iperf server!' - return (False, msg) - else: - msg = 'Server Report and Connection refused Not Found!' - return (False, msg) - # Computing the requested bandwidth in float - result = re.search('-b (?P[0-9\.]+)[KMG]', str(iperf_real_options)) - if result is not None: - req_bandwidth = result.group('iperf_bandwidth') - req_bw = float(req_bandwidth) - result = re.search('-b [0-9\.]+K', str(iperf_real_options)) - if result is not None: - req_bandwidth = '%.1f Kbits/sec' % req_bw - req_bw = req_bw * 1000 - result = re.search('-b [0-9\.]+M', str(iperf_real_options)) - if result is not None: - req_bandwidth = '%.1f Mbits/sec' % req_bw - req_bw = req_bw * 1000000 - result = re.search('-b [0-9\.]+G', str(iperf_real_options)) - if result is not None: - req_bandwidth = '%.1f Gbits/sec' % req_bw - req_bw = req_bw * 1000000000 - - result = re.search('Server Report:\r\n(?:|\[ *\d+\].*) (?P[0-9\.]+ [KMG]bits\/sec) +(?P[0-9\.]+ ms) +(\d+\/..\d+) +(\((?P[0-9\.]+)%\))', SSH.getBefore()) - if result is not None: - bitrate = result.group('bitrate') - packetloss = result.group('packetloss') - jitter = result.group('jitter') - - iperfStatus = True - msg = f'Req Bitrate : {req_bandwidth} \n' - if bitrate is not None: - msg += f'Bitrate : {bitrate} \n' - result = re.search('(?P[0-9\.]+) [KMG]bits/sec', str(bitrate)) - if result is not None: - actual_bw = float(str(result.group('real_bw'))) - result = re.search('[0-9\.]+ K', bitrate) - if result is not None: - actual_bw = actual_bw * 1000 - result = re.search('[0-9\.]+ M', bitrate) - if result is not None: - actual_bw = actual_bw * 1000000 - result = re.search('[0-9\.]+ G', bitrate) - if result is not None: - actual_bw = actual_bw * 1000000000 - br_loss = 100 * actual_bw / req_bw - bitperf = '%.2f ' % br_loss - msg += f'Bitrate Perf: {bitperf} %\n' - if packetloss is not None: - msg += f'Packet Loss : {packetloss} %\n' - if float(packetloss) > float(self.iperf_packetloss_threshold): - msg += 'Packet Loss too high!\n' - iperfStatus = False - if jitter is not None: - msg += f'Jitter : {jitter} \n' - - return (iperfStatus, msg) - else: - return (False, "could not analyze server log") - - - def Iperf_analyzeV2BIDIR(self, server_filename, client_filename): - - #check the 2 files are here - if (not os.path.isfile(client_filename)) or (not os.path.isfile(server_filename)): - return (False, 'Bidir TCP: Client or Server Log File not present') - #check the 2 files size - if (os.path.getsize(client_filename)==0) and (os.path.getsize(server_filename)==0): - return (False, 'Bidir TCP: Client and Server Log File are empty') - - report_msg = '' - #if client is not empty, all the info is in, otherwise we ll use the server file to get some partial info - client_filesize = os.path.getsize(client_filename) - if client_filesize == 0: - report_msg+="Client file (UE) present but !!! EMPTY !!!\n" - report_msg+="Partial report from server file" - filename = server_filename - else : - report_msg+="Report from client file (UE)" - filename = client_filename - - report=[] #used to check if relevant lines were found - - with open(filename, 'r') as f_client: - for line in f_client.readlines(): - result = re.search(rf'^\[\s+\d+\](?P\[.+\]).*\s+(?P[0-9\.]+ [KMG]bits\/sec).*\s+(?P\bsender|receiver\b)', str(line)) - if result is not None: - report.append(str(line)) - report_msg += f"\n{result.group('role')} {result.group('direction')}\t: {result.group('bitrate')}" - if len(report) == 0: - return (False, 'Bidir TCP: Could not analyze from Log file') - - return (True, report_msg) - - def Iperf_analyzeV2Server(self, iperf_real_options, filename, type): - if (not os.path.isfile(filename)): - return (False, 'Could not analyze from server log') - # Computing the requested bandwidth in float - result = re.search('-b (?P[0-9\.]+)[KMG]', str(iperf_real_options)) - if result is None: - return (False, 'Could not compute Iperf bandwidth!') - else: - req_bandwidth = result.group('iperf_bandwidth') - req_bw = float(req_bandwidth) - result = re.search('-b [0-9\.]+K', str(iperf_real_options)) - if result is not None: - req_bandwidth = '%.1f Kbits/sec' % req_bw - req_bw = req_bw * 1000 - result = re.search('-b [0-9\.]+M', str(iperf_real_options)) - if result is not None: - req_bandwidth = '%.1f Mbits/sec' % req_bw - req_bw = req_bw * 1000000 - result = re.search('-b [0-9\.]+G', str(iperf_real_options)) - if result is not None: - req_bandwidth = '%.1f Gbits/sec' % req_bw - req_bw = req_bw * 1000000000 - - server_file = open(filename, 'r') - br_sum = 0.0 - ji_sum = 0.0 - pl_sum = 0 - ps_sum = 0 - row_idx = 0 - for line in server_file.readlines(): - if type==0: - result = re.search('(?P[0-9\.]+ [KMG]bits\/sec) +(?P[0-9\.]+ ms) +(?P[0-9]+)/ +(?P[0-9]+)', str(line)) - else: - result = re.search('^\[\s+\d\].+ (?P[0-9\.]+ [KMG]bits\/sec) +(?P[0-9\.]+ ms) +(?P[0-9]+)\/\s*(?P[0-9]+)', str(line)) - - if result is not None: - bitrate = result.group('bitrate') - jitter = result.group('jitter') - packetlost = result.group('lostPack') - packetsent = result.group('sentPack') - br = bitrate.split(' ') - ji = jitter.split(' ') - row_idx = row_idx + 1 - curr_br = float(br[0]) - pl_sum = pl_sum + int(packetlost) - ps_sum = ps_sum + int(packetsent) - if (br[1] == 'Kbits/sec'): - curr_br = curr_br * 1000 - if (br[1] == 'Mbits/sec'): - curr_br = curr_br * 1000 * 1000 - br_sum = curr_br + br_sum - ji_sum = float(ji[0]) + ji_sum - - server_file.close() - - if (row_idx > 0): - br_sum = br_sum / row_idx - ji_sum = ji_sum / row_idx - br_loss = 100 * br_sum / req_bw - if (br_sum > 1000): - br_sum = br_sum / 1000 - if (br_sum > 1000): - br_sum = br_sum / 1000 - bitrate = '%.2f Mbits/sec' % br_sum - else: - bitrate = '%.2f Kbits/sec' % br_sum - else: - bitrate = '%.2f bits/sec' % br_sum - bitperf = '%.2f ' % br_loss - bitperf += '%' - jitter = '%.2f ms' % (ji_sum) - if (ps_sum > 0): - pl = float(100 * pl_sum / ps_sum) - packetloss = '%2.1f ' % (pl) - packetloss += '%' - - result = float(br_loss) >= float(self.iperf_bitrate_threshold) and float(pl) <= float(self.iperf_packetloss_threshold) - req_msg = f'Req Bitrate : {req_bandwidth}' - bir_msg = f'Bitrate : {bitrate}' - brl_msg = f'Bitrate Perf: {bitperf}' - if float(br_loss) < float(self.iperf_bitrate_threshold): - brl_msg += f' (too low! <{self.iperf_bitrate_threshold}%)' - jit_msg = f'Jitter : {jitter}' - pal_msg = f'Packet Loss : {packetloss}' - if float(pl) > float(self.iperf_packetloss_threshold): - 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}') - else: - return (False, 'Could not analyze from server log') - - def Iperf_Module(self, EPC, ue, RAN, idx, ue_num): + def Iperf_Module(self, EPC, ue, svr, RAN, idx, ue_num, CONTAINERS): ueIP = ue.getIP() if not ueIP: return (False, f"UE {ue.getName()} has no IP address") - SSH = sshconnection.SSHConnection() - server_filename = f'iperf_server_{self.testCase_id}_{ue.getName()}.log' - client_filename = f'iperf_client_{self.testCase_id}_{ue.getName()}.log' - if (re.match('OAI-Rel14-Docker', EPC.Type, re.IGNORECASE)) or (re.match('OAICN5G', EPC.Type, re.IGNORECASE)): - #retrieve trf-gen container IP address - SSH.open(EPC.IPAddress, EPC.UserName, EPC.Password) - SSH.command('docker inspect --format="TRF_IP_ADDR = {{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}" prod-trf-gen', '\$', 5) - result = re.search('TRF_IP_ADDR = (?P[0-9\.]+)', SSH.getBefore()) - if result is None: - raise Exception("could not corver prod-trf-gen IP address") - cn_target_ip = result.group('trf_ip_addr') - SSH.close() - cn_iperf_prefix = "docker exec prod-trf-gen" # -w /iperf-2.0.13 necessary? - elif (re.match('OC-OAI-CN5G', EPC.Type, re.IGNORECASE)): - cn_target_ip = "172.21.6.102" - else: # lteboix, sabox - cn_target_ip = "192.172.0.1" - cn_iperf_prefix = "" + svrIP = svr.getIP() + if not svrIP: + return (False, f"Iperf server {ue.getName()} has no IP address") + runIperf3Server = svr.getRunIperf3Server() iperf_opt = self.iperf_args + jsonReport = "--json" + serverReport = "" udpIperf = re.search('-u', iperf_opt) is not None - udpSwitch = '-u' if udpIperf else '' - if udpIperf: - iperf_opt = self.Iperf_ComputeModifiedBW(idx, ue_num) - logging.info(f'iperf options modified from "{self.iperf_args}" to "{iperf_opt}" for {ue.getName()}') - iperf_time = int(self.Iperf_ComputeTime()) - port = f'-p {5001+idx}' - # hack: the ADB UEs don't have iperf in $PATH, so we need to hardcode for the moment - iperf_ue = '/data/local/tmp/iperf' if re.search('adb', ue.getName()) else 'iperf' + bidirIperf = re.search('--bidir', iperf_opt) is not None + client_filename = f'iperf_client_{self.testCase_id}_{ue.getName()}.log' + server_filename = f'iperf_server_{self.testCase_id}_{ue.getName()}.log' + ymlPath = CONTAINERS.yamlPath[0].split('/') + logPath = f'../cmake_targets/log/{ymlPath[1]}' + if udpIperf: + 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})' - if self.iperf_direction == "DL": - logging.debug("Iperf in DL requested") - cmd = cls_cmd.getConnection(ue.getHost()) - cmd.run(f'rm {server_filename}') - cmd.run(f'{ue.getCmdPrefix()} {iperf_ue} -s -B {ueIP} {udpSwitch} -i 1 -t {iperf_time * 1.5} {port} &> /tmp/{server_filename} &') - cmd.close() - - cmd = cls_cmd.getConnection(EPC.IPAddress) - cmd.run(f'rm {EPC.SourceCodePath}/{client_filename}') - cmd.run(f'{cn_iperf_prefix} iperf -c {ueIP} {iperf_opt} {port} &> {EPC.SourceCodePath}/{client_filename}', timeout=iperf_time * 1.5) - cmd.copyin(f'{EPC.SourceCodePath}/{client_filename}', client_filename) - cmd.close() - - cmd = cls_cmd.getConnection(ue.getHost()) - cmd.copyin(f'/tmp/{server_filename}', server_filename) - cmd.close() - + if svr.getName() == "rfsim4g_enb_fembms": + with cls_cmd.getConnection(ue.getHost()) as cmd_ue, cls_cmd.getConnection(EPC.IPAddress) as cmd_svr: + port = 5002 + idx + cmd_ue.run(f'{ue.getCmdPrefix()} iperf -B {ueIP} -s -u -i1 >> {server_filename} &', timeout=iperf_time*1.5) + cmd_svr.run(f'{svr.getCmdPrefix()} iperf -c {ueIP} -B {svrIP} {iperf_opt} -i1 2>&1 | tee {client_filename}', timeout=iperf_time*1.5) + cmd_ue.run(f'cp {client_filename} {logPath}/{client_filename}') + cmd_ue.run(f'cp {server_filename} {logPath}/{server_filename}') + status, msg = Iperf_analyzeV2UDP(server_filename, self.iperf_bitrate_threshold, self.iperf_packetloss_threshold, iperf_opt) + else: + 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` + if runIperf3Server: + cmd_svr.run(f'{svr.getCmdPrefix()} nohup iperf3 -s -B {svrIP} -p {port} -1 {jsonReport} &', timeout=iperf_time*1.5) + cmd_ue.run(f'rm /tmp/{client_filename}', reportNonZero=False) + cmd_ue.run(f'{ue.getCmdPrefix()} {iperf_ue} -B {ueIP} -c {svrIP} -p {port} {iperf_opt} {jsonReport} {serverReport} -O 5 >> /tmp/{client_filename}', timeout=iperf_time*1.5) + if svr.getHost() == 'localhost': + cmd_ue.run(f'mkdir -p {logPath}') + cmd_ue.run(f'cp /tmp/{client_filename} {logPath}/{client_filename}') + cmd_ue.run(f'cp /tmp/{client_filename} {client_filename}') + else: + cmd_ue.copyin(f'/tmp/{client_filename}', client_filename) if udpIperf: - status, msg = self.Iperf_analyzeV2Server(iperf_opt, server_filename, 1) + status, msg = Iperf_analyzeV3UDP(client_filename, self.iperf_bitrate_threshold, self.iperf_packetloss_threshold) + elif bidirIperf: + status, msg = Iperf_analyzeV3BIDIRJson(client_filename) else: - cmd = cls_cmd.getConnection(EPC.IPAddress) - status, msg = self.Iperf_analyzeV2TCPOutput(cmd, f"{EPC.SourceCodePath}/{client_filename}") - cmd.close() - - elif self.iperf_direction == "UL": - logging.debug("Iperf in UL requested") - cmd = cls_cmd.getConnection(EPC.IPAddress) - cmd.run(f'rm {EPC.SourceCodePath}/{server_filename}') - cmd.run(f'{cn_iperf_prefix} iperf -s {udpSwitch} -t {iperf_time * 1.5} {port} &> {EPC.SourceCodePath}/{server_filename} &') - cmd.close() - - cmd = cls_cmd.getConnection(ue.getHost()) - cmd.run(f'rm /tmp/{client_filename}') - cmd.run(f'{ue.getCmdPrefix()} {iperf_ue} -B {ueIP} -c {cn_target_ip} {iperf_opt} {port} &> /tmp/{client_filename}', timeout=iperf_time*1.5) - cmd.copyin(f'/tmp/{client_filename}', client_filename) - cmd.close() - - cmd = cls_cmd.getConnection(EPC.IPAddress) - cmd.copyin(f'{EPC.SourceCodePath}/{server_filename}', server_filename) - cmd.close() - - if udpIperf: - status, msg = self.Iperf_analyzeV2Server(iperf_opt, server_filename, 1) - else: - cmd = cls_cmd.getConnection(ue.getHost()) - status, msg = self.Iperf_analyzeV2TCPOutput(cmd, f"/tmp/{client_filename}") - cmd.close() - - elif self.iperf_direction=="BIDIR": - logging.debug("Bi-directional iperf requested") - cmd = cls_cmd.getConnection(EPC.IPAddress) - cmd.run(f'rm {EPC.SourceCodePath}/{server_filename}') - cmd.run(f'{cn_iperf_prefix} iperf3 -s -i 1 -1 {port} &> {EPC.SourceCodePath}/{server_filename} &') - cmd.close() - - cmd = cls_cmd.getConnection(ue.getHost()) - cmd.run(f'rm /tmp/{client_filename}') - cmd.run(f'iperf3 -B {ueIP} -c {cn_target_ip} {iperf_opt} {port} &> /tmp/{client_filename}', timeout=iperf_time*1.5) - cmd.copyin(f'/tmp/{client_filename}', client_filename) - cmd.close() - - cmd = cls_cmd.getConnection(EPC.IPAddress) - cmd.copyin(f'{EPC.SourceCodePath}/{server_filename}', server_filename) - cmd.close() - - status, msg = self.Iperf_analyzeV2BIDIR(server_filename, client_filename) - - elif self.iperf_direction == "IPERF3": - cmd = cls_cmd.getConnection(ue.getHost()) - cmd.run(f'rm /tmp/{server_filename}', reportNonZero=False) - port = f'{5002+idx}' - cmd.run(f'{ue.getCmdPrefix()} iperf3 -B {ueIP} -c {cn_target_ip} -p {port} {iperf_opt} --get-server-output &> /tmp/{server_filename}', timeout=iperf_time*1.5) - cmd.copyin(f'/tmp/{server_filename}', server_filename) - cmd.close() - if udpIperf: - status, msg = self.Iperf_analyzeV2Server(iperf_opt, server_filename, 1) - else: - cmd = cls_cmd.getConnection(EPC.IPAddress) - status, msg = self.Iperf_analyzeV2TCPOutput(cmd, f'/tmp/{server_filename}') - cmd.close() - - else : - raise Exception("Incorrect or missing IPERF direction in XML") + status, msg = Iperf_analyzeV3TCPJson(client_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'): @@ -988,12 +858,16 @@ class OaiCiTest(): HELP.GenericHelp(CONST.Version) sys.exit('Insufficient Parameter') - logging.debug(f'Iperf: iperf_args "{self.iperf_args}" iperf_direction "{self.iperf_direction}" iperf_packetloss_threshold "{self.iperf_packetloss_threshold}" iperf_bitrate_threshold "{self.iperf_bitrate_threshold}" iperf_profile "{self.iperf_profile}" iperf_options "{self.iperf_options}"') + logging.debug(f'Iperf: iperf_args "{self.iperf_args}" iperf_packetloss_threshold "{self.iperf_packetloss_threshold}" iperf_bitrate_threshold "{self.iperf_bitrate_threshold}" iperf_profile "{self.iperf_profile}" iperf_options "{self.iperf_options}"') - ues = [cls_module_ue.Module_UE(n.strip()) for n in self.ue_ids] + if self.ue_ids == [] or self.svr_id == None: + raise Exception("no module names in self.ue_ids or/and self.svr_id provided") + + ues = [cls_module.Module_UE(n.strip()) for n in self.ue_ids] + svr = cls_module.Module_UE(self.svr_id) logging.debug(ues) with concurrent.futures.ThreadPoolExecutor() as executor: - futures = [executor.submit(self.Iperf_Module, EPC, ue, RAN, i, len(ues)) for i, ue in enumerate(ues)] + futures = [executor.submit(self.Iperf_Module, EPC, ue, svr, RAN, i, len(ues), CONTAINERS) 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)) @@ -1272,7 +1146,7 @@ class OaiCiTest(): return global_status def TerminateUE(self, HTML): - ues = [cls_module_ue.Module_UE(n.strip()) for n in self.ue_ids] + ues = [cls_module.Module_UE(n.strip()) for n in self.ue_ids] with concurrent.futures.ThreadPoolExecutor() as executor: futures = [executor.submit(ue.terminate) for ue in ues] archives = [f.result() for f in futures] @@ -1404,7 +1278,7 @@ class OaiCiTest(): time.sleep(self.idle_sleep_time) HTML.CreateHtmlTestRow(str(self.idle_sleep_time) + ' sec', 'OK', CONST.ALL_PROCESSES_OK) - def X2_Status(self, idx, fileName): + def X2_Status(self, idx, fileName, EPC): cmd = "curl --silent http://" + EPC.IPAddress + ":9999/stats | jq '.' > " + fileName message = cmd + '\n' logging.debug(cmd) diff --git a/ci-scripts/main.py b/ci-scripts/main.py index db6fedde1a..ad93646de9 100644 --- a/ci-scripts/main.py +++ b/ci-scripts/main.py @@ -268,10 +268,11 @@ def GetParametersFromXML(action): elif action == 'Iperf': CiTestObj.iperf_args = test.findtext('iperf_args') CiTestObj.ue_ids = test.findtext('id').split(' ') - CiTestObj.iperf_direction = test.findtext('direction') + 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' + CiTestObj.iperf_tcp_rate_target = test.findtext('iperf_tcp_rate_target') or None if CiTestObj.iperf_profile != 'balanced' and CiTestObj.iperf_profile != 'unbalanced' and CiTestObj.iperf_profile != 'single-ue': logging.error(f'test-case has wrong profile {CiTestObj.iperf_profile}, forcing balanced') CiTestObj.iperf_profile = 'balanced' @@ -375,20 +376,6 @@ def GetParametersFromXML(action): if (string_field is not None): CONTAINERS.ran_checkers['u_retx_th'] = [float(x) for x in string_field.split(',')] - elif action == 'IperfFromContainer': - string_field = test.findtext('server_container_name') - if (string_field is not None): - CONTAINERS.svrContName = string_field - string_field = test.findtext('server_options') - if (string_field is not None): - CONTAINERS.svrOptions = string_field - string_field = test.findtext('client_container_name') - if (string_field is not None): - CONTAINERS.cliContName = string_field - string_field = test.findtext('client_options') - if (string_field is not None): - CONTAINERS.cliOptions = string_field - elif action == 'Run_LDPCTest' or action == 'Run_NRulsimTest' or action == 'Run_LDPCt1Test': ldpc.runargs = test.findtext('physim_run_args') diff --git a/ci-scripts/xml_class_list.yml b/ci-scripts/xml_class_list.yml index 645e5480be..5772cd4eeb 100755 --- a/ci-scripts/xml_class_list.yml +++ b/ci-scripts/xml_class_list.yml @@ -41,7 +41,6 @@ - Deploy_Run_PhySim - DeployGenObject - UndeployGenObject - - IperfFromContainer - StatsFromGenObject - LicenceAndFormattingCheck - Push_Local_Registry diff --git a/ci-scripts/xml_files/container_4g_l2sim_tdd.xml b/ci-scripts/xml_files/container_4g_l2sim_tdd.xml index 4ce82b54aa..de7baff19b 100644 --- a/ci-scripts/xml_files/container_4g_l2sim_tdd.xml +++ b/ci-scripts/xml_files/container_4g_l2sim_tdd.xml @@ -105,21 +105,23 @@ - IperfFromContainer + Iperf Iperf UDP Downlink - l2sim4g-oai-lte-ue1 - l2sim4g-trf-gen - -B 12.0.0.2 -u -i 1 -s - -c 12.0.0.2 -u -i 1 -t 30 -b 1M + l2sim4g_ue + l2sim4g_ext_dn + -u -t 30 -b 1M -R + 25 + 80 - IperfFromContainer + Iperf Iperf UDP Uplink - l2sim4g-trf-gen - l2sim4g-oai-lte-ue1 - -u -i 1 -s - -B 12.0.0.2 -c 192.168.61.11 -u -i 1 -t 30 -b 3M + l2sim4g_ue + l2sim4g_ext_dn + -u -t 30 -b 3M + 25 + 80 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 37d53e09e4..9f88fb71ef 100644 --- a/ci-scripts/xml_files/container_4g_rfsim_fdd_05MHz.xml +++ b/ci-scripts/xml_files/container_4g_rfsim_fdd_05MHz.xml @@ -110,22 +110,24 @@ 5 - - IperfFromContainer - Iperf UDP Downlink - rfsim4g-oai-lte-ue0 - rfsim4g-trf-gen - -B 12.0.0.2 -u -i 1 -s - -c 12.0.0.2 -u -i 1 -t 30 -b 2M + + Iperf + Iperf UDP DL + rfsim4g_ue + rfsim4g_ext_dn + -u -t 30 -b 2M -R + 25 + 80 - - IperfFromContainer - Iperf UDP Uplink - rfsim4g-trf-gen - rfsim4g-oai-lte-ue0 - -u -i 1 -s - -B 12.0.0.2 -c 192.168.61.11 -u -i 1 -t 30 -b 1M + + Iperf + Iperf UDP UL + rfsim4g_ue + rfsim4g_ext_dn + -u -t 30 -b 1M + 25 + 80 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 5a6189dced..9b6fdabbce 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 @@ -91,21 +91,23 @@ - IperfFromContainer - Iperf UDP Downlink - rfsim4g-oai-lte-ue0 - rfsim4g-oai-enb - -B 10.0.1.2 -u -i 1 -s - -B 10.0.1.1 -c 10.0.1.2 -u -i 1 -t 30 -b 2M + Iperf + Iperf UDP DL + rfsim4g_ue + rfsim4g_enb_nos1 + -u -t 30 -b 2M -R + 25 + 80 - IperfFromContainer - Iperf UDP Uplink - rfsim4g-oai-enb - rfsim4g-oai-lte-ue0 - -B 10.0.1.1 -u -i 1 -s - -B 10.0.1.2 -c 10.0.1.1 -u -i 1 -t 30 -b 1M + Iperf + Iperf UDP UL + rfsim4g_ue + rfsim4g_enb_nos1 + -u -t 30 -b 1M + 25 + 80 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 e6c3e1f965..d058f9f150 100644 --- a/ci-scripts/xml_files/container_4g_rfsim_fdd_10MHz.xml +++ b/ci-scripts/xml_files/container_4g_rfsim_fdd_10MHz.xml @@ -111,21 +111,23 @@ - IperfFromContainer - Iperf UDP Downlink - rfsim4g-oai-lte-ue0 - rfsim4g-trf-gen - -B 12.0.0.2 -u -i 1 -s - -c 12.0.0.2 -u -i 1 -t 30 -b 2M + Iperf + Iperf UDP DL + rfsim4g_ue + rfsim4g_ext_dn + -u -t 30 -b 2M -R + 25 + 80 - IperfFromContainer - Iperf UDP Uplink - rfsim4g-trf-gen - rfsim4g-oai-lte-ue0 - -u -i 1 -s - -B 12.0.0.2 -c 192.168.61.11 -u -i 1 -t 30 -b 1M + Iperf + Iperf UDP UL + rfsim4g_ue + rfsim4g_ext_dn + -u -t 30 -b 1M + 25 + 80 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 86b217a2a4..280814a888 100644 --- a/ci-scripts/xml_files/container_4g_rfsim_fdd_20MHz.xml +++ b/ci-scripts/xml_files/container_4g_rfsim_fdd_20MHz.xml @@ -111,21 +111,23 @@ - IperfFromContainer - Iperf UDP Downlink - rfsim4g-oai-lte-ue0 - rfsim4g-trf-gen - -B 12.0.0.2 -u -i 1 -s - -c 12.0.0.2 -u -i 1 -t 30 -b 2M + Iperf + Iperf UDP DL + rfsim4g_ue + rfsim4g_ext_dn + -u -t 30 -b 2M -R + 25 + 80 - IperfFromContainer - Iperf UDP Uplink - rfsim4g-trf-gen - rfsim4g-oai-lte-ue0 - -u -i 1 -s - -B 12.0.0.2 -c 192.168.61.11 -u -i 1 -t 30 -b 1M + Iperf + Iperf UDP UL + rfsim4g_ue + rfsim4g_ext_dn + -u -t 30 -b 1M + 25 + 80 diff --git a/ci-scripts/xml_files/container_4g_rfsim_fembms.xml b/ci-scripts/xml_files/container_4g_rfsim_fembms.xml index 60db5359e8..1a508b772a 100644 --- a/ci-scripts/xml_files/container_4g_rfsim_fembms.xml +++ b/ci-scripts/xml_files/container_4g_rfsim_fembms.xml @@ -72,12 +72,13 @@ - IperfFromContainer - Push MBMS traffic - rfsim4g-oai-lte-ue0 - rfsim4g-oai-enb - -sui1 -B 10.0.2.2 - -uc 10.0.2.2 -i1 -t10 -b2M -B10.0.2.1 + Iperf + Iperf UDP DL + rfsim4g_ue_fembms + rfsim4g_enb_fembms + -u -t 30 -b 2M + 25 + 80 diff --git a/ci-scripts/xml_files/container_4g_rfsim_mbms.xml b/ci-scripts/xml_files/container_4g_rfsim_mbms.xml index 1685a4e47d..56ab42c323 100644 --- a/ci-scripts/xml_files/container_4g_rfsim_mbms.xml +++ b/ci-scripts/xml_files/container_4g_rfsim_mbms.xml @@ -72,12 +72,13 @@ - IperfFromContainer - Push MBMS traffic - rfsim4g-oai-lte-ue0 - rfsim4g-oai-enb - -sui1 -B 10.0.2.2 - -uc 10.0.2.2 -i1 -t10 -b2M -B10.0.2.1 + Iperf + Iperf UDP DL + rfsim4g_ue + rfsim4g_enb_nos1 + -u -t 30 -b 2M -R + 25 + 80 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 862e9cca52..a5501f2879 100644 --- a/ci-scripts/xml_files/container_4g_rfsim_tdd_05MHz.xml +++ b/ci-scripts/xml_files/container_4g_rfsim_tdd_05MHz.xml @@ -112,21 +112,23 @@ - IperfFromContainer - Iperf UDP Downlink - rfsim4g-oai-lte-ue0 - rfsim4g-trf-gen - -B 12.0.0.2 -u -i 1 -s - -c 12.0.0.2 -u -i 1 -t 30 -b 2M + Iperf + Iperf UDP DL + rfsim4g_ue + rfsim4g_ext_dn + -u -t 30 -b 2M -R + 25 + 80 - IperfFromContainer - Iperf UDP Uplink - rfsim4g-trf-gen - rfsim4g-oai-lte-ue0 - -u -i 1 -s - -B 12.0.0.2 -c 192.168.61.11 -u -i 1 -t 30 -b 1M + Iperf + Iperf UDP UL + rfsim4g_ue + rfsim4g_ext_dn + -u -t 30 -b 1M + 25 + 80 diff --git a/ci-scripts/xml_files/container_5g_f1_rfsim.xml b/ci-scripts/xml_files/container_5g_f1_rfsim.xml index 09b69730a3..fc35442088 100644 --- a/ci-scripts/xml_files/container_5g_f1_rfsim.xml +++ b/ci-scripts/xml_files/container_5g_f1_rfsim.xml @@ -75,21 +75,23 @@ - IperfFromContainer - Iperf UDP Downlink - rfsim5g-oai-nr-ue - rfsim5g-oai-ext-dn - -B 12.1.1.2 -u -i 1 -s - -c 12.1.1.2 -u -i 1 -t 10 -b 20M + Iperf + Iperf (DL/20Mbps/UDP)(30 sec) + -u -b 20M -t 30 -R + rfsim5g_ue + rfsim5g_ext_dn + 5 + 90 - IperfFromContainer - Iperf UDP Uplink - rfsim5g-oai-ext-dn - rfsim5g-oai-nr-ue - -u -i 1 -s - -B 12.1.1.2 -c 192.168.72.135 -u -i 1 -t 10 -b 5M + Iperf + Iperf (UL/5Mbps/UDP)(30 sec) + -u -b 5M -t 30 + rfsim5g_ue + rfsim5g_ext_dn + 5 + 90 diff --git a/ci-scripts/xml_files/container_5g_fdd_rfsim.xml b/ci-scripts/xml_files/container_5g_fdd_rfsim.xml index 59be0e3738..da059dadd4 100644 --- a/ci-scripts/xml_files/container_5g_fdd_rfsim.xml +++ b/ci-scripts/xml_files/container_5g_fdd_rfsim.xml @@ -85,21 +85,23 @@ - IperfFromContainer - Iperf UDP Downlink - rfsim5g-oai-nr-ue - rfsim5g-oai-ext-dn - -B 12.1.1.2 -u -i 1 -s - -c 12.1.1.2 -u -i 1 -t 30 -b 3M + Iperf + Iperf (DL/3Mbps/UDP)(30 sec) + -u -b 3M -t 30 -R + rfsim5g_ue + rfsim5g_ext_dn + 5 + 90 - IperfFromContainer - Iperf UDP Uplink - rfsim5g-oai-ext-dn - rfsim5g-oai-nr-ue - -u -i 1 -s - -B 12.1.1.2 -c 192.168.72.135 -u -i 1 -t 30 -b 3M + Iperf + Iperf (UL/3Mbps/UDP)(30 sec) + -u -b 3M -t 30 + rfsim5g_ue + rfsim5g_ext_dn + 5 + 90 diff --git a/ci-scripts/xml_files/container_5g_rfsim.xml b/ci-scripts/xml_files/container_5g_rfsim.xml index 89a31b55b4..e3779d3e6b 100644 --- a/ci-scripts/xml_files/container_5g_rfsim.xml +++ b/ci-scripts/xml_files/container_5g_rfsim.xml @@ -180,21 +180,23 @@ - IperfFromContainer - Iperf UDP Downlink - rfsim5g-oai-nr-ue - rfsim5g-oai-ext-dn - -B 12.1.1.2 -u -i 1 -s - -c 12.1.1.2 -u -i 1 -t 30 -b 3M + Iperf + Iperf (DL/3Mbps/UDP)(30 sec) + -u -b 3M -t 30 -R + rfsim5g_ue + rfsim5g_ext_dn + 5 + 90 - IperfFromContainer - Iperf UDP Uplink - rfsim5g-oai-ext-dn - rfsim5g-oai-nr-ue - -u -i 1 -s - -B 12.1.1.2 -c 192.168.72.135 -u -i 1 -t 30 -b 1M + Iperf + Iperf (UL/1Mbps/UDP)(30 sec) + -u -b 1M -t 30 + rfsim5g_ue + rfsim5g_ext_dn + 5 + 90 diff --git a/ci-scripts/xml_files/container_5g_rfsim_24prb.xml b/ci-scripts/xml_files/container_5g_rfsim_24prb.xml index e90cbc309b..944d9fafc6 100644 --- a/ci-scripts/xml_files/container_5g_rfsim_24prb.xml +++ b/ci-scripts/xml_files/container_5g_rfsim_24prb.xml @@ -85,21 +85,23 @@ - IperfFromContainer - Iperf UDP Downlink - rfsim5g-oai-nr-ue - rfsim5g-oai-ext-dn - -B 12.1.1.2 -u -i 1 -s - -c 12.1.1.2 -u -i 1 -t 5 -b 3M + Iperf + Iperf (DL/3Mbps/UDP)(30 sec) + -u -b 3M -t 30 -R + rfsim5g_ue + rfsim5g_ext_dn + 5 + 90 - IperfFromContainer - Iperf UDP Uplink - rfsim5g-oai-ext-dn - rfsim5g-oai-nr-ue - -u -i 1 -s - -B 12.1.1.2 -c 192.168.72.135 -u -i 1 -t 5 -b 1M + Iperf + Iperf (UL/1Mbps/UDP)(30 sec) + -u -b 1M -t 30 + rfsim5g_ue + rfsim5g_ext_dn + 5 + 90 diff --git a/ci-scripts/xml_files/container_5g_rfsim_2x2.xml b/ci-scripts/xml_files/container_5g_rfsim_2x2.xml index 2b3f3413db..7899ac00c7 100644 --- a/ci-scripts/xml_files/container_5g_rfsim_2x2.xml +++ b/ci-scripts/xml_files/container_5g_rfsim_2x2.xml @@ -85,21 +85,23 @@ - IperfFromContainer - Iperf UDP Downlink - rfsim5g-oai-nr-ue - rfsim5g-oai-ext-dn - -B 12.1.1.2 -u -i 1 -s - -c 12.1.1.2 -u -i 1 -t 10 -b 3M + Iperf + Iperf (DL/3Mbps/UDP)(30 sec) + -u -b 3M -t 30 -R + rfsim5g_ue + rfsim5g_ext_dn + 5 + 90 - IperfFromContainer - Iperf UDP Uplink - rfsim5g-oai-ext-dn - rfsim5g-oai-nr-ue - -u -i 1 -s - -B 12.1.1.2 -c 192.168.72.135 -u -i 1 -t 10 -b 1M + Iperf + Iperf (UL/1Mbps/UDP)(30 sec) + -u -b 1M -t 30 + rfsim5g_ue + rfsim5g_ext_dn + 5 + 90 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 6ed13ceb6e..3020f63055 100644 --- a/ci-scripts/xml_files/container_5g_rfsim_fdd_phytest.xml +++ b/ci-scripts/xml_files/container_5g_rfsim_fdd_phytest.xml @@ -86,21 +86,23 @@ - IperfFromContainer - Iperf UDP Downlink - rfsim5g-oai-nr-ue - rfsim5g-oai-gnb - -sui1 -B10.0.1.2 - -uc10.0.1.2 -i1 -t10 -b30k -B10.0.1.1 + Iperf + Iperf (DL/30kbps/UDP)(30 sec) + -u -b 0.03M -t 30 -R -c 10.0.1.1 + rfsim5g_ue + rfsim5g_gnb_nos1 + 5 + 90 - IperfFromContainer - Iperf UDP Uplink - rfsim5g-oai-gnb - rfsim5g-oai-nr-ue - -sui1 -B10.0.1.1 - -uc10.0.1.1 -i1 -t10 -b30k -B10.0.1.2 + Iperf + Iperf (UL/30kbps/UDP)(30 sec) + -u -b 0.03M -t 30 -c 10.0.1.1 + rfsim5g_ue + rfsim5g_gnb_nos1 + 5 + 90 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 f2f4d5e78e..0540d44f1f 100644 --- a/ci-scripts/xml_files/container_5g_rfsim_u0_25prb.xml +++ b/ci-scripts/xml_files/container_5g_rfsim_u0_25prb.xml @@ -85,21 +85,23 @@ - IperfFromContainer - Iperf UDP Downlink - rfsim5g-oai-nr-ue - rfsim5g-oai-ext-dn - -B 12.1.1.2 -u -i 1 -s - -c 12.1.1.2 -u -i 1 -t 10 -b 3M + Iperf + Iperf (DL/3Mbps/UDP)(30 sec) + -u -b 3M -t 30 -R + rfsim5g_ue + rfsim5g_ext_dn + 5 + 90 - IperfFromContainer - Iperf UDP Uplink - rfsim5g-oai-ext-dn - rfsim5g-oai-nr-ue - -u -i 1 -s - -B 12.1.1.2 -c 192.168.72.135 -u -i 1 -t 10 -b 1M + Iperf + Iperf (UL/1Mbps/UDP)(30 sec) + -u -b 1M -t 30 + rfsim5g_ue + rfsim5g_ext_dn + 5 + 90 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 3c4a0d006e..ffdf7317f1 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 @@ -118,91 +118,82 @@ Replaces xml_files/enb_usrp210_band7_test_05mhz_tm1.xml Iperf iperf (5MHz - DL/15Mbps/UDP)(30 sec)(balanced profile) - -u -b 15M -t 30 -i 1 + -u -b 15M -t 30 -R 50 50 - DL adb_ue_1 adb_ue_2 + ltebox-nano Iperf iperf (5MHz - DL/15Mbps/UDP)(30 sec)(single-ue profile) - -u -b 15M -t 30 -i 1 + -u -b 15M -t 30 -R 50 - DL adb_ue_1 + ltebox-nano Iperf iperf (5MHz - DL/15Mbps/UDP)(30 sec)(unbalanced profile) - -u -b 15M -t 30 -i 1 + -u -b 15M -t 30 -R 50 unbalanced - DL adb_ue_1 adb_ue_2 + ltebox-nano Iperf iperf (5MHz - DL/TCP)(30 sec)(single-ue profile) - -t 30 -i 1 -fm - 50 - single-ue - DL + -t 30 -R adb_ue_2 + ltebox-nano Iperf iperf (5MHz - DL/TCP)(30 sec)(balanced profile) - -t 30 -i 1 -fm - 50 - balanced - DL + -t 30 -R adb_ue_1 adb_ue_2 + ltebox-nano Iperf iperf (5MHz - UL/9Mbps/UDP)(30 sec)(balanced profile) - -u -b 9M -t 30 -i 1 + -u -b 9M -t 30 50 balanced - UL adb_ue_1 adb_ue_2 + ltebox-nano Iperf iperf (5MHz - UL/9Mbps/UDP)(30 sec)(single-ue profile) - -u -b 9M -t 30 -i 1 + -u -b 9M -t 30 50 50 - single-ue - UL adb_ue_1 + ltebox-nano Iperf iperf (5MHz - UL/TCP)(30 sec)(single-ue profile) - -t 30 -i 1 -fm - 50 - single-ue - UL + -t 30 adb_ue_1 + ltebox-nano Iperf iperf (5MHz - UL/TCP)(30 sec)(balanced profile) - -t 30 -i 1 -fm - 50 - balanced - UL + -t 30 adb_ue_1 adb_ue_2 + ltebox-nano 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 0f4b6535ef..711d685bad 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 @@ -126,62 +126,57 @@ Iperf iperf (5MHz - DL/15Mbps/UDP)(30 sec)(balanced profile) - -u -b 15M -t 30 -i 1 + -u -b 15M -t 30 -R 50 50 - DL adb_ue_1 adb_ue_2 + ltebox-nano Iperf iperf (5MHz - DL/15Mbps/UDP)(30 sec)(single-ue profile) - -u -b 15M -t 30 -i 1 + -u -b 15M -t 30 -R 50 - DL adb_ue_1 + ltebox-nano Iperf iperf (5MHz - DL/TCP)(30 sec)(single-ue profile) - -t 30 -i 1 -fm - 50 - single-ue - DL + -t 30 -R adb_ue_2 + ltebox-nano Iperf iperf (5MHz - UL/9Mbps/UDP)(30 sec)(balanced profile) - -u -b 9M -t 30 -i 1 + -u -b 9M -t 30 50 50 balanced - UL adb_ue_1 adb_ue_2 + ltebox-nano Iperf iperf (5MHz - UL/9Mbps/UDP)(30 sec)(single-ue profile) - -u -b 9M -t 30 -i 1 + -u -b 9M -t 30 50 50 - single-ue - UL adb_ue_1 + ltebox-nano Iperf iperf (5MHz - UL/TCP)(30 sec)(single-ue profile) - -t 30 -i 1 -fm - 50 - single-ue - UL + -t 30 adb_ue_1 + ltebox-nano 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 6fd083a2e8..5d9eb0c13f 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 @@ -112,92 +112,83 @@ Replaces xml_files/enb_usrp210_band7_test_10mhz_tm1.xml Iperf iperf (10MHz - DL/30Mbps/UDP)(30 sec)(balanced profile) - -u -b 30M -t 30 -i 1 + -u -b 30M -t 30 -R 50 50 balanced - DL adb_ue_1 adb_ue_2 + ltebox-nano Iperf iperf (10MHz - DL/30Mbps/UDP)(30 sec)(single-ue profile) - -u -b 30M -t 30 -i 1 + -u -b 30M -t 30 -R 50 - single-ue - DL adb_ue_1 + ltebox-nano Iperf iperf (10MHz - DL/30Mbps/UDP)(30 sec)(unbalanced profile) - -u -b 30M -t 30 -i 1 + -u -b 30M -t 30 -R 50 unbalanced - DL adb_ue_1 adb_ue_2 + ltebox-nano Iperf iperf (10MHz - DL/TCP)(30 sec)(single-ue profile) - -t 30 -i 1 -fm - 50 - single-ue - DL + -t 30 -R adb_ue_1 + ltebox-nano Iperf iperf (10MHz - DL/TCP)(30 sec)(balanced profile) - -t 30 -i 1 -fm - 50 - balanced - DL + -t 30 -R adb_ue_1 adb_ue_2 + ltebox-nano Iperf iperf (10MHz - UL/18Mbps/UDP)(30 sec)(balanced profile) - -u -b 18M -t 30 -i 1 + -u -b 18M -t 30 50 balanced - UL adb_ue_1 adb_ue_2 + ltebox-nano Iperf iperf (10MHz - UL/18Mbps/UDP)(30 sec)(single-ue profile) - -u -b 18M -t 30 -i 1 + -u -b 18M -t 30 50 - single-ue - UL adb_ue_1 + ltebox-nano Iperf iperf (10MHz - UL/TCP)(30 sec)(single-ue profile) - -t 30 -i 1 -fm - 50 - single-ue - UL + -t 30 adb_ue_1 + ltebox-nano Iperf iperf (10MHz - UL/TCP)(30 sec)(balanced profile) - -t 30 -i 1 -fm - 50 + -t 30 balanced - UL adb_ue_1 adb_ue_2 + ltebox-nano 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 01be9676be..358eeb20cc 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 @@ -105,22 +105,22 @@ Replaces xml_files/enb_usrp210_band7_test_10mhz_tm1.xml Iperf iperf (10MHz - DL/30Mbps/UDP)(30 sec)(balanced profile) - -u -b 30M -t 30 -i 1 + -u -b 30M -t 30 -R 50 50 balanced - DL adb_ue_1 adb_ue_2 + ltebox-nano Iperf iperf (10MHz - UL/20Mbps/UDP)(30 sec)(balanced profile) - -u -b 20M -t 30 -i 1 + -u -b 20M -t 30 50 balanced - UL adb_ue_1 adb_ue_2 + ltebox-nano 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 4d42fb4153..7b8a06e51c 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 @@ -134,41 +134,38 @@ Iperf iperf (10MHz - DL/10Mbps/UDP)(30 sec)(balanced profile) - -u -b 10M -t 30 -i 1 + -u -b 10M -t 30 -R 50 - single-ue - DL lte_oai_ue_carabe + nano-cn4g Iperf iperf (10MHz - DL/TCP)(30 sec)(single-ue profile) - -t 30 -i 1 -fm + -t 30 -R 50 - single-ue - DL lte_oai_ue_carabe + nano-cn4g Iperf iperf (10MHz - UL/10Mbps/UDP)(30 sec)(balanced profile) - -u -b 10M -t 30 -i 1 + -u -b 10M -t 30 50 - single-ue - UL lte_oai_ue_carabe + nano-cn4g Iperf iperf (10MHz - UL/TCP)(30 sec)(balanced profile) - -t 30 -i 1 -fm + -t 30 50 balanced - UL lte_oai_ue_carabe + nano-cn4g 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 index 33df87d924..03d502fe14 100644 --- 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 @@ -25,11 +25,29 @@ 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 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 8bb2dfafc9..c526cd9786 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 @@ -111,92 +111,84 @@ Replaces xml_files/enb_usrp210_band7_test_10mhz_tm1.xml Iperf iperf (20MHz - DL/70Mbps/UDP)(30 sec)(balanced profile) - -u -b 70M -t 30 -i 1 + -u -b 70M -t 30 -R 50 50 balanced - DL adb_ue_1 adb_ue_2 + ltebox-nano Iperf iperf (20MHz - DL/70Mbps/UDP)(30 sec)(single-ue profile) - -u -b 70M -t 30 -i 1 + -u -b 70M -t 30 -R 50 - single-ue - DL adb_ue_1 + ltebox-nano Iperf iperf (20MHz - DL/70Mbps/UDP)(30 sec)(unbalanced profile) - -u -b 70M -t 30 -i 1 + -u -b 70M -t 30 -R 50 unbalanced - DL adb_ue_1 adb_ue_2 + ltebox-nano Iperf iperf (20MHz - DL/TCP)(30 sec)(single-ue profile) - -t 30 -i 1 -fm - 50 - single-ue - DL + -t 30 -R adb_ue_1 + ltebox-nano Iperf iperf (20MHz - DL/TCP)(30 sec)(balanced profile) - -t 30 -i 1 -fm - 50 + -t 30 -R balanced - DL adb_ue_1 adb_ue_2 + ltebox-nano Iperf iperf (20MHz - UL/12Mbps/UDP)(30 sec)(balanced profile) - -u -b 12M -t 30 -i 1 + -u -b 12M -t 30 50 balanced - UL adb_ue_1 adb_ue_2 + ltebox-nano Iperf iperf (20MHz - UL/17Mbps/UDP)(30 sec)(single-ue profile) - -u -b 17M -t 30 -i 1 + -u -b 17M -t 30 50 - single-ue - UL adb_ue_1 + ltebox-nano Iperf iperf (20MHz - UL/TCP)(30 sec)(single-ue profile) - -t 30 -i 1 -fm - 50 - single-ue - UL + -t 30 adb_ue_1 + ltebox-nano Iperf iperf (20MHz - UL/TCP)(30 sec)(balanced profile) - -t 30 -i 1 -fm - 50 + -t 30 balanced - UL adb_ue_1 adb_ue_2 + ltebox-nano 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 d181fd1a0d..7928cccbe1 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 @@ -119,100 +119,93 @@ Replaces xml_files/enb_usrp210_band40_test_05mhz_tm1.xml Iperf iperf (5MHz - DL/6.5Mbps/UDP)(30 sec)(balanced) - -u -b 6.5M -t 30 -i 1 + -u -b 6.5M -t 30 -R 50 50 balanced - DL adb_ue_1 adb_ue_2 + ltebox-nano Iperf iperf (5MHz - DL/6.5Mbps/UDP)(30 sec)(single-ue) - -u -b 6.5M -t 30 -i 1 + -u -b 6.5M -t 30 -R 50 - single-ue - DL adb_ue_1 + ltebox-nano Iperf iperf (5MHz - DL/6.5Mbps/UDP)(30 sec)(unbalanced) - -u -b 6.5M -t 30 -i 1 + -u -b 6.5M -t 30 -R 50 unbalanced - DL adb_ue_1 adb_ue_2 + ltebox-nano Iperf iperf (5MHz - DL/TCP)(30 sec)(single-ue profile) - -t 30 -i 1 -fm - 50 - single-ue - DL + -t 30 -R adb_ue_1 + ltebox-nano Iperf iperf (5MHz - DL/TCP)(30 sec) - -t 30 -i 1 -fm - 50 - DL + -t 30 -R adb_ue_1 adb_ue_2 + ltebox-nano Iperf iperf (5MHz - UL/2Mbps/UDP)(30 sec)(balanced) - -u -b 2M -t 30 -i 1 + -u -b 2M -t 30 50 balanced - UL adb_ue_1 adb_ue_2 + ltebox-nano Iperf iperf (5MHz - UL/2Mbps/UDP)(30 sec)(single-ue) - -u -b 2M -t 30 -i 1 + -u -b 2M -t 30 50 - single-ue - UL adb_ue_1 + ltebox-nano Iperf iperf (5MHz - UL/2Mbps/UDP)(30 sec)(unbalanced) - -u -b 2M -t 30 -i 1 + -u -b 2M -t 30 50 unbalanced - UL adb_ue_1 adb_ue_2 + ltebox-nano Iperf iperf (5MHz - UL/TCP)(30 sec)(single-ue) - -t 30 -i 1 -fm - 50 - single-ue - UL + -t 30 adb_ue_1 + ltebox-nano Iperf iperf (5MHz - UL/TCP)(30 sec) - -t 30 -i 1 -fm + -t 30 50 - UL adb_ue_1 adb_ue_2 + ltebox-nano 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 1c87cefe82..ce4ce3346c 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 @@ -127,80 +127,72 @@ Iperf iperf (5MHz - DL/6.5Mbps/UDP)(30 sec)(balanced) - -u -b 6.5M -t 30 -i 1 + -u -b 6.5M -t 30 -R 50 50 balanced - DL adb_ue_1 adb_ue_2 + ltebox-nano Iperf iperf (5MHz - DL/6.5Mbps/UDP)(30 sec)(single-ue) - -u -b 6.5M -t 30 -i 1 + -u -b 6.5M -t 30 -R 50 - single-ue - DL adb_ue_1 + ltebox-nano Iperf iperf (5MHz - DL/TCP)(30 sec)(single-ue profile) - -t 30 -i 1 -fm - 50 - single-ue - DL + -t 30 -R adb_ue_1 + ltebox-nano Iperf iperf (5MHz - DL/TCP)(30 sec) - -t 30 -i 1 -fm - 50 - DL + -t 30 -R adb_ue_1 adb_ue_2 + ltebox-nano Iperf iperf (5MHz - UL/2Mbps/UDP)(30 sec)(balanced) - -u -b 2M -t 30 -i 1 + -u -b 2M -t 30 50 balanced - UL adb_ue_1 adb_ue_2 + ltebox-nano Iperf iperf (5MHz - UL/2Mbps/UDP)(30 sec)(single-ue) - -u -b 2M -t 30 -i 1 + -u -b 2M -t 30 50 - single-ue - UL adb_ue_1 + ltebox-nano Iperf iperf (5MHz - UL/TCP)(30 sec)(single-ue) - -t 30 -i 1 -fm - 50 - single-ue - UL + -t 30 adb_ue_1 + ltebox-nano Iperf iperf (5MHz - UL/TCP)(30 sec) - -t 30 -i 1 -fm - 50 - UL + -t 30 adb_ue_1 adb_ue_2 + ltebox-nano 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 7222215932..d79c668b58 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 @@ -109,99 +109,86 @@ Replaces xml_files/enb_usrp210_band40_test_05mhz_tm2.xml Iperf iperf (5MHz - DL/6.5Mbps/UDP)(30 sec)(balanced) - -u -b 6.5M -t 30 -i 1 + -u -b 6.5M -t 30 -R 50 balanced - DL adb_ue_1 adb_ue_2 Iperf iperf (5MHz - DL/6.5Mbps/UDP)(30 sec)(single-ue) - -u -b 6.5M -t 30 -i 1 + -u -b 6.5M -t 30 -R 50 - single-ue - DL adb_ue_1 Iperf iperf (5MHz - DL/6.5Mbps/UDP)(30 sec)(unbalanced) - -u -b 6.5M -t 30 -i 1 + -u -b 6.5M -t 30 50 unbalanced - DL adb_ue_1 adb_ue_2 Iperf iperf (5MHz - DL/TCP)(30 sec)(single-ue profile) - -t 30 -i 1 -fm - 50 - single-ue - DL + -t 30 -R adb_ue_1 Iperf iperf (5MHz - DL/TCP)(30 sec) - -t 30 -i 1 -fm - 50 - DL + -t 30 -R adb_ue_1 adb_ue_2 Iperf iperf (5MHz - UL/2Mbps/UDP)(30 sec)(balanced) - -u -b 2M -t 30 -i 1 + -u -b 2M -t 30 50 balanced - UL adb_ue_1 adb_ue_2 + ltebox-nano Iperf iperf (5MHz - UL/2Mbps/UDP)(30 sec)(single-ue) - -u -b 2M -t 30 -i 1 + -u -b 2M -t 30 50 - single-ue - UL adb_ue_1 + ltebox-nano Iperf iperf (5MHz - UL/2Mbps/UDP)(30 sec)(unbalanced) - -u -b 2M -t 30 -i 1 + -u -b 2M -t 30 50 unbalanced - UL adb_ue_1 adb_ue_2 + ltebox-nano Iperf iperf (5MHz - UL/TCP)(30 sec)(single-ue) - -t 30 -i 1 -fm - 50 - single-ue - UL + -t 30 adb_ue_1 + ltebox-nano Iperf iperf (5MHz - UL/TCP)(30 sec) - -t 30 -i 1 -fm - 50 - UL + -t 30 adb_ue_1 adb_ue_2 + ltebox-nano 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 ef9239fe86..2487163e20 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 @@ -109,100 +109,93 @@ Replaces xml_files/enb_usrp210_band40_test_10mhz_tm1.xml Iperf iperf (10MHz - DL/13.5Mbps/UDP)(30 sec)(balanced) - -u -b 13.5M -t 30 -i 1 + -u -b 13.5M -t 30 -R 50 50 balanced - DL adb_ue_1 adb_ue_2 + ltebox-nano Iperf iperf (10MHz - DL/13.5Mbps/UDP)(30 sec)(single-ue) - -u -b 13.5M -t 30 -i 1 + -u -b 13.5M -t 30 -R 50 - single-ue - DL adb_ue_1 + ltebox-nano Iperf iperf (10MHz - DL/13.5Mbps/UDP)(30 sec)(unbalanced) - -u -b 13.5M -t 30 -i 1 + -u -b 13.5M -t 30 -R 50 unbalanced - DL adb_ue_1 adb_ue_2 + ltebox-nano Iperf iperf (10MHz - DL/TCP)(30 sec)(single-ue) - -t 30 -i 1 -fm - 50 - single-ue - DL + -t 30 -R adb_ue_1 + ltebox-nano Iperf iperf (10MHz - DL/TCP)(30 sec) - -t 30 -i 1 -fm + -t 30 -R 50 - DL adb_ue_1 adb_ue_2 + ltebox-nano Iperf iperf (10MHz - UL/2Mbps/UDP)(30 sec)(balanced) - -u -b 2M -t 30 -i 1 + -u -b 2M -t 30 50 balanced - UL adb_ue_1 adb_ue_2 + ltebox-nano Iperf iperf (10MHz - UL/2Mbps/UDP)(30 sec)(single-ue) - -u -b 2M -t 30 -i 1 + -u -b 2M -t 30 50 - single-ue - UL adb_ue_1 + ltebox-nano Iperf iperf (10MHz - UL/2Mbps/UDP)(30 sec)(unbalanced) - -u -b 2M -t 30 -i 1 + -u -b 2M -t 30 50 unbalanced - UL adb_ue_1 adb_ue_2 + ltebox-nano Iperf iperf (10MHz - UL/TCP)(30 sec)(single-ue) - -t 30 -i 1 -fm - 50 - single-ue - UL + -t 30 adb_ue_1 + ltebox-nano Iperf iperf (10MHz - UL/TCP)(30 sec) - -t 30 -i 1 -fm - 50 - UL + -t 30 adb_ue_1 adb_ue_2 + ltebox-nano 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 d853b56855..476f159ea2 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 @@ -109,99 +109,91 @@ Replaces xml_files/enb_usrp210_band40_test_20mhz_tm1.xml Iperf iperf (20MHz - DL/13.5Mbps/UDP)(30 sec)(balanced) - -u -b 13.5M -t 30 -i 1 + -u -b 13.5M -t 30 -R 50 balanced - DL adb_ue_1 adb_ue_2 + ltebox-nano Iperf iperf (20MHz - DL/13.5Mbps/UDP)(30 sec)(single-ue) - -u -b 13.5M -t 30 -i 1 + -u -b 13.5M -t 30 -R 50 - single-ue - DL adb_ue_1 + ltebox-nano Iperf iperf (20MHz - DL/13.5Mbps/UDP)(30 sec)(unbalanced) - -u -b 13.5M -t 30 -i 1 + -u -b 13.5M -t 30 -R 50 unbalanced - DL adb_ue_1 adb_ue_2 + ltebox-nano Iperf iperf (20MHz - DL/TCP)(30 sec)(single-ue) - -t 30 -i 1 -fm - 50 - single-ue - DL + -t 30 -R adb_ue_1 + ltebox-nano Iperf iperf (20MHz - DL/TCP)(30 sec) - -t 30 -i 1 -fm - 50 - DL + -t 30 -R adb_ue_1 adb_ue_2 + ltebox-nano Iperf iperf (20MHz - UL/2Mbps/UDP)(30 sec)(balanced) - -u -b 2M -t 30 -i 1 + -u -b 2M -t 30 -R 50 balanced - UL adb_ue_1 adb_ue_2 + ltebox-nano Iperf iperf (20MHz - UL/2Mbps/UDP)(30 sec)(single-ue) - -u -b 2M -t 30 -i 1 + -u -b 2M -t 30 -R 50 - single-ue - UL adb_ue_1 + ltebox-nano Iperf iperf (20MHz - UL/2Mbps/UDP)(30 sec)(unbalanced) - -u -b 2M -t 30 -i 1 + -u -b 2M -t 30 50 unbalanced - UL adb_ue_1 adb_ue_2 + ltebox-nano Iperf iperf (20MHz - UL/TCP)(30 sec)(single-ue) - -t 30 -i 1 -fm - 50 - single-ue - UL + -t 30 adb_ue_1 + ltebox-nano Iperf iperf (20MHz - UL/TCP)(30 sec) - -t 30 -i 1 -fm - 50 - UL + -t 30 adb_ue_1 adb_ue_2 + ltebox-nano 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 0fae91af5f..b8c6d2c09f 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 @@ -111,102 +111,95 @@ Replaces xml_files/enb_usrp210_band40_test_20mhz_tm1_default_scheduler.xml Iperf iperf (20MHz - DL/27.5Mbps/UDP)(30 sec)(balanced) - -u -b 27.5M -t 30 -i 1 + -u -b 27.5M -t 30 -R 50 50 balanced - DL adb_ue_1 adb_ue_2 + ltebox-nano Iperf iperf (20MHz - DL/27.5Mbps/UDP)(30 sec)(single-ue) - -u -b 27.5M -t 30 -i 1 + -u -b 27.5M -t 30 -R 50 50 - single-ue - DL adb_ue_1 + ltebox-nano Iperf iperf (20MHz - DL/27.5Mbps/UDP)(30 sec)(unbalanced) - -u -b 27.5M -t 30 -i 1 + -u -b 27.5M -t 30 -R 50 50 unbalanced - DL adb_ue_1 adb_ue_2 + ltebox-nano Iperf iperf (20MHz - DL/TCP)(30 sec)(single-ue) - -t 30 -i 1 -fm - 50 - single-ue - DL + -t 30 -R adb_ue_1 + ltebox-nano Iperf iperf (20MHz - DL/TCP)(30 sec) - -t 30 -i 1 -fm + -t 30 -R 50 - DL adb_ue_1 adb_ue_2 + ltebox-nano Iperf iperf (20MHz - UL/7Mbps/UDP)(30 sec)(balanced) - -u -b 7M -t 30 -i 1 + -u -b 7M -t 30 50 balanced - UL adb_ue_1 adb_ue_2 + ltebox-nano Iperf iperf (20MHz - UL/7Mbps/UDP)(30 sec)(single-ue) - -u -b 7M -t 30 -i 1 + -u -b 7M -t 30 50 - single-ue - UL adb_ue_1 + ltebox-nano Iperf iperf (20MHz - UL/7Mbps/UDP)(30 sec)(unbalanced) - -u -b 7M -t 30 -i 1 + -u -b 7M -t 30 50 unbalanced - UL adb_ue_1 adb_ue_2 + ltebox-nano Iperf iperf (20MHz - UL/TCP)(30 sec)(single-ue) - -t 30 -i 1 -fm - 50 - single-ue - UL + -t 30 adb_ue_1 + ltebox-nano Iperf iperf (20MHz - UL/TCP)(30 sec) - -t 30 -i 1 -fm - 50 - UL + -t 30 adb_ue_1 adb_ue_2 + ltebox-nano 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 new file mode 100644 index 0000000000..01c89ae585 --- /dev/null +++ b/ci-scripts/xml_files/container_lte_n3xx_tdd_2x2_cleanup.xml @@ -0,0 +1,54 @@ + + + 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 7bec0f8a83..8334ca49d1 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 @@ -106,23 +106,21 @@ Iperf iperf (DL/26Mbps/UDP)(60 sec)(single-ue profile) - -u -b 26M -t 60 - DL + -u -b 26M -t 60 -R up2 + porcepix-cn4g 5 95 - single-ue Iperf iperf (UL/7Mbps/UDP)(60 sec)(single-ue profile) -u -b 7M -t 60 - UL up2 + porcepix-cn4g 5 95 - single-ue 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 f57b77648c..bee8c9eba5 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 @@ -106,23 +106,21 @@ Iperf iperf (DL/26Mbps/UDP)(60 sec)(single-ue profile) - -u -b 1M -t 60 - DL + -u -b 1M -t 60 -R up2 + porcepix-cn4g 5 95 - single-ue Iperf iperf (UL/7Mbps/UDP)(60 sec)(single-ue profile) -u -b 7M -t 60 - UL up2 + porcepix-cn4g 5 95 - single-ue diff --git a/ci-scripts/xml_files/container_nsa_b200_quectel.xml b/ci-scripts/xml_files/container_nsa_b200_quectel.xml index 220b646f25..98eb70a808 100644 --- a/ci-scripts/xml_files/container_nsa_b200_quectel.xml +++ b/ci-scripts/xml_files/container_nsa_b200_quectel.xml @@ -186,32 +186,29 @@ Iperf iperf (DL/70Mbps/UDP)(60 sec)(single-ue profile) - -u -b 70M -t 60 -i 1 -fm - DL + -u -b 70M -t 60 -R idefix + ltebox-nepes 25 80 - single-ue Iperf iperf (UL/8Mbps/UDP)(60 sec)(single-ue profile) - -u -b 8M -t 60 -i 1 -fm - UL + -u -b 8M -t 60 idefix + ltebox-nepes 1 95 - single-ue Iperf iperf (BIDIR TCP)(10 sec)(single-ue profile) -t 10 --bidir - BIDIR idefix - single-ue + ltebox-nepes diff --git a/ci-scripts/xml_files/container_sa_aerial_quectel.xml b/ci-scripts/xml_files/container_sa_aerial_quectel.xml index 51817790dd..42ceb07530 100644 --- a/ci-scripts/xml_files/container_sa_aerial_quectel.xml +++ b/ci-scripts/xml_files/container_sa_aerial_quectel.xml @@ -98,7 +98,7 @@ Iperf iperf (DL/UDP/80M)(30 sec)(single-ue profile) -u -b 80M -t 30 -R - IPERF3 + porcepix-cn5g sphex_quectel 25 80 @@ -108,7 +108,7 @@ Iperf iperf (UL/UDP/40M)(30 sec)(single-ue profile) -u -b 40M -t 30 - IPERF3 + porcepix-cn5g sphex_quectel 25 80 diff --git a/ci-scripts/xml_files/container_sa_aerial_quectel_cleanup.xml b/ci-scripts/xml_files/container_sa_aerial_quectel_cleanup.xml index 2a84098875..23ecc5195e 100644 --- a/ci-scripts/xml_files/container_sa_aerial_quectel_cleanup.xml +++ b/ci-scripts/xml_files/container_sa_aerial_quectel_cleanup.xml @@ -25,12 +25,21 @@ CleanUp AERIAL trash + 000000 111111 222222 333333 + + Undeploy_Object + Undeploy gNB + ci-scripts/yaml_files/sa_gnb_aerial + 0 + 0 + + Clean_Test_Server_Images Clean Test Images on Test Server diff --git a/ci-scripts/xml_files/container_sa_aw2s_asue.xml b/ci-scripts/xml_files/container_sa_aw2s_asue.xml index 10170885f0..3885fbdd8e 100644 --- a/ci-scripts/xml_files/container_sa_aw2s_asue.xml +++ b/ci-scripts/xml_files/container_sa_aw2s_asue.xml @@ -49,6 +49,8 @@ 000010 000020 002016 + 000030 + 000040 000200 003000 004000 @@ -171,23 +173,42 @@ Iperf iperf (DL/7Mbps/UDP)(30 sec)(multi-ue profile) - -u -b 70M -t 30 -i 1 -R - IPERF3 + -u -b 70M -t 30 -R 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 25 80 balanced + oc-cn5g + + + + Iperf + iperf (DL/TCP)(30 sec)(multi-ue profile) + -t 30 -R + 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 + 4 + oc-cn5g Iperf iperf (UL/3.6Mbps/UDP)(30 sec)(multi-ue profile) - -u -b 36M -t 30 -i 1 - IPERF3 + -u -b 36M -t 30 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 25 80 balanced + oc-cn5g + + + + Iperf + iperf (UL/TCP)(30 sec)(multi-ue profile) + -t 30 + oc-cn5g + 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 + 1 + oc-cn5g diff --git a/ci-scripts/xml_files/container_sa_aw2s_asue_cleanup.xml b/ci-scripts/xml_files/container_sa_aw2s_asue_cleanup.xml index 8c8daf9e04..0b90afeee3 100644 --- a/ci-scripts/xml_files/container_sa_aw2s_asue_cleanup.xml +++ b/ci-scripts/xml_files/container_sa_aw2s_asue_cleanup.xml @@ -27,20 +27,29 @@ 111111 222222 + 333333 - Clean_Test_Server_Images - Clean Test Images on Test Server - 0 - - - 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 0296ecfe93..7d139f46fe 100644 --- a/ci-scripts/xml_files/container_sa_b200_quectel.xml +++ b/ci-scripts/xml_files/container_sa_b200_quectel.xml @@ -36,6 +36,8 @@ 070000 070001 070002 + 070003 + 070004 060001 000002 060002 @@ -136,32 +138,47 @@ Iperf iperf (DL/30Mbps/UDP)(30 sec)(single-ue profile) - -u -b 30M -t 30 -i 1 -fm - DL + -u -b 30M -t 30 -R idefix + sabox-nepes 25 80 - single-ue Iperf iperf (UL/3.5Mbps/UDP)(30 sec)(single-ue profile) - -u -b 3.5M -t 30 -i 1 -fm - UL + -u -b 3.5M -t 30 idefix + sabox-nepes 1 95 - single-ue Iperf iperf (BIDIR TCP)(10 sec)(single-ue profile) -t 10 --bidir - BIDIR idefix - single-ue + sabox-nepes + + + + Iperf + iperf (DL/TCP)(30 sec)(multi-ue profile) + -t 30 -R + idefix + sabox-nepes + 40 + + + + Iperf + iperf (UL/TCP)(30 sec)(multi-ue profile) + -t 30 + idefix + sabox-nepes + 10 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 541edb9172..af550ad4b6 100644 --- a/ci-scripts/xml_files/container_sa_e1_b200_quectel.xml +++ b/ci-scripts/xml_files/container_sa_e1_b200_quectel.xml @@ -37,6 +37,8 @@ 370001 370000 370002 + 370003 + 370004 360001 100002 360002 @@ -128,32 +130,47 @@ Iperf iperf (DL/80Mbps/UDP)(30 sec) - -u -b 80M -t 30 -i 1 -fm - DL + -u -b 80M -t 30 -R idefix + sabox-nepes 10 95 - single-ue Iperf iperf (UL/8Mbps/UDP)(30 sec) - -u -b 8M -t 30 -i 1 -fm - UL + -u -b 8M -t 30 idefix + sabox-nepes 1 95 - single-ue Iperf iperf (BIDIR TCP)(10 sec)(single-ue profile) -t 20 --bidir - BIDIR idefix - single-ue + sabox-nepes + + + + Iperf + iperf (DL/TCP)(30 sec)(multi-ue profile) + -t 30 -R + idefix + sabox-nepes + 30 + + + + Iperf + iperf (UL/TCP)(30 sec)(multi-ue profile) + -t 30 + idefix + sabox-nepes + 15 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 e473fdea10..9d9ff62012 100644 --- a/ci-scripts/xml_files/container_sa_f1_b200_quectel.xml +++ b/ci-scripts/xml_files/container_sa_f1_b200_quectel.xml @@ -49,6 +49,8 @@ 170001 170000 170002 + 170003 + 170004 110011 110002 100001 @@ -160,32 +162,47 @@ Iperf iperf (DL/50Mbps/UDP)(30 sec) - -u -b 50M -t 30 -i 1 -fm - DL + -u -b 50M -t 30 -R idefix + sabox-nepes 10 95 - single-ue Iperf iperf (UL/25Mbps/UDP)(30 sec) - -u -b 25M -t 30 -i 1 -fm - UL + -u -b 25M -t 30 idefix + sabox-nepes 1 95 - single-ue Iperf iperf (BIDIR TCP)(60 sec)(single-ue profile) -t 60 --bidir - BIDIR idefix - single-ue + sabox-nepes + + + + Iperf + iperf (DL/TCP)(30 sec)(multi-ue profile) + -t 30 -R + idefix + sabox-nepes + 45 + + + + Iperf + iperf (UL/TCP)(30 sec)(multi-ue profile) + -t 30 + idefix + sabox-nepes + 25 diff --git a/ci-scripts/xml_files/container_sa_n310_nrue.xml b/ci-scripts/xml_files/container_sa_n310_nrue.xml index ce7dd26b6d..c4dbb83410 100644 --- a/ci-scripts/xml_files/container_sa_n310_nrue.xml +++ b/ci-scripts/xml_files/container_sa_n310_nrue.xml @@ -91,8 +91,8 @@ Iperf iperf (DL/20Mbps/UDP)(30 sec)(single-ue profile) -u -b 20M -t 30 -i 1 -R - IPERF3 oai_ue_caracal + oc-cn5g 25 80 @@ -101,8 +101,8 @@ Iperf iperf (UL/5Mbps/UDP)(30 sec)(single-ue profile) -u -b 5M -t 30 -i 1 - IPERF3 oai_ue_caracal + oc-cn5g 25 80 diff --git a/ci-scripts/xml_files/container_sa_n310_nrue_cleanup.xml b/ci-scripts/xml_files/container_sa_n310_nrue_cleanup.xml index 0bac1e010b..035e38a40d 100644 --- a/ci-scripts/xml_files/container_sa_n310_nrue_cleanup.xml +++ b/ci-scripts/xml_files/container_sa_n310_nrue_cleanup.xml @@ -27,16 +27,34 @@ 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 c826d93ce6..e1fb0f5318 100644 --- a/ci-scripts/xml_files/container_sa_sc_b200_quectel.xml +++ b/ci-scripts/xml_files/container_sa_sc_b200_quectel.xml @@ -36,6 +36,8 @@ 270000 270001 270002 + 270003 + 270004 260001 200002 260002 @@ -130,32 +132,47 @@ Iperf iperf (DL/80Mbps/UDP)(30 sec)(single-ue profile) - -u -b 80M -t 30 -i 1 -fm - DL + -u -b 80M -t 30 -R idefix + sabox-nepes 5 95 - single-ue Iperf iperf (UL/6Mbps/UDP)(30 sec)(single-ue profile) - -u -b 6M -t 30 -i 1 -fm - UL + -u -b 6M -t 30 idefix + sabox-nepes 1 95 - single-ue Iperf iperf (BIDIR TCP)(10 sec)(single-ue profile) -t 10 --bidir - BIDIR idefix - single-ue + sabox-nepes + + + + Iperf + iperf (DL/TCP)(30 sec)(multi-ue profile) + -t 30 -R + idefix + sabox-nepes + 35 + + + + Iperf + iperf (UL/TCP)(30 sec)(multi-ue profile) + -t 30 + idefix + sabox-nepes + 5 diff --git a/ci-scripts/xml_files/fr1_nsa_2x2_quectel.xml b/ci-scripts/xml_files/fr1_nsa_2x2_quectel.xml index df0f01488d..5ca01a196e 100644 --- a/ci-scripts/xml_files/fr1_nsa_2x2_quectel.xml +++ b/ci-scripts/xml_files/fr1_nsa_2x2_quectel.xml @@ -159,31 +159,25 @@ Iperf iperf (DL/125Mbps/UDP)(60 sec)(single-ue profile) - -u -b 125M -t 60 - DL + -u -b 125M -t 60 -R nrmodule2_quectel 15 85 - single-ue Iperf iperf (UL/1Mbps/UDP)(20 sec)(single-ue profile) -u -b 3M -t 60 - UL nrmodule2_quectel 5 - single-ue Iperf iperf (BIDIR TCP)(10 sec)(single-ue profile) -t 10 --bidir - BIDIR nrmodule2_quectel - single-ue diff --git a/ci-scripts/xml_files/fr1_nsa_quectel.xml b/ci-scripts/xml_files/fr1_nsa_quectel.xml index e300bd7f1c..1a08d33ecf 100644 --- a/ci-scripts/xml_files/fr1_nsa_quectel.xml +++ b/ci-scripts/xml_files/fr1_nsa_quectel.xml @@ -158,23 +158,19 @@ Iperf iperf (DL/125Mbps/UDP)(60 sec)(single-ue profile) - -u -b 125M -t 60 - DL + -u -b 125M -t 60 -R idefix 25 80 - single-ue Iperf iperf (UL/8Mbps/UDP)(60 sec)(single-ue profile) -u -b 8M -t 60 - UL idefix 1 95 - single-ue 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 732dd3bb7d..261e2623dd 100644 --- a/ci-scripts/xml_files/fr1_nsa_quectel_attach_detach.xml +++ b/ci-scripts/xml_files/fr1_nsa_quectel_attach_detach.xml @@ -124,21 +124,17 @@ Iperf iperf (DL/20Mbps/UDP)(60 sec)(single-ue profile) - -u -b 20M -t 60 - DL + -u -b 20M -t 60 -R idefix 50 - single-ue Iperf iperf (UL/3Mbps/UDP)(60 sec)(single-ue profile) -u -b 3M -t 60 - UL idefix 50 - single-ue diff --git a/ci-scripts/xml_files/fr1_nsa_quectel_long.xml b/ci-scripts/xml_files/fr1_nsa_quectel_long.xml index a37cbb4d72..cccbd3fa41 100644 --- a/ci-scripts/xml_files/fr1_nsa_quectel_long.xml +++ b/ci-scripts/xml_files/fr1_nsa_quectel_long.xml @@ -121,21 +121,17 @@ Iperf iperf (DL/20Mbps/UDP)(600 sec)(single-ue profile) - -u -b 20M -t 600 - DL + -u -b 20M -t 600 -R idefix 50 - single-ue Iperf iperf (UL/3Mbps/UDP)(600 sec)(single-ue profile) -u -b 3M -t 600 - UL idefix 50 - single-ue diff --git a/ci-scripts/xml_files/fr1_sa_oaiue_b200.xml b/ci-scripts/xml_files/fr1_sa_oaiue_b200.xml index 97a6404c55..5f02fd6026 100644 --- a/ci-scripts/xml_files/fr1_sa_oaiue_b200.xml +++ b/ci-scripts/xml_files/fr1_sa_oaiue_b200.xml @@ -94,21 +94,17 @@ Iperf iperf (DL/60Mbps/UDP)(60 sec)(single-ue profile) - -u -b 60M -t 60 - DL + -u -b 60M -t 60 -R oai_ue_obelix 5 - single-ue Iperf iperf (UL/3Mbps/UDP)(60 sec)(single-ue profile) -u -b 3M -t 60 - UL oai_ue_obelix 5 - single-ue diff --git a/ci-scripts/xml_files/fr1_sa_oaiue_n310.xml b/ci-scripts/xml_files/fr1_sa_oaiue_n310.xml index a6e17c2473..37b36cf431 100644 --- a/ci-scripts/xml_files/fr1_sa_oaiue_n310.xml +++ b/ci-scripts/xml_files/fr1_sa_oaiue_n310.xml @@ -111,10 +111,8 @@ Iperf iperf (DL/60Mbps/UDP)(60 sec)(single-ue profile) oai_ue_obelix - -u -b 60M -t 60 - DL + -u -b 60M -t 60 -R 5 - single-ue @@ -122,9 +120,7 @@ iperf (UL/3Mbps/UDP)(60 sec)(single-ue profile) oai_ue_obelix -u -b 3M -t 60 - UL 5 - single-ue diff --git a/ci-scripts/xml_files/fr1_sa_oaiue_x300.xml b/ci-scripts/xml_files/fr1_sa_oaiue_x300.xml index 315674c9e6..8d8ce8160a 100644 --- a/ci-scripts/xml_files/fr1_sa_oaiue_x300.xml +++ b/ci-scripts/xml_files/fr1_sa_oaiue_x300.xml @@ -96,10 +96,8 @@ Iperf iperf (DL/60Mbps/UDP)(60 sec)(single-ue profile) oai_ue_obelix - -u -b 60M -t 60 - DL + -u -b 60M -t 60 -R 5 - single-ue @@ -107,9 +105,7 @@ iperf (UL/3Mbps/UDP)(60 sec)(single-ue profile) oai_ue_obelix -u -b 3M -t 60 - UL 5 - single-ue diff --git a/ci-scripts/xml_files/fr1_sa_quectel.xml b/ci-scripts/xml_files/fr1_sa_quectel.xml index 2cc3909c38..63e9d4efc8 100644 --- a/ci-scripts/xml_files/fr1_sa_quectel.xml +++ b/ci-scripts/xml_files/fr1_sa_quectel.xml @@ -131,32 +131,26 @@ Iperf iperf (DL/60Mbps/UDP)(60 sec)(single-ue profile) - -u -b 60M -t 60 - DL + -u -b 60M -t 60 -R nrmodule2_quectel 5 95 - single-ue Iperf iperf (UL/7Mbps/UDP)(60 sec)(single-ue profile) -u -b 7M -t 60 - UL nrmodule2_quectel 5 95 - single-ue Iperf iperf (BIDIR TCP)(10 sec)(single-ue profile) -t 10 --bidir - BIDIR nrmodule2_quectel - single-ue diff --git a/ci-scripts/xml_files/fr1_sa_quectel_162prb.xml b/ci-scripts/xml_files/fr1_sa_quectel_162prb.xml index b348905fac..d6fe76b81e 100644 --- a/ci-scripts/xml_files/fr1_sa_quectel_162prb.xml +++ b/ci-scripts/xml_files/fr1_sa_quectel_162prb.xml @@ -120,32 +120,26 @@ Iperf iperf (DL/180Mbps/UDP)(60 sec)(single-ue profile) - -u -b 180M -t 60 - DL + -u -b 180M -t 60 -R nrmodule2_quectel 50 50 - single-ue Iperf iperf (UL/3Mbps/UDP)(60 sec)(single-ue profile) -u -b 3M -t 60 - UL nrmodule2_quectel 5 95 - single-ue Iperf iperf (BIDIR TCP)(10 sec)(single-ue profile) -t 10 --bidir - BIDIR nrmodule2_quectel - single-ue diff --git a/ci-scripts/xml_files/fr1_sa_quectel_stages.xml b/ci-scripts/xml_files/fr1_sa_quectel_stages.xml index 4679514317..f921f9658b 100644 --- a/ci-scripts/xml_files/fr1_sa_quectel_stages.xml +++ b/ci-scripts/xml_files/fr1_sa_quectel_stages.xml @@ -128,62 +128,50 @@ Iperf iperf (DL/10Mbps/UDP)(30 sec)(single-ue profile) - -u -b 10M -t 30 - DL + -u -b 10M -t 30 -R nrmodule2_quectel 5 95 - single-ue Iperf iperf (DL/20Mbps/UDP)(30 sec)(single-ue profile) - -u -b 20M -t 30 - DL + -u -b 20M -t 30 -R nrmodule2_quectel 5 95 - single-ue Iperf iperf (DL/40Mbps/UDP)(30 sec)(single-ue profile) - -u -b 40M -t 30 - DL + -u -b 40M -t 30 -R nrmodule2_quectel 5 95 - single-ue Iperf iperf (DL/60Mbps/UDP)(30 sec)(single-ue profile) - -u -b 60M -t 30 - DL + -u -b 60M -t 30 -R nrmodule2_quectel 5 95 - single-ue Iperf iperf (DL/90Mbps/UDP)(30 sec)(single-ue profile) - -u -b 90M -t 30 - DL + -u -b 90M -t 30 -R nrmodule2_quectel 10 90 - single-ue Iperf iperf (DL/130Mbps/UDP)(30 sec)(single-ue profile) - -u -b 130M -t 30 - DL + -u -b 130M -t 30 -R nrmodule2_quectel 50 50 - single-ue diff --git a/docker/Dockerfile.eNB.ubuntu20 b/docker/Dockerfile.eNB.ubuntu20 index 73a96dac62..cecd343295 100644 --- a/docker/Dockerfile.eNB.ubuntu20 +++ b/docker/Dockerfile.eNB.ubuntu20 @@ -49,9 +49,9 @@ RUN apt-get update && \ openssl \ net-tools \ iperf \ + iperf3 \ iputils-ping \ iproute2 \ - iperf \ gdb \ python \ python3 \ diff --git a/docker/Dockerfile.gNB.ubuntu20 b/docker/Dockerfile.gNB.ubuntu20 index 16e3795fe8..5eb5f8557a 100644 --- a/docker/Dockerfile.gNB.ubuntu20 +++ b/docker/Dockerfile.gNB.ubuntu20 @@ -49,6 +49,7 @@ RUN apt-get update && \ openssl \ net-tools \ iperf \ + iperf3 \ iproute2 \ iputils-ping \ gdb \ diff --git a/docker/Dockerfile.lteUE.ubuntu20 b/docker/Dockerfile.lteUE.ubuntu20 index 3320c36bf8..4a81ed062b 100644 --- a/docker/Dockerfile.lteUE.ubuntu20 +++ b/docker/Dockerfile.lteUE.ubuntu20 @@ -56,6 +56,7 @@ RUN apt-get update && \ libusb-1.0-0 \ iputils-ping \ iproute2 \ + iperf3 \ iperf && \ # if the --sanitize option was used to build, additional packages are required /bin/bash -c 'if [[ "$BUILD_OPTION" = "--sanitize" ]]; then DEBIAN_FRONTEND=noninteractive apt-get install --yes \ diff --git a/docker/Dockerfile.nrUE.ubuntu20 b/docker/Dockerfile.nrUE.ubuntu20 index 7418c6ccb9..8f9bbfb33c 100644 --- a/docker/Dockerfile.nrUE.ubuntu20 +++ b/docker/Dockerfile.nrUE.ubuntu20 @@ -56,6 +56,7 @@ RUN apt-get update && \ libusb-1.0-0 \ iputils-ping \ iproute2 \ + iperf3 \ iperf && \ # if the --sanitize option was used to build, additional packages are required /bin/bash -c 'if [[ "$BUILD_OPTION" = "--sanitize" ]]; then DEBIAN_FRONTEND=noninteractive apt-get install --yes \