From a5689f5b8c90a35c13868606b2ba9966bfea5bbd Mon Sep 17 00:00:00 2001 From: Robert Schmidt Date: Mon, 27 Oct 2025 14:18:37 +0100 Subject: [PATCH 1/6] CI: Remove unused code --- ci-scripts/args_parse.py | 6 +----- ci-scripts/main.py | 19 +------------------ 2 files changed, 2 insertions(+), 23 deletions(-) diff --git a/ci-scripts/args_parse.py b/ci-scripts/args_parse.py index 4953f049fb..3a3ea52fa0 100644 --- a/ci-scripts/args_parse.py +++ b/ci-scripts/args_parse.py @@ -43,10 +43,6 @@ import constants as CONST def ArgsParse(argvs,CiTestObj,RAN,HTML,CONTAINERS,HELP,SCA,CLUSTER): - - py_param_file_present = False - py_params={} - force_local = False while len(argvs) > 1: myArgv = argvs.pop(1) # 0th is this file's name @@ -172,4 +168,4 @@ def ArgsParse(argvs,CiTestObj,RAN,HTML,CONTAINERS,HELP,SCA,CLUSTER): HELP.GenericHelp(CONST.Version) sys.exit('Invalid Parameter: ' + myArgv) - return py_param_file_present, py_params, mode, force_local + return mode, force_local diff --git a/ci-scripts/main.py b/ci-scripts/main.py index ac4ac2c3be..873976a8db 100644 --- a/ci-scripts/main.py +++ b/ci-scripts/main.py @@ -85,14 +85,6 @@ def CheckClassValidity(xml_class_list,action,id): resp=True return resp -#assigning parameters to object instance attributes (even if the attributes do not exist !!) -def AssignParams(params_dict): - - for key,value in params_dict.items(): - setattr(CiTestObj, key, value) - setattr(RAN, key, value) - setattr(HTML, key, value) - def ExecuteActionWithParam(action, ctx): global RAN global HTML @@ -399,16 +391,7 @@ CLUSTER = cls_cluster.Cluster() import args_parse # Force local execution, move all execution targets to localhost force_local = False -py_param_file_present, py_params, mode, force_local = args_parse.ArgsParse(sys.argv,CiTestObj,RAN,HTML,CONTAINERS,HELP,SCA,CLUSTER) - - - -#----------------------------------------------------------- -# TEMPORARY params management (UNUSED) -#----------------------------------------------------------- -#temporary solution for testing: -if py_param_file_present == True: - AssignParams(py_params) +mode, force_local = args_parse.ArgsParse(sys.argv,CiTestObj,RAN,HTML,CONTAINERS,HELP,SCA,CLUSTER) #----------------------------------------------------------- # mode amd XML class (action) analysis From 9e0540fbed97466cbf89130411d34c136ca17035 Mon Sep 17 00:00:00 2001 From: Robert Schmidt Date: Mon, 27 Oct 2025 14:28:28 +0100 Subject: [PATCH 2/6] Simplify node management in CI Some CI tasks/commands like Iperf(), Ping() get multiple nodes (via XML parameter "nodes") to potentially run UEs on different nodes (hosts) at the same time. However, I argue that this is not good: - we don't actually use this -- where we specify multiple UEs, it's always "localhost localhost..." - it is inconsistent, as we typically have a single "node", not nodes, and there is a possibility to harmonize (see also next commit) - if we needed it, there would be better ways to achieve the same. First, for hardware-based UEs, the ci_infra.yaml can specify different UEs. For simulated UEs, it would be feasible to have multiple XML steps run in parallel, e.g., in the XML tag, which would clarify that multiple UEs on different hosts run in parallel - it reduces code. Hence, make a single for these XML steps. --- ci-scripts/cls_oaicitest.py | 41 +++++++------- ci-scripts/main.py | 56 +++++-------------- ci-scripts/tests/ping-iperf.py | 10 ++-- .../xml_files/container_4g_l2sim_tdd.xml | 10 ++-- .../container_4g_rfsim_fdd_05MHz.xml | 10 ++-- .../container_4g_rfsim_fdd_05MHz_noS1.xml | 8 +-- .../container_4g_rfsim_fdd_10MHz.xml | 10 ++-- .../container_4g_rfsim_fdd_20MHz.xml | 10 ++-- .../xml_files/container_4g_rfsim_fembms.xml | 2 +- .../xml_files/container_4g_rfsim_mbms.xml | 2 +- .../container_4g_rfsim_tdd_05MHz.xml | 8 +-- .../xml_files/container_5g_e1_rfsim.xml | 4 +- .../xml_files/container_5g_f1_rfsim.xml | 10 ++-- .../xml_files/container_5g_fdd_rfsim.xml | 10 ++-- .../xml_files/container_5g_flexric_rfsim.xml | 6 +- ci-scripts/xml_files/container_5g_rfsim.xml | 24 ++++---- .../xml_files/container_5g_rfsim_24prb.xml | 10 ++-- .../xml_files/container_5g_rfsim_2x2.xml | 10 ++-- .../container_5g_rfsim_fdd_phytest.xml | 8 +-- .../container_5g_rfsim_fr2_32prb.xml | 6 +- .../xml_files/container_5g_rfsim_multiue.xml | 20 +++---- .../xml_files/container_5g_rfsim_n2_ho.xml | 10 ++-- .../xml_files/container_5g_rfsim_ntn_geo.xml | 8 +-- .../xml_files/container_5g_rfsim_ntn_leo.xml | 6 +- .../xml_files/container_5g_rfsim_simple.xml | 6 +- .../xml_files/container_5g_rfsim_tdd_dora.xml | 4 +- .../xml_files/container_5g_rfsim_u0_25prb.xml | 14 ++--- 27 files changed, 146 insertions(+), 177 deletions(-) diff --git a/ci-scripts/cls_oaicitest.py b/ci-scripts/cls_oaicitest.py index 144bc24da6..f64972f253 100644 --- a/ci-scripts/cls_oaicitest.py +++ b/ci-scripts/cls_oaicitest.py @@ -304,13 +304,12 @@ class OaiCiTest(): self.finalStatus = False self.air_interface='' self.ue_ids = [] - self.nodes = [] self.svr_node = None self.svr_id = None self.cmd_prefix = '' # prefix before {lte,nr}-uesoftmodem - def InitializeUE(self, HTML): - ues = [cls_module.Module_UE(n.strip()) for n in self.ue_ids] + def InitializeUE(self, node, HTML): + ues = [cls_module.Module_UE(n.strip(), node) for n in self.ue_ids] messages = [] with concurrent.futures.ThreadPoolExecutor(max_workers=64) as executor: futures = [executor.submit(ue.initialize) for ue in ues] @@ -321,8 +320,8 @@ class OaiCiTest(): HTML.CreateHtmlTestRowQueue('N/A', 'OK', messages) return True - def AttachUE(self, HTML): - ues = [cls_module.Module_UE(ue_id, server_name) for ue_id, server_name in zip(self.ue_ids, self.nodes)] + def AttachUE(self, node, HTML): + ues = [cls_module.Module_UE(ue_id, node) for ue_id in self.ue_ids] with concurrent.futures.ThreadPoolExecutor(max_workers=64) as executor: futures = [executor.submit(ue.attach) for ue in ues] attached = [f.result() for f in futures] @@ -337,8 +336,8 @@ class OaiCiTest(): HTML.CreateHtmlTestRowQueue('N/A', 'KO', ["Could not retrieve UE IP address(es) or MTU(s) wrong!"]) return success - def DetachUE(self, HTML): - ues = [cls_module.Module_UE(ue_id, server_name) for ue_id, server_name in zip(self.ue_ids, self.nodes)] + def DetachUE(self, node, HTML): + ues = [cls_module.Module_UE(ue_id, node) for ue_id in self.ue_ids] with concurrent.futures.ThreadPoolExecutor(max_workers=64) as executor: futures = [executor.submit(ue.detach) for ue in ues] [f.result() for f in futures] @@ -346,8 +345,8 @@ class OaiCiTest(): HTML.CreateHtmlTestRowQueue('NA', 'OK', messages) return True - def DataDisableUE(self, HTML): - ues = [cls_module.Module_UE(n.strip()) for n in self.ue_ids] + def DataDisableUE(self, node, HTML): + ues = [cls_module.Module_UE(n.strip(), node) for n in self.ue_ids] with concurrent.futures.ThreadPoolExecutor(max_workers=64) as executor: futures = [executor.submit(ue.dataDisable) for ue in ues] status = [f.result() for f in futures] @@ -360,8 +359,8 @@ class OaiCiTest(): HTML.CreateHtmlTestRowQueue('N/A', 'KO', ["Could not disable UE data!"]) return success - def DataEnableUE(self, HTML): - ues = [cls_module.Module_UE(n.strip()) for n in self.ue_ids] + def DataEnableUE(self, node, HTML): + ues = [cls_module.Module_UE(n.strip(), node) for n in self.ue_ids] logging.debug(f'disabling data for UEs {ues}') with concurrent.futures.ThreadPoolExecutor(max_workers=64) as executor: futures = [executor.submit(ue.dataEnable) for ue in ues] @@ -375,8 +374,8 @@ class OaiCiTest(): HTML.CreateHtmlTestRowQueue('N/A', 'KO', ["Could not enable UE data!"]) return success - def CheckStatusUE(self,HTML): - ues = [cls_module.Module_UE(n.strip()) for n in self.ue_ids] + def CheckStatusUE(self, node, HTML): + ues = [cls_module.Module_UE(n.strip(), node) for n in self.ue_ids] logging.debug(f'checking status of UEs {ues}') messages = [] with concurrent.futures.ThreadPoolExecutor(max_workers=64) as executor: @@ -446,10 +445,10 @@ class OaiCiTest(): return (True, message) - def Ping(self, ctx, HTML, infra_file="ci_infra.yaml"): + def Ping(self, ctx, node, HTML, infra_file="ci_infra.yaml"): 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(ue_id, server_name, infra_file) for ue_id, server_name in zip(self.ue_ids, self.nodes)] + ues = [cls_module.Module_UE(ue_id, node, infra_file) for ue_id in self.ue_ids] cn = cls_corenetwork.CoreNetwork(self.svr_id, self.svr_node, filename=infra_file) with concurrent.futures.ThreadPoolExecutor(max_workers=64) as executor: futures = [executor.submit(self.Ping_common, ctx, cn, ue) for ue in ues] @@ -520,12 +519,12 @@ class OaiCiTest(): return (status, f'{ue_header}\n{msg}') - def Iperf(self, ctx, HTML, infra_file="ci_infra.yaml"): + def Iperf(self, ctx, node, HTML, infra_file="ci_infra.yaml"): 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}"') 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(ue_id, server_name, infra_file) for ue_id, server_name in zip(self.ue_ids, self.nodes)] + ues = [cls_module.Module_UE(ue_id, node, infra_file) for ue_id in self.ue_ids] cn = cls_corenetwork.CoreNetwork(self.svr_id, self.svr_node, filename=infra_file) with concurrent.futures.ThreadPoolExecutor(max_workers=64) as executor: futures = [executor.submit(self.Iperf_Module, ctx, cn, ue, i, len(ues)) for i, ue in enumerate(ues)] @@ -549,10 +548,10 @@ class OaiCiTest(): HTML.CreateHtmlTestRowQueue(self.iperf_args, 'KO', messages) return success - def Iperf2_Unidir(self, ctx, HTML, infra_file="ci_infra.yaml"): + def Iperf2_Unidir(self, ctx, node, HTML, infra_file="ci_infra.yaml"): if self.ue_ids == [] or self.svr_id == None or len(self.ue_ids) != 1: raise Exception("no module names in self.ue_ids or/and self.svr_id provided, multi UE scenario not supported") - ue = cls_module.Module_UE(self.ue_ids[0].strip(),self.nodes[0].strip(), infra_file) + ue = cls_module.Module_UE(self.ue_ids[0].strip(), node, infra_file) cn = cls_corenetwork.CoreNetwork(self.svr_id, self.svr_node, filename=infra_file) ueIP = ue.getIP() if not ueIP: @@ -852,8 +851,8 @@ class OaiCiTest(): global_status = CONST.OAI_UE_PROCESS_COULD_NOT_SYNC return global_status - def TerminateUE(self, ctx, HTML): - ues = [cls_module.Module_UE(n.strip()) for n in self.ue_ids] + def TerminateUE(self, ctx, node, HTML): + ues = [cls_module.Module_UE(n.strip(), node) for n in self.ue_ids] with concurrent.futures.ThreadPoolExecutor(max_workers=64) as executor: futures = [executor.submit(ue.terminate, ctx) for ue in ues] archives = [f.result() for f in futures] diff --git a/ci-scripts/main.py b/ci-scripts/main.py index 873976a8db..6b51c180a3 100644 --- a/ci-scripts/main.py +++ b/ci-scripts/main.py @@ -150,31 +150,21 @@ def ExecuteActionWithParam(action, ctx): elif action == 'Initialize_UE' or action == 'Attach_UE' or action == 'Detach_UE' or action == 'Terminate_UE' or action == 'CheckStatusUE' or action == 'DataEnable_UE' or action == 'DataDisable_UE': CiTestObj.ue_ids = test.findtext('id').split(' ') - if force_local: - # Change all execution targets to localhost - CiTestObj.nodes = ['localhost'] * len(CiTestObj.ue_ids) - else: - if test.findtext('nodes'): - CiTestObj.nodes = test.findtext('nodes').split(' ') - if len(CiTestObj.ue_ids) != len(CiTestObj.nodes): - logging.error('Number of Nodes are not equal to the total number of UEs') - sys.exit("Mismatch in number of Nodes and UIs") - else: - CiTestObj.nodes = [None] * len(CiTestObj.ue_ids) + node = test.findtext('node') if not force_local else 'localhost' if action == 'Initialize_UE': - success = CiTestObj.InitializeUE(HTML) + success = CiTestObj.InitializeUE(node, HTML) elif action == 'Attach_UE': - success = CiTestObj.AttachUE(HTML) + success = CiTestObj.AttachUE(node, HTML) elif action == 'Detach_UE': - success = CiTestObj.DetachUE(HTML) + success = CiTestObj.DetachUE(node, HTML) elif action == 'Terminate_UE': - success = CiTestObj.TerminateUE(ctx, HTML) + success = CiTestObj.TerminateUE(ctx, node, HTML) elif action == 'CheckStatusUE': - success = CiTestObj.CheckStatusUE(HTML) + success = CiTestObj.CheckStatusUE(node, HTML) elif action == 'DataEnable_UE': - success = CiTestObj.DataEnableUE(HTML) + success = CiTestObj.DataEnableUE(node, HTML) elif action == 'DataDisable_UE': - success = CiTestObj.DataDisableUE(HTML) + success = CiTestObj.DataDisableUE(node, HTML) elif action == 'Ping': CiTestObj.ping_args = test.findtext('ping_args') @@ -183,35 +173,15 @@ def ExecuteActionWithParam(action, ctx): CiTestObj.svr_id = test.findtext('svr_id') or None if test.findtext('svr_node'): CiTestObj.svr_node = test.findtext('svr_node') if not force_local else 'localhost' - if force_local: - # Change all execution targets to localhost - CiTestObj.nodes = ['localhost'] * len(CiTestObj.ue_ids) - else: - if test.findtext('nodes'): - CiTestObj.nodes = test.findtext('nodes').split(' ') - if len(CiTestObj.ue_ids) != len(CiTestObj.nodes): - logging.error('Number of Nodes are not equal to the total number of UEs') - sys.exit("Mismatch in number of Nodes and UIs") - else: - CiTestObj.nodes = [None] * len(CiTestObj.ue_ids) + node = test.findtext('node') if not force_local else 'localhost' ping_rttavg_threshold = test.findtext('ping_rttavg_threshold') or '' - success = CiTestObj.Ping(ctx, HTML) + success = CiTestObj.Ping(ctx, node, HTML) elif action == 'Iperf' or action == 'Iperf2_Unidir': CiTestObj.iperf_args = test.findtext('iperf_args') CiTestObj.ue_ids = test.findtext('id').split(' ') CiTestObj.svr_id = test.findtext('svr_id') or None - if force_local: - # Change all execution targets to localhost - CiTestObj.nodes = ['localhost'] * len(CiTestObj.ue_ids) - else: - if test.findtext('nodes'): - CiTestObj.nodes = test.findtext('nodes').split(' ') - if len(CiTestObj.ue_ids) != len(CiTestObj.nodes): - logging.error('Number of Nodes are not equal to the total number of UEs') - sys.exit("Mismatch in number of Nodes and UIs") - else: - CiTestObj.nodes = [None] * len(CiTestObj.ue_ids) + node = test.findtext('node') if not force_local else 'localhost' if test.findtext('svr_node'): CiTestObj.svr_node = test.findtext('svr_node') if not force_local else 'localhost' CiTestObj.iperf_packetloss_threshold = test.findtext('iperf_packetloss_threshold') @@ -226,9 +196,9 @@ def ExecuteActionWithParam(action, ctx): logging.error('test-case has wrong option ' + CiTestObj.iperf_options) CiTestObj.iperf_options = 'check' if action == 'Iperf': - success = CiTestObj.Iperf(ctx, HTML) + success = CiTestObj.Iperf(ctx, node, HTML) elif action == 'Iperf2_Unidir': - success = CiTestObj.Iperf2_Unidir(ctx, HTML) + success = CiTestObj.Iperf2_Unidir(ctx, node, HTML) elif action == 'IdleSleep': st = test.findtext('idle_sleep_time_in_sec') or "5" diff --git a/ci-scripts/tests/ping-iperf.py b/ci-scripts/tests/ping-iperf.py index bd30768a9f..3450a2b3e9 100644 --- a/ci-scripts/tests/ping-iperf.py +++ b/ci-scripts/tests/ping-iperf.py @@ -23,7 +23,7 @@ class TestPingIperf(unittest.TestCase): self.html.testCaseId = "000000" self.ci = cls_oaicitest.OaiCiTest() self.ci.ue_ids = ["test"] - self.ci.nodes = ["localhost"] + self.node = "localhost" self.ctx = TestCaseCtx.Default(tempfile.mkdtemp()) def tearDown(self): with cls_cmd.LocalCmd() as c: @@ -35,7 +35,7 @@ class TestPingIperf(unittest.TestCase): self.ci.svr_id = "test" infra_file = "tests/config/infra_ping_iperf.yaml" # TODO Should need nothing but options and UE(s) to use - success = self.ci.Ping(self.ctx, self.html, infra_file=infra_file) + success = self.ci.Ping(self.ctx, self.node, self.html, infra_file=infra_file) self.assertTrue(success) def test_iperf(self): @@ -50,7 +50,7 @@ class TestPingIperf(unittest.TestCase): self.ci.iperf_profile = "balanced" infra_file = "tests/config/infra_ping_iperf.yaml" # TODO Should need nothing but options and UE(s) to use - success = self.ci.Iperf(self.ctx, self.html, infra_file=infra_file) + success = self.ci.Iperf(self.ctx, self.node, self.html, infra_file=infra_file) self.assertTrue(success) def test_iperf2_unidir(self): @@ -62,7 +62,7 @@ class TestPingIperf(unittest.TestCase): self.ci.iperf_profile = "balanced" infra_file = "tests/config/infra_ping_iperf.yaml" # TODO Should need nothing but options and UE(s) to use - success = self.ci.Iperf2_Unidir(self.ctx, self.html, infra_file=infra_file) + success = self.ci.Iperf2_Unidir(self.ctx, self.node, self.html, infra_file=infra_file) self.assertTrue(success) def test_iperf_highrate(self): @@ -77,7 +77,7 @@ class TestPingIperf(unittest.TestCase): self.ci.iperf_profile = "balanced" infra_file = "tests/config/infra_ping_iperf.yaml" # TODO Should need nothing but options and UE(s) to use - success = self.ci.Iperf(self.ctx, self.html, infra_file=infra_file) + success = self.ci.Iperf(self.ctx, self.node, self.html, infra_file=infra_file) self.assertTrue(success) if __name__ == '__main__': diff --git a/ci-scripts/xml_files/container_4g_l2sim_tdd.xml b/ci-scripts/xml_files/container_4g_l2sim_tdd.xml index d9ac14038b..8a010b9308 100644 --- a/ci-scripts/xml_files/container_4g_l2sim_tdd.xml +++ b/ci-scripts/xml_files/container_4g_l2sim_tdd.xml @@ -88,14 +88,14 @@ Attach_UE Attach OAI UE l2sim4g_ue - localhost + localhost Ping Ping trf-gen from LTE-UE 1 l2sim4g_ue - localhost + localhost l2sim4g_ext_dn localhost -c 20 @@ -106,7 +106,7 @@ Ping Ping LTE-UE 1 from trf-gen l2sim4g_ext_dn - localhost + localhost l2sim4g_ue localhost -c 20 @@ -117,7 +117,7 @@ Iperf Iperf UDP Downlink l2sim4g_ue - localhost + localhost l2sim4g_ext_dn localhost -u -t 30 -b 1M -R @@ -129,7 +129,7 @@ Iperf Iperf UDP Uplink l2sim4g_ue - localhost + localhost l2sim4g_ext_dn localhost -u -t 30 -b 3M 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 562856b00c..3606957af6 100644 --- a/ci-scripts/xml_files/container_4g_rfsim_fdd_05MHz.xml +++ b/ci-scripts/xml_files/container_4g_rfsim_fdd_05MHz.xml @@ -103,14 +103,14 @@ Attach_UE Attach OAI UE (Wait for IP) rfsim4g_ue - localhost + localhost Ping Ping Traffic-Gen from LTE-UE rfsim4g_ue - localhost + localhost rfsim4g_ext_dn localhost -c 20 @@ -121,7 +121,7 @@ Ping Ping LTE-UE from Traffic-Gen rfsim4g_ext_dn - localhost + localhost rfsim4g_ue localhost -c 20 @@ -136,7 +136,7 @@ -u -t 30 -b 2M -R 25 80 - localhost + localhost localhost @@ -148,7 +148,7 @@ -u -t 30 -b 1M 25 80 - localhost + localhost localhost 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 1773d5d439..1d7194f44f 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 @@ -83,7 +83,7 @@ Ping Ping Traffic-Gen from LTE-UE rfsim4g_ue - localhost + localhost rfsim4g_enb_nos1 localhost -c 20 @@ -94,7 +94,7 @@ Ping Ping LTE-UE from eNB rfsim4g_enb_nos1 - localhost + localhost rfsim4g_ue localhost -c 20 @@ -105,7 +105,7 @@ Iperf Iperf UDP DL rfsim4g_ue - localhost + localhost rfsim4g_enb_nos1 localhost -u -t 30 -b 2M -R @@ -117,7 +117,7 @@ Iperf Iperf UDP UL rfsim4g_ue - localhost + localhost rfsim4g_enb_nos1 localhost -u -t 30 -b 1M 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 7861d8f332..a5b642ebe0 100644 --- a/ci-scripts/xml_files/container_4g_rfsim_fdd_10MHz.xml +++ b/ci-scripts/xml_files/container_4g_rfsim_fdd_10MHz.xml @@ -103,14 +103,14 @@ Attach_UE Attach OAI UE (Wait for IP) rfsim4g_ue - localhost + localhost Ping Ping Traffic-Gen from LTE-UE rfsim4g_ue - localhost + localhost rfsim4g_ext_dn localhost -c 20 @@ -121,7 +121,7 @@ Ping Ping LTE-UE from Traffic-Gen rfsim4g_ext_dn - localhost + localhost rfsim4g_ue localhost -c 20 @@ -132,7 +132,7 @@ Iperf Iperf UDP DL rfsim4g_ue - localhost + localhost rfsim4g_ext_dn localhost -u -t 30 -b 2M -R @@ -144,7 +144,7 @@ Iperf Iperf UDP UL rfsim4g_ue - localhost + localhost rfsim4g_ext_dn localhost -u -t 30 -b 1M 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 9199f276e7..592c80de68 100644 --- a/ci-scripts/xml_files/container_4g_rfsim_fdd_20MHz.xml +++ b/ci-scripts/xml_files/container_4g_rfsim_fdd_20MHz.xml @@ -103,14 +103,14 @@ Attach_UE Attach OAI UE (Wait for IP) rfsim4g_ue - localhost + localhost Ping Ping Traffic-Gen from LTE-UE rfsim4g_ue - localhost + localhost rfsim4g_ext_dn localhost -c 20 @@ -121,7 +121,7 @@ Ping Ping LTE-UE from Traffic-Gen rfsim4g_ext_dn - localhost + localhost rfsim4g_ue localhost -c 20 @@ -132,7 +132,7 @@ Iperf Iperf UDP DL rfsim4g_ue - localhost + localhost rfsim4g_ext_dn localhost -u -t 30 -b 2M -R @@ -144,7 +144,7 @@ Iperf Iperf UDP UL rfsim4g_ue - localhost + localhost rfsim4g_ext_dn localhost -u -t 30 -b 1M diff --git a/ci-scripts/xml_files/container_4g_rfsim_fembms.xml b/ci-scripts/xml_files/container_4g_rfsim_fembms.xml index 73c01f2b32..21d2acc4eb 100644 --- a/ci-scripts/xml_files/container_4g_rfsim_fembms.xml +++ b/ci-scripts/xml_files/container_4g_rfsim_fembms.xml @@ -80,7 +80,7 @@ Iperf2_Unidir Iperf2 UDP DL rfsim4g_ue_fembms - localhost + localhost rfsim4g_enb_fembms localhost -u -t 30 -b 2M diff --git a/ci-scripts/xml_files/container_4g_rfsim_mbms.xml b/ci-scripts/xml_files/container_4g_rfsim_mbms.xml index ea00caa09e..70d5db33cb 100644 --- a/ci-scripts/xml_files/container_4g_rfsim_mbms.xml +++ b/ci-scripts/xml_files/container_4g_rfsim_mbms.xml @@ -80,7 +80,7 @@ Iperf Iperf UDP DL rfsim4g_ue - localhost + localhost rfsim4g_enb_nos1 localhost -u -t 30 -b 2M -R 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 d3129e0c68..60054cb305 100644 --- a/ci-scripts/xml_files/container_4g_rfsim_tdd_05MHz.xml +++ b/ci-scripts/xml_files/container_4g_rfsim_tdd_05MHz.xml @@ -103,7 +103,7 @@ Ping Ping Traffic-Gen from LTE-UE rfsim4g_ue - localhost + localhost rfsim4g_ext_dn localhost -c 20 @@ -114,7 +114,7 @@ Ping Ping LTE-UE from Traffic-Gen rfsim4g_ext_dn - localhost + localhost rfsim4g_ue localhost -c 20 @@ -125,7 +125,7 @@ Iperf Iperf UDP DL rfsim4g_ue - localhost + localhost rfsim4g_ext_dn localhost -u -t 30 -b 2M -R @@ -137,7 +137,7 @@ Iperf Iperf UDP UL rfsim4g_ue - localhost + localhost rfsim4g_ext_dn localhost -u -t 30 -b 1M diff --git a/ci-scripts/xml_files/container_5g_e1_rfsim.xml b/ci-scripts/xml_files/container_5g_e1_rfsim.xml index 54b34e0cff..5c0fa2b99e 100644 --- a/ci-scripts/xml_files/container_5g_e1_rfsim.xml +++ b/ci-scripts/xml_files/container_5g_e1_rfsim.xml @@ -76,14 +76,14 @@ Attach_UE Attach OAI UE (Wait for IP) rfsim5g_ue rfsim5g_ue2 rfsim5g_ue3 - localhost localhost localhost + localhost Ping Ping ext-dn from all NR-UEs rfsim5g_ue rfsim5g_ue2 rfsim5g_ue3 - localhost localhost localhost + localhost rfsim5g_5gc_fixed_ip localhost -c 20 -i0.25 diff --git a/ci-scripts/xml_files/container_5g_f1_rfsim.xml b/ci-scripts/xml_files/container_5g_f1_rfsim.xml index 49a28e4a9f..f17be0215d 100644 --- a/ci-scripts/xml_files/container_5g_f1_rfsim.xml +++ b/ci-scripts/xml_files/container_5g_f1_rfsim.xml @@ -107,7 +107,7 @@ Attach_UE Attach OAI UE (Wait for IP) rfsim5g_ue - localhost + localhost @@ -122,7 +122,7 @@ Ping Ping ext-dn from all NR-UEs rfsim5g_ue - localhost + localhost rfsim5g_ext_dn localhost -c 20 -i0.25 @@ -141,7 +141,7 @@ Iperf (DL/3Mbps/UDP)(20 sec) -u -b 3M -t 20 -R rfsim5g_ue - localhost + localhost rfsim5g_ext_dn localhost 5 @@ -153,7 +153,7 @@ Iperf (UL/3Mbps/UDP)(20 sec) -u -b 3M -t 20 rfsim5g_ue - localhost + localhost rfsim5g_ext_dn localhost 5 @@ -171,7 +171,7 @@ Ping Ping ext-dn from NR-UE rfsim5g_ue - localhost + localhost rfsim5g_ext_dn localhost -c 20 -i0.5 -w25 diff --git a/ci-scripts/xml_files/container_5g_fdd_rfsim.xml b/ci-scripts/xml_files/container_5g_fdd_rfsim.xml index 3c4e30c97b..44ccb3a3d2 100644 --- a/ci-scripts/xml_files/container_5g_fdd_rfsim.xml +++ b/ci-scripts/xml_files/container_5g_fdd_rfsim.xml @@ -70,14 +70,14 @@ Attach_UE Attach OAI UE (Wait for IP) rfsim5g_ue - localhost + localhost Ping Ping ext-dn from NR-UE rfsim5g_ue - localhost + localhost rfsim5g_ext_dn localhost -c 20 -i 0.25 @@ -88,7 +88,7 @@ Ping Ping NR-UE from ext-dn rfsim5g_ext_dn - localhost + localhost rfsim5g_ue localhost -c 20 -i 0.25 @@ -100,7 +100,7 @@ Iperf (DL/3Mbps/UDP)(30 sec) -u -b 3M -t 30 -R rfsim5g_ue - localhost + localhost rfsim5g_ext_dn localhost 5 @@ -112,7 +112,7 @@ Iperf (UL/3Mbps/UDP)(30 sec) -u -b 3M -t 30 rfsim5g_ue - localhost + localhost rfsim5g_ext_dn localhost 5 diff --git a/ci-scripts/xml_files/container_5g_flexric_rfsim.xml b/ci-scripts/xml_files/container_5g_flexric_rfsim.xml index 8ee9326b5e..536952a2bc 100644 --- a/ci-scripts/xml_files/container_5g_flexric_rfsim.xml +++ b/ci-scripts/xml_files/container_5g_flexric_rfsim.xml @@ -121,7 +121,7 @@ Ping Ping ext-dn from both UEs rfsim5g_ue rfsim5g_ue2 - carabe carabe + carabe oai_ext_dn carabe -c 20 @@ -132,14 +132,14 @@ Attach_UE Attach OAI UE 1 and 2 rfsim5g_ue rfsim5g_ue2 - carabe carabe + carabe Detach_UE Detach OAI UE 1 and 2 rfsim5g_ue rfsim5g_ue2 - carabe carabe + carabe diff --git a/ci-scripts/xml_files/container_5g_rfsim.xml b/ci-scripts/xml_files/container_5g_rfsim.xml index 89cbe35dfa..43d2072040 100644 --- a/ci-scripts/xml_files/container_5g_rfsim.xml +++ b/ci-scripts/xml_files/container_5g_rfsim.xml @@ -125,14 +125,14 @@ Attach_UE Attach OAI UE (Wait for IP) rfsim5g_ue rfsim5g_ue2 rfsim5g_ue3 rfsim5g_ue4 rfsim5g_ue5 rfsim5g_ue6 rfsim5g_ue7 rfsim5g_ue8 rfsim5g_ue9 rfsim5g_ue10 - localhost localhost localhost localhost localhost localhost localhost localhost localhost localhost + localhost Ping Ping ext-dn from NR-UE rfsim5g_ue - localhost + localhost rfsim5g_ext_dn localhost -c 20 -i 0.25 @@ -143,7 +143,7 @@ Ping Ping NR-UE from ext-dn rfsim5g_ext_dn - localhost + localhost rfsim5g_ue localhost -c 20 -i 0.25 @@ -154,7 +154,7 @@ Ping Ping ext-dn from Second NR-UE rfsim5g_ue2 - localhost + localhost rfsim5g_ext_dn localhost -c 20 -i 0.25 @@ -165,7 +165,7 @@ Ping Ping Second NR-UE from ext-dn rfsim5g_ext_dn - localhost + localhost rfsim5g_ue2 localhost -c 20 -i 0.25 @@ -176,7 +176,7 @@ Ping Ping ext-dn from both UEs rfsim5g_ue rfsim5g_ue2 - localhost localhost + localhost rfsim5g_ext_dn localhost -c 20 -i 0.25 @@ -187,7 +187,7 @@ Ping Ping ext-dn from all UEs rfsim5g_ue rfsim5g_ue2 rfsim5g_ue3 rfsim5g_ue4 rfsim5g_ue5 rfsim5g_ue6 rfsim5g_ue7 rfsim5g_ue8 rfsim5g_ue9 rfsim5g_ue10 - localhost localhost localhost localhost localhost localhost localhost localhost localhost localhost + localhost rfsim5g_ext_dn localhost -c 20 -i 0.25 -s 1016 @@ -199,7 +199,7 @@ Iperf (DL/3Mbps/UDP)(20 sec) -u -b 3M -t 20 -R rfsim5g_ue - localhost + localhost rfsim5g_ext_dn localhost 5 @@ -211,7 +211,7 @@ Iperf (UL/1Mbps/UDP)(20 sec) -u -b 1M -t 20 rfsim5g_ue - localhost + localhost rfsim5g_ext_dn localhost 5 @@ -222,21 +222,21 @@ Attach_UE Attach OAI UE 1 and 2 rfsim5g_ue rfsim5g_ue2 - localhost localhost + localhost Detach_UE Detach OAI UE 1 and 2 rfsim5g_ue rfsim5g_ue2 - localhost localhost + localhost Detach_UE Detach OAI UE 3 to 10 rfsim5g_ue3 rfsim5g_ue4 rfsim5g_ue5 rfsim5g_ue6 rfsim5g_ue7 rfsim5g_ue8 rfsim5g_ue9 rfsim5g_ue10 - localhost localhost localhost localhost localhost localhost localhost localhost + localhost diff --git a/ci-scripts/xml_files/container_5g_rfsim_24prb.xml b/ci-scripts/xml_files/container_5g_rfsim_24prb.xml index 470c5e9539..b8e01c7edc 100644 --- a/ci-scripts/xml_files/container_5g_rfsim_24prb.xml +++ b/ci-scripts/xml_files/container_5g_rfsim_24prb.xml @@ -88,7 +88,7 @@ Attach_UE Attach OAI UE (Wait for IP) rfsim5g_ue - localhost + localhost @@ -101,7 +101,7 @@ Ping Ping ext-dn from NR-UE rfsim5g_ue - localhost + localhost rfsim5g_ext_dn localhost -c 20 -i0.5 @@ -112,7 +112,7 @@ Ping Ping NR-UE from ext-dn rfsim5g_ext_dn - localhost + localhost rfsim5g_ue localhost -c 20 -i0.2 @@ -124,7 +124,7 @@ Iperf (DL/3Mbps/UDP)(20 sec) -u -b 3M -t 20 -R rfsim5g_ue - localhost + localhost rfsim5g_ext_dn localhost 5 @@ -136,7 +136,7 @@ Iperf (UL/1Mbps/UDP)(20 sec) -u -b 1M -t 20 rfsim5g_ue - localhost + localhost rfsim5g_ext_dn localhost 5 diff --git a/ci-scripts/xml_files/container_5g_rfsim_2x2.xml b/ci-scripts/xml_files/container_5g_rfsim_2x2.xml index 636df9e729..236106d966 100644 --- a/ci-scripts/xml_files/container_5g_rfsim_2x2.xml +++ b/ci-scripts/xml_files/container_5g_rfsim_2x2.xml @@ -70,14 +70,14 @@ Attach_UE Attach OAI UE (Wait for IP) rfsim5g_ue - localhost + localhost Ping Ping ext-dn from NR-UE rfsim5g_ue - localhost + localhost rfsim5g_ext_dn localhost -c 20 -i 0.25 @@ -88,7 +88,7 @@ Ping Ping NR-UE from ext-dn rfsim5g_ext_dn - localhost + localhost rfsim5g_ue localhost -c 20 -i 0.25 @@ -100,7 +100,7 @@ Iperf (DL/10Mbps/UDP)(20 sec) -u -b 10M -t 20 -R rfsim5g_ue - localhost + localhost rfsim5g_ext_dn localhost 5 @@ -112,7 +112,7 @@ Iperf (UL/3Mbps/UDP)(20 sec) -u -b 3M -t 20 rfsim5g_ue - localhost + localhost rfsim5g_ext_dn localhost 5 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 2a180440d0..4b695063e7 100644 --- a/ci-scripts/xml_files/container_5g_rfsim_fdd_phytest.xml +++ b/ci-scripts/xml_files/container_5g_rfsim_fdd_phytest.xml @@ -77,7 +77,7 @@ Ping Ping gNB from NR-UE rfsim5g_ue - localhost + localhost rfsim5g_gnb_nos1 localhost -c20 -i0.2 @@ -88,7 +88,7 @@ Ping Ping NR-UE from gNB rfsim5g_gnb_nos1 - localhost + localhost rfsim5g_ue localhost -c20 -i0.2 @@ -100,7 +100,7 @@ Iperf (DL/30kbps/UDP)(20 sec) -u -b 0.03M -t 20 -R -c 10.0.1.1 rfsim5g_ue - localhost + localhost rfsim5g_gnb_nos1 localhost 5 @@ -112,7 +112,7 @@ Iperf (UL/30kbps/UDP)(20 sec) -u -b 0.03M -t 20 -c 10.0.1.1 rfsim5g_ue - localhost + localhost rfsim5g_gnb_nos1 localhost 5 diff --git a/ci-scripts/xml_files/container_5g_rfsim_fr2_32prb.xml b/ci-scripts/xml_files/container_5g_rfsim_fr2_32prb.xml index 37b90f2385..224a64c757 100644 --- a/ci-scripts/xml_files/container_5g_rfsim_fr2_32prb.xml +++ b/ci-scripts/xml_files/container_5g_rfsim_fr2_32prb.xml @@ -70,14 +70,14 @@ Attach_UE Attach OAI UE (Wait for IP) rfsim5g_ue - localhost + localhost Ping Ping ext-dn from NR-UE rfsim5g_ue - localhost + localhost rfsim5g_ext_dn localhost -c 20 -i0.2 @@ -88,7 +88,7 @@ Ping Ping NR-UE from ext-dn rfsim5g_ext_dn - localhost + localhost rfsim5g_ue localhost -c 20 -i0.2 diff --git a/ci-scripts/xml_files/container_5g_rfsim_multiue.xml b/ci-scripts/xml_files/container_5g_rfsim_multiue.xml index 4296fdf970..8022741c6c 100644 --- a/ci-scripts/xml_files/container_5g_rfsim_multiue.xml +++ b/ci-scripts/xml_files/container_5g_rfsim_multiue.xml @@ -84,14 +84,14 @@ Attach_UE Attach OAI UE (Wait for IP) rfsim5g_multiue1 rfsim5g_multiue2 rfsim5g_multiue3 rfsim5g_multiue4 rfsim5g_multiue5 rfsim5g_multiue6 rfsim5g_multiue7 rfsim5g_multiue8 rfsim5g_multiue9 rfsim5g_multiue10 - localhost localhost localhost localhost localhost localhost localhost localhost localhost localhost + localhost Ping Ping ext-dn from NR-UE rfsim5g_multiue1 - localhost + localhost rfsim5g_ext_dn localhost -c 20 -i 0.25 @@ -102,7 +102,7 @@ Ping Ping NR-UE from ext-dn rfsim5g_ext_dn - localhost + localhost rfsim5g_multiue1 localhost -c 20 -i 0.25 @@ -113,7 +113,7 @@ Ping Ping ext-dn from Second NR-UE rfsim5g_multiue2 - localhost + localhost rfsim5g_ext_dn localhost -c 20 -i 0.25 @@ -124,7 +124,7 @@ Ping Ping Second NR-UE from ext-dn rfsim5g_ext_dn - localhost + localhost rfsim5g_multiue2 localhost -c 20 -i 0.25 @@ -135,7 +135,7 @@ Ping Ping ext-dn from both UEs rfsim5g_multiue1 rfsim5g_multiue2 - localhost localhost + localhost rfsim5g_ext_dn localhost -c 20 -i 0.25 @@ -146,7 +146,7 @@ Ping Ping ext-dn from all UEs rfsim5g_multiue1 rfsim5g_multiue2 rfsim5g_multiue3 rfsim5g_multiue4 rfsim5g_multiue5 rfsim5g_multiue6 rfsim5g_multiue7 rfsim5g_multiue8 rfsim5g_multiue9 rfsim5g_multiue10 - localhost localhost localhost localhost localhost localhost localhost localhost localhost localhost + localhost rfsim5g_ext_dn localhost -c 20 -i 0.25 -s 1016 @@ -158,7 +158,7 @@ Iperf (DL/3Mbps/UDP)(20 sec) -u -b 3M -t 20 -R rfsim5g_multiue1 - localhost + localhost rfsim5g_ext_dn localhost 5 @@ -170,7 +170,7 @@ Iperf (UL/1Mbps/UDP)(20 sec) -u -b 1M -t 20 rfsim5g_multiue1 - localhost + localhost rfsim5g_ext_dn localhost 5 @@ -181,7 +181,7 @@ Detach_UE Detach OAI UEs rfsim5g_multiue1 - localhost + localhost diff --git a/ci-scripts/xml_files/container_5g_rfsim_n2_ho.xml b/ci-scripts/xml_files/container_5g_rfsim_n2_ho.xml index 814f258e0a..37cab0ddb5 100644 --- a/ci-scripts/xml_files/container_5g_rfsim_n2_ho.xml +++ b/ci-scripts/xml_files/container_5g_rfsim_n2_ho.xml @@ -85,7 +85,7 @@ Attach_UE Attach OAI UE (Wait for IP) rfsim5g_ue - localhost + localhost @@ -100,7 +100,7 @@ Ping Ping NR-UE from ext-dn rfsim5g_ext_dn - localhost + localhost rfsim5g_ue localhost -c 50 -i 0.25 @@ -111,7 +111,7 @@ Ping Ping ext-dn from NR-UE rfsim5g_ue - localhost + localhost rfsim5g_ext_dn localhost -c 50 -i 0.25 @@ -123,7 +123,7 @@ Iperf (DL/10Mbps/UDP)(20 sec) -u -b 3M -t 20 -R rfsim5g_ue - localhost + localhost rfsim5g_ext_dn localhost 5 @@ -135,7 +135,7 @@ Iperf (UL/4Mbps/UDP)(20 sec) -u -b 1M -t 20 rfsim5g_ue - localhost + localhost rfsim5g_ext_dn localhost 5 diff --git a/ci-scripts/xml_files/container_5g_rfsim_ntn_geo.xml b/ci-scripts/xml_files/container_5g_rfsim_ntn_geo.xml index 32bbbc683d..66f725ca53 100644 --- a/ci-scripts/xml_files/container_5g_rfsim_ntn_geo.xml +++ b/ci-scripts/xml_files/container_5g_rfsim_ntn_geo.xml @@ -74,14 +74,14 @@ Attach_UE Attach OAI UE (Wait for IP) rfsim5g_ue - localhost + localhost Ping Ping ext-dn from NR-UE rfsim5g_ue - localhost + localhost rfsim5g_ext_dn localhost -c 20 -i 0.25 @@ -92,7 +92,7 @@ Ping Ping NR-UE from ext-dn rfsim5g_ext_dn - localhost + localhost rfsim5g_ue localhost -c 20 -i 0.25 @@ -111,7 +111,7 @@ Ping Ping ext-dn from NR-UE rfsim5g_ue - localhost + localhost rfsim5g_ext_dn localhost -c 20 -i0.5 -w25 diff --git a/ci-scripts/xml_files/container_5g_rfsim_ntn_leo.xml b/ci-scripts/xml_files/container_5g_rfsim_ntn_leo.xml index dd9fb56067..cde84b00e7 100644 --- a/ci-scripts/xml_files/container_5g_rfsim_ntn_leo.xml +++ b/ci-scripts/xml_files/container_5g_rfsim_ntn_leo.xml @@ -69,14 +69,14 @@ Attach_UE Attach OAI UE (Wait for IP) rfsim5g_ue - localhost + localhost Ping Ping ext-dn from NR-UE rfsim5g_ue - localhost + localhost rfsim5g_ext_dn localhost -c 20 -i 0.25 @@ -87,7 +87,7 @@ Ping Ping NR-UE from ext-dn rfsim5g_ext_dn - localhost + localhost rfsim5g_ue localhost -c 20 -i 0.25 diff --git a/ci-scripts/xml_files/container_5g_rfsim_simple.xml b/ci-scripts/xml_files/container_5g_rfsim_simple.xml index 738ce1a077..3dd5a560e0 100644 --- a/ci-scripts/xml_files/container_5g_rfsim_simple.xml +++ b/ci-scripts/xml_files/container_5g_rfsim_simple.xml @@ -63,14 +63,14 @@ Attach_UE Attach OAI UE (Wait for IP) rfsim5g_ue - localhost + localhost Ping Ping ext-dn from NR-UE rfsim5g_ue - localhost + localhost rfsim5g_ext_dn localhost -c 20 -i 0.25 @@ -81,7 +81,7 @@ Detach_UE Detach OAI UE 1 rfsim5g_ue - localhost + localhost diff --git a/ci-scripts/xml_files/container_5g_rfsim_tdd_dora.xml b/ci-scripts/xml_files/container_5g_rfsim_tdd_dora.xml index a9f7f2c3aa..6a09b8138d 100644 --- a/ci-scripts/xml_files/container_5g_rfsim_tdd_dora.xml +++ b/ci-scripts/xml_files/container_5g_rfsim_tdd_dora.xml @@ -83,7 +83,7 @@ Ping Ping gNB from NR-UE rfsim5g_ue - localhost + localhost rfsim5g_gnb_nos1 localhost -c20 -i0.2 @@ -94,7 +94,7 @@ Ping Ping NR-UE from gNB rfsim5g_gnb_nos1 - localhost + localhost rfsim5g_ue localhost -c20 -i0.2 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 c7668c5022..d563b3aab4 100644 --- a/ci-scripts/xml_files/container_5g_rfsim_u0_25prb.xml +++ b/ci-scripts/xml_files/container_5g_rfsim_u0_25prb.xml @@ -72,14 +72,14 @@ Attach_UE Attach OAI UE (Wait for IP) rfsim5g_ue - localhost + localhost Ping Ping ext-dn from NR-UE rfsim5g_ue - localhost + localhost rfsim5g_ext_dn localhost -c 20 -i 0.25 @@ -90,7 +90,7 @@ Ping Ping NR-UE from ext-dn rfsim5g_ext_dn - localhost + localhost rfsim5g_ue localhost -c 20 -i 0.25 @@ -101,14 +101,14 @@ Attach_UE Verify 2nd PDU session is up rfsim5g_ue_pdu_2 - localhost + localhost Ping Ping ext-dn from NR-UE on PDU session ID 2 rfsim5g_ue_pdu_2 - localhost + localhost rfsim5g_ext_dn localhost -c 20 -i 0.25 @@ -120,7 +120,7 @@ Iperf (DL/3Mbps/UDP)(20 sec) -u -b 3M -t 20 -R rfsim5g_ue - localhost + localhost rfsim5g_ext_dn localhost 5 @@ -132,7 +132,7 @@ Iperf (UL/1Mbps/UDP)(20 sec) -u -b 1M -t 20 rfsim5g_ue - localhost + localhost rfsim5g_ext_dn localhost 5 From b0106f27b5381e1c01967791740a8d18b0573042 Mon Sep 17 00:00:00 2001 From: Robert Schmidt Date: Mon, 27 Oct 2025 18:34:18 +0100 Subject: [PATCH 3/6] Centralize node for all XML steps All XML steps take a single node. We can thus "centralize" reading this parameter in the main loop and pass it to ExecuteActionWithParam(). --- ci-scripts/main.py | 24 +++--------------------- 1 file changed, 3 insertions(+), 21 deletions(-) diff --git a/ci-scripts/main.py b/ci-scripts/main.py index 6b51c180a3..7e96389bf7 100644 --- a/ci-scripts/main.py +++ b/ci-scripts/main.py @@ -85,7 +85,7 @@ def CheckClassValidity(xml_class_list,action,id): resp=True return resp -def ExecuteActionWithParam(action, ctx): +def ExecuteActionWithParam(action, ctx, node): global RAN global HTML global CONTAINERS @@ -94,7 +94,6 @@ def ExecuteActionWithParam(action, ctx): if action == 'Build_eNB' or action == 'Build_Image' or action == 'Build_Proxy' or action == "Build_Cluster_Image" or action == "Build_Run_Tests": RAN.Build_eNB_args=test.findtext('Build_eNB_args') CONTAINERS.imageKind=test.findtext('kind') - node = test.findtext('node') proxy_commit = test.findtext('proxy_commit') if proxy_commit is not None: CONTAINERS.proxyCommit = proxy_commit @@ -110,7 +109,6 @@ def ExecuteActionWithParam(action, ctx): success = CONTAINERS.BuildRunTests(ctx, node, HTML) elif action == 'Initialize_eNB': - node = test.findtext('node') datalog_rt_stats_file=test.findtext('rt_stats_cfg') if datalog_rt_stats_file is None: RAN.datalog_rt_stats_file='datalog_rt_stats.default.yaml' @@ -131,7 +129,6 @@ def ExecuteActionWithParam(action, ctx): success = RAN.InitializeeNB(ctx, node, HTML) elif action == 'Terminate_eNB': - node = test.findtext('node') #retx checkers string_field = test.findtext('d_retx_th') if (string_field is not None): @@ -150,7 +147,6 @@ def ExecuteActionWithParam(action, ctx): elif action == 'Initialize_UE' or action == 'Attach_UE' or action == 'Detach_UE' or action == 'Terminate_UE' or action == 'CheckStatusUE' or action == 'DataEnable_UE' or action == 'DataDisable_UE': CiTestObj.ue_ids = test.findtext('id').split(' ') - node = test.findtext('node') if not force_local else 'localhost' if action == 'Initialize_UE': success = CiTestObj.InitializeUE(node, HTML) elif action == 'Attach_UE': @@ -173,7 +169,6 @@ def ExecuteActionWithParam(action, ctx): CiTestObj.svr_id = test.findtext('svr_id') or None if test.findtext('svr_node'): CiTestObj.svr_node = test.findtext('svr_node') if not force_local else 'localhost' - node = test.findtext('node') if not force_local else 'localhost' ping_rttavg_threshold = test.findtext('ping_rttavg_threshold') or '' success = CiTestObj.Ping(ctx, node, HTML) @@ -181,7 +176,6 @@ def ExecuteActionWithParam(action, ctx): CiTestObj.iperf_args = test.findtext('iperf_args') CiTestObj.ue_ids = test.findtext('id').split(' ') CiTestObj.svr_id = test.findtext('svr_id') or None - node = test.findtext('node') if not force_local else 'localhost' if test.findtext('svr_node'): CiTestObj.svr_node = test.findtext('svr_node') if not force_local else 'localhost' CiTestObj.iperf_packetloss_threshold = test.findtext('iperf_packetloss_threshold') @@ -206,7 +200,6 @@ def ExecuteActionWithParam(action, ctx): elif action == 'Deploy_Run_OC_PhySim': oc_release = test.findtext('oc_release') - node = test.findtext('node') or None script = "scripts/oc-deploy-physims.sh" image_tag = cls_containerize.CreateTag(CLUSTER.ranCommitID, CLUSTER.ranBranch, CLUSTER.ranAllowMerge) options = f"oaicicd-core-for-ci-ran {oc_release} {image_tag} {CLUSTER.eNBSourceCodePath}" @@ -214,7 +207,6 @@ def ExecuteActionWithParam(action, ctx): success = cls_oaicitest.Deploy_Physim(ctx, HTML, node, workdir, script, options) elif action == 'Build_Deploy_Docker_PhySim' or action == 'Build_Deploy_Source_PhySim': - node = test.findtext('node') or None ctest_opt = test.findtext('ctest-opt') or '' script = "scripts/docker-build-and-deploy-physims.sh" if action == 'Build_Deploy_Docker_PhySim' else 'scripts/source-deploy-physims.sh' options = f"{CONTAINERS.eNBSourceCodePath} {ctest_opt}" @@ -227,7 +219,6 @@ def ExecuteActionWithParam(action, ctx): success = core_op(cn_id, ctx, HTML) elif action == 'Deploy_Object' or action == 'Undeploy_Object' or action == "Create_Workspace": - node = test.findtext('node') CONTAINERS.yamlPath = test.findtext('yaml_path') string_field=test.findtext('d_retx_th') if (string_field is not None): @@ -249,15 +240,12 @@ def ExecuteActionWithParam(action, ctx): success = CONTAINERS.Create_Workspace(node, HTML) elif action == 'LicenceAndFormattingCheck': - node = test.findtext('node') success = SCA.LicenceAndFormattingCheck(ctx, node, HTML) elif action == 'Cppcheck_Analysis': - node = test.findtext('node') success = SCA.CppCheckAnalysis(ctx, node, HTML) elif action == 'Push_Local_Registry': - node = test.findtext('node') tag_prefix = test.findtext('tag_prefix') or "" success = CONTAINERS.Push_Image_to_Local_Registry(node, HTML, tag_prefix) @@ -265,7 +253,6 @@ def ExecuteActionWithParam(action, ctx): if force_local: # Do not pull or remove images when running locally. User is supposed to handle image creation & cleanup return True - node = test.findtext('node') tag_prefix = test.findtext('tag_prefix') or "" images = test.findtext('images').split() # hack: for FlexRIC, we need to overwrite the tag to use @@ -278,17 +265,12 @@ def ExecuteActionWithParam(action, ctx): success = CONTAINERS.Clean_Test_Server_Images(HTML, node, images, tag=tag) elif action == 'Custom_Command': - node = test.findtext('node') - if force_local: - # Change all execution targets to localhost - node = 'localhost' command = test.findtext('command') # Allow referencing repository workspace path in XML via %%workspace%% command = command.replace("%%workspace%%", CONTAINERS.eNBSourceCodePath) success = cls_oaicitest.Custom_Command(HTML, node, command) elif action == 'Custom_Script': - node = test.findtext('node') script = test.findtext('script') # Allow referencing repository workspace path in XML via %%workspace%% script = script.replace("%%workspace%%", CONTAINERS.eNBSourceCodePath) @@ -297,7 +279,6 @@ def ExecuteActionWithParam(action, ctx): elif action == 'Pull_Cluster_Image': tag_prefix = test.findtext('tag_prefix') or "" images = test.findtext('images').split() - node = test.findtext('node') success = CLUSTER.PullClusterImage(HTML, node, images, tag_prefix=tag_prefix) else: @@ -525,6 +506,7 @@ elif re.match('^TesteNB$', mode, re.IGNORECASE) or re.match('^TestUE$', mode, re ctx = TestCaseCtx(i, int(id), logPath) HTML.testCase_id=CiTestObj.testCase_id desc = test.findtext('desc') + node = test.findtext('node') if not force_local else 'localhost' always_exec = test.findtext('always_exec') in ['True', 'true', 'Yes', 'yes'] may_fail = test.findtext('may_fail') in ['True', 'true', 'Yes', 'yes'] HTML.desc = desc @@ -539,7 +521,7 @@ elif re.match('^TesteNB$', mode, re.IGNORECASE) or re.match('^TestUE$', mode, re HTML.CreateHtmlTestRowQueue(msg, "SKIP", []) break try: - test_succeeded = ExecuteActionWithParam(action, ctx) + test_succeeded = ExecuteActionWithParam(action, ctx, node) if not test_succeeded and may_fail: logging.warning(f"test ID {test_case_id} action {action} may or may not fail, proceeding despite error") elif not test_succeeded: From 19c6d20b451ebb78da35de4d219906e9eab6b71b Mon Sep 17 00:00:00 2001 From: Robert Schmidt Date: Tue, 28 Oct 2025 09:32:32 +0100 Subject: [PATCH 4/6] Bugfix: "or None" is useless "or None" would assign if the first term is false-y. But not specifying it would already lead to the variable being set to None. --- ci-scripts/main.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/ci-scripts/main.py b/ci-scripts/main.py index 7e96389bf7..b56d8d7b87 100644 --- a/ci-scripts/main.py +++ b/ci-scripts/main.py @@ -166,7 +166,7 @@ def ExecuteActionWithParam(action, ctx, node): CiTestObj.ping_args = test.findtext('ping_args') CiTestObj.ping_packetloss_threshold = test.findtext('ping_packetloss_threshold') CiTestObj.ue_ids = test.findtext('id').split(' ') - CiTestObj.svr_id = test.findtext('svr_id') or None + CiTestObj.svr_id = test.findtext('svr_id') if test.findtext('svr_node'): CiTestObj.svr_node = test.findtext('svr_node') if not force_local else 'localhost' ping_rttavg_threshold = test.findtext('ping_rttavg_threshold') or '' @@ -175,7 +175,7 @@ def ExecuteActionWithParam(action, ctx, node): elif action == 'Iperf' or action == 'Iperf2_Unidir': CiTestObj.iperf_args = test.findtext('iperf_args') CiTestObj.ue_ids = test.findtext('id').split(' ') - CiTestObj.svr_id = test.findtext('svr_id') or None + CiTestObj.svr_id = test.findtext('svr_id') if test.findtext('svr_node'): CiTestObj.svr_node = test.findtext('svr_node') if not force_local else 'localhost' CiTestObj.iperf_packetloss_threshold = test.findtext('iperf_packetloss_threshold') From f7eaafa8358b3825a0b8953047bd630696b20e2b Mon Sep 17 00:00:00 2001 From: Robert Schmidt Date: Mon, 3 Nov 2025 19:03:03 +0100 Subject: [PATCH 5/6] CI test runner: handle SIGINT Handle SIGINT and mark any subsequent steps as failed. Receiving SIGINT a second time will abort the script immediately (as is the case before this commit). Note that Python seems to relay the signal to the "controlled" process (e.g., Ping), which would return immediately with an error. So some steps like Ping will abort immediately, others (e.g., IdleSleep) will finish their step, and then the present logic will mark subsequent steps as failed. --- ci-scripts/main.py | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/ci-scripts/main.py b/ci-scripts/main.py index b56d8d7b87..99500fff12 100644 --- a/ci-scripts/main.py +++ b/ci-scripts/main.py @@ -296,8 +296,16 @@ def test_in_list(test, list): return True return False +test_runner_abort = False def receive_signal(signum, frame): - sys.exit(1) + global test_runner_abort + if not test_runner_abort: + logging.warning("received signal, canceling steps") + logging.info("send signal again to exit immediately") + test_runner_abort = True + else: + logging.warning("received signal again, exiting") + sys.exit(1) def ShowTestID(ctx, desc): logging.info(f'\u001B[1m----------------------------------------\u001B[0m') @@ -488,7 +496,7 @@ elif re.match('^TesteNB$', mode, re.IGNORECASE) or re.match('^TestUE$', mode, re #logging.info('test will be run: ' + test) todo_tests.append(test) - signal.signal(signal.SIGUSR1, receive_signal) + signal.signal(signal.SIGINT, receive_signal) HTML.CreateHtmlTabHeader() @@ -498,6 +506,8 @@ elif re.match('^TesteNB$', mode, re.IGNORECASE) or re.match('^TestUE$', mode, re i = 0 for test_case_id in todo_tests: for test in all_tests: + if test_runner_abort: + task_set_succeeded = False id = test.get('id') if test_case_id != id: continue From d4aac07ae9d8f84beb0e42d9e6ea25d1cec58f29 Mon Sep 17 00:00:00 2001 From: Robert Schmidt Date: Wed, 5 Nov 2025 11:13:31 +0100 Subject: [PATCH 6/6] Remove write-only code --- ci-scripts/cls_oaicitest.py | 3 +-- ci-scripts/main.py | 4 ---- 2 files changed, 1 insertion(+), 6 deletions(-) diff --git a/ci-scripts/cls_oaicitest.py b/ci-scripts/cls_oaicitest.py index f64972f253..cd5f8ecdf7 100644 --- a/ci-scripts/cls_oaicitest.py +++ b/ci-scripts/cls_oaicitest.py @@ -299,7 +299,6 @@ class OaiCiTest(): self.iperf_packetloss_threshold = '' self.iperf_bitrate_threshold = '' self.iperf_profile = '' - self.iperf_options = '' self.iperf_tcp_rate_target = '' self.finalStatus = False self.air_interface='' @@ -520,7 +519,7 @@ class OaiCiTest(): return (status, f'{ue_header}\n{msg}') def Iperf(self, ctx, node, HTML, infra_file="ci_infra.yaml"): - 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}"') + 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}"') if self.ue_ids == [] or self.svr_id == None: raise Exception("no module names in self.ue_ids or/and self.svr_id provided") diff --git a/ci-scripts/main.py b/ci-scripts/main.py index 99500fff12..f427d1c023 100644 --- a/ci-scripts/main.py +++ b/ci-scripts/main.py @@ -185,10 +185,6 @@ def ExecuteActionWithParam(action, ctx, node): 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' - CiTestObj.iperf_options = test.findtext('iperf_options') or 'check' - if CiTestObj.iperf_options != 'check' and CiTestObj.iperf_options != 'sink': - logging.error('test-case has wrong option ' + CiTestObj.iperf_options) - CiTestObj.iperf_options = 'check' if action == 'Iperf': success = CiTestObj.Iperf(ctx, node, HTML) elif action == 'Iperf2_Unidir':